framefields 2.6.0 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-QBA2VogL.mjs → audio-BHuVoNc-.mjs} +4 -4
- package/dist/{audio-QBA2VogL.mjs.map → audio-BHuVoNc-.mjs.map} +1 -1
- package/dist/{audio-B5mdR8vv.d.mts → audio-WcPMxtcz.d.mts} +3 -3
- package/dist/{audio-B5mdR8vv.d.mts.map → audio-WcPMxtcz.d.mts.map} +1 -1
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-D021IFfp.mjs → dist-CL5JOMSp.mjs} +22 -2
- package/dist/dist-CL5JOMSp.mjs.map +1 -0
- package/dist/{dist-nHCqVk-e.mjs → dist-CSU_2yUb.mjs} +3 -3
- package/dist/{dist-nHCqVk-e.mjs.map → dist-CSU_2yUb.mjs.map} +1 -1
- package/dist/{dist-BPOi5xb_.mjs → dist-PlaSQJ43.mjs} +2 -2
- package/dist/{dist-BPOi5xb_.mjs.map → dist-PlaSQJ43.mjs.map} +1 -1
- package/dist/{dist-CDwWQYg3.mjs → dist-Wsjx_Rza.mjs} +83 -18
- package/dist/dist-Wsjx_Rza.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-C-6I4iYW.mjs → effects-BvloJaPQ.mjs} +3 -3
- package/dist/{effects-C-6I4iYW.mjs.map → effects-BvloJaPQ.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-BieW3VWV.mjs → fonts-DpnBDAqM.mjs} +2 -2
- package/dist/{fonts-BieW3VWV.mjs.map → fonts-DpnBDAqM.mjs.map} +1 -1
- package/dist/{gpu-Bb4WmYYH.mjs → gpu-BvYDrqOC.mjs} +2 -2
- package/dist/{gpu-Bb4WmYYH.mjs.map → gpu-BvYDrqOC.mjs.map} +1 -1
- package/dist/{index-3Vdef2KE.d.mts → index-BCzXnNpb.d.mts} +3 -3
- package/dist/{index-3Vdef2KE.d.mts.map → index-BCzXnNpb.d.mts.map} +1 -1
- package/dist/{index-E1IrPAm4.d.mts → index-C541Ol1N.d.mts} +468 -466
- package/dist/index-C541Ol1N.d.mts.map +1 -0
- package/dist/{index-o8LxWdwz.d.mts → index-C6ihzCpZ.d.mts} +3 -3
- package/dist/{index-o8LxWdwz.d.mts.map → index-C6ihzCpZ.d.mts.map} +1 -1
- package/dist/{index-BhzlG_1Q.d.mts → index-DcIR_DgU.d.mts} +2 -2
- package/dist/{index-BhzlG_1Q.d.mts.map → index-DcIR_DgU.d.mts.map} +1 -1
- package/dist/{index-D-Gnyffj.d.mts → index-DsGBouQM.d.mts} +4 -4
- package/dist/{index-D-Gnyffj.d.mts.map → index-DsGBouQM.d.mts.map} +1 -1
- package/dist/{index-ocZc12ZS.d.mts → index-kj5uSzaI.d.mts} +22 -2
- package/dist/index-kj5uSzaI.d.mts.map +1 -0
- package/dist/{index-B4o6F1JC.d.mts → index-wUhS1_4W.d.mts} +2 -2
- package/dist/{index-B4o6F1JC.d.mts.map → index-wUhS1_4W.d.mts.map} +1 -1
- package/dist/index.d.mts +11 -11
- package/dist/index.mjs +53 -53
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-D6jS38Di.mjs → preview-UMG4Colu.mjs} +2 -2
- package/dist/{preview-D6jS38Di.mjs.map → preview-UMG4Colu.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-AYTP6OGO.mjs → chunk-22BLMBWX.mjs} +1 -1
- package/dist/preview-engine/{chunk-BBHRXV75.mjs → chunk-6THE6J3A.mjs} +1 -1
- package/dist/preview-engine/{chunk-W3I7LKDV.mjs → chunk-HU73APZL.mjs} +1 -1
- package/dist/preview-engine/chunk-MXK2PP6K.mjs +1 -0
- package/dist/preview-engine/{chunk-VY6ST4QX.mjs → chunk-NIILFJKE.mjs} +1 -1
- package/dist/preview-engine/{chunk-2LQCQ3OT.mjs → chunk-T36SKUWK.mjs} +9 -9
- package/dist/preview-engine/{chunk-MLAIEIUF.mjs → chunk-TXX2POD2.mjs} +26 -26
- package/dist/preview-engine/{chunk-ZMMNN77R.mjs → chunk-ZR4QFIJR.mjs} +1 -1
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/{renderers-N36R42RL.mjs → renderers-3HFRWF2G.mjs} +1 -1
- package/dist/preview-engine/{renderers-4G3UOPA7.mjs → renderers-JBRPKCKF.mjs} +1 -1
- package/dist/{program-Bf4yHbHC.mjs → program-B6YvXPhj.mjs} +15 -10
- package/dist/program-B6YvXPhj.mjs.map +1 -0
- package/dist/registry/chat-thread.json +1 -1
- package/dist/registry/terminal.json +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-BsnhAgrB.mjs → renderer-15a6H6Yg.mjs} +3 -3
- package/dist/{renderer-BsnhAgrB.mjs.map → renderer-15a6H6Yg.mjs.map} +1 -1
- package/dist/renderer-1qAST5qk.mjs +5 -0
- package/dist/renderer-2dntY9lQ.mjs +5 -0
- package/dist/{renderer-Bpve7M6S.mjs → renderer-56T9Wf1N.mjs} +71 -71
- package/dist/{renderer-Bpve7M6S.mjs.map → renderer-56T9Wf1N.mjs.map} +1 -1
- package/dist/renderer-83Knj3DI.mjs +5 -0
- package/dist/{renderer-yFHP9Zj2.mjs → renderer-876_ArdD.mjs} +3 -3
- package/dist/{renderer-yFHP9Zj2.mjs.map → renderer-876_ArdD.mjs.map} +1 -1
- package/dist/{renderer-BHgYRSu8.mjs → renderer-8ZxKRprN.mjs} +2 -2
- package/dist/{renderer-BHgYRSu8.mjs.map → renderer-8ZxKRprN.mjs.map} +1 -1
- package/dist/renderer-B2GWXOwP.mjs +5 -0
- package/dist/renderer-B3LlOjNo.mjs +5 -0
- package/dist/{renderer-ovkctV5a.mjs → renderer-B51lS0Zb.mjs} +2 -2
- package/dist/renderer-B5cPLblQ.mjs +5 -0
- package/dist/renderer-B7uorwdR.mjs +5 -0
- package/dist/{renderer-D_UPFbei.mjs → renderer-BBnurLTw.mjs} +3 -3
- package/dist/{renderer-D_UPFbei.mjs.map → renderer-BBnurLTw.mjs.map} +1 -1
- package/dist/{renderer-BKssznKn.mjs → renderer-BHJzeFp9.mjs} +2 -2
- package/dist/{renderer-BKssznKn.mjs.map → renderer-BHJzeFp9.mjs.map} +1 -1
- package/dist/{renderer-C-dcd14F.d.mts → renderer-BHjw4EdY.d.mts} +2 -2
- package/dist/{renderer-C-dcd14F.d.mts.map → renderer-BHjw4EdY.d.mts.map} +1 -1
- package/dist/renderer-BJ6LDZlX.mjs +5 -0
- package/dist/{renderer-DlA7kzIs.mjs → renderer-BLn9MrDC.mjs} +3 -3
- package/dist/{renderer-DlA7kzIs.mjs.map → renderer-BLn9MrDC.mjs.map} +1 -1
- package/dist/{renderer-CRkgyk08.mjs → renderer-BUj6OsWX.mjs} +4 -4
- package/dist/{renderer-CRkgyk08.mjs.map → renderer-BUj6OsWX.mjs.map} +1 -1
- package/dist/{renderer-79mO0b9Y.mjs → renderer-BX2tt7zA.mjs} +3 -3
- package/dist/{renderer-79mO0b9Y.mjs.map → renderer-BX2tt7zA.mjs.map} +1 -1
- package/dist/{renderer-l1qJE4z-.mjs → renderer-BYNbtv_d.mjs} +2 -2
- package/dist/{renderer-l1qJE4z-.mjs.map → renderer-BYNbtv_d.mjs.map} +1 -1
- package/dist/{renderer-CY_1u6zi.mjs → renderer-BZ9zGp0Z.mjs} +3 -3
- package/dist/{renderer-CY_1u6zi.mjs.map → renderer-BZ9zGp0Z.mjs.map} +1 -1
- package/dist/renderer-BaQC4ylR.mjs +5 -0
- package/dist/{renderer-Cn9tU_s5.mjs → renderer-BcH6-FsA.mjs} +3 -3
- package/dist/{renderer-Cn9tU_s5.mjs.map → renderer-BcH6-FsA.mjs.map} +1 -1
- package/dist/{renderer-Cqp_TUl_.mjs → renderer-Bf0Bhqot.mjs} +3 -3
- package/dist/{renderer-Cqp_TUl_.mjs.map → renderer-Bf0Bhqot.mjs.map} +1 -1
- package/dist/renderer-BfQzj_uW.mjs +5 -0
- package/dist/{renderer-BQFxoNzi.mjs → renderer-BfYAlY63.mjs} +3 -3
- package/dist/{renderer-BQFxoNzi.mjs.map → renderer-BfYAlY63.mjs.map} +1 -1
- package/dist/{renderer-BzEQXAdl.mjs → renderer-BfuMCx2c.mjs} +3 -3
- package/dist/{renderer-BzEQXAdl.mjs.map → renderer-BfuMCx2c.mjs.map} +1 -1
- package/dist/renderer-Bl9uy1ra.mjs +6 -0
- package/dist/{renderer-D01RT3Ov.mjs → renderer-BmarvBo8.mjs} +2 -2
- package/dist/{renderer-BL9vkn6m.mjs → renderer-Bpm12fcQ.mjs} +3 -3
- package/dist/{renderer-BL9vkn6m.mjs.map → renderer-Bpm12fcQ.mjs.map} +1 -1
- package/dist/{renderer-BFdgbqgW.mjs → renderer-BsSZdDHQ.mjs} +3 -3
- package/dist/{renderer-BFdgbqgW.mjs.map → renderer-BsSZdDHQ.mjs.map} +1 -1
- package/dist/renderer-Bu4FyXDo.mjs +5 -0
- package/dist/renderer-BxbJwS3T.mjs +5 -0
- package/dist/{renderer-B1Ox12RF.mjs → renderer-Bxs9zUIN.mjs} +2 -2
- package/dist/{renderer-B1Ox12RF.mjs.map → renderer-Bxs9zUIN.mjs.map} +1 -1
- package/dist/{renderer-CJRu7lLH.mjs → renderer-BxtbwOSp.mjs} +3 -3
- package/dist/{renderer-CJRu7lLH.mjs.map → renderer-BxtbwOSp.mjs.map} +1 -1
- package/dist/{renderer-DYJHFHF4.mjs → renderer-Byp6c5Y4.mjs} +2 -2
- package/dist/{renderer-DYJHFHF4.mjs.map → renderer-Byp6c5Y4.mjs.map} +1 -1
- package/dist/{renderer-yF40Pb-n.mjs → renderer-C3gJco03.mjs} +3 -3
- package/dist/{renderer-yF40Pb-n.mjs.map → renderer-C3gJco03.mjs.map} +1 -1
- package/dist/renderer-C51hhQ7B.mjs +5 -0
- package/dist/{renderer-CMWUtfwn.mjs → renderer-C6YcfNbV.mjs} +3 -3
- package/dist/{renderer-CMWUtfwn.mjs.map → renderer-C6YcfNbV.mjs.map} +1 -1
- package/dist/{renderer-AOZWHGT3.mjs → renderer-C7BxBoHC.mjs} +3 -3
- package/dist/{renderer-AOZWHGT3.mjs.map → renderer-C7BxBoHC.mjs.map} +1 -1
- package/dist/renderer-C8ZShnSH.mjs +5 -0
- package/dist/{renderer-CgdplRri.mjs → renderer-CLvXiFPk.mjs} +2 -2
- package/dist/{renderer-CgdplRri.mjs.map → renderer-CLvXiFPk.mjs.map} +1 -1
- package/dist/{renderer-DNEFYrQ5.mjs → renderer-COAYUhv2.mjs} +2 -2
- package/dist/renderer-CQh1RgN8.mjs +5 -0
- package/dist/renderer-CRYaMhGd.mjs +5 -0
- package/dist/{renderer-LW8MfGjd.mjs → renderer-CTQTbvWR.mjs} +2 -2
- package/dist/{renderer-LW8MfGjd.mjs.map → renderer-CTQTbvWR.mjs.map} +1 -1
- package/dist/renderer-CULThR_r.mjs +5 -0
- package/dist/{renderer-DFYXjAIT.mjs → renderer-CW05KUXE.mjs} +6 -6
- package/dist/{renderer-DFYXjAIT.mjs.map → renderer-CW05KUXE.mjs.map} +1 -1
- package/dist/renderer-C_KDGeMJ.mjs +5 -0
- package/dist/{renderer-zOK5DYYn.mjs → renderer-CdxHmvvf.mjs} +3 -3
- package/dist/{renderer-zOK5DYYn.mjs.map → renderer-CdxHmvvf.mjs.map} +1 -1
- package/dist/renderer-Ce4Gam_S.mjs +5 -0
- package/dist/{renderer-BDCS7k5X.mjs → renderer-Ck74BZ_L.mjs} +4 -4
- package/dist/{renderer-BDCS7k5X.mjs.map → renderer-Ck74BZ_L.mjs.map} +1 -1
- package/dist/renderer-CkZ6xcN6.mjs +5 -0
- package/dist/{renderer-By5xTRqB.mjs → renderer-CkbIz6M-.mjs} +4 -4
- package/dist/{renderer-By5xTRqB.mjs.map → renderer-CkbIz6M-.mjs.map} +1 -1
- package/dist/renderer-Co4C29rw.mjs +5 -0
- package/dist/{renderer-Duorbrb8.mjs → renderer-CopRZnwp.mjs} +2 -2
- package/dist/{renderer-Duorbrb8.mjs.map → renderer-CopRZnwp.mjs.map} +1 -1
- package/dist/{renderer-DAfWLGfy.mjs → renderer-CptS_UFe.mjs} +3 -3
- package/dist/{renderer-DAfWLGfy.mjs.map → renderer-CptS_UFe.mjs.map} +1 -1
- package/dist/{renderer-CY0BT6ok.mjs → renderer-Cs8Od5S8.mjs} +3 -3
- package/dist/{renderer-CY0BT6ok.mjs.map → renderer-Cs8Od5S8.mjs.map} +1 -1
- package/dist/{renderer-DgRJG_l-.mjs → renderer-CuQceSLi.mjs} +3 -3
- package/dist/{renderer-DgRJG_l-.mjs.map → renderer-CuQceSLi.mjs.map} +1 -1
- package/dist/{renderer-Bbkf5EIi.mjs → renderer-Cwhm9oQe.mjs} +3 -3
- package/dist/{renderer-Bbkf5EIi.mjs.map → renderer-Cwhm9oQe.mjs.map} +1 -1
- package/dist/renderer-CyReVcsb.mjs +3 -0
- package/dist/{renderer-CHPLHbAs.mjs → renderer-Cy_rrWEC.mjs} +3 -3
- package/dist/{renderer-CHPLHbAs.mjs.map → renderer-Cy_rrWEC.mjs.map} +1 -1
- package/dist/renderer-CzgPat6y.mjs +5 -0
- package/dist/renderer-D-pFBDki.mjs +5 -0
- package/dist/{renderer-WTvo3wo9.d.mts → renderer-D1fjdDVu.d.mts} +2 -2
- package/dist/{renderer-WTvo3wo9.d.mts.map → renderer-D1fjdDVu.d.mts.map} +1 -1
- package/dist/{renderer-EwSSuJXj.mjs → renderer-D4KKtfTl.mjs} +3 -3
- package/dist/{renderer-EwSSuJXj.mjs.map → renderer-D4KKtfTl.mjs.map} +1 -1
- package/dist/renderer-DELCePyB.mjs +5 -0
- package/dist/{renderer-Dj-y-BtT.mjs → renderer-DFGSy_ay.mjs} +3 -3
- package/dist/{renderer-Dj-y-BtT.mjs.map → renderer-DFGSy_ay.mjs.map} +1 -1
- package/dist/{renderer-PMjV8x65.mjs → renderer-DF_TswHB.mjs} +3 -3
- package/dist/{renderer-PMjV8x65.mjs.map → renderer-DF_TswHB.mjs.map} +1 -1
- package/dist/{renderer-CsOLHKFx.mjs → renderer-DGUL7JlO.mjs} +3 -3
- package/dist/{renderer-CsOLHKFx.mjs.map → renderer-DGUL7JlO.mjs.map} +1 -1
- package/dist/{renderer-CYLP8sD6.mjs → renderer-DJJXvO27.mjs} +2 -2
- package/dist/{renderer-CYLP8sD6.mjs.map → renderer-DJJXvO27.mjs.map} +1 -1
- package/dist/{renderer-KppAWfmJ.mjs → renderer-DJy8V_nb.mjs} +3 -3
- package/dist/{renderer-KppAWfmJ.mjs.map → renderer-DJy8V_nb.mjs.map} +1 -1
- package/dist/{renderer-kOlfYLtu.mjs → renderer-DKkXBsVx.mjs} +3 -3
- package/dist/{renderer-kOlfYLtu.mjs.map → renderer-DKkXBsVx.mjs.map} +1 -1
- package/dist/{renderer-4v6XYAiX.mjs → renderer-DLpjygMO.mjs} +3 -3
- package/dist/{renderer-4v6XYAiX.mjs.map → renderer-DLpjygMO.mjs.map} +1 -1
- package/dist/{renderer-C6Wb1TZT.mjs → renderer-DNNxsVQh.mjs} +3 -3
- package/dist/{renderer-C6Wb1TZT.mjs.map → renderer-DNNxsVQh.mjs.map} +1 -1
- package/dist/{renderer-ml2LHmRb.mjs → renderer-DUx7rcc5.mjs} +2 -2
- package/dist/{renderer-ml2LHmRb.mjs.map → renderer-DUx7rcc5.mjs.map} +1 -1
- package/dist/renderer-DWijRKGh.mjs +5 -0
- package/dist/{renderer-JJibsJfb.mjs → renderer-DXfYdQ2o.mjs} +2 -2
- package/dist/{renderer-JJibsJfb.mjs.map → renderer-DXfYdQ2o.mjs.map} +1 -1
- package/dist/{renderer-CcSBjtRa.mjs → renderer-Da5Xcwx5.mjs} +2 -2
- package/dist/{renderer-BTjveb1Y.mjs → renderer-DfQWeysg.mjs} +3 -3
- package/dist/{renderer-BTjveb1Y.mjs.map → renderer-DfQWeysg.mjs.map} +1 -1
- package/dist/renderer-Di-PH-vG.mjs +5 -0
- package/dist/{renderer-BQdn_qGp.mjs → renderer-Djpx4utT.mjs} +3 -3
- package/dist/{renderer-BQdn_qGp.mjs.map → renderer-Djpx4utT.mjs.map} +1 -1
- package/dist/{renderer-DJHuPNJx.mjs → renderer-Dk88a53K.mjs} +3 -3
- package/dist/{renderer-DJHuPNJx.mjs.map → renderer-Dk88a53K.mjs.map} +1 -1
- package/dist/{renderer-DEeKkljI.mjs → renderer-DlboTFM8.mjs} +3 -3
- package/dist/{renderer-DEeKkljI.mjs.map → renderer-DlboTFM8.mjs.map} +1 -1
- package/dist/renderer-Dn9CR9KL.mjs +5 -0
- package/dist/{renderer-DJTXhVNh.mjs → renderer-GNgSEbBu.mjs} +2 -2
- package/dist/{renderer-DJTXhVNh.mjs.map → renderer-GNgSEbBu.mjs.map} +1 -1
- package/dist/{renderer-mu2mYo5w.mjs → renderer-HW-6FmmO.mjs} +3 -3
- package/dist/{renderer-mu2mYo5w.mjs.map → renderer-HW-6FmmO.mjs.map} +1 -1
- package/dist/{renderer-DAONCf_3.mjs → renderer-Hs9t2qY-.mjs} +3 -3
- package/dist/{renderer-DAONCf_3.mjs.map → renderer-Hs9t2qY-.mjs.map} +1 -1
- package/dist/{renderer-B6vr-B0t.mjs → renderer-I-KtRtuL.mjs} +3 -3
- package/dist/{renderer-B6vr-B0t.mjs.map → renderer-I-KtRtuL.mjs.map} +1 -1
- package/dist/renderer-ICmKc1Bq.mjs +5 -0
- package/dist/{renderer-BmgyvIC3.mjs → renderer-IP6Iy2RQ.mjs} +3 -3
- package/dist/{renderer-BmgyvIC3.mjs.map → renderer-IP6Iy2RQ.mjs.map} +1 -1
- package/dist/renderer-IR3rE4TW.mjs +5 -0
- package/dist/{renderer-VwKmjuc6.mjs → renderer-KS_JYan2.mjs} +3 -3
- package/dist/{renderer-VwKmjuc6.mjs.map → renderer-KS_JYan2.mjs.map} +1 -1
- package/dist/{renderer-bb3puodg.mjs → renderer-PTV0M2HP.mjs} +2 -2
- package/dist/{renderer-bb3puodg.mjs.map → renderer-PTV0M2HP.mjs.map} +1 -1
- package/dist/{renderer-DYR4gFEM.mjs → renderer-Q6A9dB56.mjs} +3 -3
- package/dist/{renderer-DYR4gFEM.mjs.map → renderer-Q6A9dB56.mjs.map} +1 -1
- package/dist/{renderer-rv-AKqCl.mjs → renderer-QYjSQL80.mjs} +2 -2
- package/dist/{renderer-rv-AKqCl.mjs.map → renderer-QYjSQL80.mjs.map} +1 -1
- package/dist/renderer-Qyc4xLZY.mjs +5 -0
- package/dist/renderer-Riuen1UO.mjs +5 -0
- package/dist/{renderer-DiD3r9tx.mjs → renderer-SPq9BbnG.mjs} +3 -3
- package/dist/{renderer-DiD3r9tx.mjs.map → renderer-SPq9BbnG.mjs.map} +1 -1
- package/dist/{renderer-j7aUfyeR.mjs → renderer-UPRkHFPp.mjs} +3 -3
- package/dist/{renderer-j7aUfyeR.mjs.map → renderer-UPRkHFPp.mjs.map} +1 -1
- package/dist/{renderer-C64g87yU.mjs → renderer-URxsYx_I.mjs} +4 -4
- package/dist/{renderer-C64g87yU.mjs.map → renderer-URxsYx_I.mjs.map} +1 -1
- package/dist/{renderer-qQmoO5Hk.mjs → renderer-XU08U1If.mjs} +2 -2
- package/dist/{renderer-qQmoO5Hk.mjs.map → renderer-XU08U1If.mjs.map} +1 -1
- package/dist/renderer-YKJt5oPu.mjs +5 -0
- package/dist/renderer-asS1sOXb.mjs +5 -0
- package/dist/renderer-mAQErqBN.mjs +5 -0
- package/dist/{renderer-UArFa4y9.mjs → renderer-nIKvk_ij.mjs} +3 -3
- package/dist/{renderer-UArFa4y9.mjs.map → renderer-nIKvk_ij.mjs.map} +1 -1
- package/dist/renderer-pZazoCK-.mjs +5 -0
- package/dist/{renderer-ij448rvt.mjs → renderer-rLhze-dj.mjs} +2 -2
- package/dist/{renderer-ij448rvt.mjs.map → renderer-rLhze-dj.mjs.map} +1 -1
- package/dist/{renderer-eyvY4Lq4.mjs → renderer-sQjiRkiF.mjs} +3 -3
- package/dist/{renderer-eyvY4Lq4.mjs.map → renderer-sQjiRkiF.mjs.map} +1 -1
- package/dist/{renderer-BR35Xp9n.mjs → renderer-v779MqRx.mjs} +3 -3
- package/dist/{renderer-BR35Xp9n.mjs.map → renderer-v779MqRx.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DPLX5EJs.mjs → renderers-CP8CFWDs-CPfe6IN0.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-DPLX5EJs.mjs.map → renderers-CP8CFWDs-CPfe6IN0.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-BrNF9l9s.mjs → signals-BRgYyspQ.mjs} +3 -3
- package/dist/{signals-BrNF9l9s.mjs.map → signals-BRgYyspQ.mjs.map} +1 -1
- package/dist/{src-BnkrNj2W.mjs → src-Be7rjknf.mjs} +9 -9
- package/dist/{src-BnkrNj2W.mjs.map → src-Be7rjknf.mjs.map} +1 -1
- package/package.json +58 -58
- package/dist/dist-CDwWQYg3.mjs.map +0 -1
- package/dist/dist-D021IFfp.mjs.map +0 -1
- package/dist/index-E1IrPAm4.d.mts.map +0 -1
- package/dist/index-ocZc12ZS.d.mts.map +0 -1
- package/dist/program-Bf4yHbHC.mjs.map +0 -1
- package/dist/renderer-4FQmduPw.mjs +0 -5
- package/dist/renderer-BBCpRuYU.mjs +0 -5
- package/dist/renderer-BBTo_jLO.mjs +0 -5
- package/dist/renderer-BLg66ZgG.mjs +0 -5
- package/dist/renderer-BScS8AzG.mjs +0 -5
- package/dist/renderer-Bb1cS5mJ.mjs +0 -5
- package/dist/renderer-Bpwd9zEY.mjs +0 -5
- package/dist/renderer-Bzyd9xi5.mjs +0 -5
- package/dist/renderer-CXVssx1k.mjs +0 -5
- package/dist/renderer-CYFiGLls.mjs +0 -5
- package/dist/renderer-C__BvvtP.mjs +0 -5
- package/dist/renderer-Ca3YZsoT.mjs +0 -5
- package/dist/renderer-CnM5iFj9.mjs +0 -5
- package/dist/renderer-D1nZrvQx.mjs +0 -5
- package/dist/renderer-D6XjVQME.mjs +0 -5
- package/dist/renderer-DIuMnMF0.mjs +0 -5
- package/dist/renderer-DUvvM8EF.mjs +0 -5
- package/dist/renderer-DWogyuMO.mjs +0 -5
- package/dist/renderer-DWsj_LJR.mjs +0 -5
- package/dist/renderer-DYun0DJl.mjs +0 -5
- package/dist/renderer-D_6YqD-Z.mjs +0 -5
- package/dist/renderer-Db9LP86x.mjs +0 -5
- package/dist/renderer-DhHiC87m.mjs +0 -5
- package/dist/renderer-Dj5jGAkR.mjs +0 -5
- package/dist/renderer-DlPUQ7RF.mjs +0 -5
- package/dist/renderer-DpIPdgn8.mjs +0 -5
- package/dist/renderer-Dv0C9CEt.mjs +0 -6
- package/dist/renderer-Iw8fDL-p.mjs +0 -5
- package/dist/renderer-SLI69Mju.mjs +0 -5
- package/dist/renderer-WyaqnVMz.mjs +0 -3
- package/dist/renderer-ZVtbb3-P.mjs +0 -5
- package/dist/renderer-gHNCu7H5.mjs +0 -5
- package/dist/renderer-gxDNmbtU.mjs +0 -5
- package/dist/renderer-hkK4DNRX.mjs +0 -5
- package/dist/renderer-oy6SGDRz.mjs +0 -5
- package/dist/renderer-rq7UIcuH.mjs +0 -5
- package/dist/renderer-xkEJahws.mjs +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as im}from"./chunk-PIAJWALT.mjs";import{K as zi,L as ji,S as Tr,c as Z,d as dt,t as Rs,u as rm,v as Fs,w as Bs}from"./chunk-VY6ST4QX.mjs";import{a as kr,b as Pr}from"./chunk-ZEYUXJIV.mjs";import{a as Ii,b as As}from"./chunk-PJ3DVG45.mjs";import{a as Mr,c as Ds,d as Ns}from"./chunk-AYTP6OGO.mjs";import{o as Os}from"./chunk-BBHRXV75.mjs";import{$ as co,E as ro,G as Ar,I as io,J as qt,K as oo,O as Dr,R as Nr,T as Zt,U as Pt,V as ao,W as so,X as Je,Y as uo,_ as lo,aa as Mt,b as qi,ba as mo,ca as po,da as fo,ea as ho,fa as On,ga as go,ha as bo,ia as yo,ja as xo,ka as wo,l as Zi,la as Rn,m as Ki,ma as mt,n as Qi,na as vo,oa as So,p as Nn,pa as ko,s as Ji,w as eo,x as to,z as no}from"./chunk-NQZRPPUU.mjs";import{P as Es,S as Ui,U as Cr,Y as An,Z as Gi,_ as Is,a as Yt,aa as Wi,ba as Hi,ca as Yi,da as Dn}from"./chunk-AKT4YQWL.mjs";import{a as om}from"./chunk-YQRKT47I.mjs";import{a as $i}from"./chunk-2JKXYG6J.mjs";import{a as _i}from"./chunk-7I7PKKDL.mjs";import{i as Li}from"./chunk-XKO4RYKN.mjs";import{c as Ts}from"./chunk-SYP4AJMF.mjs";import{d as Xi}from"./chunk-CURR5X7D.mjs";import{a as de}from"./chunk-NKGXINCU.mjs";import{a as l}from"./chunk-V3FODTPI.mjs";import{a as Ls}from"./chunk-PJMX2GFY.mjs";import{h as Ps,j as Ms}from"./chunk-24P6DAB3.mjs";import{e as Ei}from"./chunk-KJGNTREI.mjs";import{a as Ht,l as ks,t as Tn}from"./chunk-ALSOO22Q.mjs";import{a as Ie}from"./chunk-ZMMNN77R.mjs";import{j as Xt,y as Vi}from"./chunk-2LQCQ3OT.mjs";import{m as Cn}from"./chunk-4GEWSUX5.mjs";import{r as be}from"./chunk-MTJHQATU.mjs";import{a as Cs}from"./chunk-IQC2I5A5.mjs";import{c as Fi,h as Bi}from"./chunk-IQKIHFNZ.mjs";import{o as G}from"./chunk-YAQFFQPG.mjs";import{a as Ss,c as Mn,d as x,e as h}from"./chunk-BVF64D6H.mjs";var bd=Ss((mM,gd)=>{h();var vi=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":vi(),apply:()=>vi(),construct:()=>vi()});gd.exports=vi()});var Od=Ss((rT,Nd)=>{h();var Ai=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ai(),apply:()=>Ai(),construct:()=>Ai()});Nd.exports=Ai()});h();h();h();h();var am=t=>!t.source||t.source.type==="keyframe";function Fn(t){let e=[],n=new Map;for(let r of t){if(!am(r)){e.push(r);continue}let i=n.get(r.prop);if(!i){let a={...r,keyframes:[...r.keyframes??[]]};n.set(r.prop,a),e.push(a);continue}let o=new Map(i.keyframes.map(a=>[a.frame,a]));for(let a of r.keyframes??[])o.set(a.frame,a);i.keyframes=[...o.values()].sort((a,s)=>a.frame-s.frame)}return e}function Vs(t,e){if(!t)return e;let n=Po(t);if(!n||n.name==="none")return e;let{name:r,dir:i,params:o}=n,a=Math.max(0,Math.min(1,e)),s=u=>i==="in"?u(a):i==="out"?1-u(1-a):a<.5?u(a*2)/2:1-u((1-a)*2)/2;switch(r){case"power1":return s(u=>u*u);case"power2":return s(u=>u*u*u);case"power3":return s(u=>u*u*u*u);case"sine":return s(u=>1-Math.cos(u*Math.PI/2));case"circ":return s(u=>1-Math.sqrt(Math.max(0,1-u*u)));case"expo":return s(u=>u===0?0:2**(10*(u-1)));case"back":{let u=o?.[0]??1.70158,c=u+1;return s(m=>c*m*m*m-u*m*m)}case"bounce":{let u=c=>{if(c<.36363636363636365)return 7.5625*c*c;if(c<.7272727272727273){let f=c-.5454545454545454;return 7.5625*f*f+.75}if(c<.9090909090909091){let f=c-.8181818181818182;return 7.5625*f*f+.9375}let p=c-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?u(a):i==="in"?1-u(1-a):a<.5?(1-u(1-2*a))/2:(1+u(2*a-1))/2}default:return a}}function Po(t){if(t){if(typeof t=="object"&&"name"in t&&"dir"in t)return t;if(typeof t=="string"){let e=t.trim(),n=e.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(n){let u=n[1].toLowerCase(),c=u==="linear"?"none":u,m=(n[2]||"out").toLowerCase(),d="out";m==="in"?d="in":m==="out"?d="out":m==="inout"&&(d="inOut");let p;return n[3]&&(p=n[3].split(",").map(f=>Number.parseFloat(f.trim())).filter(f=>!Number.isNaN(f))),{name:c,dir:d,...p&&p.length>0?{params:p}:{}}}let r=e.indexOf(".");if(r===-1){let u=e.toLowerCase();return{name:u==="linear"?"none":u,dir:"out"}}let i=e.slice(0,r).toLowerCase(),o=i==="linear"?"none":i,a=e.slice(r+1).toLowerCase(),s="out";return a==="in"?s="in":a==="out"?s="out":a==="inout"&&(s="inOut"),{name:o,dir:s}}}}var ne=class t{tracks=[];frameStep;defaultRepeat;defaultYoyo;constructor(e=[]){this.tracks=[...e]}static create(){return new t}static stepped(e=2){return new t().stepped(e)}stepped(e=2){return this.frameStep=Math.max(1,Math.min(24,Math.round(e))),this}static fromTo(e,n,r,i={}){return new t().fromTo(e,n,r,i)}static keys(e,n,r){return new t().keys(e,n,r)}static signal(e,n,r={}){return new t().signal(e,n,r)}static colorSignal(e,n,r){return new t().colorSignal(e,n,r)}static kineticSweep(e=-1,n=1,r=0,i=24,o="power2.out"){return new t().kineticSweep(e,n,r,i,o)}static typewriter(e=0,n=30,r="linear"){return new t().typewriter(e,n,r)}static letterSpacing(e,n,r=0,i=24,o="power2.out"){return new t().letterSpacing(e,n,r,i,o)}static wiggle(e,n={}){return new t().wiggle(e,n)}static spring(e,n={}){return new t().spring(e,n)}static firstMargin(e,n,r={}){return new t().firstMargin(e,n,r)}static strokeWidth(e,n,r={}){return new t().fromTo("strokeWidth",e,n,r)}static rotateX(e,n,r={}){return new t().fromTo("rotateX",e,n,r)}static rotateY(e,n,r={}){return new t().fromTo("rotateY",e,n,r)}static rotateZ(e,n,r={}){return new t().fromTo("rotateZ",e,n,r)}static rotation(e,n,r={}){return new t().fromTo("rotation",e,n,r)}static scale(e,n,r={}){return new t().fromTo("scale",e,n,r)}static scaleX(e,n,r={}){return new t().fromTo("scaleX",e,n,r)}static scaleY(e,n,r={}){return new t().fromTo("scaleY",e,n,r)}addTrack(e){return this.tracks.push(e),this}repeat(e=-1,n){this.defaultRepeat=e;for(let r of this.tracks)(!n||r.prop===n)&&(r.repeat=e);return this}yoyo(e=!0,n){this.defaultYoyo=e;for(let r of this.tracks)(!n||r.prop===n)&&(r.yoyo=e);return this}loop(e={},n){return this.repeat(-1,n),e.yoyo&&this.yoyo(!0,n),this}fromTo(e,n,r,i={}){let o=i.from??i.start??i.fromFrame??0,a=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?o+i.durationFrames:o+24),s=Po(i.ease),u=this.tracks.find(m=>m.prop===e&&(!m.source||m.source.type==="keyframe"));if(!u){let m={id:`${e}_fromTo_${this.tracks.length}`,prop:e,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(m),u=m}i.repeat!==void 0&&(u.repeat=i.repeat),i.yoyo!==void 0&&(u.yoyo=i.yoyo),i.durationFrames!==void 0&&(u.durationFrames=i.durationFrames);let c=u.id;return u.keyframes.length===0&&o>0&&u.keyframes.push({id:`${c}_k0`,frame:0,value:n}),(u.keyframes.length===0||u.keyframes[u.keyframes.length-1].frame<o)&&u.keyframes.push({id:`${c}_k_${o}`,frame:o,value:n}),u.keyframes.push({id:`${c}_k_${a}`,frame:a,value:r,...s&&{ease:s}}),u.keyframes.sort((m,d)=>m.frame-d.frame),this}keyframe(e,n,r,i){let o=this.tracks.find(c=>c.prop===e&&(!c.source||c.source.type==="keyframe"));if(!o){let c={id:`${e}_track_${this.tracks.length}`,prop:e,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(c),o=c}let a=Po(i),s={id:`k_${o.keyframes.length}_f${n}`,frame:n,value:r,...a&&{ease:a}},u=o.keyframes.findIndex(c=>c.frame===n);return u>=0?o.keyframes[u]=s:o.keyframes.push(s),o.keyframes.sort((c,m)=>c.frame-m.frame),this}keys(e,n,r){for(let[i,o,a]of n)this.keyframe(e,Math.round(i),o,a);if(r){let i=this.tracks.find(o=>o.prop===e&&(!o.source||o.source.type==="keyframe"));i&&(r.repeat!==void 0&&(i.repeat=r.repeat),r.yoyo!==void 0&&(i.yoyo=r.yoyo),r.durationFrames!==void 0&&(i.durationFrames=r.durationFrames))}return this}fadeIn(e=0,n=20,r="power2.out"){return this.fromTo("opacity",0,1,{from:e,to:n,ease:r})}fadeOut(e,n,r="power2.in"){return this.fromTo("opacity",1,0,{from:e,to:n,ease:r})}slideInY(e,n,r=0,i=24,o="power2.out"){return this.fromTo("y",e,n,{from:r,to:i,ease:o})}slideInX(e,n,r=0,i=24,o="power2.out"){return this.fromTo("x",e,n,{from:r,to:i,ease:o})}kineticSweep(e=-1,n=1,r=0,i=24,o="power2.out"){return this.fromTo("offset",e,n,{from:r,to:i,ease:o})}typewriter(e=0,n=30,r="linear"){return this.fromTo("text",0,1,{from:e,to:n,ease:r})}letterSpacing(e,n,r=0,i=24,o="power2.out"){return this.fromTo("letterSpacing",e,n,{from:r,to:i,ease:o})}firstMargin(e,n,r={}){return this.fromTo("firstMargin",e,n,r)}lastMargin(e,n,r={}){return this.fromTo("lastMargin",e,n,r)}baselineShift(e,n,r={}){return this.fromTo("baselineShift",e,n,r)}rotateX(e,n,r={}){return this.fromTo("rotateX",e,n,r)}rotateY(e,n,r={}){return this.fromTo("rotateY",e,n,r)}rotateZ(e,n,r={}){return this.fromTo("rotateZ",e,n,r)}scaleX(e,n,r={}){return this.fromTo("scaleX",e,n,r)}scaleY(e,n,r={}){return this.fromTo("scaleY",e,n,r)}scale(e,n,r={}){return this.fromTo("scale",e,n,r)}perspective(e,n,r={}){return this.fromTo("perspective",e,n,r)}translateZ(e,n,r={}){return this.fromTo("translateZ",e,n,r)}tilt3D(e){let n=e.start??e.fromFrame,r=e.end??e.toFrame,i=e.ease,o=e.from??{},a=e.to,s=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let u of s){let c=a[u];if(c!==void 0){let m=o[u]??0;this.fromTo(u,m,c,{from:n,to:r,fromFrame:n,toFrame:r,ease:i})}}return this}signal(e,n,r={}){let{handleId:i,inline:o}=zi(n),a=`${e}_sig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:r.multiplier??1,offset:r.offset??0,smoothingWindowFrames:r.smoothing??0,signalMode:r.mode??"continuous",threshold:r.threshold??.15,accumulateThreshold:r.threshold??.15,debounceFrames:r.debounceFrames??2,channel:r.channel??"primary"};return o&&ji(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}colorSignal(e,n,r){let{handleId:i,inline:o}=zi(n),a=`${e}_colorSig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:r.multiplier??1,offset:r.offset??0,smoothingWindowFrames:r.smoothing??0,colorMode:r.colorMode??"interpolate",colorA:r.colorA,colorB:r.colorB,colorThreshold:r.threshold,channel:"primary"};return o&&ji(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}wiggle(e,n={}){let r=`${e}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:n.frequency??2,amplitude:n.amplitude??20,octaves:n.octaves??1,seed:n.seed??1234};return this.tracks.push({id:r,prop:e,source:i,keyframes:[]}),this}spring(e,n={}){let r=`${e}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:n.damping??12,stiffness:n.stiffness??180,mass:n.mass??1};return this.tracks.push({id:r,prop:e,source:i,keyframes:[]}),this}followPath(e,n={}){let r=n.start??n.fromFrame??0,i=n.end??n.toFrame??60,o=Math.max(1,i-r),a=n.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=e.totalLength??1,u=n.fromProgress??0,c=n.toProgress??1;n.fromDistance!==void 0&&s>0&&(u=n.fromDistance/s),n.toDistance!==void 0&&s>0&&(c=n.toDistance/s);let m=n.autoOrient??!0,d=n.banking??0,p=n.pitchOffset??0,f=n.yawOffset??0,b=n.rollOffset??0,g=!1,y=!1,k=!1,S=[];for(let P=0;P<=a;P++){let w=P/a,A=Vs(n.ease,w),v=u+A*(c-u),O=Math.round(r+w*o),C=[0,0,0],B=[1,0,0],_=[0,0,0];if(typeof e.getFrameAt=="function"){let M=e.getFrameAt(v);C=M.position,B=M.tangent,_=M.rotation??[0,0,0]}else{let M=e.getPointAt(v);C=M.position,M.tangent&&(B=M.tangent);let H=Math.asin(Math.max(-1,Math.min(1,-B[1])))*(180/Math.PI),Y=Math.atan2(B[0],B[2])*(180/Math.PI),$=Math.atan2(B[1],B[0])*(180/Math.PI);_=[H,Y,$]}let z=_[0]+p,F=_[1]+f,T=(Math.abs(B[2])<1e-4?Math.atan2(B[1],B[0])*(180/Math.PI):_[2])+b;if(d!==0){let M=Math.min(1,v+.02),H=Math.max(0,v-.02),Y=e.getPointAt(M),$=e.getPointAt(H),V=Y.tangent??[1,0,0],ee=$.tangent??[1,0,0],oe=Math.atan2(V[0],V[2]),ge=Math.atan2(ee[0],ee[2]),le=oe-ge;T-=le*d*57.2958}Math.abs(C[2])>1e-4&&(g=!0),Math.abs(z)>1e-4&&(y=!0),Math.abs(F)>1e-4&&(k=!0),S.push({f:O,x:C[0],y:C[1],z:C[2],rx:z,ry:F,rz:T})}for(let P of S)this.keyframe("x",P.f,P.x),this.keyframe("y",P.f,P.y),g&&this.keyframe("z",P.f,P.z),m&&(this.keyframe("rotateZ",P.f,P.rz),y&&this.keyframe("rotateX",P.f,P.rx),k&&this.keyframe("rotateY",P.f,P.ry));return this}applyTo(e){return e.animation=this.toSpec(),e}merge(...e){return this.tracks=Fn([...this.tracks,...e.flatMap(n=>n.tracks)]),this}static merge(...e){let n=new t;return n.tracks=Fn(e.flatMap(r=>r.tracks)),n}toSpec(){return{tracks:this.tracks,...this.frameStep!==void 0&&{frameStep:this.frameStep}}}toJSON(){return this.toSpec()}},Mo=class t extends ne{static camera(){return new t}dolly(e,n,r={}){if(typeof e=="object"){let i=e,o=i.start??i.fromFrame??0,a=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:o,to:a,ease:i.ease})}return this.fromTo("cameraZ",e,n??e,r)}orbit(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return e.azimuth&&this.fromTo("orbitAzimuth",e.azimuth.from??0,e.azimuth.to,{from:n,to:r,ease:e.ease}),e.elevation&&this.fromTo("orbitElevation",e.elevation.from??0,e.elevation.to,{from:n,to:r,ease:e.ease}),e.radius&&this.fromTo("orbitRadius",e.radius.from??1500,e.radius.to,{from:n,to:r,ease:e.ease}),this}truck(e,n,r={}){return this.fromTo("cameraX",e,n,r)}pedestal(e,n,r={}){return this.fromTo("cameraY",e,n,r)}pan(e,n,r={}){return this.fromTo("cameraYaw",e,n,r)}tilt(e,n,r={}){return this.fromTo("cameraPitch",e,n,r)}roll(e,n,r={}){return this.fromTo("cameraRoll",e,n,r)}rackFocus(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return this.fromTo("focusDistance",e.fromDistance,e.toDistance,{from:n,to:r,ease:e.ease??"power2.inOut"}),e.toFStop!==void 0&&this.fromTo("fStop",e.fromFStop??2.8,e.toFStop,{from:n,to:r,ease:e.ease??"power2.inOut"}),this}handheld(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return this.fromTo("shakeTranslation",0,e.translationAmplitude,{from:n,to:r}),this.fromTo("shakeRotation",0,e.rotationAmplitude,{from:n,to:r}),this}followPath3D(e,n={}){let r=n.start??n.fromFrame??0,i=n.end??n.toFrame??60,o=Math.max(1,i-r),a=n.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=n.mode??(n.target?"lookAtTarget":"leadTarget"),u=n.fromProgress??0,c=n.toProgress??1,m=n.lookAhead??.05;for(let d=0;d<=a;d++){let p=d/a,f=Vs(n.ease,p),b=u+f*(c-u),g=Math.round(r+p*o),y=[0,0,0],k=[0,0,0];if(typeof e.getFrameAt=="function"){let S=e.getFrameAt(b);y=S.position,k=S.rotation??[0,0,0]}else y=e.getPointAt(b).position;if(this.keyframe("cameraX",g,y[0]),this.keyframe("cameraY",g,y[1]),this.keyframe("cameraZ",g,y[2]),s==="lookAtTarget"){let S=n.target??[y[0],y[1],0];this.keyframe("targetX",g,S[0]),this.keyframe("targetY",g,S[1]),this.keyframe("targetZ",g,S[2])}else if(s==="leadTarget"){let S=Math.min(1,b+m),P=e.getPointAt(S);this.keyframe("targetX",g,P.position[0]),this.keyframe("targetY",g,P.position[1]),this.keyframe("targetZ",g,P.position[2])}else s==="orientAlongPath"&&(this.keyframe("cameraPitch",g,k[0]),this.keyframe("cameraYaw",g,k[1]),this.keyframe("cameraRoll",g,k[2]))}return this}};h();var To=class t{samples=[];frames=[];totalLength=0;constructor(e){if(e.length<2)throw new Error("Path3D requires at least 2 coordinate samples");this.samples=e,this.totalLength=e[e.length-1].distance,this.computeRotationMinimizingFrames()}computeRotationMinimizingFrames(){let e=this.samples.length;this.frames=new Array(e);let n=this.samples[0].tangent,r=[0,-1,0];Math.abs(Z.dot(n,r))>.95&&(r=[0,0,1]);let i=Z.normalize(Z.subtract(r,Z.multiplyScalar(n,Z.dot(r,n))));Z.lengthSq(i)<1e-4&&(i=[1,0,0]);let o=Z.normalize(Z.cross(n,i));this.frames[0]={normal:i,binormal:o,rotation:this.eulerFromFrame(n,i,o)};for(let a=0;a<e-1;a++){let s=this.samples[a].position,u=this.samples[a+1].position,c=this.samples[a].tangent,m=this.samples[a+1].tangent,d=this.frames[a].normal,p=Z.subtract(u,s),f=Z.dot(p,p),b;if(f>1e-8){let y=Z.subtract(c,Z.multiplyScalar(p,2*Z.dot(p,c)/f)),k=Z.subtract(d,Z.multiplyScalar(p,2*Z.dot(p,d)/f)),S=Z.subtract(m,y),P=Z.dot(S,S);P>1e-8?b=Z.subtract(k,Z.multiplyScalar(S,2*Z.dot(S,k)/P)):b=k}else b=d;b=Z.normalize(Z.subtract(b,Z.multiplyScalar(m,Z.dot(m,b))));let g=Z.normalize(Z.cross(m,b));this.frames[a+1]={normal:b,binormal:g,rotation:this.eulerFromFrame(m,b,g)}}}eulerFromFrame(e,n,r){let i=Math.asin(Math.max(-1,Math.min(1,-e[1])))*(180/Math.PI),o=Math.atan2(e[0],e[2])*(180/Math.PI),a=Math.atan2(n[0],n[1])*(180/Math.PI);return[i,o,a]}getPointAt(e){let r=Math.max(0,Math.min(1,e))*this.totalLength;return this.getPointAtDistance(r)}getPointAtDistance(e){let n=Math.max(0,Math.min(this.totalLength,e)),r=this.samples.length,i=0,o=r-1;for(;i<o;){let P=i+o>>1;this.samples[P].distance<n?i=P+1:o=P}let a=Math.max(1,i),s=a-1,u=this.samples[s],c=this.samples[a],m=c.distance-u.distance,d=m>1e-6?(n-u.distance)/m:0,p=Z.lerp(u.position,c.position,d),f=Z.normalize(Z.lerp(u.tangent,c.tangent,d)),b=this.frames[s],g=this.frames[a],y=Z.normalize(Z.lerp(b.normal,g.normal,d)),k=Z.normalize(Z.cross(f,y)),S=[b.rotation[0]+(g.rotation[0]-b.rotation[0])*d,b.rotation[1]+(g.rotation[1]-b.rotation[1])*d,b.rotation[2]+(g.rotation[2]-b.rotation[2])*d];return{position:p,tangent:f,normal:y,binormal:k,distance:n,t:this.totalLength>0?n/this.totalLength:0,rotation:S}}static catmullRom(e,n={}){if(e.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let r=!!n.closed,i=n.samplesPerSegment??40,o=[];if(r)o.push(e[e.length-1]),o.push(...e),o.push(e[0]),o.push(e[1]);else{let u=e[0],c=e[1],m=e[e.length-1],d=e[e.length-2];o.push(Z.subtract(u,Z.subtract(c,u))),o.push(...e),o.push(Z.add(m,Z.subtract(m,d)))}let a=r?e.length:e.length-1,s=[];for(let u=0;u<a;u++){let c=o[u],m=o[u+1],d=o[u+2],p=o[u+3],f=u===a-1?i:i-1;for(let b=0;b<=f;b++){let g=b/i,y=g*g,k=y*g,S=-.5*k+y-.5*g,P=1.5*k-2.5*y+1,w=-1.5*k+2*y+.5*g,A=.5*k-.5*y,v=[S*c[0]+P*m[0]+w*d[0]+A*p[0],S*c[1]+P*m[1]+w*d[1]+A*p[1],S*c[2]+P*m[2]+w*d[2]+A*p[2]],O=-1.5*y+2*g-.5,C=4.5*y-5*g,B=-4.5*y+4*g+.5,_=1.5*y-1*g,z=[O*c[0]+C*m[0]+B*d[0]+_*p[0],O*c[1]+C*m[1]+B*d[1]+_*p[1],O*c[2]+C*m[2]+B*d[2]+_*p[2]],F=Z.normalize(z);s.push({position:v,tangent:F})}}return t.fromRawSamples(s)}static fromRawSamples(e){let n=0,r=e.map((i,o)=>(o>0&&(n+=Z.distance(i.position,e[o-1].position)),{position:i.position,tangent:i.tangent,distance:n}));if(r.length===0)throw new TypeError("Path3D needs samples");return new t(r)}static bezier(e,n=50){if(e.length===0)throw new Error("Bezier path requires at least 1 segment");let r=[];for(let i=0;i<e.length;i++){let o=e[i],a=i===e.length-1?n:n-1;for(let s=0;s<=a;s++){let u=s/n,c=1-u,m=c*c,d=m*c,p=u*u,f=p*u,b=[d*o.p0[0]+3*m*u*o.p1[0]+3*c*p*o.p2[0]+f*o.p3[0],d*o.p0[1]+3*m*u*o.p1[1]+3*c*p*o.p2[1]+f*o.p3[1],d*o.p0[2]+3*m*u*o.p1[2]+3*c*p*o.p2[2]+f*o.p3[2]],g=[3*m*(o.p1[0]-o.p0[0])+6*c*u*(o.p2[0]-o.p1[0])+3*p*(o.p3[0]-o.p2[0]),3*m*(o.p1[1]-o.p0[1])+6*c*u*(o.p2[1]-o.p1[1])+3*p*(o.p3[1]-o.p2[1]),3*m*(o.p1[2]-o.p0[2])+6*c*u*(o.p2[2]-o.p1[2])+3*p*(o.p3[2]-o.p2[2])],y=Z.normalize(g);r.push({position:b,tangent:y})}}return t.fromRawSamples(r)}static helix(e){let{center:n,radius:r,pitch:i,turns:o,axis:a="z",samplesPerTurn:s=60}=e,u=Math.max(10,Math.round(o*s)),c=[];for(let m=0;m<=u;m++){let d=m/u,p=d*o*Math.PI*2,f=(d-.5)*i*o,b=Math.cos(p),g=Math.sin(p),y,k;a==="z"?(y=[n[0]+r*b,n[1]+r*g,n[2]+f],k=[-r*g,r*b,i*o/(o*Math.PI*2)]):a==="y"?(y=[n[0]+r*b,n[1]+f,n[2]+r*g],k=[-r*g,i*o/(o*Math.PI*2),r*b]):(y=[n[0]+f,n[1]+r*b,n[2]+r*g],k=[i*o/(o*Math.PI*2),-r*g,r*b]),c.push({position:y,tangent:Z.normalize(k)})}return t.fromRawSamples(c)}static circle(e){let{center:n,radius:r,startAngleDeg:i=0,endAngleDeg:o=360,samples:a=128}=e,s=i*Math.PI/180,u=o*Math.PI/180,c=[];for(let m=0;m<=a;m++){let d=s+(u-s)*(m/a),p=Math.cos(d),f=Math.sin(d),b=[n[0]+r*p,n[1],n[2]+r*f],g=[-r*f,0,r*p];c.push({position:b,tangent:Z.normalize(g)})}return t.fromRawSamples(c)}};h();var Co=class t{name;props={};selectors=[];constructor(e){this.name=e}static create(e){return new t(e)}skew(e,n=0){return this.props.skew=e,this.props.skewAxis=n,this}anchor(e,n="character",r=0,i=0){return this.props.anchor={grouping:n,preset:e,anchorX:.5,anchorY:.5,offsetX:r,offsetY:i},this}anchorNormalized(e,n,r="character"){return this.props.anchor={grouping:r,preset:"custom",anchorX:e,anchorY:n,offsetX:0,offsetY:0},this}translateZ(e){return this.props.translateZ=e,this}tilt3D(e=0,n=0,r=0){return this.props.rotationX=e,this.props.rotationY=n,this.props.rotationZ=r,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}rotationZ(e){return this.props.rotationZ=e,this}volumetricFormation(e="cylinder",n=300,r=120,i=360,o=1200,a="y"){return this.props.formation={mode:e,radius:n,pitch:r,totalAngle:i,perspective:o,axis:a},this}lineSpacing(e,n=0){return this.props.lineSpacing=e,this.props.lineAnchor=n,this}lineAnchor(e){return this.props.lineAnchor=e,this}spring(e=180,n=12,r=1,i=0){return this.props.spring={stiffness:e,damping:n,mass:r,initialVelocity:i,overshootMultiplier:1},this}stroke(e,n="#ffffff",r=1){return this.props.stroke={strokeWidth:e,strokeColor:n,strokeAlign:"center",fillOpacity:r,dashOffset:0},this}variableFont(e){return this.props.variableAxes=e,this}chromaticGlitch(e,n=0,r=-e,i=0){return this.props.chromaticGlitch={redShiftX:e,redShiftY:n,blueShiftX:r,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(e,n=60,r=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:e,minFreqHz:n,maxFreqHz:r,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(e=45,n=40,r="#000000",i=.8,o=0,a=16){return this.props.longShadow={angle:e,length:n,color:r,startOpacity:i,endOpacity:o,steps:a},this}particleDissolve(e=0,n=90,r=120){return this.props.particleDissolve={progress:e,dispersalAngle:n,maxDisplacement:r,turbulence:.5,particleSize:2},this}addExpressionSelector(e,n="add"){return this.selectors.push({type:"expression",expression:e,mode:n,amount:1}),this}expressionSelector(e,n="add"){return this.addExpressionSelector(e,n)}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fillColor(e){return this.props.fillColor=e,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};h();var zs=l.enum(["character","word","line","all"]),js=l.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),_s=l.object({grouping:zs.default("character"),preset:js.default("center"),anchorX:l.number().default(.5),anchorY:l.number().default(.5),offsetX:l.number().default(0),offsetY:l.number().default(0)}),sm=l.object({skew:l.number().min(-90).max(90),skewAxis:l.number().default(0)}),um=l.object({lineSpacing:l.number(),lineAnchor:l.number().min(0).max(1).default(0)}),$s=l.enum(["planar","vortex","cylinder","helix"]),Ao=l.object({mode:$s.default("planar"),radius:l.number().default(300),pitch:l.number().default(120),totalAngle:l.number().default(360),axis:l.enum(["x","y","z"]).default("y"),perspective:l.number().positive().default(1200)}),lm=l.object({translateZ:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Ao.optional()}),Us=l.object({stiffness:l.number().positive().default(180),damping:l.number().positive().default(12),mass:l.number().positive().default(1),initialVelocity:l.number().default(0),overshootMultiplier:l.number().min(.5).max(3).default(1)}),cm=l.object({type:l.literal("expression"),name:l.string().optional(),expression:l.string(),mode:l.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:l.number().default(1)}),Gs=l.object({strokeWidth:l.number().min(0).default(0),strokeColor:l.string().default("#ffffff"),strokeAlign:l.enum(["center","inside","outside"]).default("center"),fillOpacity:l.number().min(0).max(1).default(1),dashArray:l.tuple([l.number(),l.number()]).optional(),dashOffset:l.number().default(0)}),Do=l.object({direction:l.enum(["left","right","up","down"]).default("left"),velocity:l.number().default(120),loop:l.boolean().default(!0),repeatGap:l.number().default(80),snap:l.object({enabled:l.boolean().default(!1),granularity:l.enum(["character","word","line"]).default("word"),stopIndex:l.number().default(0),decelEase:l.string().default("cubic.out")}).optional()}),Ws=l.object({weight:l.number().min(100).max(1e3).optional(),width:l.number().min(50).max(200).optional(),slant:l.number().min(-25).max(25).optional(),italic:l.number().min(0).max(1).optional(),opticalSize:l.number().min(6).max(144).optional()}),Hs=l.object({redShiftX:l.number().default(0),redShiftY:l.number().default(0),blueShiftX:l.number().default(0),blueShiftY:l.number().default(0),sliceProbability:l.number().min(0).max(1).default(0),sliceAmplitude:l.number().default(0)}),Ys=l.object({signalChannel:l.string(),minFreqHz:l.number().default(60),maxFreqHz:l.number().default(16e3),scaleAxis:l.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:l.number().default(.2),maxScale:l.number().default(2.5),peakDecay:l.number().min(0).max(.99).default(.8)}),Xs=l.object({angle:l.number().default(45),length:l.number().min(0).default(0),color:l.string().default("#000000"),startOpacity:l.number().min(0).max(1).default(.8),endOpacity:l.number().min(0).max(1).default(0),steps:l.number().int().min(4).max(64).default(16)}),qs=l.object({progress:l.number().min(0).max(1).default(0),dispersalAngle:l.number().default(90),maxDisplacement:l.number().default(120),turbulence:l.number().default(.5),particleSize:l.number().default(2)}),Zs=l.object({x:l.number().optional(),y:l.number().optional(),translateZ:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Ao.optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),lineAnchor:l.number().optional(),anchor:_s.optional(),opacity:l.number().optional(),blur:l.number().optional(),fillColor:l.string().optional(),stroke:Gs.optional(),variableAxes:Ws.optional(),chromaticGlitch:Hs.optional(),longShadow:Xs.optional(),particleDissolve:qs.optional(),audioSpectrum:Ys.optional(),spring:Us.optional()}),No=l.object({name:l.string().default("AdvancedAnimator"),selectors:l.array(l.record(l.string(),l.unknown())).default([]),props:Zs});h();h();var Bn=l.object({x:l.number(),y:l.number()}),Ks=l.object({p0:Bn,p1:Bn,p2:Bn,p3:Bn}),Qs=l.discriminatedUnion("type",[l.object({type:l.literal("svg"),d:l.string().min(1,"SVG path string cannot be empty")}),l.object({type:l.literal("bezier"),segments:l.array(Ks).min(1)}),l.object({type:l.literal("ellipse"),cx:l.number(),cy:l.number(),rx:l.number().positive(),ry:l.number().positive(),startAngleDeg:l.number().default(0),endAngleDeg:l.number().default(360)}),l.object({type:l.literal("wave"),startX:l.number(),startY:l.number(),length:l.number().positive(),amplitude:l.number(),frequency:l.number().positive(),phaseDeg:l.number().default(0)})]),Kt=l.object({path:Qs,firstMargin:l.number().default(0),lastMargin:l.number().default(0),reversePath:l.boolean().default(!1),perpendicularToPath:l.boolean().default(!0),forceAlignment:l.boolean().default(!1),loop:l.boolean().default(!1),baselineOffset:l.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:l.number().default(0)}),Js=l.enum(["bar","underscore","block","custom"]),eu=l.object({enabled:l.boolean().default(!0),style:Js.default("bar"),customChar:l.string().default("|"),color:l.string().optional(),blinkFrequency:l.number().min(0).default(2),hideOnComplete:l.boolean().default(!1),width:l.number().positive().default(2.5),spacing:l.number().default(3)}),tu=l.discriminatedUnion("mode",[l.object({mode:l.literal("constant")}),l.object({mode:l.literal("human"),jitter:l.number().min(0).max(1).default(.35),commaPauseMultiplier:l.number().min(1).default(3),sentencePauseMultiplier:l.number().min(1).default(5.5),paragraphPauseMultiplier:l.number().min(1).default(7)})]),nu=l.object({enabled:l.boolean().default(!1),charset:l.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:l.string().optional(),scrambleFramesPerChar:l.number().int().min(1).default(8),highlightProbability:l.number().min(0).max(1).default(.25),scrambleColor:l.string().optional()}),Or=l.object({granularity:l.enum(["character","word","line"]).default("character"),cursor:eu.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:tu.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:nu.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:l.boolean().default(!1)}),Rr=l.enum(["characters","characters_excluding_spaces","words","lines"]),ru=l.enum(["percentage","index"]),iu=l.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),Fr=l.enum(["add","subtract","intersect","min","max","difference"]),ou=l.object({type:l.literal("range"),start:l.number().default(0),end:l.number().default(1),offset:l.number().default(0),units:ru.default("percentage"),basedOn:Rr.default("characters"),shape:iu.default("square"),mode:Fr.default("add"),amount:l.number().min(-1).max(1).default(1),easeHigh:l.number().min(-1).max(1).default(0),easeLow:l.number().min(-1).max(1).default(0),randomizeOrder:l.boolean().default(!1),randomSeed:l.number().int().default(12345)}),au=l.object({type:l.literal("wiggly"),wigglesPerSecond:l.number().positive().default(2),correlation:l.number().min(0).max(1).default(.5),temporalPhaseDeg:l.number().default(0),spatialPhaseDeg:l.number().default(0),minAmount:l.number().min(-1).max(1).default(-1),maxAmount:l.number().min(-1).max(1).default(1),randomSeed:l.number().int().default(42),basedOn:Rr.default("characters"),mode:Fr.default("intersect")}),su=l.object({type:l.literal("signal"),signalId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),phaseSpread:l.number().default(0),basedOn:Rr.default("characters"),mode:Fr.default("add")}),uu=l.discriminatedUnion("type",[ou,au,su]),lu=l.object({x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),opacity:l.number().min(0).max(1).optional(),fillColor:l.string().optional(),strokeColor:l.string().optional(),strokeWidth:l.number().min(0).optional(),blur:l.number().min(0).optional(),characterOffset:l.number().int().optional()}),cu=l.enum(["character","word","line","all"]),du=l.object({grouping:cu.default("character"),anchorX:l.number().default(.5),anchorY:l.number().default(.8)}),Qt=l.object({name:l.string().default("Animator"),selectors:l.array(uu).min(1),props:lu,anchor:du.default({grouping:"character",anchorX:.5,anchorY:.8})}),dm=l.object({text:l.string(),fontFamily:l.string().default("Inter"),fontSize:l.number().positive().default(24),fontWeight:l.union([l.number(),l.string()]).default(400),fill:l.string().default("#ffffff"),letterSpacing:l.number().default(0),lineHeight:l.number().positive().default(1.2),textAlign:l.enum(["left","center","right"]).default("left"),pathOptions:Kt.optional(),typewriter:Or.optional(),animators:l.array(Qt).default([])});var Oo=class t{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(e){let n=new t;return n.options.path={type:"svg",d:e},n}static fromBezier(e){let n=new t;return n.options.path={type:"bezier",segments:e},n}static fromCurve(e){return t.fromBezier([e])}static circularBadge(e,n,r){let i=new t;return i.options.path={type:"ellipse",cx:e,cy:n,rx:r,ry:r,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(e,n,r,i,o=0,a=360){let s=new t;return s.options.path={type:"ellipse",cx:e,cy:n,rx:r,ry:i,startAngleDeg:o,endAngleDeg:a},s.options.loop=Math.abs(a-o)>=360,s}static wave(e,n,r,i,o,a=0){let s=new t;return s.options.path={type:"wave",startX:e,startY:n,length:r,amplitude:i,frequency:o,phaseDeg:a},s}firstMargin(e){return this.options.firstMargin=e,this}lastMargin(e){return this.options.lastMargin=e,this}reversePath(e){return this.options.reversePath=e,this}perpendicularToPath(e){return this.options.perpendicularToPath=e,this}forceAlignment(e){return this.options.forceAlignment=e,this}loop(e){return this.options.loop=e,this}baselineOffset(e){return this.options.baselineOffset=e,this}baselineShift(e){return this.options.baselineShift=e,this}build(){return Kt.parse(this.options)}},Ro=class t{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(e){let n=new t;return n.name=e,n}addRangeSelector(e){let n=e.easeHigh??0,r=Math.abs(n)>1?n/100:n,i=e.easeLow??0,o=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:e.start??0,end:e.end??1,offset:e.offset??0,units:"percentage",basedOn:e.basedOn??"characters",shape:e.shape??"smooth",mode:e.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,r)),easeLow:Math.max(-1,Math.min(1,o)),randomizeOrder:e.randomizeOrder??!1,randomSeed:e.randomSeed??12345}),this}addWigglySelector(e){return this.selectors.push({type:"wiggly",wigglesPerSecond:e.wigglesPerSecond??2,correlation:e.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:e.minAmount??-1,maxAmount:e.maxAmount??1,randomSeed:e.randomSeed??42,basedOn:"characters",mode:e.mode??"intersect"}),this}addSignalSelector(e,n=1,r=0,i=0,o="add"){return this.selectors.push({type:"signal",signalId:e,multiplier:n,offset:i,phaseSpread:r,basedOn:"characters",mode:o}),this}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}z(e){return this.props.z=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}skew(e){return this.props.skew=e,this}skewAxis(e){return this.props.skewAxis=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fill(e){return this.fillColor(e)}fillColor(e){return this.props.fillColor=e,this}strokeColor(e){return this.props.strokeColor=e,this}strokeWidth(e){return this.props.strokeWidth=e,this}tracking(e){return this.props.tracking=e,this}lineSpacing(e){return this.props.lineSpacing=e,this}characterOffset(e){return this.props.characterOffset=e,this}anchorGrouping(e,n=.5,r=.8){return this.anchor={grouping:e,anchorX:n,anchorY:r},this}build(){return Qt.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};h();h();var mu=`
|
|
1
|
+
import{a as am}from"./chunk-PIAJWALT.mjs";import{K as zi,L as ji,S as Tr,c as Z,d as dt,t as Fs,u as om,v as Bs,w as Ls}from"./chunk-NIILFJKE.mjs";import{a as kr,b as Pr}from"./chunk-ZEYUXJIV.mjs";import{a as Ii,b as Ds}from"./chunk-PJ3DVG45.mjs";import{a as Mr,c as Ns,d as Os}from"./chunk-22BLMBWX.mjs";import{o as Rs}from"./chunk-6THE6J3A.mjs";import{$ as co,E as ro,G as Ar,I as io,J as qt,K as oo,O as Dr,R as Nr,T as Zt,U as Pt,V as ao,W as so,X as Je,Y as uo,_ as lo,aa as Mt,b as qi,ba as mo,ca as po,da as fo,ea as ho,fa as On,ga as go,ha as bo,ia as yo,ja as xo,ka as wo,l as Zi,la as Rn,m as Ki,ma as mt,n as Qi,na as vo,oa as So,p as Nn,pa as ko,s as Ji,w as eo,x as to,z as no}from"./chunk-NQZRPPUU.mjs";import{P as Is,S as Ui,U as Cr,Y as An,Z as Gi,_ as Vs,a as Yt,aa as Wi,ba as Hi,ca as Yi,da as Dn}from"./chunk-AKT4YQWL.mjs";import{a as sm}from"./chunk-YQRKT47I.mjs";import{a as $i}from"./chunk-2JKXYG6J.mjs";import{a as _i}from"./chunk-7I7PKKDL.mjs";import{i as Li}from"./chunk-XKO4RYKN.mjs";import{c as Cs}from"./chunk-SYP4AJMF.mjs";import{d as Xi}from"./chunk-CURR5X7D.mjs";import{a as de}from"./chunk-NKGXINCU.mjs";import{a as l}from"./chunk-V3FODTPI.mjs";import{a as Es}from"./chunk-PJMX2GFY.mjs";import{h as Ps,j as Ms}from"./chunk-24P6DAB3.mjs";import{e as Ei}from"./chunk-KJGNTREI.mjs";import{a as Ht,l as ks,t as Tn}from"./chunk-ALSOO22Q.mjs";import{a as Ie}from"./chunk-ZR4QFIJR.mjs";import{j as Xt,y as Vi}from"./chunk-T36SKUWK.mjs";import{m as Cn}from"./chunk-4GEWSUX5.mjs";import{r as be}from"./chunk-MTJHQATU.mjs";import{a as Ts}from"./chunk-MXK2PP6K.mjs";import{a as As}from"./chunk-IQC2I5A5.mjs";import{c as Fi,h as Bi}from"./chunk-IQKIHFNZ.mjs";import{o as G}from"./chunk-YAQFFQPG.mjs";import{a as Ss,c as Mn,d as x,e as h}from"./chunk-BVF64D6H.mjs";var xd=Ss((hM,yd)=>{h();var vi=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":vi(),apply:()=>vi(),construct:()=>vi()});yd.exports=vi()});var Fd=Ss((aT,Rd)=>{h();var Ai=()=>new Proxy(function(){},{get:(t,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ai(),apply:()=>Ai(),construct:()=>Ai()});Rd.exports=Ai()});h();h();h();h();var um=t=>!t.source||t.source.type==="keyframe";function Fn(t){let e=[],n=new Map;for(let r of t){if(!um(r)){e.push(r);continue}let i=n.get(r.prop);if(!i){let a={...r,keyframes:[...r.keyframes??[]]};n.set(r.prop,a),e.push(a);continue}let o=new Map(i.keyframes.map(a=>[a.frame,a]));for(let a of r.keyframes??[])o.set(a.frame,a);i.keyframes=[...o.values()].sort((a,s)=>a.frame-s.frame)}return e}function zs(t,e){if(!t)return e;let n=Po(t);if(!n||n.name==="none")return e;let{name:r,dir:i,params:o}=n,a=Math.max(0,Math.min(1,e)),s=u=>i==="in"?u(a):i==="out"?1-u(1-a):a<.5?u(a*2)/2:1-u((1-a)*2)/2;switch(r){case"power1":return s(u=>u*u);case"power2":return s(u=>u*u*u);case"power3":return s(u=>u*u*u*u);case"sine":return s(u=>1-Math.cos(u*Math.PI/2));case"circ":return s(u=>1-Math.sqrt(Math.max(0,1-u*u)));case"expo":return s(u=>u===0?0:2**(10*(u-1)));case"back":{let u=o?.[0]??1.70158,c=u+1;return s(m=>c*m*m*m-u*m*m)}case"bounce":{let u=c=>{if(c<.36363636363636365)return 7.5625*c*c;if(c<.7272727272727273){let f=c-.5454545454545454;return 7.5625*f*f+.75}if(c<.9090909090909091){let f=c-.8181818181818182;return 7.5625*f*f+.9375}let p=c-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?u(a):i==="in"?1-u(1-a):a<.5?(1-u(1-2*a))/2:(1+u(2*a-1))/2}default:return a}}function Po(t){if(t){if(typeof t=="object"&&"name"in t&&"dir"in t)return t;if(typeof t=="string"){let e=t.trim(),n=e.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(n){let u=n[1].toLowerCase(),c=u==="linear"?"none":u,m=(n[2]||"out").toLowerCase(),d="out";m==="in"?d="in":m==="out"?d="out":m==="inout"&&(d="inOut");let p;return n[3]&&(p=n[3].split(",").map(f=>Number.parseFloat(f.trim())).filter(f=>!Number.isNaN(f))),{name:c,dir:d,...p&&p.length>0?{params:p}:{}}}let r=e.indexOf(".");if(r===-1){let u=e.toLowerCase();return{name:u==="linear"?"none":u,dir:"out"}}let i=e.slice(0,r).toLowerCase(),o=i==="linear"?"none":i,a=e.slice(r+1).toLowerCase(),s="out";return a==="in"?s="in":a==="out"?s="out":a==="inout"&&(s="inOut"),{name:o,dir:s}}}}var ne=class t{tracks=[];frameStep;defaultRepeat;defaultYoyo;constructor(e=[]){this.tracks=[...e]}static create(){return new t}static stepped(e=2){return new t().stepped(e)}stepped(e=2){return this.frameStep=Math.max(1,Math.min(24,Math.round(e))),this}static fromTo(e,n,r,i={}){return new t().fromTo(e,n,r,i)}static keys(e,n,r){return new t().keys(e,n,r)}static signal(e,n,r={}){return new t().signal(e,n,r)}static colorSignal(e,n,r){return new t().colorSignal(e,n,r)}static kineticSweep(e=-1,n=1,r=0,i=24,o="power2.out"){return new t().kineticSweep(e,n,r,i,o)}static typewriter(e=0,n=30,r="linear"){return new t().typewriter(e,n,r)}static letterSpacing(e,n,r=0,i=24,o="power2.out"){return new t().letterSpacing(e,n,r,i,o)}static wiggle(e,n={}){return new t().wiggle(e,n)}static spring(e,n={}){return new t().spring(e,n)}static firstMargin(e,n,r={}){return new t().firstMargin(e,n,r)}static strokeWidth(e,n,r={}){return new t().fromTo("strokeWidth",e,n,r)}static rotateX(e,n,r={}){return new t().fromTo("rotateX",e,n,r)}static rotateY(e,n,r={}){return new t().fromTo("rotateY",e,n,r)}static rotateZ(e,n,r={}){return new t().fromTo("rotateZ",e,n,r)}static rotation(e,n,r={}){return new t().fromTo("rotation",e,n,r)}static scale(e,n,r={}){return new t().fromTo("scale",e,n,r)}static scaleX(e,n,r={}){return new t().fromTo("scaleX",e,n,r)}static scaleY(e,n,r={}){return new t().fromTo("scaleY",e,n,r)}addTrack(e){return this.tracks.push(e),this}repeat(e=-1,n){this.defaultRepeat=e;for(let r of this.tracks)(!n||r.prop===n)&&(r.repeat=e);return this}yoyo(e=!0,n){this.defaultYoyo=e;for(let r of this.tracks)(!n||r.prop===n)&&(r.yoyo=e);return this}loop(e={},n){return this.repeat(-1,n),e.yoyo&&this.yoyo(!0,n),this}fromTo(e,n,r,i={}){let o=i.from??i.start??i.fromFrame??0,a=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?o+i.durationFrames:o+24),s=Po(i.ease),u=this.tracks.find(m=>m.prop===e&&(!m.source||m.source.type==="keyframe"));if(!u){let m={id:`${e}_fromTo_${this.tracks.length}`,prop:e,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(m),u=m}i.repeat!==void 0&&(u.repeat=i.repeat),i.yoyo!==void 0&&(u.yoyo=i.yoyo),i.durationFrames!==void 0&&(u.durationFrames=i.durationFrames);let c=u.id;return u.keyframes.length===0&&o>0&&u.keyframes.push({id:`${c}_k0`,frame:0,value:n}),(u.keyframes.length===0||u.keyframes[u.keyframes.length-1].frame<o)&&u.keyframes.push({id:`${c}_k_${o}`,frame:o,value:n}),u.keyframes.push({id:`${c}_k_${a}`,frame:a,value:r,...s&&{ease:s}}),u.keyframes.sort((m,d)=>m.frame-d.frame),this}keyframe(e,n,r,i){let o=this.tracks.find(c=>c.prop===e&&(!c.source||c.source.type==="keyframe"));if(!o){let c={id:`${e}_track_${this.tracks.length}`,prop:e,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(c),o=c}let a=Po(i),s={id:`k_${o.keyframes.length}_f${n}`,frame:n,value:r,...a&&{ease:a}},u=o.keyframes.findIndex(c=>c.frame===n);return u>=0?o.keyframes[u]=s:o.keyframes.push(s),o.keyframes.sort((c,m)=>c.frame-m.frame),this}keys(e,n,r){for(let[i,o,a]of n)this.keyframe(e,Math.round(i),o,a);if(r){let i=this.tracks.find(o=>o.prop===e&&(!o.source||o.source.type==="keyframe"));i&&(r.repeat!==void 0&&(i.repeat=r.repeat),r.yoyo!==void 0&&(i.yoyo=r.yoyo),r.durationFrames!==void 0&&(i.durationFrames=r.durationFrames))}return this}fadeIn(e=0,n=20,r="power2.out"){return this.fromTo("opacity",0,1,{from:e,to:n,ease:r})}fadeOut(e,n,r="power2.in"){return this.fromTo("opacity",1,0,{from:e,to:n,ease:r})}slideInY(e,n,r=0,i=24,o="power2.out"){return this.fromTo("y",e,n,{from:r,to:i,ease:o})}slideInX(e,n,r=0,i=24,o="power2.out"){return this.fromTo("x",e,n,{from:r,to:i,ease:o})}kineticSweep(e=-1,n=1,r=0,i=24,o="power2.out"){return this.fromTo("offset",e,n,{from:r,to:i,ease:o})}typewriter(e=0,n=30,r="linear"){return this.fromTo("text",0,1,{from:e,to:n,ease:r})}letterSpacing(e,n,r=0,i=24,o="power2.out"){return this.fromTo("letterSpacing",e,n,{from:r,to:i,ease:o})}firstMargin(e,n,r={}){return this.fromTo("firstMargin",e,n,r)}lastMargin(e,n,r={}){return this.fromTo("lastMargin",e,n,r)}baselineShift(e,n,r={}){return this.fromTo("baselineShift",e,n,r)}rotateX(e,n,r={}){return this.fromTo("rotateX",e,n,r)}rotateY(e,n,r={}){return this.fromTo("rotateY",e,n,r)}rotateZ(e,n,r={}){return this.fromTo("rotateZ",e,n,r)}scaleX(e,n,r={}){return this.fromTo("scaleX",e,n,r)}scaleY(e,n,r={}){return this.fromTo("scaleY",e,n,r)}scale(e,n,r={}){return this.fromTo("scale",e,n,r)}perspective(e,n,r={}){return this.fromTo("perspective",e,n,r)}translateZ(e,n,r={}){return this.fromTo("translateZ",e,n,r)}tilt3D(e){let n=e.start??e.fromFrame,r=e.end??e.toFrame,i=e.ease,o=e.from??{},a=e.to,s=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let u of s){let c=a[u];if(c!==void 0){let m=o[u]??0;this.fromTo(u,m,c,{from:n,to:r,fromFrame:n,toFrame:r,ease:i})}}return this}signal(e,n,r={}){let{handleId:i,inline:o}=zi(n),a=`${e}_sig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:r.multiplier??1,offset:r.offset??0,smoothingWindowFrames:r.smoothing??0,signalMode:r.mode??"continuous",threshold:r.threshold??.15,accumulateThreshold:r.threshold??.15,debounceFrames:r.debounceFrames??2,channel:r.channel??"primary"};return o&&ji(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}colorSignal(e,n,r){let{handleId:i,inline:o}=zi(n),a=`${e}_colorSig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:r.multiplier??1,offset:r.offset??0,smoothingWindowFrames:r.smoothing??0,colorMode:r.colorMode??"interpolate",colorA:r.colorA,colorB:r.colorB,colorThreshold:r.threshold,channel:"primary"};return o&&ji(s,o),this.tracks.push({id:a,prop:e,source:s,keyframes:[]}),this}wiggle(e,n={}){let r=`${e}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:n.frequency??2,amplitude:n.amplitude??20,octaves:n.octaves??1,seed:n.seed??1234};return this.tracks.push({id:r,prop:e,source:i,keyframes:[]}),this}spring(e,n={}){let r=`${e}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:n.damping??12,stiffness:n.stiffness??180,mass:n.mass??1};return this.tracks.push({id:r,prop:e,source:i,keyframes:[]}),this}followPath(e,n={}){let r=n.start??n.fromFrame??0,i=n.end??n.toFrame??60,o=Math.max(1,i-r),a=n.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=e.totalLength??1,u=n.fromProgress??0,c=n.toProgress??1;n.fromDistance!==void 0&&s>0&&(u=n.fromDistance/s),n.toDistance!==void 0&&s>0&&(c=n.toDistance/s);let m=n.autoOrient??!0,d=n.banking??0,p=n.pitchOffset??0,f=n.yawOffset??0,b=n.rollOffset??0,g=!1,y=!1,k=!1,S=[];for(let P=0;P<=a;P++){let w=P/a,A=zs(n.ease,w),v=u+A*(c-u),O=Math.round(r+w*o),C=[0,0,0],B=[1,0,0],_=[0,0,0];if(typeof e.getFrameAt=="function"){let M=e.getFrameAt(v);C=M.position,B=M.tangent,_=M.rotation??[0,0,0]}else{let M=e.getPointAt(v);C=M.position,M.tangent&&(B=M.tangent);let H=Math.asin(Math.max(-1,Math.min(1,-B[1])))*(180/Math.PI),Y=Math.atan2(B[0],B[2])*(180/Math.PI),$=Math.atan2(B[1],B[0])*(180/Math.PI);_=[H,Y,$]}let z=_[0]+p,F=_[1]+f,T=(Math.abs(B[2])<1e-4?Math.atan2(B[1],B[0])*(180/Math.PI):_[2])+b;if(d!==0){let M=Math.min(1,v+.02),H=Math.max(0,v-.02),Y=e.getPointAt(M),$=e.getPointAt(H),V=Y.tangent??[1,0,0],ee=$.tangent??[1,0,0],oe=Math.atan2(V[0],V[2]),ge=Math.atan2(ee[0],ee[2]),le=oe-ge;T-=le*d*57.2958}Math.abs(C[2])>1e-4&&(g=!0),Math.abs(z)>1e-4&&(y=!0),Math.abs(F)>1e-4&&(k=!0),S.push({f:O,x:C[0],y:C[1],z:C[2],rx:z,ry:F,rz:T})}for(let P of S)this.keyframe("x",P.f,P.x),this.keyframe("y",P.f,P.y),g&&this.keyframe("z",P.f,P.z),m&&(this.keyframe("rotateZ",P.f,P.rz),y&&this.keyframe("rotateX",P.f,P.rx),k&&this.keyframe("rotateY",P.f,P.ry));return this}applyTo(e){return e.animation=this.toSpec(),e}merge(...e){return this.tracks=Fn([...this.tracks,...e.flatMap(n=>n.tracks)]),this}static merge(...e){let n=new t;return n.tracks=Fn(e.flatMap(r=>r.tracks)),n}toSpec(){return{tracks:this.tracks,...this.frameStep!==void 0&&{frameStep:this.frameStep}}}toJSON(){return this.toSpec()}},Mo=class t extends ne{static camera(){return new t}dolly(e,n,r={}){if(typeof e=="object"){let i=e,o=i.start??i.fromFrame??0,a=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:o,to:a,ease:i.ease})}return this.fromTo("cameraZ",e,n??e,r)}orbit(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return e.azimuth&&this.fromTo("orbitAzimuth",e.azimuth.from??0,e.azimuth.to,{from:n,to:r,ease:e.ease}),e.elevation&&this.fromTo("orbitElevation",e.elevation.from??0,e.elevation.to,{from:n,to:r,ease:e.ease}),e.radius&&this.fromTo("orbitRadius",e.radius.from??1500,e.radius.to,{from:n,to:r,ease:e.ease}),this}truck(e,n,r={}){return this.fromTo("cameraX",e,n,r)}pedestal(e,n,r={}){return this.fromTo("cameraY",e,n,r)}pan(e,n,r={}){return this.fromTo("cameraYaw",e,n,r)}tilt(e,n,r={}){return this.fromTo("cameraPitch",e,n,r)}roll(e,n,r={}){return this.fromTo("cameraRoll",e,n,r)}rackFocus(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return this.fromTo("focusDistance",e.fromDistance,e.toDistance,{from:n,to:r,ease:e.ease??"power2.inOut"}),e.toFStop!==void 0&&this.fromTo("fStop",e.fromFStop??2.8,e.toFStop,{from:n,to:r,ease:e.ease??"power2.inOut"}),this}handheld(e){let n=e.start??e.fromFrame??0,r=e.end??e.toFrame??0;return this.fromTo("shakeTranslation",0,e.translationAmplitude,{from:n,to:r}),this.fromTo("shakeRotation",0,e.rotationAmplitude,{from:n,to:r}),this}followPath3D(e,n={}){let r=n.start??n.fromFrame??0,i=n.end??n.toFrame??60,o=Math.max(1,i-r),a=n.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=n.mode??(n.target?"lookAtTarget":"leadTarget"),u=n.fromProgress??0,c=n.toProgress??1,m=n.lookAhead??.05;for(let d=0;d<=a;d++){let p=d/a,f=zs(n.ease,p),b=u+f*(c-u),g=Math.round(r+p*o),y=[0,0,0],k=[0,0,0];if(typeof e.getFrameAt=="function"){let S=e.getFrameAt(b);y=S.position,k=S.rotation??[0,0,0]}else y=e.getPointAt(b).position;if(this.keyframe("cameraX",g,y[0]),this.keyframe("cameraY",g,y[1]),this.keyframe("cameraZ",g,y[2]),s==="lookAtTarget"){let S=n.target??[y[0],y[1],0];this.keyframe("targetX",g,S[0]),this.keyframe("targetY",g,S[1]),this.keyframe("targetZ",g,S[2])}else if(s==="leadTarget"){let S=Math.min(1,b+m),P=e.getPointAt(S);this.keyframe("targetX",g,P.position[0]),this.keyframe("targetY",g,P.position[1]),this.keyframe("targetZ",g,P.position[2])}else s==="orientAlongPath"&&(this.keyframe("cameraPitch",g,k[0]),this.keyframe("cameraYaw",g,k[1]),this.keyframe("cameraRoll",g,k[2]))}return this}};h();var To=class t{samples=[];frames=[];totalLength=0;constructor(e){if(e.length<2)throw new Error("Path3D requires at least 2 coordinate samples");this.samples=e,this.totalLength=e[e.length-1].distance,this.computeRotationMinimizingFrames()}computeRotationMinimizingFrames(){let e=this.samples.length;this.frames=new Array(e);let n=this.samples[0].tangent,r=[0,-1,0];Math.abs(Z.dot(n,r))>.95&&(r=[0,0,1]);let i=Z.normalize(Z.subtract(r,Z.multiplyScalar(n,Z.dot(r,n))));Z.lengthSq(i)<1e-4&&(i=[1,0,0]);let o=Z.normalize(Z.cross(n,i));this.frames[0]={normal:i,binormal:o,rotation:this.eulerFromFrame(n,i,o)};for(let a=0;a<e-1;a++){let s=this.samples[a].position,u=this.samples[a+1].position,c=this.samples[a].tangent,m=this.samples[a+1].tangent,d=this.frames[a].normal,p=Z.subtract(u,s),f=Z.dot(p,p),b;if(f>1e-8){let y=Z.subtract(c,Z.multiplyScalar(p,2*Z.dot(p,c)/f)),k=Z.subtract(d,Z.multiplyScalar(p,2*Z.dot(p,d)/f)),S=Z.subtract(m,y),P=Z.dot(S,S);P>1e-8?b=Z.subtract(k,Z.multiplyScalar(S,2*Z.dot(S,k)/P)):b=k}else b=d;b=Z.normalize(Z.subtract(b,Z.multiplyScalar(m,Z.dot(m,b))));let g=Z.normalize(Z.cross(m,b));this.frames[a+1]={normal:b,binormal:g,rotation:this.eulerFromFrame(m,b,g)}}}eulerFromFrame(e,n,r){let i=Math.asin(Math.max(-1,Math.min(1,-e[1])))*(180/Math.PI),o=Math.atan2(e[0],e[2])*(180/Math.PI),a=Math.atan2(n[0],n[1])*(180/Math.PI);return[i,o,a]}getPointAt(e){let r=Math.max(0,Math.min(1,e))*this.totalLength;return this.getPointAtDistance(r)}getPointAtDistance(e){let n=Math.max(0,Math.min(this.totalLength,e)),r=this.samples.length,i=0,o=r-1;for(;i<o;){let P=i+o>>1;this.samples[P].distance<n?i=P+1:o=P}let a=Math.max(1,i),s=a-1,u=this.samples[s],c=this.samples[a],m=c.distance-u.distance,d=m>1e-6?(n-u.distance)/m:0,p=Z.lerp(u.position,c.position,d),f=Z.normalize(Z.lerp(u.tangent,c.tangent,d)),b=this.frames[s],g=this.frames[a],y=Z.normalize(Z.lerp(b.normal,g.normal,d)),k=Z.normalize(Z.cross(f,y)),S=[b.rotation[0]+(g.rotation[0]-b.rotation[0])*d,b.rotation[1]+(g.rotation[1]-b.rotation[1])*d,b.rotation[2]+(g.rotation[2]-b.rotation[2])*d];return{position:p,tangent:f,normal:y,binormal:k,distance:n,t:this.totalLength>0?n/this.totalLength:0,rotation:S}}static catmullRom(e,n={}){if(e.length<2)throw new Error("Catmull-Rom spline requires at least 2 waypoints");let r=!!n.closed,i=n.samplesPerSegment??40,o=[];if(r)o.push(e[e.length-1]),o.push(...e),o.push(e[0]),o.push(e[1]);else{let u=e[0],c=e[1],m=e[e.length-1],d=e[e.length-2];o.push(Z.subtract(u,Z.subtract(c,u))),o.push(...e),o.push(Z.add(m,Z.subtract(m,d)))}let a=r?e.length:e.length-1,s=[];for(let u=0;u<a;u++){let c=o[u],m=o[u+1],d=o[u+2],p=o[u+3],f=u===a-1?i:i-1;for(let b=0;b<=f;b++){let g=b/i,y=g*g,k=y*g,S=-.5*k+y-.5*g,P=1.5*k-2.5*y+1,w=-1.5*k+2*y+.5*g,A=.5*k-.5*y,v=[S*c[0]+P*m[0]+w*d[0]+A*p[0],S*c[1]+P*m[1]+w*d[1]+A*p[1],S*c[2]+P*m[2]+w*d[2]+A*p[2]],O=-1.5*y+2*g-.5,C=4.5*y-5*g,B=-4.5*y+4*g+.5,_=1.5*y-1*g,z=[O*c[0]+C*m[0]+B*d[0]+_*p[0],O*c[1]+C*m[1]+B*d[1]+_*p[1],O*c[2]+C*m[2]+B*d[2]+_*p[2]],F=Z.normalize(z);s.push({position:v,tangent:F})}}return t.fromRawSamples(s)}static fromRawSamples(e){let n=0,r=e.map((i,o)=>(o>0&&(n+=Z.distance(i.position,e[o-1].position)),{position:i.position,tangent:i.tangent,distance:n}));if(r.length===0)throw new TypeError("Path3D needs samples");return new t(r)}static bezier(e,n=50){if(e.length===0)throw new Error("Bezier path requires at least 1 segment");let r=[];for(let i=0;i<e.length;i++){let o=e[i],a=i===e.length-1?n:n-1;for(let s=0;s<=a;s++){let u=s/n,c=1-u,m=c*c,d=m*c,p=u*u,f=p*u,b=[d*o.p0[0]+3*m*u*o.p1[0]+3*c*p*o.p2[0]+f*o.p3[0],d*o.p0[1]+3*m*u*o.p1[1]+3*c*p*o.p2[1]+f*o.p3[1],d*o.p0[2]+3*m*u*o.p1[2]+3*c*p*o.p2[2]+f*o.p3[2]],g=[3*m*(o.p1[0]-o.p0[0])+6*c*u*(o.p2[0]-o.p1[0])+3*p*(o.p3[0]-o.p2[0]),3*m*(o.p1[1]-o.p0[1])+6*c*u*(o.p2[1]-o.p1[1])+3*p*(o.p3[1]-o.p2[1]),3*m*(o.p1[2]-o.p0[2])+6*c*u*(o.p2[2]-o.p1[2])+3*p*(o.p3[2]-o.p2[2])],y=Z.normalize(g);r.push({position:b,tangent:y})}}return t.fromRawSamples(r)}static helix(e){let{center:n,radius:r,pitch:i,turns:o,axis:a="z",samplesPerTurn:s=60}=e,u=Math.max(10,Math.round(o*s)),c=[];for(let m=0;m<=u;m++){let d=m/u,p=d*o*Math.PI*2,f=(d-.5)*i*o,b=Math.cos(p),g=Math.sin(p),y,k;a==="z"?(y=[n[0]+r*b,n[1]+r*g,n[2]+f],k=[-r*g,r*b,i*o/(o*Math.PI*2)]):a==="y"?(y=[n[0]+r*b,n[1]+f,n[2]+r*g],k=[-r*g,i*o/(o*Math.PI*2),r*b]):(y=[n[0]+f,n[1]+r*b,n[2]+r*g],k=[i*o/(o*Math.PI*2),-r*g,r*b]),c.push({position:y,tangent:Z.normalize(k)})}return t.fromRawSamples(c)}static circle(e){let{center:n,radius:r,startAngleDeg:i=0,endAngleDeg:o=360,samples:a=128}=e,s=i*Math.PI/180,u=o*Math.PI/180,c=[];for(let m=0;m<=a;m++){let d=s+(u-s)*(m/a),p=Math.cos(d),f=Math.sin(d),b=[n[0]+r*p,n[1],n[2]+r*f],g=[-r*f,0,r*p];c.push({position:b,tangent:Z.normalize(g)})}return t.fromRawSamples(c)}};h();var Co=class t{name;props={};selectors=[];constructor(e){this.name=e}static create(e){return new t(e)}skew(e,n=0){return this.props.skew=e,this.props.skewAxis=n,this}anchor(e,n="character",r=0,i=0){return this.props.anchor={grouping:n,preset:e,anchorX:.5,anchorY:.5,offsetX:r,offsetY:i},this}anchorNormalized(e,n,r="character"){return this.props.anchor={grouping:r,preset:"custom",anchorX:e,anchorY:n,offsetX:0,offsetY:0},this}translateZ(e){return this.props.translateZ=e,this}tilt3D(e=0,n=0,r=0){return this.props.rotationX=e,this.props.rotationY=n,this.props.rotationZ=r,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}rotationZ(e){return this.props.rotationZ=e,this}volumetricFormation(e="cylinder",n=300,r=120,i=360,o=1200,a="y"){return this.props.formation={mode:e,radius:n,pitch:r,totalAngle:i,perspective:o,axis:a},this}lineSpacing(e,n=0){return this.props.lineSpacing=e,this.props.lineAnchor=n,this}lineAnchor(e){return this.props.lineAnchor=e,this}spring(e=180,n=12,r=1,i=0){return this.props.spring={stiffness:e,damping:n,mass:r,initialVelocity:i,overshootMultiplier:1},this}stroke(e,n="#ffffff",r=1){return this.props.stroke={strokeWidth:e,strokeColor:n,strokeAlign:"center",fillOpacity:r,dashOffset:0},this}variableFont(e){return this.props.variableAxes=e,this}chromaticGlitch(e,n=0,r=-e,i=0){return this.props.chromaticGlitch={redShiftX:e,redShiftY:n,blueShiftX:r,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(e,n=60,r=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:e,minFreqHz:n,maxFreqHz:r,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(e=45,n=40,r="#000000",i=.8,o=0,a=16){return this.props.longShadow={angle:e,length:n,color:r,startOpacity:i,endOpacity:o,steps:a},this}particleDissolve(e=0,n=90,r=120){return this.props.particleDissolve={progress:e,dispersalAngle:n,maxDisplacement:r,turbulence:.5,particleSize:2},this}addExpressionSelector(e,n="add"){return this.selectors.push({type:"expression",expression:e,mode:n,amount:1}),this}expressionSelector(e,n="add"){return this.addExpressionSelector(e,n)}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fillColor(e){return this.props.fillColor=e,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};h();var js=l.enum(["character","word","line","all"]),_s=l.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),$s=l.object({grouping:js.default("character"),preset:_s.default("center"),anchorX:l.number().default(.5),anchorY:l.number().default(.5),offsetX:l.number().default(0),offsetY:l.number().default(0)}),lm=l.object({skew:l.number().min(-90).max(90),skewAxis:l.number().default(0)}),cm=l.object({lineSpacing:l.number(),lineAnchor:l.number().min(0).max(1).default(0)}),Us=l.enum(["planar","vortex","cylinder","helix"]),Ao=l.object({mode:Us.default("planar"),radius:l.number().default(300),pitch:l.number().default(120),totalAngle:l.number().default(360),axis:l.enum(["x","y","z"]).default("y"),perspective:l.number().positive().default(1200)}),dm=l.object({translateZ:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Ao.optional()}),Gs=l.object({stiffness:l.number().positive().default(180),damping:l.number().positive().default(12),mass:l.number().positive().default(1),initialVelocity:l.number().default(0),overshootMultiplier:l.number().min(.5).max(3).default(1)}),mm=l.object({type:l.literal("expression"),name:l.string().optional(),expression:l.string(),mode:l.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:l.number().default(1)}),Ws=l.object({strokeWidth:l.number().min(0).default(0),strokeColor:l.string().default("#ffffff"),strokeAlign:l.enum(["center","inside","outside"]).default("center"),fillOpacity:l.number().min(0).max(1).default(1),dashArray:l.tuple([l.number(),l.number()]).optional(),dashOffset:l.number().default(0)}),Do=l.object({direction:l.enum(["left","right","up","down"]).default("left"),velocity:l.number().default(120),loop:l.boolean().default(!0),repeatGap:l.number().default(80),snap:l.object({enabled:l.boolean().default(!1),granularity:l.enum(["character","word","line"]).default("word"),stopIndex:l.number().default(0),decelEase:l.string().default("cubic.out")}).optional()}),Hs=l.object({weight:l.number().min(100).max(1e3).optional(),width:l.number().min(50).max(200).optional(),slant:l.number().min(-25).max(25).optional(),italic:l.number().min(0).max(1).optional(),opticalSize:l.number().min(6).max(144).optional()}),Ys=l.object({redShiftX:l.number().default(0),redShiftY:l.number().default(0),blueShiftX:l.number().default(0),blueShiftY:l.number().default(0),sliceProbability:l.number().min(0).max(1).default(0),sliceAmplitude:l.number().default(0)}),Xs=l.object({signalChannel:l.string(),minFreqHz:l.number().default(60),maxFreqHz:l.number().default(16e3),scaleAxis:l.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:l.number().default(.2),maxScale:l.number().default(2.5),peakDecay:l.number().min(0).max(.99).default(.8)}),qs=l.object({angle:l.number().default(45),length:l.number().min(0).default(0),color:l.string().default("#000000"),startOpacity:l.number().min(0).max(1).default(.8),endOpacity:l.number().min(0).max(1).default(0),steps:l.number().int().min(4).max(64).default(16)}),Zs=l.object({progress:l.number().min(0).max(1).default(0),dispersalAngle:l.number().default(90),maxDisplacement:l.number().default(120),turbulence:l.number().default(.5),particleSize:l.number().default(2)}),Ks=l.object({x:l.number().optional(),y:l.number().optional(),translateZ:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Ao.optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),lineAnchor:l.number().optional(),anchor:$s.optional(),opacity:l.number().optional(),blur:l.number().optional(),fillColor:l.string().optional(),stroke:Ws.optional(),variableAxes:Hs.optional(),chromaticGlitch:Ys.optional(),longShadow:qs.optional(),particleDissolve:Zs.optional(),audioSpectrum:Xs.optional(),spring:Gs.optional()}),No=l.object({name:l.string().default("AdvancedAnimator"),selectors:l.array(l.record(l.string(),l.unknown())).default([]),props:Ks});h();h();var Bn=l.object({x:l.number(),y:l.number()}),Qs=l.object({p0:Bn,p1:Bn,p2:Bn,p3:Bn}),Js=l.discriminatedUnion("type",[l.object({type:l.literal("svg"),d:l.string().min(1,"SVG path string cannot be empty")}),l.object({type:l.literal("bezier"),segments:l.array(Qs).min(1)}),l.object({type:l.literal("ellipse"),cx:l.number(),cy:l.number(),rx:l.number().positive(),ry:l.number().positive(),startAngleDeg:l.number().default(0),endAngleDeg:l.number().default(360)}),l.object({type:l.literal("wave"),startX:l.number(),startY:l.number(),length:l.number().positive(),amplitude:l.number(),frequency:l.number().positive(),phaseDeg:l.number().default(0)})]),Kt=l.object({path:Js,firstMargin:l.number().default(0),lastMargin:l.number().default(0),reversePath:l.boolean().default(!1),perpendicularToPath:l.boolean().default(!0),forceAlignment:l.boolean().default(!1),loop:l.boolean().default(!1),baselineOffset:l.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:l.number().default(0)}),eu=l.enum(["bar","underscore","block","custom"]),tu=l.object({enabled:l.boolean().default(!0),style:eu.default("bar"),customChar:l.string().default("|"),color:l.string().optional(),blinkFrequency:l.number().min(0).default(2),hideOnComplete:l.boolean().default(!1),width:l.number().positive().default(2.5),spacing:l.number().default(3)}),nu=l.discriminatedUnion("mode",[l.object({mode:l.literal("constant")}),l.object({mode:l.literal("human"),jitter:l.number().min(0).max(1).default(.35),commaPauseMultiplier:l.number().min(1).default(3),sentencePauseMultiplier:l.number().min(1).default(5.5),paragraphPauseMultiplier:l.number().min(1).default(7)})]),ru=l.object({enabled:l.boolean().default(!1),charset:l.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:l.string().optional(),scrambleFramesPerChar:l.number().int().min(1).default(8),highlightProbability:l.number().min(0).max(1).default(.25),scrambleColor:l.string().optional()}),Or=l.object({granularity:l.enum(["character","word","line"]).default("character"),cursor:tu.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:nu.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:ru.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:l.boolean().default(!1)}),Rr=l.enum(["characters","characters_excluding_spaces","words","lines"]),iu=l.enum(["percentage","index"]),ou=l.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),Fr=l.enum(["add","subtract","intersect","min","max","difference"]),au=l.object({type:l.literal("range"),start:l.number().default(0),end:l.number().default(1),offset:l.number().default(0),units:iu.default("percentage"),basedOn:Rr.default("characters"),shape:ou.default("square"),mode:Fr.default("add"),amount:l.number().min(-1).max(1).default(1),easeHigh:l.number().min(-1).max(1).default(0),easeLow:l.number().min(-1).max(1).default(0),randomizeOrder:l.boolean().default(!1),randomSeed:l.number().int().default(12345)}),su=l.object({type:l.literal("wiggly"),wigglesPerSecond:l.number().positive().default(2),correlation:l.number().min(0).max(1).default(.5),temporalPhaseDeg:l.number().default(0),spatialPhaseDeg:l.number().default(0),minAmount:l.number().min(-1).max(1).default(-1),maxAmount:l.number().min(-1).max(1).default(1),randomSeed:l.number().int().default(42),basedOn:Rr.default("characters"),mode:Fr.default("intersect")}),uu=l.object({type:l.literal("signal"),signalId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),phaseSpread:l.number().default(0),basedOn:Rr.default("characters"),mode:Fr.default("add")}),lu=l.discriminatedUnion("type",[au,su,uu]),cu=l.object({x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),opacity:l.number().min(0).max(1).optional(),fillColor:l.string().optional(),strokeColor:l.string().optional(),strokeWidth:l.number().min(0).optional(),blur:l.number().min(0).optional(),characterOffset:l.number().int().optional()}),du=l.enum(["character","word","line","all"]),mu=l.object({grouping:du.default("character"),anchorX:l.number().default(.5),anchorY:l.number().default(.8)}),Qt=l.object({name:l.string().default("Animator"),selectors:l.array(lu).min(1),props:cu,anchor:mu.default({grouping:"character",anchorX:.5,anchorY:.8})}),pm=l.object({text:l.string(),fontFamily:l.string().default("Inter"),fontSize:l.number().positive().default(24),fontWeight:l.union([l.number(),l.string()]).default(400),fill:l.string().default("#ffffff"),letterSpacing:l.number().default(0),lineHeight:l.number().positive().default(1.2),textAlign:l.enum(["left","center","right"]).default("left"),pathOptions:Kt.optional(),typewriter:Or.optional(),animators:l.array(Qt).default([])});var Oo=class t{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(e){let n=new t;return n.options.path={type:"svg",d:e},n}static fromBezier(e){let n=new t;return n.options.path={type:"bezier",segments:e},n}static fromCurve(e){return t.fromBezier([e])}static circularBadge(e,n,r){let i=new t;return i.options.path={type:"ellipse",cx:e,cy:n,rx:r,ry:r,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(e,n,r,i,o=0,a=360){let s=new t;return s.options.path={type:"ellipse",cx:e,cy:n,rx:r,ry:i,startAngleDeg:o,endAngleDeg:a},s.options.loop=Math.abs(a-o)>=360,s}static wave(e,n,r,i,o,a=0){let s=new t;return s.options.path={type:"wave",startX:e,startY:n,length:r,amplitude:i,frequency:o,phaseDeg:a},s}firstMargin(e){return this.options.firstMargin=e,this}lastMargin(e){return this.options.lastMargin=e,this}reversePath(e){return this.options.reversePath=e,this}perpendicularToPath(e){return this.options.perpendicularToPath=e,this}forceAlignment(e){return this.options.forceAlignment=e,this}loop(e){return this.options.loop=e,this}baselineOffset(e){return this.options.baselineOffset=e,this}baselineShift(e){return this.options.baselineShift=e,this}build(){return Kt.parse(this.options)}},Ro=class t{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(e){let n=new t;return n.name=e,n}addRangeSelector(e){let n=e.easeHigh??0,r=Math.abs(n)>1?n/100:n,i=e.easeLow??0,o=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:e.start??0,end:e.end??1,offset:e.offset??0,units:"percentage",basedOn:e.basedOn??"characters",shape:e.shape??"smooth",mode:e.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,r)),easeLow:Math.max(-1,Math.min(1,o)),randomizeOrder:e.randomizeOrder??!1,randomSeed:e.randomSeed??12345}),this}addWigglySelector(e){return this.selectors.push({type:"wiggly",wigglesPerSecond:e.wigglesPerSecond??2,correlation:e.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:e.minAmount??-1,maxAmount:e.maxAmount??1,randomSeed:e.randomSeed??42,basedOn:"characters",mode:e.mode??"intersect"}),this}addSignalSelector(e,n=1,r=0,i=0,o="add"){return this.selectors.push({type:"signal",signalId:e,multiplier:n,offset:i,phaseSpread:r,basedOn:"characters",mode:o}),this}x(e){return this.props.x=e,this}y(e){return this.props.y=e,this}z(e){return this.props.z=e,this}scale(e){return this.props.scale=e,this}scaleX(e){return this.props.scaleX=e,this}scaleY(e){return this.props.scaleY=e,this}rotation(e){return this.props.rotation=e,this}rotationX(e){return this.props.rotationX=e,this}rotationY(e){return this.props.rotationY=e,this}skew(e){return this.props.skew=e,this}skewAxis(e){return this.props.skewAxis=e,this}opacity(e){return this.props.opacity=e,this}blur(e){return this.props.blur=e,this}fill(e){return this.fillColor(e)}fillColor(e){return this.props.fillColor=e,this}strokeColor(e){return this.props.strokeColor=e,this}strokeWidth(e){return this.props.strokeWidth=e,this}tracking(e){return this.props.tracking=e,this}lineSpacing(e){return this.props.lineSpacing=e,this}characterOffset(e){return this.props.characterOffset=e,this}anchorGrouping(e,n=.5,r=.8){return this.anchor={grouping:e,anchorX:n,anchorY:r},this}build(){return Qt.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};h();h();var pu=`
|
|
2
2
|
struct CameraUniforms {
|
|
3
3
|
viewMatrix: mat4x4<f32>,
|
|
4
4
|
projMatrix: mat4x4<f32>,
|
|
@@ -127,7 +127,7 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
127
127
|
|
|
128
128
|
return vec4<f32>(blendedRGB * alpha, alpha);
|
|
129
129
|
}
|
|
130
|
-
`;var Fo=class{device;pipeline;cameraLayout;modelLayout;glassLayout;backdropLayout;modelPool;glassPool;vertexBuffer;indexBuffer;modelData=new Float32Array(40);glassData=new Float32Array(16);constructor(e,n,r="depth24plus",i){this.device=e,this.modelPool=new Vi(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.glassPool=new Vi(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let o=e.createShaderModule({label:"pbr-glass.wgsl",code:
|
|
130
|
+
`;var Fo=class{device;pipeline;cameraLayout;modelLayout;glassLayout;backdropLayout;modelPool;glassPool;vertexBuffer;indexBuffer;modelData=new Float32Array(40);glassData=new Float32Array(16);constructor(e,n,r="depth24plus",i){this.device=e,this.modelPool=new Vi(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.glassPool=new Vi(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let o=e.createShaderModule({label:"pbr-glass.wgsl",code:pu});this.cameraLayout=i??e.createBindGroupLayout({label:"GlassCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"GlassModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.glassLayout=e.createBindGroupLayout({label:"GlassUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.backdropLayout=e.createBindGroupLayout({label:"GlassBackdropLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]});let a=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.glassLayout,this.backdropLayout]});this.pipeline=e.createRenderPipeline({label:"PBRGlassPipeline",layout:a,vertex:{module:o,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},fragment:{module:o,entryPoint:"fs_main",targets:[{format:n,blend:Rs}]},depthStencil:{format:r,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"}});let s=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),u=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=e.createBuffer({size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(s),this.vertexBuffer.unmap(),this.indexBuffer=e.createBuffer({size:u.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(u),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset(),this.glassPool.reset()}draw(e,n,r,i,o){Fs(this.modelData,o.modelMatrix,o.normalMatrix,o.colorTint),this.modelData[36]=o.opacity??1,this.modelData[37]=0,this.modelData[38]=1,this.modelData[39]=0;let a=this.modelPool.getBuffer(this.device,this.modelData);this.glassData[0]=o.ior??1.49,this.glassData[1]=o.roughness??.15,this.glassData[2]=o.f0??.04,this.glassData[3]=o.transmission??.92,this.glassData[4]=o.dispersion??.015,this.glassData[5]=o.envIntensity??.65,this.glassData[6]=o.fresnelPower??5,this.glassData[7]=0,this.glassData[8]=o.viewportWidth,this.glassData[9]=o.viewportHeight,this.glassData[10]=0,this.glassData[11]=0;let s=o.tintColor??[1,1,1,1];this.glassData[12]=s[0],this.glassData[13]=s[1],this.glassData[14]=s[2],this.glassData[15]=s[3];let u=this.glassPool.getBuffer(this.device,this.glassData),c=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:a}}]}),m=this.device.createBindGroup({layout:this.glassLayout,entries:[{binding:0,resource:{buffer:u}}]}),d=this.device.createBindGroup({layout:this.backdropLayout,entries:[{binding:0,resource:i},{binding:1,resource:r.createView()}]});e.setPipeline(this.pipeline),e.setBindGroup(0,n),e.setBindGroup(1,c),e.setBindGroup(2,m),e.setBindGroup(3,d),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.glassPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};h();h();var fu=`
|
|
131
131
|
struct MotionBlurUniforms {
|
|
132
132
|
shutterFraction: f32, // shutterAngle / 360.0
|
|
133
133
|
sampleCount: u32, // e.g. 16
|
|
@@ -231,7 +231,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
|
231
231
|
fn fs_motion_blur(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
232
232
|
return executeMotionBlur(pos);
|
|
233
233
|
}
|
|
234
|
-
`;var Bo=class{device;pipeline;bindGroupLayout;uniformBuffer;sampler;constructor(e){this.device=e;let n=e.createShaderModule({label:"motion-blur-shader",code:
|
|
234
|
+
`;var Bo=class{device;pipeline;bindGroupLayout;uniformBuffer;sampler;constructor(e){this.device=e;let n=e.createShaderModule({label:"motion-blur-shader",code:fu});this.bindGroupLayout=e.createBindGroupLayout({label:"motion-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let r=e.createPipelineLayout({label:"motion-blur-layout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=e.createRenderPipeline({label:"motion-blur-pipeline",layout:r,vertex:{module:n,entryPoint:"vs_main"},fragment:{module:n,entryPoint:"fs_motion_blur",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.uniformBuffer=e.createBuffer({label:"motion-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=e.createSampler({label:"motion-blur-sampler",magFilter:"linear",minFilter:"linear"})}render(e,n,r,i,o,a){let s=(a.shutterAngle??180)/360,u=a.sampleCount??16,c=a.maxVelocity??64,m=a.depthThreshold??.05,d=a.curveType==="box"?0:a.curveType==="triangle"?2:1,p=new ArrayBuffer(32),f=new Float32Array(p),b=new Uint32Array(p);f[0]=s,b[1]=u,f[2]=c,b[3]=16,f[4]=a.width,f[5]=a.height,f[6]=m,b[7]=d,this.device.queue.writeBuffer(this.uniformBuffer,0,p);let g=this.device.createBindGroup({label:"motion-blur-bg",layout:this.bindGroupLayout,entries:[{binding:0,resource:n},{binding:1,resource:r},{binding:2,resource:i},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.uniformBuffer}}]}),y=e.beginRenderPass({label:"motion-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,g),y.draw(4),y.end()}destroy(){this.uniformBuffer.destroy()}};h();var Lo=class{shadowDepthTexture;shadowDepthView;shadowComparisonSampler;lightViewProjMatrix;constructor(e,n=2048){this.lightViewProjMatrix=dt.identity(),this.shadowDepthTexture=e.createTexture({label:"shadow-depth-map",size:[n,n,1],format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowDepthView=this.shadowDepthTexture.createView({label:"shadow-depth-view"}),this.shadowComparisonSampler=e.createSampler({label:"shadow-pcf-sampler",compare:"less-equal",magFilter:"linear",minFilter:"linear"})}computeDirectionalLightMatrix(e,n,r=2e3,i=10,o=4e3){let a=dt.lookAt(e,n,[0,1,0]),s=r*.5,u=dt.orthographic(-s,s,-s,s,i,o);return this.lightViewProjMatrix=dt.multiply(u,a),this.lightViewProjMatrix}destroy(){this.shadowDepthTexture.destroy()}};h();h();var hu=`
|
|
235
235
|
struct SSAOUniforms {
|
|
236
236
|
projMatrix: mat4x4<f32>,
|
|
237
237
|
invProjMatrix: mat4x4<f32>,
|
|
@@ -317,7 +317,7 @@ fn fs_ssao(@builtin(position) pos: vec4<f32>) -> @location(0) f32 {
|
|
|
317
317
|
let ao = 1.0 - (occlusion / f32(max(count, 1u))) * u.intensity;
|
|
318
318
|
return clamp(ao, 0.0, 1.0);
|
|
319
319
|
}
|
|
320
|
-
`,
|
|
320
|
+
`,gu=`
|
|
321
321
|
struct BlurUniforms {
|
|
322
322
|
viewportWidth: f32,
|
|
323
323
|
viewportHeight: f32,
|
|
@@ -377,10 +377,10 @@ fn fs_blur(@builtin(position) pos: vec4<f32>) -> @location(0) f32 {
|
|
|
377
377
|
}
|
|
378
378
|
return result / totalWeight;
|
|
379
379
|
}
|
|
380
|
-
`;var Eo=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(e){this.device=e,this.noiseTexture=e.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let n=new Uint8Array(64);for(let a=0;a<16;a++)n[a*4+0]=Math.floor(Math.random()*255),n[a*4+1]=Math.floor(Math.random()*255),n[a*4+2]=128,n[a*4+3]=255;e.queue.writeTexture({texture:this.noiseTexture},n,{bytesPerRow:16},[4,4,1]);let r=new Float32Array(128);for(let a=0;a<32;a++){let s=Math.random(),u=Math.random(),c=Math.acos(Math.sqrt(1-s)),m=2*Math.PI*u,d=(a+1)/32;d=.1+.9*(d*d),r[a*4+0]=Math.sin(c)*Math.cos(m)*d,r[a*4+1]=Math.sin(c)*Math.sin(m)*d,r[a*4+2]=Math.cos(c)*d,r[a*4+3]=0}this.kernelBuffer=e.createBuffer({label:"ssao-kernel-buffer",size:r.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(this.kernelBuffer,0,r);let i=e.createShaderModule({label:"ssao-shader",code:fu});this.ssaoBindGroupLayout=e.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=e.createRenderPipeline({label:"ssao-eval-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=e.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let o=e.createShaderModule({label:"ssao-blur-shader",code:hu});this.blurBindGroupLayout=e.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=e.createRenderPipeline({label:"ssao-blur-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=e.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=e.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(e,n,r,i,o,a){let s=a.invProjMatrix??dt.invert(a.projMatrix)??dt.identity(),u=new Float32Array(64);u.set(a.projMatrix,0),u.set(s,16),u.set(a.viewMatrix,32),u[48]=a.radius??45,u[49]=a.bias??.025,u[50]=a.intensity??1.5,new Uint32Array(u.buffer)[51]=a.kernelSamples??16,u[52]=a.width,u[53]=a.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,u);let c=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:n},{binding:1,resource:r},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),m=e.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});m.setPipeline(this.ssaoPipeline),m.setBindGroup(0,c),m.draw(4),m.end();let d=new ArrayBuffer(32),p=new Float32Array(d),f=new Int32Array(d);p[0]=a.width,p[1]=a.height,f[2]=a.blurRadius??4,p[3]=a.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,d);let b=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:n},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),g=e.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});g.setPipeline(this.blurPipeline),g.setBindGroup(0,b),g.draw(4),g.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};h();var mm=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],gu=2e3,pm=/(\p{Extended_Pictographic}|\p{Emoji_Presentation}|[\u2600-\u27BF])/u;function fm(t){let e=t.spans??[];return[t.text,...e.map(n=>n.text)].filter(n=>typeof n=="string").join("")}var bu=3;function Io(t){return t.animation?.tracks??[]}var yu=(t,e)=>Io(t).some(n=>e.includes(n.prop)),hm=new Set(["box","flex","block","group"]);function xu(t){if(t.kind==="text"||t.kind==="light"||t.kind==="camera")return!1;if(!hm.has(String(t.kind)))return!0;let e=t.background;return typeof e=="string"&&e!==""&&e!=="transparent"?!0:(t.children??[]).some(xu)}var gm=t=>[...t].sort((e,n)=>(Number(e.zIndex)||0)-(Number(n.zIndex)||0));function Br(t){if(typeof t!="string"||t.includes("gradient("))return null;let e=Fi(t);return e&&e[3]>.99?t:null}function Vo(t,e={}){let n=[],r=(g,y,k,S)=>n.push({severity:g,code:y,message:k,...S&&{layerId:S}}),i=t.width,o=t.height,a=!1,s=[],u=!1,c=[],m=[],d=[],p=(g,y,k)=>{let S=String(g.id??"?");e.emojiFont===!1&&g.kind==="text"&&pm.test(fm(g))&&d.push(S);for(let C of mm){let B=g[C];typeof B!="string"||B===""||B==="transparent"||(B.includes("gradient(")?Ts(B)||r("error","invalid_gradient",`\`${C}\` on '${S}' is not a gradient this renderer reads: ${B}. It draws nothing.`,S):Fi(B)||r("warning","unknown_color",`\`${C}: "${B}"\` on '${S}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,S))}if(g.kind==="light"){let C=g.lightType??"directional";C==="environment"&&(a=!0),C==="ambient"&&s.push(S),g.castShadow&&(C==="directional"||C==="spot"?m.push(S):r("warning","shadow_unsupported_light",`'${S}' is a ${String(C)} light: only directional and spot lights cast shadows.`,S));return}if(g.kind==="camera")return;if(g.kind==="media"){let C=g.inputHandleId;typeof C=="string"&&(g.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(C)?r("error","unsupported_image_format",`'${S}' is an image layer with source '${C}', which is a Lottie vector animation. Use Layer.lottie() instead.`,S):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(C)?r("error","unsupported_image_format",`'${S}' is an image layer with video source '${C}'. Use Layer.video() instead.`,S):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(C)&&r("error","unsupported_image_format",`'${S}' is an image layer with audio source '${C}'. Use Layer.audio() instead.`,S))}let P=!!g.is3D||typeof g.z=="number"&&g.z!==0;if((P||g.kind==="model3d")&&(u=!0),(g.roughness!==void 0||g.metallic!==void 0)&&c.push(S),g.kind==="text"&&y&&!yu(g,["fill","color"])){let C=Br(g.fill??g.color),B=Br(g.background)??y;if(C){let _=Bi.contrast(C,B);_<bu&&r("warning","low_contrast_text",`Text '${S}' (${C}) on ${B} has contrast ${_.toFixed(2)}:1 (aim for \u2265 ${bu}; ${Bi.readableOn(B)} reads well).`,S)}}if(k&&!P&&g.position==="absolute"&&typeof g.x=="number"&&typeof g.y=="number"&&typeof g.width=="number"&&typeof g.height=="number"&&!yu(g,["x","y","translateX","translateY","scale","scaleX","scaleY","rotation"])){let{x:C,y:B,width:_,height:z}=g;(C+_<=0||B+z<=0||C>=i||B>=o)&&r("warning","offscreen_layer",`'${S}' sits entirely outside the ${i}\xD7${o} canvas (x ${C}, y ${B}) and never moves in.`,S)}let w=Io(g).reduce((C,B)=>C+(B.keyframes?.length??0),0);w>gu&&r("warning","large_animation",`'${S}' has ${w} keyframes across its tracks (over ${gu}). Keying every frame is rarely needed: key the turning points and let eases fill in, or drive the prop from a signal.`,S);for(let C of Io(g)){let B=C.keyframes??[];(!C.source||C.source.type==="keyframe")&&B.length>=2&&B.every(_=>JSON.stringify(_.value)===JSON.stringify(B[0].value))&&r("info","static_track",`'${S}' animates \`${C.prop}\` but every keyframe holds ${JSON.stringify(B[0].value)}.`,S)}let A=Br(g.background)??y,v=g.children,O=g.x===0&&g.y===0&&g.width===i&&g.height===o;f(v??[],A,k&&O)},f=(g,y,k)=>{let S=y;for(let P of gm(g))p(P,S,k),xu(P)&&(S=null)},b=Br(t.backgroundColor)??null;if(f(t.layout,b,!0),d.length>0){let g=d.slice(0,3).map(y=>`'${y}'`).join(", ");r("warning","missing_emoji_font",`${d.length===1?"Text":`${d.length} text layers`} ${g}${d.length>3?", \u2026":""} ${d.length===1?"has":"have"} emoji, but no emoji font is registered, so the emoji draw nothing. Run \`npx framefields fonts add emoji\` and call the generated \`registerFonts()\`, or \`FontManager.registerEmojiFont(path)\` with a color emoji font.`,d[0])}return a&&s.length>0&&r("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${s.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),m.length>1&&r("info","multiple_shadow_lights",`${m.length} lights cast shadows (${m.join(", ")}); only the first one does.`),u&&c.length>0&&!a&&r("info","pbr_without_environment",`roughness / metallic are set (${c.slice(0,3).join(", ")}${c.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),n}h();var wu=l.union([l.number().min(0),l.enum(["auto","fit","fill"]),l.custom()]),bm=l.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),vu=l.union([l.instanceof(Yt),l.object({op:l.string().min(1)}).passthrough(),l.custom(t=>!!(t&&typeof t=="object"&&"op"in t&&typeof t.op=="string"))]),ym=l.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","d","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),zo=l.enum(["alpha","alpha-inverted","luma","luma-inverted"]),Su=l.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var xm=l.enum(["interpolate","hueRotate","threshold"]),wm=l.object({name:l.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:l.enum(["in","out","inOut"]),params:l.array(l.number()).optional()}).strict().superRefine((t,e)=>{if(t.name==="spring"&&t.params){let[n,r,i]=t.params;n!==void 0&&n<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),r!==void 0&&r<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),vm=l.object({id:l.string().min(1),frame:l.number().int().min(0),value:l.union([l.number(),l.boolean(),l.string()]),ease:wm.optional(),presetGroupId:l.string().optional(),presetType:l.string().optional(),spatialTangentIn:l.object({x:l.number(),y:l.number()}).optional(),spatialTangentOut:l.object({x:l.number(),y:l.number()}).optional()}).strict(),Sm=l.enum(["continuous","accumulate"]),km=l.discriminatedUnion("type",[l.object({type:l.literal("keyframe")}),l.object({type:l.literal("signal"),inputHandleId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),smoothingWindowFrames:l.number().min(0).default(0),colorMode:xm.optional(),colorA:l.string().optional(),colorB:l.string().optional(),colorThreshold:l.number().optional(),signalMode:Sm.optional(),threshold:l.number().optional(),accumulateThreshold:l.number().optional(),debounceFrames:l.number().int().min(0).optional(),channel:l.string().optional()}),l.object({type:l.literal("wiggle"),frequency:l.number().default(2),amplitude:l.number().default(50),octaves:l.number().int().min(1).max(4).default(1),seed:l.number().default(1234)}),l.object({type:l.literal("springOvershoot"),damping:l.number().default(12),stiffness:l.number().default(180),mass:l.number().default(1)})]),Pm=l.preprocess(t=>{if(!t||typeof t!="object")return t;let e=t;if(e.type==="signal"){let n=typeof e.threshold=="number"?e.threshold:typeof e.accumulateThreshold=="number"?e.accumulateThreshold:.15;return{type:"signal",inputHandleId:e.inputHandleId??e.handleId,multiplier:e.multiplier??e.amplitude??1,offset:e.offset??0,smoothingWindowFrames:e.smoothingWindowFrames??e.smoothing??0,colorMode:e.colorMode,colorA:e.colorA,colorB:e.colorB,colorThreshold:e.colorThreshold,signalMode:e.signalMode??"continuous",threshold:n,accumulateThreshold:n,debounceFrames:e.debounceFrames??2,channel:typeof e.channel=="string"?e.channel:"primary"}}return t},km),Mm=(t,e)=>{if(t?.tracks)for(let n=0;n<t.tracks.length;n++){let r=t.tracks[n],i=r.keyframes??[];(!r.source||r.source.type==="keyframe")&&i.length<1&&e.addIssue({code:l.ZodIssueCode.custom,message:`Track for property '${r.prop}' must have at least 1 keyframe.`,path:["tracks",n,"keyframes"]});let a=r.prop==="hidden"||r.prop==="muted",s=r.prop==="fillColor"||r.prop==="strokeColor"||r.prop==="fill"||r.prop==="color";for(let u=0;u<i.length;u++){let c=i[u];if(u>0){let d=i[u-1];c.frame<d.frame?e.addIssue({code:l.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",n,"keyframes",u]}):c.frame===d.frame&&e.addIssue({code:l.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",n,"keyframes",u]})}let m=typeof c.value;a?m!=="boolean"&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for discrete property '${r.prop}' must be a boolean.`,path:["tracks",n,"keyframes",u,"value"]}):s?m!=="string"&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for color property '${r.prop}' must be a string.`,path:["tracks",n,"keyframes",u,"value"]}):m!=="number"||Number.isNaN(c.value)||!Number.isFinite(c.value)?e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for numeric property '${r.prop}' must be a finite number.`,path:["tracks",n,"keyframes",u,"value"]}):(r.prop==="volume"||r.prop==="trimStart"||r.prop==="trimEnd")&&(c.value<0||c.value>1)&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for property '${r.prop}' must be between 0 and 1.`,path:["tracks",n,"keyframes",u,"value"]})}}},Tm=l.object({id:l.string().min(1),prop:ym,source:Pm.optional(),keyframes:l.array(vm).default([]),repeat:l.number().int().optional(),yoyo:l.boolean().optional(),durationFrames:l.number().int().min(1).optional()}).strict(),jo=l.object({tracks:l.array(Tm).max(24),frameStep:l.number().int().min(1).max(24).optional()}).strict().superRefine(Mm),Tt={id:l.string().min(1),inputHandleId:l.string().optional(),position:l.enum(["relative","absolute"]).default("relative"),x:l.union([l.number(),l.custom()]).default(0),y:l.union([l.number(),l.custom()]).default(0),width:wu.optional(),height:wu.optional(),grow:l.number().min(0).optional(),flexShrink:l.number().min(0).optional(),flexBasis:l.number().min(0).optional(),alignSelf:l.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:l.number().positive().optional(),zIndex:l.number().int().default(0),hidden:l.boolean().default(!1),opacity:l.number().min(0).max(1).default(1),blendMode:l.string().optional(),effects:l.array(vu).optional(),rotation:l.number().default(0),scale:l.number().min(0).default(1),scaleX:l.number().default(1),scaleY:l.number().default(1),anchorX:l.number().min(0).max(1).default(.5),anchorY:l.number().min(0).max(1).default(.5),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),motionBlurShutter:l.number().min(0).max(360).optional(),rotateX:l.number().default(0),rotateY:l.number().default(0),rotateZ:l.number().default(0),perspective:l.number().min(0).default(0),perspectiveOriginX:l.number().default(.5),perspectiveOriginY:l.number().default(.5),translateZ:l.number().default(0),backfaceVisibility:l.enum(["visible","hidden"]).default("visible"),transformStyle:l.enum(["flat","preserve-3d"]).default("flat"),is3D:l.boolean().default(!1),z:l.union([l.number(),l.custom()]).default(0),scaleZ:l.number().default(1),twoSided:l.boolean().default(!0),material:Su.default("lit"),ior:l.number().min(1).max(3).optional(),roughness:l.number().min(0).max(1).optional(),shininess:l.number().min(1).max(512).default(32),specularIntensity:l.number().min(0).default(.5),metallic:l.number().min(0).max(1).optional(),ambientIntensity:l.number().min(0).default(1),transmission:l.number().min(0).max(1).optional(),dispersion:l.number().min(0).max(1).optional(),fresnelPower:l.number().min(1).max(10).optional(),envIntensity:l.number().min(0).max(10).optional(),emissive:de.optional(),emissiveIntensity:l.number().min(0).optional(),castShadow:l.boolean().optional(),matte:l.object({node:l.custom(t=>typeof t=="object"&&t!==null),mode:zo.optional()}).optional(),matteId:l.string().optional(),matteOf:l.string().optional(),matteMode:zo.optional(),animation:jo.default({tracks:[]}),vision:l.unknown().optional(),relighting:l.unknown().optional()},ku=l.object({color:de,offset:l.object({x:l.number(),y:l.number()}).optional(),blurRadius:l.number().min(0).optional()}).strict(),Cm=l.object({x:l.number().optional(),y:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),opacity:l.number().optional(),blur:l.number().optional(),color:l.string().optional()}).strict(),Pu=l.object({id:l.string(),unit:l.enum(["character","word","line"]).default("character"),rangeStart:l.number().min(0).max(1).default(0),rangeEnd:l.number().min(0).max(1).default(1),offset:l.number().min(-1).max(1).default(0),easing:l.string().default("power2.out"),transform:Cm.optional()}),Am={waveRise(t={}){return{id:t.id??"wave-rise",unit:t.unit??"character",rangeStart:t.rangeStart??0,rangeEnd:t.rangeEnd??1,offset:t.offset??-1,easing:t.easing??"power2.out",transform:{y:t.y??40,rotationX:t.rotationX??45,opacity:t.opacity??0,blur:t.blur??0}}},wordPop(t={}){return{id:t.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.6)",transform:{scale:t.scale??0,y:t.y??20,opacity:0}}},blurIn(t={}){return{id:t.id??"blur-in",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"power3.out",transform:{blur:t.blur??16,y:t.y??20,opacity:t.opacity??0}}},flip3D(t={}){return{id:t.id??"flip-3d",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.4)",transform:{rotationX:t.rotationX??90,opacity:0}}},colorSweep(t){return{id:t.id??"color-sweep",unit:t.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:t.easing??"power2.inOut",transform:{color:t.color}}}},Dm=l.object({focalLength:l.number().min(5).max(500).default(50),fov:l.number().min(5).max(160).optional(),sensorWidth:l.number().default(36),near:l.number().min(.1).default(1),far:l.number().min(10).default(5e4),zoom:l.number().min(.01).default(1)}).strict(),Nm=l.object({enabled:l.boolean().default(!1),focusDistance:l.number().min(1).default(1e3),fStop:l.number().min(.5).max(64).default(2.8),maxBlurRadius:l.number().min(0).max(128).default(32),apertureBlades:l.number().int().min(0).max(12).default(0),anamorphicRatio:l.number().min(.5).max(3).default(1)}).strict(),Om=l.object({translationAmplitude:l.number().min(0).default(0),rotationAmplitude:l.number().min(0).default(0),frequency:l.number().min(.1).max(60).default(2.5),octaves:l.number().int().min(1).max(6).default(3),seed:l.number().default(42)}).strict(),Mu=l.object({id:l.string().min(1),kind:l.literal("camera"),mode:l.enum(["lookAt","free","orbit"]).default("lookAt"),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),pitch:l.number().default(0),yaw:l.number().default(0),roll:l.number().default(0),lens:Dm.optional(),dof:Nm.optional(),shake:Om.optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:jo.default({tracks:[]})}).strict(),Tu=l.enum(["ambient","directional","point","spot","environment"]),Cu=l.enum(["studio","soft","sunset","night","neutral"]),Au=l.enum(["neutral","agx","aces","none"]),Du=l.object({color:de,start:l.number().min(0),end:l.number().min(0),opacity:l.number().min(0).max(1).optional()}).strict(),Nu=l.object({intensity:l.number().min(0).max(10).optional(),threshold:l.number().min(0).max(16).optional(),knee:l.number().min(0).max(1).optional(),radius:l.number().min(1).max(8).optional()}).strict(),Ou=l.object({id:l.string().min(1),kind:l.literal("light"),lightType:Tu.default("directional"),color:de.default("#ffffff"),intensity:l.number().default(1),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),direction:l.tuple([l.number(),l.number(),l.number()]).optional(),radius:l.number().min(0).default(1e3),decay:l.number().min(0).default(2),angle:l.number().min(0).max(180).default(45),penumbra:l.number().min(0).max(1).default(.2),castShadow:l.boolean().optional(),shadowSoftness:l.number().min(0).max(64).optional(),shadowDarkness:l.number().min(0).max(1).optional(),shadowMapSize:l.number().int().min(256).max(8192).optional(),preset:Cu.optional(),top:de.optional(),horizon:de.optional(),bottom:de.optional(),softboxes:l.number().min(0).optional(),rotation:l.number().optional(),exposure:l.number().min(-16).max(16).optional(),toneMapping:Au.optional(),fog:Du.optional(),bloom:l.union([l.boolean(),Nu]).optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:jo.default({tracks:[]})}).strict(),_o=()=>l.array(l.lazy(()=>$o)),Ru=l.object({...Tt,kind:l.literal("flex"),dir:l.enum(["row","column"]).default("row"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),justify:l.enum(["start","center","end","space-between","space-around"]).default("start"),align:l.enum(["start","center","end","stretch"]).default("start"),wrap:l.boolean().default(!1),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:de.optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Rm=l.object({...Tt,kind:l.literal("block"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),align:l.enum(["start","center","end","stretch"]).default("start"),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:de.optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Fu=l.object({...Tt,kind:l.literal("box"),background:de,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).default(0),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Bu=l.object({background:de,borderRadius:l.number().min(0).optional(),paddingX:l.number().min(0).optional(),paddingY:l.number().min(0).optional()}).strict(),Lu=l.object({text:l.union([l.string(),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]),fontFamily:l.string().optional(),fontSize:l.union([l.number().positive(),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.enum(["normal","italic"]).optional(),fill:l.union([de,l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),letterSpacing:l.number().optional(),baselineShift:l.number().optional(),opacity:l.union([l.number().min(0).max(1),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),mark:Bu.optional()}).strict(),Fm={text:l.string().default(""),spans:l.array(Lu).optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:de,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:de,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).optional(),stroke:de,strokeWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),textShadow:l.string().optional(),shadows:l.array(ku).optional(),pathOptions:Kt.optional(),typewriter:Or.optional(),marquee:Do.optional(),animators:l.array(l.union([Pu,Qt,No])).optional()},Eu=l.object({...Tt,...Fm,kind:l.literal("text")}).strict(),Iu=l.object({...Tt,kind:l.literal("media"),inputHandleId:l.string().min(1),src:l.string().optional(),dataType:l.string().optional(),fit:l.enum(["cover","contain","fill","none"]).default("contain"),dpr:l.number().min(1).max(4).optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),volume:l.number().min(0).max(1).default(1),muted:l.boolean().default(!1),trimStartSec:l.number().min(0).optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:de,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:de,padding:l.number().min(0).optional(),stroke:de,strokeWidth:l.number().min(0).optional(),textShadow:l.string().optional(),shadows:l.array(ku).optional(),maxWidth:l.number().optional()}).strict(),Bm={shapeType:bm.default("rect"),borderRadius:l.number().min(0).optional(),radiusTL:l.number().min(0).optional(),radiusTR:l.number().min(0).optional(),radiusBR:l.number().min(0).optional(),radiusBL:l.number().min(0).optional(),polygonSides:l.number().int().min(3).max(64).optional(),starPoints:l.number().int().min(3).max(64).optional(),starInnerRadiusRatio:l.number().min(.01).max(.99).optional(),arrowHeadWidth:l.number().min(0).optional(),arrowHeadLength:l.number().min(0).optional(),arrowShaftWidth:l.number().min(1).optional(),d:l.string().optional(),fillType:l.enum(["solid","linear","radial","none"]).default("solid"),fillColor:de.default("#3b82f6"),gradientEndColor:de.optional(),gradientAngle:l.number().default(0),strokeColor:de.default("#ffffff"),strokeWidth:l.number().min(0).default(0),strokeDashArray:l.string().optional(),strokeDashOffset:l.number().default(0),strokeLineCap:l.enum(["butt","round","square"]).default("round"),strokeLineJoin:l.enum(["miter","round","bevel"]).default("round"),strokeAlign:l.enum(["inside","center","outside"]).optional(),trimStart:l.number().min(0).max(1).default(0),trimEnd:l.number().min(0).max(1).default(1),trimOffset:l.number().default(0)},Vu=l.object({...Tt,...Bm,kind:l.literal("shape")}).strict(),Lm=l.object({offset:l.number().min(0).max(1),color:l.string()}),zu=l.object({...Tt,kind:l.literal("model3d"),src:l.string().default(""),modelFormat:l.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:l.unknown().optional(),animationName:l.string().optional(),animationProgress:l.number().min(0).max(1).default(0),animationTime:l.number().min(0).default(0),animationSpeed:l.number().default(1),loop:l.boolean().default(!0),wireframe:l.boolean().default(!1),texture:l.string().optional(),center:l.boolean().optional(),normalizeSize:l.number().optional(),scaleX:l.number().default(1),scaleY:l.number().default(1),audioDeform:l.record(l.string(),l.unknown()).optional(),color:de.optional(),colorTint:de.optional(),text3dOptions:l.unknown().optional(),primitive3d:l.unknown().optional()}).strict(),$o=l.lazy(()=>l.discriminatedUnion("kind",[Ru,Rm,Fu,Eu,Iu,Vu,Mu,Ou,zu])),Em=l.object({width:l.number().int().min(1).max(4096),height:l.number().int().min(1).max(4096),backgroundColor:de,volume:l.number().min(0).max(1).default(1),fps:l.number().int().min(1).max(120).default(24),mode:l.enum(["Video","Image"]).default("Video"),antialias3d:l.boolean().optional(),layout:l.array($o).default([]),fonts:l.array(l.string()).optional(),signals:l.record(l.string(),l.unknown()).optional(),effects:l.array(vu).optional(),vision:l.unknown().optional(),onRequestFrame:l.custom().optional()}).strict();h();var ju=l.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),_u=l.object({sourceLayerId:l.string(),targetLayerId:l.string(),mode:l.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:l.number().int().min(0).max(30).default(0)}).strict(),Im=l.object({id:l.string(),chapter:l.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:l.number().positive().optional(),durationFrames:l.number().int().positive().optional(),transitionOut:l.object({type:ju.default("cut"),durationFrames:l.number().int().min(0).default(0),carrier:_u.optional(),whipDirection:l.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function Vm(t,e){return{x:t.x,y:t.y,scale:t.scale,vx:t.vx,vy:t.vy,...e}}function $u(t,e=60){let n=0,r=[];for(let a of t){let s=n,u=a.durationFrames??(a.durationMs?Math.round(a.durationMs/1e3*e):60);r.push({sceneId:a.id,startFrame:s,durationFrames:u});let c=a.transitionOverlap??a.transitionOut?.durationFrames??0;n+=Math.max(1,u-c)}let i=n,o=Math.round(i/e*1e3);return{totalFrames:i,totalDurationMs:o,sceneOffsets:r}}var Ln=class t{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(e){this.id=e.id,this.chapter=e.chapter??"custom",this.durationMs=e.durationMs,this.durationFrames=e.durationFrames,this.transitionOut={type:e.transitionOut?.type??"cut",durationFrames:e.transitionOut?.durationFrames??0,carrier:e.transitionOut?.carrier,whipDirection:e.transitionOut?.whipDirection??"left"},this.layout=e.layout??[]}static create(e){return new t(e)}},Uo=class t{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(e={}){if(this.fps=e.fps??60,this.width=e.width??1920,this.height=e.height??1080,this.backgroundColor=e.backgroundColor??"#ffffff",this.fonts=e.fonts,this.signals=e.signals,e.scenes)for(let n of e.scenes)this.addScene(n)}static create(e={}){return new t(e)}addScene(e){let n=e instanceof Ln?e:new Ln(e);return this.scenes.push(n),this}getScenes(){return this.scenes}calculateTimeline(){return $u(this.scenes,this.fps)}toProgram(){let e=this.calculateTimeline(),n=[];for(let r=0;r<this.scenes.length;r++){let i=this.scenes[r],o=e.sceneOffsets[r];if(o)for(let a of i.layout){let s={...a};s.startFrame=(s.startFrame??0)+o.startFrame,s.durationFrames===void 0&&(s.durationFrames=o.durationFrames),n.push(s)}}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:n,fonts:this.fonts,signals:this.signals}}};h();var Lr=t=>t<0?0:t>1?1:t,zm={none:()=>t=>t,linear:()=>t=>t,power1:()=>t=>t*t,power2:()=>t=>t*t*t,cubic:()=>t=>t*t*t,power3:()=>t=>t**4,sine:()=>t=>1-Math.cos(t*Math.PI/2),circ:()=>t=>1-Math.sqrt(Math.max(0,1-t*t)),expo:()=>t=>t===0?0:2**(10*(t-1)),back:([t=1.70158])=>e=>(t+1)*e*e*e-t*e*e,elastic:([t=1,e=.3])=>{let n=Math.max(1,t),r=e/(2*Math.PI)*Math.asin(1/n);return i=>i===0||i===1?i:-(n*2**(10*(i-1))*Math.sin((i-1-r)*(2*Math.PI)/e))},bounce:()=>t=>1-jm(1-t)};function jm(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-1.5/2.75)**2+.75:t<2.5/2.75?7.5625*(t-2.25/2.75)**2+.9375:7.5625*(t-2.625/2.75)**2+.984375}var Uu=new Map;function _m(t){if(!t)return s=>Lr(s);let e=Uu.get(t);if(e)return e;let n=t.trim().match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]*)\))?$/);if(!n)throw new Error(`Unknown ease "${t}"`);let r=(n[1]??"").toLowerCase(),i=(n[2]??"out").toLowerCase(),o=(n[3]??"").split(",").map(s=>Number.parseFloat(s)).filter(s=>!Number.isNaN(s)),a;if(r==="hold")a=s=>s>=1?1:0;else{let s=zm[r];if(!s)throw new Error(`Unknown ease "${t}"`);let u=s(o);if(i==="in")a=c=>u(Lr(c));else if(i==="inout")a=c=>{let m=Lr(c);return m<.5?u(m*2)/2:1-u((1-m)*2)/2};else if(i==="out")a=c=>1-u(1-Lr(c));else throw new Error(`Unknown ease direction in "${t}"`)}return Uu.set(t,a),a}function Er(t,e){return _m(t)(e)}var En=(t,e=3)=>{let n=10**e;return Math.round(t*n)/n},Go=t=>t[t.length-1];function $m(t){let e=new Map;for(let n of t)e.set(n[0],n);return[...e.values()].sort((n,r)=>n[0]-r[0])}function Um(t){let e=[];for(let n of t){for(;e.length>0&&Go(e)[0]>=n[0];)e.pop();e.push(n)}return e}function Ny(t,e){let n=t[0];if(!n)return 0;if(e<=n[0])return n[1];for(let r=1;r<t.length;r++){let[i,o]=t[r-1],[a,s,u]=t[r];if(e>a)continue;if(u==="hold")return e===a?s:o;let c=Er(typeof u=="string"?u:void 0,(e-i)/Math.max(1,a-i));return o+(s-o)*c}return Go(t)[1]}var Gu=class{constructor(e){this.initial=e}initial;changes=[];to(e,n,r,i="power2.out"){return this.changes.push({start:e,end:Math.max(e,n),to:r,ease:i}),this}set(e,n){return this.to(e,e,n)}keys(){let e=[[0,this.initial]],n=this.initial;for(let r of[...this.changes].sort((i,o)=>i.start-o.start)){let i=Go(e),o=Math.max(r.start,i[0]+(r.end===r.start?1:0));o>i[0]&&e.push([o,n]);let a=Math.max(r.end,o);a===o?e[e.length-1]=[o,r.to,"hold"]:e.push([a,r.to,r.ease]),n=r.to}return Um(e)}},Wu=class{book=new Map;key(e,n,r){let i=this.book.get(e)??new Map;return this.book.set(e,i),i.set(n,[...i.get(n)??[],...r]),this}apply(){for(let[e,n]of this.book){let r=ne.create();for(let[i,o]of n)r.keys(i,$m(o));e.animate(r)}}};var et=2048,Gm=42,Wm=30,Hm=48,Hu=-60;function Ym(t,e){let n=t.length;for(let r=1,i=0;r<n;r++){let o=n>>1;for(;i&o;o>>=1)i^=o;i^=o,r<i&&([t[r],t[i]]=[t[i],t[r]],[e[r],e[i]]=[e[i],e[r]])}for(let r=2;r<=n;r<<=1){let i=-2*Math.PI/r,o=Math.cos(i),a=Math.sin(i);for(let s=0;s<n;s+=r){let u=1,c=0;for(let m=0;m<r/2;m++){let d=s+m,p=d+r/2,f=t[p]*u-e[p]*c,b=t[p]*c+e[p]*u;t[p]=t[d]-f,e[p]=e[d]-b,t[d]=t[d]+f,e[d]=e[d]+b;let g=u*o-c*a;c=u*a+c*o,u=g}}}}function Yu(t,e){if(t.length===0)return 0;let n=[...t].sort((r,i)=>r-i);return n[Math.min(n.length-1,Math.floor(e*n.length))]}var Ir=t=>20*Math.log10(t+1e-9),Xu=t=>t<0?0:t>1?1:t;function Xm(t,e,n){return Array.from({length:t+1},(r,i)=>e*(n/e)**(i/t))}function qu(t,e,n={}){let r=n.fps??30,i=n.bands??32,o=n.minHz??50,a=Math.min(n.maxHz??12e3,e/2),s=Math.max(0,...t.map(z=>z.length)),u=new Float32Array(s);for(let z of t)for(let F=0;F<z.length;F++)u[F]=u[F]+z[F]/t.length;let c=Math.ceil(s/e*r),m=e/r,d=Float64Array.from({length:et},(z,F)=>.5-.5*Math.cos(2*Math.PI*F/(et-1))),p=Xm(i,o,a),f=e/et,b=p.slice(0,-1).map((z,F)=>{let T=Math.max(1,Math.floor(z/f)),M=Math.max(T+1,Math.ceil(p[F+1]/f));return[T,Math.min(et/2,M)]}),g=p.filter(z=>z<150).length,y=Array.from({length:i},()=>new Array(c)),k=new Array(c),S=new Array(c).fill(0),P=null,w=new Float64Array(et),A=new Float64Array(et);for(let z=0;z<c;z++){let T=Math.round((z+.5)*m)-et/2;for(let V=0;V<et;V++){let ee=u[T+V];w[V]=(ee??0)*d[V],A[V]=0}Ym(w,A);let M=[];b.forEach(([V,ee],oe)=>{let ge=0;for(let E=V;E<ee;E++)ge+=Math.hypot(w[E],A[E]);let le=ge/(ee-V)*(4/et);y[oe][z]=le,oe<Math.max(1,g)&&M.push(le)}),P&&(S[z]=M.reduce((V,ee,oe)=>V+Math.max(0,ee-(P[oe]??0)),0)),P=M;let H=Math.round(z*m),Y=Math.min(s,Math.round((z+1)*m)),$=0;for(let V=H;V<Y;V++)$+=u[V]**2;k[z]=Math.sqrt($/Math.max(1,Y-H))}let v=y.map(z=>Yu(z.map(Ir),.98)),O=Math.max(...v),C=y.map((z,F)=>{let T=Math.max(v[F],O-Wm,Hu-20);return z.map(M=>En(Xu(1-(T-Ir(M))/Gm)))}),B=Math.max(Hu,Yu(k.map(Ir),.98)),_=k.map(z=>En(Xu(1-(B-Ir(z))/Hm)));return{fps:r,frames:c,bands:C,level:_,beats:qm(S,r)}}function qm(t,e){let n=Math.max(2,Math.round(e*.5)),r=Math.max(1,Math.round(e*.15)),i=Math.max(0,...t),o=[];for(let a=1;a<t.length;a++){let s=t[a];if(s<=i*.08||s<t[a-1]||s<(t[a+1]??0))continue;let u=t.slice(Math.max(0,a-n),a+n+1),c=u.reduce((p,f)=>p+f,0)/u.length,m=Math.sqrt(u.reduce((p,f)=>p+(f-c)**2,0)/u.length);if(s<c+1.5*m)continue;let d=o[o.length-1];d!==void 0&&a-d<r||o.push(a)}return o}function Ly(t,e){let n=t.length;if(n===0)return[];let r=t[0]?.length??0;return Array.from({length:e},(i,o)=>{let a=Math.floor(o*n/e),s=Math.max(a+1,Math.floor((o+1)*n/e));return Array.from({length:r},(u,c)=>{let m=0;for(let d=a;d<s;d++)m+=t[d][c]??0;return En(m/(s-a))})})}function Ey(t,e){if(e<=0)return[...t];let n=1/(e+1),r=0;return t.map(i=>(r=i>=r?i:r+(i-r)*n,En(r)))}function Iy(){return l.object({fps:l.number().positive(),frames:l.number().int().min(0),bands:l.array(l.array(l.number())),level:l.array(l.number()),beats:l.array(l.number().int())})}h();function Zu(t,e=0,n={}){let r=n.tolerance??.25;if(t.length===0)return[];if(t.length===1)return[[e,t[0]]];let i=new Uint8Array(t.length);i[0]=1,i[t.length-1]=1;let o=[[0,t.length-1]];for(;o.length>0;){let[s,u]=o.pop(),c=t[s],m=t[u],d=-1,p=r;for(let f=s+1;f<u;f++){let b=(f-s)/(u-s),g=Math.abs(t[f]-(c+(m-c)*b));g>p&&(p=g,d=f)}d!==-1&&(i[d]=1,o.push([s,d],[d,u]))}let a=[];for(let s=0;s<t.length;s++)i[s]&&a.push([e+s,t[s]]);return a}function jy(t,e,n,r){let i=[];for(let o=e;o<=n;o++)i.push(t(o));return Zu(i,e,r)}function Vr(t,{stiffness:e=170,damping:n=26,mass:r=1}={}){if(t<=0)return 0;let i=Math.sqrt(e/r),o=n/(2*Math.sqrt(e*r));if(o<1){let m=i*Math.sqrt(1-o*o);return 1-Math.exp(-o*i*t)*(Math.cos(m*t)+o*i/m*Math.sin(m*t))}if(o===1)return 1-Math.exp(-i*t)*(1+i*t);let a=-i*(o-Math.sqrt(o*o-1)),s=-i*(o+Math.sqrt(o*o-1)),u=a/(a-s);return 1-((1-u)*Math.exp(a*t)+u*Math.exp(s*t))}function Zm(t,e,n=.001,r=600){let i=0;for(let o=0;o<=r;o++)Math.abs(1-Vr(o/t,e))>n&&(i=o);return Math.min(r,i+1)}function _y(t,e,n,r,i,o=Math.max(1e-4,Math.abs(n-e)*.002)){let a=Zm(r,i),s=Array.from({length:a+1},(u,c)=>c===a?n:e+(n-e)*Vr(c/r,i));return Zu(s,t,{tolerance:o})}function $y(t,e,n,r,i={stiffness:230,damping:24}){let o=[...t].sort((d,p)=>d[0]-p[0]),a=new Array(n+1),s=e,u=e,c=0,m=0;for(let d=0;d<=n;d++){for(;m<o.length&&o[m][0]<=d;)s=s+(u-s)*Vr((d-c)/r,i),u=o[m][1],c=o[m][0],m++;a[d]=s+(u-s)*Vr((d-c)/r,i)}return a}h();var Km={white:[255,255,255,1],black:[0,0,0,1],transparent:[0,0,0,0]};function In(t){let e=t.trim().toLowerCase(),n=Km[e];if(n)return[...n];let r=e.match(/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/);if(r?.[1]){let o=r[1].length<=4?[...r[1]].map(s=>s+s).join(""):r[1],a=s=>Number.parseInt(o.slice(s,s+2),16);return[a(0),a(2),a(4),o.length===8?a(6)/255:1]}let i=e.match(/^rgba?\(([^)]*)\)$/);if(i?.[1]){let o=i[1].split(/[\s,/]+/).filter(Boolean);if(o.length!==3&&o.length!==4)return null;let a=(d,p)=>d.endsWith("%")?Number.parseFloat(d)/100*p:Number(d),[s,u,c]=o.slice(0,3).map(d=>a(d,255)),m=o[3]===void 0?1:a(o[3],1);return[s,u,c,m].some(d=>d===void 0||Number.isNaN(d))?null:[s,u,c,m]}return null}var Ho=([t,e,n,r])=>`rgba(${Math.round(t)},${Math.round(e)},${Math.round(n)},${+r.toFixed(3)})`;function Wy(t,e){let n=In(t);return n?Ho([n[0],n[1],n[2],e]):t}function Hy(t){let e=In(t);return Ho(e?[e[0],e[1],e[2],0]:[0,0,0,0])}function Ku(t,e,n){let r=In(t),i=In(e);if(!r||!i)return t;let o=r.map((a,s)=>a+(i[s]-a)*n);return o[3]<1?Ho(o):`#${o.slice(0,3).map(a=>Math.round(a).toString(16).padStart(2,"0")).join("")}`}function Wo(t){let e=In(t);if(!e)return null;let n=r=>{let i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*n(e[0])+.7152*n(e[1])+.0722*n(e[2])}function zr(t,e){let n=Wo(t),r=Wo(e);if(n===null||r===null)return null;let[i,o]=n>r?[n,r]:[r,n];return(i+.05)/(o+.05)}function Qu(t){return(Wo(t)??0)>.179}function Yy(t,e="#ffffff",n="#0b0c0e"){return(zr(e,t)??0)>=(zr(n,t)??0)?e:n}h();h();h();h();function Yo(t){let e=t>>>0,n=()=>{e=e+2654435769>>>0;let r=e;return r=Math.imul(r^r>>>16,2246822507)>>>0,r=Math.imul(r^r>>>13,3266489909)>>>0,r=(r^r>>>16)>>>0,r/4294967296};return{next:n,range:(r,i)=>r+(i-r)*n(),int:(r,i)=>r+Math.floor(n()*(i-r+1)),pick:r=>{if(r.length===0)throw new Error("rng.pick: empty list");return r[Math.floor(n()*r.length)]},spread:r=>(n()*2-1)*r}}function Qm(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619)>>>0;return e>>>0}function Vn(t,e){return Yo((Math.imul(t>>>0,2654435761)^Qm(String(e)))>>>0)}function Jy(t,e){return Xo(e),Math.round(t*e)}function e0(t,e){return Xo(e),t/e}function t0(t,e){return Math.round(t*e)}function n0(t,e){return!e||e<=0?Math.round(t):Math.round(Math.round(t/e)*e)}function jr(t,e){return Xo(e),Math.max(1,Math.round(t*e/30))}function r0(t,e,n="forward",r=1){return t<=0?[]:Jm(t,n,r).map(o=>Math.round(o*e))}function Jm(t,e,n=1){let r=Array.from({length:t},(o,a)=>a),i=(t-1)/2;switch(e){case"forward":return r;case"reverse":return r.map(o=>t-1-o);case"center":return r.map(o=>Math.abs(o-i));case"edges":return r.map(o=>i-Math.abs(o-i));case"random":{let o=Yo(n),a=[...r];for(let u=a.length-1;u>0;u--){let c=Math.floor(o.next()*(u+1));[a[u],a[c]]=[a[c],a[u]]}let s=new Array(t);return a.forEach((u,c)=>{s[u]=c}),s}}}var ep=(t,e)=>({start:t,end:t+Math.max(0,e)}),i0=(t,e)=>t>=e.start&&t<=e.end;function o0(t){if(t.length===0)return{start:0,end:0};let e=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(let r of t)e=Math.min(e,r.start),n=Math.max(n,r.end);return{start:e,end:n}}function a0(t,e=0,n=0){let r=[],i=e;for(let o of t)r.push(ep(i,o)),i+=o+n;return r}function Xo(t){if(!(t>0)||!Number.isFinite(t))throw new Error(`fps must be a positive number, got ${t}`)}var zn=["none","fade","rise","drop","scale","pop","slide-left","slide-right","slide-up","slide-down","tilt","mask-up","mask-down","mask-left","mask-right"];function qo(t,e,n,r=30){if(t===!1||t===void 0)return null;let i=typeof t=="string"?{preset:t}:t;if(i.preset==="none")return null;if(!zn.includes(i.preset))throw new Error(`Unknown motion preset "${i.preset}". Use one of: ${zn.join(", ")}.`);return{preset:i.preset,duration:Math.max(1,Math.round(i.duration??jr(n.motion.speed.base,r))),ease:i.ease??(i.preset==="pop"?n.motion.ease.snap:e==="enter"?n.motion.ease.enter:n.motion.ease.exit),distance:i.distance??(i.preset.startsWith("slide-")?120:40)*n.scale,delay:Math.max(0,Math.round(i.delay??0)),blur:tp(i.blur??i.preset.startsWith("slide-"))}}var tp=t=>t===!0?90:t===!1?0:Math.max(0,Math.min(360,t)),Ju=t=>t.preset.startsWith("mask-");function el(t,e){switch(t.preset){case"mask-up":return[0,e?.height??t.distance];case"mask-down":return[0,-(e?.height??t.distance)];case"mask-left":return[e?.width??t.distance,0];case"mask-right":return[-(e?.width??t.distance),0];case"rise":case"slide-up":return[0,t.distance];case"drop":case"slide-down":return[0,-t.distance];case"slide-left":return[t.distance,0];case"slide-right":return[-t.distance,0];default:return[0,0]}}function tl(t,e=0,n){let r=e+t.delay,i=r+t.duration,o=ne.create();Ju(t)||o.keys("opacity",[[r,0],[i,1,t.ease]]);let[a,s]=el(t,n);return a!==0&&o.keys("x",[[r,a],[i,0,t.ease]]),s!==0&&o.keys("y",[[r,s],[i,0,t.ease]]),t.preset==="scale"&&o.keys("scale",[[r,.92],[i,1,t.ease]]),t.preset==="pop"&&o.keys("scale",[[r,.6],[i,1,t.ease]]),t.preset==="tilt"&&(o.keys("perspective",[[r,1200]]),o.keys("rotateX",[[r,28],[i,0,t.ease]]),o.keys("translateZ",[[r,-160],[i,0,t.ease]])),o}function nl(t,e,n){let r=e-t.delay,i=Math.max(0,r-t.duration),o=ne.create();Ju(t)||o.keys("opacity",[[i,1],[r,0,t.ease]]);let[a,s]=el(t,n);return a!==0&&o.keys("x",[[i,0],[r,-a,t.ease]]),s!==0&&o.keys("y",[[i,0],[r,-s,t.ease]]),t.preset==="scale"&&o.keys("scale",[[i,1],[r,.92,t.ease]]),t.preset==="pop"&&o.keys("scale",[[i,1],[r,.6,t.ease]]),t.preset==="tilt"&&(o.keys("perspective",[[i,1200]]),o.keys("rotateX",[[i,0],[r,-28,t.ease]]),o.keys("translateZ",[[i,0],[r,-160,t.ease]])),o}h();var _r={ease:{enter:"expo.out",exit:"power2.in",move:"power3.inOut",snap:"back.out(1.6)"},speed:{fast:8,base:16,slow:30},spring:{settle:{stiffness:230,damping:24},base:{stiffness:260,damping:20},pop:{stiffness:320,damping:14}}},Zo={regular:400,medium:500,semibold:600,bold:700,heavy:800},Jo={low:{opacity:.32,distance:3,size:10,edge:.07},mid:{opacity:.4,distance:10,size:30,edge:.08},high:{opacity:.5,distance:22,size:60,edge:.1}},rl={low:{opacity:.1,distance:2,size:8,edge:0},mid:{opacity:.14,distance:8,size:26,edge:0},high:{opacity:.2,distance:18,size:54,edge:0}},Ko={radius:{sm:6,md:12,lg:24,pill:999},stroke:{hair:1,base:2,bold:4}},Qo={display:"Inter",body:"Inter",mono:"JetBrains Mono"},il={graphite:{mode:"dark",color:{bg:"#0d0e11",surface:"#16181d",raised:"#1f2229",line:"#2b2f38",ink:"#f3f4f6",muted:"#8b909c",accent:"#5b8cff",accent2:"#b07cff",positive:"#3ecf8e",negative:"#ff5c5c",highlight:"#ffd23f",shadow:"#000000"},font:Qo,weight:Zo,...Ko,elevation:Jo,motion:_r,scale:1},paper:{mode:"light",color:{bg:"#f4f1ea",surface:"#fffdf8",raised:"#ffffff",line:"#dcd6c8",ink:"#1a1814",muted:"#6b665c",accent:"#e0451f",accent2:"#1f5fe0",positive:"#1f8a4c",negative:"#c8282d",highlight:"#ffe066",shadow:"#3b2f1e"},font:Qo,weight:Zo,...Ko,elevation:rl,motion:_r,scale:1},signal:{mode:"dark",color:{bg:"#000000",surface:"#111111",raised:"#1c1c1c",line:"#333333",ink:"#ffffff",muted:"#a3a3a3",accent:"#c6ff00",accent2:"#ff2e88",positive:"#00e676",negative:"#ff1744",highlight:"#c6ff00",shadow:"#000000"},font:Qo,weight:Zo,...Ko,elevation:Jo,motion:{..._r,ease:{..._r.ease,enter:"back.out(1.8)"},speed:{fast:6,base:12,slow:24},spring:{settle:{stiffness:300,damping:26},base:{stiffness:340,damping:22},pop:{stiffness:400,damping:14}}},scale:1}};function jn(t={},e=il.graphite){let n=ol(e,t);t.mode===void 0&&t.color?.bg!==void 0&&(n.mode=Qu(n.color.bg)?"light":"dark",t.elevation===void 0&&(n.elevation=n.mode==="light"?rl:Jo));let r=zr(n.color.ink,n.color.surface);if(r!==null&&r<4.5)throw new Error(`Theme contrast too low: ink ${n.color.ink} on surface ${n.color.surface} is ${r.toFixed(2)}:1 (needs 4.5:1).`);return n}function h0(t,e,n=30){return jr(t.motion.speed[e],n)}function ol(t,e){if(e===void 0)return t;if(t===null||e===null||typeof t!="object"||typeof e!="object"||Array.isArray(t)||Array.isArray(e))return e;let n={...t};for(let[r,i]of Object.entries(e))n[r]=ol(n[r],i);return n}function np(t,e){let n={};for(let[r,i]of Object.entries(t))n[r]=i.map(o=>{let a={...o,frame:o.frame+e};return typeof o.end=="number"&&(a.end=o.end+e),a});return n}function rp(t,{rest:e=0,peak:n=1,attack:r=0,release:i=8,ease:o="power2.out"}={}){let a=t.map(u=>typeof u=="number"?u:u.frame).sort((u,c)=>u-c),s=new Map;for(let u of a){let c=Math.max(0,u-r);s.has(c)||s.set(c,[c,e]),s.set(u,[u,n]),s.set(u+i,[u+i,e,o])}return[...s.values()].sort((u,c)=>u[0]-c[0])}var ip=()=>l.custom(t=>typeof t=="function",{message:"Expected a function"});function al(){return l.union([l.enum(zn),l.object({preset:l.enum(zn),duration:l.number().int().positive().optional(),ease:l.string().optional(),distance:l.number().optional(),delay:l.number().int().min(0).optional(),blur:l.union([l.boolean(),l.number().min(0).max(360)]).optional()})])}var sl;function op(){return sl??=ap(),sl}function ap(){return l.object({id:l.string().min(1).optional(),at:l.number().int().min(0).optional(),duration:l.number().int().positive().optional(),hold:l.number().int().min(0).optional(),enter:l.union([al(),l.literal(!1)]).optional(),exit:l.union([al(),l.literal(!1)]).optional(),x:l.number().optional(),y:l.number().optional(),width:l.number().positive().optional(),height:l.number().positive().optional(),position:l.enum(["absolute","relative"]).optional(),theme:l.custom(t=>typeof t=="object"&&t!==null).optional(),seed:l.number().int().optional(),fps:l.number().positive().optional(),canvas:l.object({width:l.number().positive(),height:l.number().positive()}).strict().optional(),customize:ip().optional()})}function S0(t){return t}function sp(t){let e=t.theme?jn(t.theme):void 0;return n=>r=>n({...t,...r,theme:r.theme&&e?jn(r.theme,e):r.theme??e})}function up(t,e=0){if(!Number.isFinite(t.span.end))throw new Error("after(): this component is open-ended (it stays until its parent ends). Give it a `duration`, or use its cues.");return t.span.end+e}var lp=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function ul(t,e){let n;return r=>{n??=op().extend(e.props()).strict();let i=n.safeParse(r??{});if(!i.success){let o=Object.keys(n.shape),a=i.error.issues.map(u=>{let c=u.path.join(".")||"(props)",m=u.code==="unrecognized_keys"&&u.path.length===0?cp(u.keys,o):"";return` - ${c}: ${u.message}${m}`}).join(`
|
|
380
|
+
`;var Eo=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(e){this.device=e,this.noiseTexture=e.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let n=new Uint8Array(64);for(let a=0;a<16;a++)n[a*4+0]=Math.floor(Math.random()*255),n[a*4+1]=Math.floor(Math.random()*255),n[a*4+2]=128,n[a*4+3]=255;e.queue.writeTexture({texture:this.noiseTexture},n,{bytesPerRow:16},[4,4,1]);let r=new Float32Array(128);for(let a=0;a<32;a++){let s=Math.random(),u=Math.random(),c=Math.acos(Math.sqrt(1-s)),m=2*Math.PI*u,d=(a+1)/32;d=.1+.9*(d*d),r[a*4+0]=Math.sin(c)*Math.cos(m)*d,r[a*4+1]=Math.sin(c)*Math.sin(m)*d,r[a*4+2]=Math.cos(c)*d,r[a*4+3]=0}this.kernelBuffer=e.createBuffer({label:"ssao-kernel-buffer",size:r.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(this.kernelBuffer,0,r);let i=e.createShaderModule({label:"ssao-shader",code:hu});this.ssaoBindGroupLayout=e.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=e.createRenderPipeline({label:"ssao-eval-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=e.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let o=e.createShaderModule({label:"ssao-blur-shader",code:gu});this.blurBindGroupLayout=e.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=e.createRenderPipeline({label:"ssao-blur-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=e.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=e.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(e,n,r,i,o,a){let s=a.invProjMatrix??dt.invert(a.projMatrix)??dt.identity(),u=new Float32Array(64);u.set(a.projMatrix,0),u.set(s,16),u.set(a.viewMatrix,32),u[48]=a.radius??45,u[49]=a.bias??.025,u[50]=a.intensity??1.5,new Uint32Array(u.buffer)[51]=a.kernelSamples??16,u[52]=a.width,u[53]=a.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,u);let c=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:n},{binding:1,resource:r},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),m=e.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});m.setPipeline(this.ssaoPipeline),m.setBindGroup(0,c),m.draw(4),m.end();let d=new ArrayBuffer(32),p=new Float32Array(d),f=new Int32Array(d);p[0]=a.width,p[1]=a.height,f[2]=a.blurRadius??4,p[3]=a.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,d);let b=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:n},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),g=e.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});g.setPipeline(this.blurPipeline),g.setBindGroup(0,b),g.draw(4),g.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};h();var fm=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],bu=2e3;function hm(t){for(let{segment:e}of gm().segment(t))if(Ts(e)==="emoji")return!0;return!1}var yu;function gm(){return yu??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),yu}function bm(t){let e=t.spans??[];return[t.text,...e.map(n=>n.text)].filter(n=>typeof n=="string").join("")}var xu=3;function Io(t){return t.animation?.tracks??[]}var wu=(t,e)=>Io(t).some(n=>e.includes(n.prop)),ym=new Set(["box","flex","block","group"]);function vu(t){if(t.kind==="text"||t.kind==="light"||t.kind==="camera")return!1;if(!ym.has(String(t.kind)))return!0;let e=t.background;return typeof e=="string"&&e!==""&&e!=="transparent"?!0:(t.children??[]).some(vu)}var xm=t=>[...t].sort((e,n)=>(Number(e.zIndex)||0)-(Number(n.zIndex)||0));function Br(t){if(typeof t!="string"||t.includes("gradient("))return null;let e=Fi(t);return e&&e[3]>.99?t:null}function Vo(t,e={}){let n=[],r=(g,y,k,S)=>n.push({severity:g,code:y,message:k,...S&&{layerId:S}}),i=t.width,o=t.height,a=!1,s=[],u=!1,c=[],m=[],d=[],p=(g,y,k)=>{let S=String(g.id??"?");e.emojiFont===!1&&g.kind==="text"&&hm(bm(g))&&d.push(S);for(let C of fm){let B=g[C];typeof B!="string"||B===""||B==="transparent"||(B.includes("gradient(")?Cs(B)||r("error","invalid_gradient",`\`${C}\` on '${S}' is not a gradient this renderer reads: ${B}. It draws nothing.`,S):Fi(B)||r("warning","unknown_color",`\`${C}: "${B}"\` on '${S}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,S))}if(g.kind==="light"){let C=g.lightType??"directional";C==="environment"&&(a=!0),C==="ambient"&&s.push(S),g.castShadow&&(C==="directional"||C==="spot"?m.push(S):r("warning","shadow_unsupported_light",`'${S}' is a ${String(C)} light: only directional and spot lights cast shadows.`,S));return}if(g.kind==="camera")return;if(g.kind==="media"){let C=g.inputHandleId;typeof C=="string"&&(g.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(C)?r("error","unsupported_image_format",`'${S}' is an image layer with source '${C}', which is a Lottie vector animation. Use Layer.lottie() instead.`,S):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(C)?r("error","unsupported_image_format",`'${S}' is an image layer with video source '${C}'. Use Layer.video() instead.`,S):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(C)&&r("error","unsupported_image_format",`'${S}' is an image layer with audio source '${C}'. Use Layer.audio() instead.`,S))}let P=!!g.is3D||typeof g.z=="number"&&g.z!==0;if((P||g.kind==="model3d")&&(u=!0),(g.roughness!==void 0||g.metallic!==void 0)&&c.push(S),g.kind==="text"&&y&&!wu(g,["fill","color"])){let C=Br(g.fill??g.color),B=Br(g.background)??y;if(C){let _=Bi.contrast(C,B);_<xu&&r("warning","low_contrast_text",`Text '${S}' (${C}) on ${B} has contrast ${_.toFixed(2)}:1 (aim for \u2265 ${xu}; ${Bi.readableOn(B)} reads well).`,S)}}if(k&&!P&&g.position==="absolute"&&typeof g.x=="number"&&typeof g.y=="number"&&typeof g.width=="number"&&typeof g.height=="number"&&!wu(g,["x","y","translateX","translateY","scale","scaleX","scaleY","rotation"])){let{x:C,y:B,width:_,height:z}=g;(C+_<=0||B+z<=0||C>=i||B>=o)&&r("warning","offscreen_layer",`'${S}' sits entirely outside the ${i}\xD7${o} canvas (x ${C}, y ${B}) and never moves in.`,S)}let w=Io(g).reduce((C,B)=>C+(B.keyframes?.length??0),0);w>bu&&r("warning","large_animation",`'${S}' has ${w} keyframes across its tracks (over ${bu}). Keying every frame is rarely needed: key the turning points and let eases fill in, or drive the prop from a signal.`,S);for(let C of Io(g)){let B=C.keyframes??[];(!C.source||C.source.type==="keyframe")&&B.length>=2&&B.every(_=>JSON.stringify(_.value)===JSON.stringify(B[0].value))&&r("info","static_track",`'${S}' animates \`${C.prop}\` but every keyframe holds ${JSON.stringify(B[0].value)}.`,S)}let A=Br(g.background)??y,v=g.children,O=g.x===0&&g.y===0&&g.width===i&&g.height===o;f(v??[],A,k&&O)},f=(g,y,k)=>{let S=y;for(let P of xm(g))p(P,S,k),vu(P)&&(S=null)},b=Br(t.backgroundColor)??null;if(f(t.layout,b,!0),d.length>0){let g=d.slice(0,3).map(y=>`'${y}'`).join(", ");r("warning","missing_emoji_font",`${d.length===1?"Text":`${d.length} text layers`} ${g}${d.length>3?", \u2026":""} ${d.length===1?"has":"have"} emoji, but no emoji font is registered, so the emoji draw nothing. Run \`npx framefields fonts add emoji\` and call the generated \`registerFonts()\`, or \`FontManager.registerEmojiFont(path)\` with a color emoji font.`,d[0])}return a&&s.length>0&&r("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${s.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),m.length>1&&r("info","multiple_shadow_lights",`${m.length} lights cast shadows (${m.join(", ")}); only the first one does.`),u&&c.length>0&&!a&&r("info","pbr_without_environment",`roughness / metallic are set (${c.slice(0,3).join(", ")}${c.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),n}h();var Su=l.union([l.number().min(0),l.enum(["auto","fit","fill"]),l.custom()]),wm=l.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),ku=l.union([l.instanceof(Yt),l.object({op:l.string().min(1)}).passthrough(),l.custom(t=>!!(t&&typeof t=="object"&&"op"in t&&typeof t.op=="string"))]),vm=l.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","d","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),zo=l.enum(["alpha","alpha-inverted","luma","luma-inverted"]),Pu=l.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var Sm=l.enum(["interpolate","hueRotate","threshold"]),km=l.object({name:l.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:l.enum(["in","out","inOut"]),params:l.array(l.number()).optional()}).strict().superRefine((t,e)=>{if(t.name==="spring"&&t.params){let[n,r,i]=t.params;n!==void 0&&n<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),r!==void 0&&r<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&e.addIssue({code:l.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),Pm=l.object({id:l.string().min(1),frame:l.number().int().min(0),value:l.union([l.number(),l.boolean(),l.string()]),ease:km.optional(),presetGroupId:l.string().optional(),presetType:l.string().optional(),spatialTangentIn:l.object({x:l.number(),y:l.number()}).optional(),spatialTangentOut:l.object({x:l.number(),y:l.number()}).optional()}).strict(),Mm=l.enum(["continuous","accumulate"]),Tm=l.discriminatedUnion("type",[l.object({type:l.literal("keyframe")}),l.object({type:l.literal("signal"),inputHandleId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),smoothingWindowFrames:l.number().min(0).default(0),colorMode:Sm.optional(),colorA:l.string().optional(),colorB:l.string().optional(),colorThreshold:l.number().optional(),signalMode:Mm.optional(),threshold:l.number().optional(),accumulateThreshold:l.number().optional(),debounceFrames:l.number().int().min(0).optional(),channel:l.string().optional()}),l.object({type:l.literal("wiggle"),frequency:l.number().default(2),amplitude:l.number().default(50),octaves:l.number().int().min(1).max(4).default(1),seed:l.number().default(1234)}),l.object({type:l.literal("springOvershoot"),damping:l.number().default(12),stiffness:l.number().default(180),mass:l.number().default(1)})]),Cm=l.preprocess(t=>{if(!t||typeof t!="object")return t;let e=t;if(e.type==="signal"){let n=typeof e.threshold=="number"?e.threshold:typeof e.accumulateThreshold=="number"?e.accumulateThreshold:.15;return{type:"signal",inputHandleId:e.inputHandleId??e.handleId,multiplier:e.multiplier??e.amplitude??1,offset:e.offset??0,smoothingWindowFrames:e.smoothingWindowFrames??e.smoothing??0,colorMode:e.colorMode,colorA:e.colorA,colorB:e.colorB,colorThreshold:e.colorThreshold,signalMode:e.signalMode??"continuous",threshold:n,accumulateThreshold:n,debounceFrames:e.debounceFrames??2,channel:typeof e.channel=="string"?e.channel:"primary"}}return t},Tm),Am=(t,e)=>{if(t?.tracks)for(let n=0;n<t.tracks.length;n++){let r=t.tracks[n],i=r.keyframes??[];(!r.source||r.source.type==="keyframe")&&i.length<1&&e.addIssue({code:l.ZodIssueCode.custom,message:`Track for property '${r.prop}' must have at least 1 keyframe.`,path:["tracks",n,"keyframes"]});let a=r.prop==="hidden"||r.prop==="muted",s=r.prop==="fillColor"||r.prop==="strokeColor"||r.prop==="fill"||r.prop==="color";for(let u=0;u<i.length;u++){let c=i[u];if(u>0){let d=i[u-1];c.frame<d.frame?e.addIssue({code:l.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",n,"keyframes",u]}):c.frame===d.frame&&e.addIssue({code:l.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",n,"keyframes",u]})}let m=typeof c.value;a?m!=="boolean"&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for discrete property '${r.prop}' must be a boolean.`,path:["tracks",n,"keyframes",u,"value"]}):s?m!=="string"&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for color property '${r.prop}' must be a string.`,path:["tracks",n,"keyframes",u,"value"]}):m!=="number"||Number.isNaN(c.value)||!Number.isFinite(c.value)?e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for numeric property '${r.prop}' must be a finite number.`,path:["tracks",n,"keyframes",u,"value"]}):(r.prop==="volume"||r.prop==="trimStart"||r.prop==="trimEnd")&&(c.value<0||c.value>1)&&e.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for property '${r.prop}' must be between 0 and 1.`,path:["tracks",n,"keyframes",u,"value"]})}}},Dm=l.object({id:l.string().min(1),prop:vm,source:Cm.optional(),keyframes:l.array(Pm).default([]),repeat:l.number().int().optional(),yoyo:l.boolean().optional(),durationFrames:l.number().int().min(1).optional()}).strict(),jo=l.object({tracks:l.array(Dm).max(24),frameStep:l.number().int().min(1).max(24).optional()}).strict().superRefine(Am),Tt={id:l.string().min(1),inputHandleId:l.string().optional(),position:l.enum(["relative","absolute"]).default("relative"),x:l.union([l.number(),l.custom()]).default(0),y:l.union([l.number(),l.custom()]).default(0),width:Su.optional(),height:Su.optional(),grow:l.number().min(0).optional(),flexShrink:l.number().min(0).optional(),flexBasis:l.number().min(0).optional(),alignSelf:l.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:l.number().positive().optional(),zIndex:l.number().int().default(0),hidden:l.boolean().default(!1),opacity:l.number().min(0).max(1).default(1),blendMode:l.string().optional(),effects:l.array(ku).optional(),rotation:l.number().default(0),scale:l.number().min(0).default(1),scaleX:l.number().default(1),scaleY:l.number().default(1),anchorX:l.number().min(0).max(1).default(.5),anchorY:l.number().min(0).max(1).default(.5),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),motionBlurShutter:l.number().min(0).max(360).optional(),rotateX:l.number().default(0),rotateY:l.number().default(0),rotateZ:l.number().default(0),perspective:l.number().min(0).default(0),perspectiveOriginX:l.number().default(.5),perspectiveOriginY:l.number().default(.5),translateZ:l.number().default(0),backfaceVisibility:l.enum(["visible","hidden"]).default("visible"),transformStyle:l.enum(["flat","preserve-3d"]).default("flat"),is3D:l.boolean().default(!1),z:l.union([l.number(),l.custom()]).default(0),scaleZ:l.number().default(1),twoSided:l.boolean().default(!0),material:Pu.default("lit"),ior:l.number().min(1).max(3).optional(),roughness:l.number().min(0).max(1).optional(),shininess:l.number().min(1).max(512).default(32),specularIntensity:l.number().min(0).default(.5),metallic:l.number().min(0).max(1).optional(),ambientIntensity:l.number().min(0).default(1),transmission:l.number().min(0).max(1).optional(),dispersion:l.number().min(0).max(1).optional(),fresnelPower:l.number().min(1).max(10).optional(),envIntensity:l.number().min(0).max(10).optional(),emissive:de.optional(),emissiveIntensity:l.number().min(0).optional(),castShadow:l.boolean().optional(),matte:l.object({node:l.custom(t=>typeof t=="object"&&t!==null),mode:zo.optional()}).optional(),matteId:l.string().optional(),matteOf:l.string().optional(),matteMode:zo.optional(),animation:jo.default({tracks:[]}),vision:l.unknown().optional(),relighting:l.unknown().optional()},Mu=l.object({color:de,offset:l.object({x:l.number(),y:l.number()}).optional(),blurRadius:l.number().min(0).optional()}).strict(),Nm=l.object({x:l.number().optional(),y:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),opacity:l.number().optional(),blur:l.number().optional(),color:l.string().optional()}).strict(),Tu=l.object({id:l.string(),unit:l.enum(["character","word","line"]).default("character"),rangeStart:l.number().min(0).max(1).default(0),rangeEnd:l.number().min(0).max(1).default(1),offset:l.number().min(-1).max(1).default(0),easing:l.string().default("power2.out"),transform:Nm.optional()}),Om={waveRise(t={}){return{id:t.id??"wave-rise",unit:t.unit??"character",rangeStart:t.rangeStart??0,rangeEnd:t.rangeEnd??1,offset:t.offset??-1,easing:t.easing??"power2.out",transform:{y:t.y??40,rotationX:t.rotationX??45,opacity:t.opacity??0,blur:t.blur??0}}},wordPop(t={}){return{id:t.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.6)",transform:{scale:t.scale??0,y:t.y??20,opacity:0}}},blurIn(t={}){return{id:t.id??"blur-in",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"power3.out",transform:{blur:t.blur??16,y:t.y??20,opacity:t.opacity??0}}},flip3D(t={}){return{id:t.id??"flip-3d",unit:t.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:t.easing??"back.out(1.4)",transform:{rotationX:t.rotationX??90,opacity:0}}},colorSweep(t){return{id:t.id??"color-sweep",unit:t.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:t.easing??"power2.inOut",transform:{color:t.color}}}},Rm=l.object({focalLength:l.number().min(5).max(500).default(50),fov:l.number().min(5).max(160).optional(),sensorWidth:l.number().default(36),near:l.number().min(.1).default(1),far:l.number().min(10).default(5e4),zoom:l.number().min(.01).default(1)}).strict(),Fm=l.object({enabled:l.boolean().default(!1),focusDistance:l.number().min(1).default(1e3),fStop:l.number().min(.5).max(64).default(2.8),maxBlurRadius:l.number().min(0).max(128).default(32),apertureBlades:l.number().int().min(0).max(12).default(0),anamorphicRatio:l.number().min(.5).max(3).default(1)}).strict(),Bm=l.object({translationAmplitude:l.number().min(0).default(0),rotationAmplitude:l.number().min(0).default(0),frequency:l.number().min(.1).max(60).default(2.5),octaves:l.number().int().min(1).max(6).default(3),seed:l.number().default(42)}).strict(),Cu=l.object({id:l.string().min(1),kind:l.literal("camera"),mode:l.enum(["lookAt","free","orbit"]).default("lookAt"),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),pitch:l.number().default(0),yaw:l.number().default(0),roll:l.number().default(0),lens:Rm.optional(),dof:Fm.optional(),shake:Bm.optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:jo.default({tracks:[]})}).strict(),Au=l.enum(["ambient","directional","point","spot","environment"]),Du=l.enum(["studio","soft","sunset","night","neutral"]),Nu=l.enum(["neutral","agx","aces","none"]),Ou=l.object({color:de,start:l.number().min(0),end:l.number().min(0),opacity:l.number().min(0).max(1).optional()}).strict(),Ru=l.object({intensity:l.number().min(0).max(10).optional(),threshold:l.number().min(0).max(16).optional(),knee:l.number().min(0).max(1).optional(),radius:l.number().min(1).max(8).optional()}).strict(),Fu=l.object({id:l.string().min(1),kind:l.literal("light"),lightType:Au.default("directional"),color:de.default("#ffffff"),intensity:l.number().default(1),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),direction:l.tuple([l.number(),l.number(),l.number()]).optional(),radius:l.number().min(0).default(1e3),decay:l.number().min(0).default(2),angle:l.number().min(0).max(180).default(45),penumbra:l.number().min(0).max(1).default(.2),castShadow:l.boolean().optional(),shadowSoftness:l.number().min(0).max(64).optional(),shadowDarkness:l.number().min(0).max(1).optional(),shadowMapSize:l.number().int().min(256).max(8192).optional(),preset:Du.optional(),top:de.optional(),horizon:de.optional(),bottom:de.optional(),softboxes:l.number().min(0).optional(),rotation:l.number().optional(),exposure:l.number().min(-16).max(16).optional(),toneMapping:Nu.optional(),fog:Ou.optional(),bloom:l.union([l.boolean(),Ru]).optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:jo.default({tracks:[]})}).strict(),_o=()=>l.array(l.lazy(()=>$o)),Bu=l.object({...Tt,kind:l.literal("flex"),dir:l.enum(["row","column"]).default("row"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),justify:l.enum(["start","center","end","space-between","space-around"]).default("start"),align:l.enum(["start","center","end","stretch"]).default("start"),wrap:l.boolean().default(!1),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:de.optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Lm=l.object({...Tt,kind:l.literal("block"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),align:l.enum(["start","center","end","stretch"]).default("start"),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:de.optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Lu=l.object({...Tt,kind:l.literal("box"),background:de,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).default(0),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:_o().optional()}).strict(),Eu=l.object({background:de,borderRadius:l.number().min(0).optional(),paddingX:l.number().min(0).optional(),paddingY:l.number().min(0).optional()}).strict(),Iu=l.object({text:l.union([l.string(),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]),fontFamily:l.string().optional(),fontSize:l.union([l.number().positive(),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.enum(["normal","italic"]).optional(),fill:l.union([de,l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),letterSpacing:l.number().optional(),baselineShift:l.number().optional(),opacity:l.union([l.number().min(0).max(1),l.custom(t=>!!(t&&typeof t=="object"&&"get"in t))]).optional(),mark:Eu.optional()}).strict(),Em={text:l.string().default(""),spans:l.array(Iu).optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:de,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:de,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).optional(),stroke:de,strokeWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),textShadow:l.string().optional(),shadows:l.array(Mu).optional(),pathOptions:Kt.optional(),typewriter:Or.optional(),marquee:Do.optional(),animators:l.array(l.union([Tu,Qt,No])).optional()},Vu=l.object({...Tt,...Em,kind:l.literal("text")}).strict(),zu=l.object({...Tt,kind:l.literal("media"),inputHandleId:l.string().min(1),src:l.string().optional(),dataType:l.string().optional(),fit:l.enum(["cover","contain","fill","none"]).default("contain"),dpr:l.number().min(1).max(4).optional(),borderRadius:l.number().min(0).optional(),borderColor:de.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),volume:l.number().min(0).max(1).default(1),muted:l.boolean().default(!1),trimStartSec:l.number().min(0).optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:de,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:de,padding:l.number().min(0).optional(),stroke:de,strokeWidth:l.number().min(0).optional(),textShadow:l.string().optional(),shadows:l.array(Mu).optional(),maxWidth:l.number().optional()}).strict(),Im={shapeType:wm.default("rect"),borderRadius:l.number().min(0).optional(),radiusTL:l.number().min(0).optional(),radiusTR:l.number().min(0).optional(),radiusBR:l.number().min(0).optional(),radiusBL:l.number().min(0).optional(),polygonSides:l.number().int().min(3).max(64).optional(),starPoints:l.number().int().min(3).max(64).optional(),starInnerRadiusRatio:l.number().min(.01).max(.99).optional(),arrowHeadWidth:l.number().min(0).optional(),arrowHeadLength:l.number().min(0).optional(),arrowShaftWidth:l.number().min(1).optional(),d:l.string().optional(),fillType:l.enum(["solid","linear","radial","none"]).default("solid"),fillColor:de.default("#3b82f6"),gradientEndColor:de.optional(),gradientAngle:l.number().default(0),strokeColor:de.default("#ffffff"),strokeWidth:l.number().min(0).default(0),strokeDashArray:l.string().optional(),strokeDashOffset:l.number().default(0),strokeLineCap:l.enum(["butt","round","square"]).default("round"),strokeLineJoin:l.enum(["miter","round","bevel"]).default("round"),strokeAlign:l.enum(["inside","center","outside"]).optional(),trimStart:l.number().min(0).max(1).default(0),trimEnd:l.number().min(0).max(1).default(1),trimOffset:l.number().default(0)},ju=l.object({...Tt,...Im,kind:l.literal("shape")}).strict(),Vm=l.object({offset:l.number().min(0).max(1),color:l.string()}),_u=l.object({...Tt,kind:l.literal("model3d"),src:l.string().default(""),modelFormat:l.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:l.unknown().optional(),animationName:l.string().optional(),animationProgress:l.number().min(0).max(1).default(0),animationTime:l.number().min(0).default(0),animationSpeed:l.number().default(1),loop:l.boolean().default(!0),wireframe:l.boolean().default(!1),texture:l.string().optional(),center:l.boolean().optional(),normalizeSize:l.number().optional(),scaleX:l.number().default(1),scaleY:l.number().default(1),audioDeform:l.record(l.string(),l.unknown()).optional(),color:de.optional(),colorTint:de.optional(),text3dOptions:l.unknown().optional(),primitive3d:l.unknown().optional()}).strict(),$o=l.lazy(()=>l.discriminatedUnion("kind",[Bu,Lm,Lu,Vu,zu,ju,Cu,Fu,_u])),zm=l.object({width:l.number().int().min(1).max(4096),height:l.number().int().min(1).max(4096),backgroundColor:de,volume:l.number().min(0).max(1).default(1),fps:l.number().int().min(1).max(120).default(24),mode:l.enum(["Video","Image"]).default("Video"),antialias3d:l.boolean().optional(),layout:l.array($o).default([]),fonts:l.array(l.string()).optional(),signals:l.record(l.string(),l.unknown()).optional(),effects:l.array(ku).optional(),vision:l.unknown().optional(),onRequestFrame:l.custom().optional()}).strict();h();var $u=l.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),Uu=l.object({sourceLayerId:l.string(),targetLayerId:l.string(),mode:l.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:l.number().int().min(0).max(30).default(0)}).strict(),jm=l.object({id:l.string(),chapter:l.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:l.number().positive().optional(),durationFrames:l.number().int().positive().optional(),transitionOut:l.object({type:$u.default("cut"),durationFrames:l.number().int().min(0).default(0),carrier:Uu.optional(),whipDirection:l.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function _m(t,e){return{x:t.x,y:t.y,scale:t.scale,vx:t.vx,vy:t.vy,...e}}function Gu(t,e=60){let n=0,r=[];for(let a of t){let s=n,u=a.durationFrames??(a.durationMs?Math.round(a.durationMs/1e3*e):60);r.push({sceneId:a.id,startFrame:s,durationFrames:u});let c=a.transitionOverlap??a.transitionOut?.durationFrames??0;n+=Math.max(1,u-c)}let i=n,o=Math.round(i/e*1e3);return{totalFrames:i,totalDurationMs:o,sceneOffsets:r}}var Ln=class t{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(e){this.id=e.id,this.chapter=e.chapter??"custom",this.durationMs=e.durationMs,this.durationFrames=e.durationFrames,this.transitionOut={type:e.transitionOut?.type??"cut",durationFrames:e.transitionOut?.durationFrames??0,carrier:e.transitionOut?.carrier,whipDirection:e.transitionOut?.whipDirection??"left"},this.layout=e.layout??[]}static create(e){return new t(e)}},Uo=class t{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(e={}){if(this.fps=e.fps??60,this.width=e.width??1920,this.height=e.height??1080,this.backgroundColor=e.backgroundColor??"#ffffff",this.fonts=e.fonts,this.signals=e.signals,e.scenes)for(let n of e.scenes)this.addScene(n)}static create(e={}){return new t(e)}addScene(e){let n=e instanceof Ln?e:new Ln(e);return this.scenes.push(n),this}getScenes(){return this.scenes}calculateTimeline(){return Gu(this.scenes,this.fps)}toProgram(){let e=this.calculateTimeline(),n=[];for(let r=0;r<this.scenes.length;r++){let i=this.scenes[r],o=e.sceneOffsets[r];if(o)for(let a of i.layout){let s={...a};s.startFrame=(s.startFrame??0)+o.startFrame,s.durationFrames===void 0&&(s.durationFrames=o.durationFrames),n.push(s)}}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:n,fonts:this.fonts,signals:this.signals}}};h();var Lr=t=>t<0?0:t>1?1:t,$m={none:()=>t=>t,linear:()=>t=>t,power1:()=>t=>t*t,power2:()=>t=>t*t*t,cubic:()=>t=>t*t*t,power3:()=>t=>t**4,sine:()=>t=>1-Math.cos(t*Math.PI/2),circ:()=>t=>1-Math.sqrt(Math.max(0,1-t*t)),expo:()=>t=>t===0?0:2**(10*(t-1)),back:([t=1.70158])=>e=>(t+1)*e*e*e-t*e*e,elastic:([t=1,e=.3])=>{let n=Math.max(1,t),r=e/(2*Math.PI)*Math.asin(1/n);return i=>i===0||i===1?i:-(n*2**(10*(i-1))*Math.sin((i-1-r)*(2*Math.PI)/e))},bounce:()=>t=>1-Um(1-t)};function Um(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-1.5/2.75)**2+.75:t<2.5/2.75?7.5625*(t-2.25/2.75)**2+.9375:7.5625*(t-2.625/2.75)**2+.984375}var Wu=new Map;function Gm(t){if(!t)return s=>Lr(s);let e=Wu.get(t);if(e)return e;let n=t.trim().match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]*)\))?$/);if(!n)throw new Error(`Unknown ease "${t}"`);let r=(n[1]??"").toLowerCase(),i=(n[2]??"out").toLowerCase(),o=(n[3]??"").split(",").map(s=>Number.parseFloat(s)).filter(s=>!Number.isNaN(s)),a;if(r==="hold")a=s=>s>=1?1:0;else{let s=$m[r];if(!s)throw new Error(`Unknown ease "${t}"`);let u=s(o);if(i==="in")a=c=>u(Lr(c));else if(i==="inout")a=c=>{let m=Lr(c);return m<.5?u(m*2)/2:1-u((1-m)*2)/2};else if(i==="out")a=c=>1-u(1-Lr(c));else throw new Error(`Unknown ease direction in "${t}"`)}return Wu.set(t,a),a}function Er(t,e){return Gm(t)(e)}var En=(t,e=3)=>{let n=10**e;return Math.round(t*n)/n},Go=t=>t[t.length-1];function Wm(t){let e=new Map;for(let n of t)e.set(n[0],n);return[...e.values()].sort((n,r)=>n[0]-r[0])}function Hm(t){let e=[];for(let n of t){for(;e.length>0&&Go(e)[0]>=n[0];)e.pop();e.push(n)}return e}function Fy(t,e){let n=t[0];if(!n)return 0;if(e<=n[0])return n[1];for(let r=1;r<t.length;r++){let[i,o]=t[r-1],[a,s,u]=t[r];if(e>a)continue;if(u==="hold")return e===a?s:o;let c=Er(typeof u=="string"?u:void 0,(e-i)/Math.max(1,a-i));return o+(s-o)*c}return Go(t)[1]}var Hu=class{constructor(e){this.initial=e}initial;changes=[];to(e,n,r,i="power2.out"){return this.changes.push({start:e,end:Math.max(e,n),to:r,ease:i}),this}set(e,n){return this.to(e,e,n)}keys(){let e=[[0,this.initial]],n=this.initial;for(let r of[...this.changes].sort((i,o)=>i.start-o.start)){let i=Go(e),o=Math.max(r.start,i[0]+(r.end===r.start?1:0));o>i[0]&&e.push([o,n]);let a=Math.max(r.end,o);a===o?e[e.length-1]=[o,r.to,"hold"]:e.push([a,r.to,r.ease]),n=r.to}return Hm(e)}},Yu=class{book=new Map;key(e,n,r){let i=this.book.get(e)??new Map;return this.book.set(e,i),i.set(n,[...i.get(n)??[],...r]),this}apply(){for(let[e,n]of this.book){let r=ne.create();for(let[i,o]of n)r.keys(i,Wm(o));e.animate(r)}}};var et=2048,Ym=42,Xm=30,qm=48,Xu=-60;function Zm(t,e){let n=t.length;for(let r=1,i=0;r<n;r++){let o=n>>1;for(;i&o;o>>=1)i^=o;i^=o,r<i&&([t[r],t[i]]=[t[i],t[r]],[e[r],e[i]]=[e[i],e[r]])}for(let r=2;r<=n;r<<=1){let i=-2*Math.PI/r,o=Math.cos(i),a=Math.sin(i);for(let s=0;s<n;s+=r){let u=1,c=0;for(let m=0;m<r/2;m++){let d=s+m,p=d+r/2,f=t[p]*u-e[p]*c,b=t[p]*c+e[p]*u;t[p]=t[d]-f,e[p]=e[d]-b,t[d]=t[d]+f,e[d]=e[d]+b;let g=u*o-c*a;c=u*a+c*o,u=g}}}}function qu(t,e){if(t.length===0)return 0;let n=[...t].sort((r,i)=>r-i);return n[Math.min(n.length-1,Math.floor(e*n.length))]}var Ir=t=>20*Math.log10(t+1e-9),Zu=t=>t<0?0:t>1?1:t;function Km(t,e,n){return Array.from({length:t+1},(r,i)=>e*(n/e)**(i/t))}function Ku(t,e,n={}){let r=n.fps??30,i=n.bands??32,o=n.minHz??50,a=Math.min(n.maxHz??12e3,e/2),s=Math.max(0,...t.map(z=>z.length)),u=new Float32Array(s);for(let z of t)for(let F=0;F<z.length;F++)u[F]=u[F]+z[F]/t.length;let c=Math.ceil(s/e*r),m=e/r,d=Float64Array.from({length:et},(z,F)=>.5-.5*Math.cos(2*Math.PI*F/(et-1))),p=Km(i,o,a),f=e/et,b=p.slice(0,-1).map((z,F)=>{let T=Math.max(1,Math.floor(z/f)),M=Math.max(T+1,Math.ceil(p[F+1]/f));return[T,Math.min(et/2,M)]}),g=p.filter(z=>z<150).length,y=Array.from({length:i},()=>new Array(c)),k=new Array(c),S=new Array(c).fill(0),P=null,w=new Float64Array(et),A=new Float64Array(et);for(let z=0;z<c;z++){let T=Math.round((z+.5)*m)-et/2;for(let V=0;V<et;V++){let ee=u[T+V];w[V]=(ee??0)*d[V],A[V]=0}Zm(w,A);let M=[];b.forEach(([V,ee],oe)=>{let ge=0;for(let E=V;E<ee;E++)ge+=Math.hypot(w[E],A[E]);let le=ge/(ee-V)*(4/et);y[oe][z]=le,oe<Math.max(1,g)&&M.push(le)}),P&&(S[z]=M.reduce((V,ee,oe)=>V+Math.max(0,ee-(P[oe]??0)),0)),P=M;let H=Math.round(z*m),Y=Math.min(s,Math.round((z+1)*m)),$=0;for(let V=H;V<Y;V++)$+=u[V]**2;k[z]=Math.sqrt($/Math.max(1,Y-H))}let v=y.map(z=>qu(z.map(Ir),.98)),O=Math.max(...v),C=y.map((z,F)=>{let T=Math.max(v[F],O-Xm,Xu-20);return z.map(M=>En(Zu(1-(T-Ir(M))/Ym)))}),B=Math.max(Xu,qu(k.map(Ir),.98)),_=k.map(z=>En(Zu(1-(B-Ir(z))/qm)));return{fps:r,frames:c,bands:C,level:_,beats:Qm(S,r)}}function Qm(t,e){let n=Math.max(2,Math.round(e*.5)),r=Math.max(1,Math.round(e*.15)),i=Math.max(0,...t),o=[];for(let a=1;a<t.length;a++){let s=t[a];if(s<=i*.08||s<t[a-1]||s<(t[a+1]??0))continue;let u=t.slice(Math.max(0,a-n),a+n+1),c=u.reduce((p,f)=>p+f,0)/u.length,m=Math.sqrt(u.reduce((p,f)=>p+(f-c)**2,0)/u.length);if(s<c+1.5*m)continue;let d=o[o.length-1];d!==void 0&&a-d<r||o.push(a)}return o}function Vy(t,e){let n=t.length;if(n===0)return[];let r=t[0]?.length??0;return Array.from({length:e},(i,o)=>{let a=Math.floor(o*n/e),s=Math.max(a+1,Math.floor((o+1)*n/e));return Array.from({length:r},(u,c)=>{let m=0;for(let d=a;d<s;d++)m+=t[d][c]??0;return En(m/(s-a))})})}function zy(t,e){if(e<=0)return[...t];let n=1/(e+1),r=0;return t.map(i=>(r=i>=r?i:r+(i-r)*n,En(r)))}function jy(){return l.object({fps:l.number().positive(),frames:l.number().int().min(0),bands:l.array(l.array(l.number())),level:l.array(l.number()),beats:l.array(l.number().int())})}h();function Qu(t,e=0,n={}){let r=n.tolerance??.25;if(t.length===0)return[];if(t.length===1)return[[e,t[0]]];let i=new Uint8Array(t.length);i[0]=1,i[t.length-1]=1;let o=[[0,t.length-1]];for(;o.length>0;){let[s,u]=o.pop(),c=t[s],m=t[u],d=-1,p=r;for(let f=s+1;f<u;f++){let b=(f-s)/(u-s),g=Math.abs(t[f]-(c+(m-c)*b));g>p&&(p=g,d=f)}d!==-1&&(i[d]=1,o.push([s,d],[d,u]))}let a=[];for(let s=0;s<t.length;s++)i[s]&&a.push([e+s,t[s]]);return a}function Uy(t,e,n,r){let i=[];for(let o=e;o<=n;o++)i.push(t(o));return Qu(i,e,r)}function Vr(t,{stiffness:e=170,damping:n=26,mass:r=1}={}){if(t<=0)return 0;let i=Math.sqrt(e/r),o=n/(2*Math.sqrt(e*r));if(o<1){let m=i*Math.sqrt(1-o*o);return 1-Math.exp(-o*i*t)*(Math.cos(m*t)+o*i/m*Math.sin(m*t))}if(o===1)return 1-Math.exp(-i*t)*(1+i*t);let a=-i*(o-Math.sqrt(o*o-1)),s=-i*(o+Math.sqrt(o*o-1)),u=a/(a-s);return 1-((1-u)*Math.exp(a*t)+u*Math.exp(s*t))}function Jm(t,e,n=.001,r=600){let i=0;for(let o=0;o<=r;o++)Math.abs(1-Vr(o/t,e))>n&&(i=o);return Math.min(r,i+1)}function Gy(t,e,n,r,i,o=Math.max(1e-4,Math.abs(n-e)*.002)){let a=Jm(r,i),s=Array.from({length:a+1},(u,c)=>c===a?n:e+(n-e)*Vr(c/r,i));return Qu(s,t,{tolerance:o})}function Wy(t,e,n,r,i={stiffness:230,damping:24}){let o=[...t].sort((d,p)=>d[0]-p[0]),a=new Array(n+1),s=e,u=e,c=0,m=0;for(let d=0;d<=n;d++){for(;m<o.length&&o[m][0]<=d;)s=s+(u-s)*Vr((d-c)/r,i),u=o[m][1],c=o[m][0],m++;a[d]=s+(u-s)*Vr((d-c)/r,i)}return a}h();var ep={white:[255,255,255,1],black:[0,0,0,1],transparent:[0,0,0,0]};function In(t){let e=t.trim().toLowerCase(),n=ep[e];if(n)return[...n];let r=e.match(/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/);if(r?.[1]){let o=r[1].length<=4?[...r[1]].map(s=>s+s).join(""):r[1],a=s=>Number.parseInt(o.slice(s,s+2),16);return[a(0),a(2),a(4),o.length===8?a(6)/255:1]}let i=e.match(/^rgba?\(([^)]*)\)$/);if(i?.[1]){let o=i[1].split(/[\s,/]+/).filter(Boolean);if(o.length!==3&&o.length!==4)return null;let a=(d,p)=>d.endsWith("%")?Number.parseFloat(d)/100*p:Number(d),[s,u,c]=o.slice(0,3).map(d=>a(d,255)),m=o[3]===void 0?1:a(o[3],1);return[s,u,c,m].some(d=>d===void 0||Number.isNaN(d))?null:[s,u,c,m]}return null}var Ho=([t,e,n,r])=>`rgba(${Math.round(t)},${Math.round(e)},${Math.round(n)},${+r.toFixed(3)})`;function Xy(t,e){let n=In(t);return n?Ho([n[0],n[1],n[2],e]):t}function qy(t){let e=In(t);return Ho(e?[e[0],e[1],e[2],0]:[0,0,0,0])}function Ju(t,e,n){let r=In(t),i=In(e);if(!r||!i)return t;let o=r.map((a,s)=>a+(i[s]-a)*n);return o[3]<1?Ho(o):`#${o.slice(0,3).map(a=>Math.round(a).toString(16).padStart(2,"0")).join("")}`}function Wo(t){let e=In(t);if(!e)return null;let n=r=>{let i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*n(e[0])+.7152*n(e[1])+.0722*n(e[2])}function zr(t,e){let n=Wo(t),r=Wo(e);if(n===null||r===null)return null;let[i,o]=n>r?[n,r]:[r,n];return(i+.05)/(o+.05)}function el(t){return(Wo(t)??0)>.179}function Zy(t,e="#ffffff",n="#0b0c0e"){return(zr(e,t)??0)>=(zr(n,t)??0)?e:n}h();h();h();h();function Yo(t){let e=t>>>0,n=()=>{e=e+2654435769>>>0;let r=e;return r=Math.imul(r^r>>>16,2246822507)>>>0,r=Math.imul(r^r>>>13,3266489909)>>>0,r=(r^r>>>16)>>>0,r/4294967296};return{next:n,range:(r,i)=>r+(i-r)*n(),int:(r,i)=>r+Math.floor(n()*(i-r+1)),pick:r=>{if(r.length===0)throw new Error("rng.pick: empty list");return r[Math.floor(n()*r.length)]},spread:r=>(n()*2-1)*r}}function tp(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619)>>>0;return e>>>0}function Vn(t,e){return Yo((Math.imul(t>>>0,2654435761)^tp(String(e)))>>>0)}function n0(t,e){return Xo(e),Math.round(t*e)}function r0(t,e){return Xo(e),t/e}function i0(t,e){return Math.round(t*e)}function o0(t,e){return!e||e<=0?Math.round(t):Math.round(Math.round(t/e)*e)}function jr(t,e){return Xo(e),Math.max(1,Math.round(t*e/30))}function a0(t,e,n="forward",r=1){return t<=0?[]:np(t,n,r).map(o=>Math.round(o*e))}function np(t,e,n=1){let r=Array.from({length:t},(o,a)=>a),i=(t-1)/2;switch(e){case"forward":return r;case"reverse":return r.map(o=>t-1-o);case"center":return r.map(o=>Math.abs(o-i));case"edges":return r.map(o=>i-Math.abs(o-i));case"random":{let o=Yo(n),a=[...r];for(let u=a.length-1;u>0;u--){let c=Math.floor(o.next()*(u+1));[a[u],a[c]]=[a[c],a[u]]}let s=new Array(t);return a.forEach((u,c)=>{s[u]=c}),s}}}var rp=(t,e)=>({start:t,end:t+Math.max(0,e)}),s0=(t,e)=>t>=e.start&&t<=e.end;function u0(t){if(t.length===0)return{start:0,end:0};let e=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(let r of t)e=Math.min(e,r.start),n=Math.max(n,r.end);return{start:e,end:n}}function l0(t,e=0,n=0){let r=[],i=e;for(let o of t)r.push(rp(i,o)),i+=o+n;return r}function Xo(t){if(!(t>0)||!Number.isFinite(t))throw new Error(`fps must be a positive number, got ${t}`)}var zn=["none","fade","rise","drop","scale","pop","slide-left","slide-right","slide-up","slide-down","tilt","mask-up","mask-down","mask-left","mask-right"];function qo(t,e,n,r=30){if(t===!1||t===void 0)return null;let i=typeof t=="string"?{preset:t}:t;if(i.preset==="none")return null;if(!zn.includes(i.preset))throw new Error(`Unknown motion preset "${i.preset}". Use one of: ${zn.join(", ")}.`);return{preset:i.preset,duration:Math.max(1,Math.round(i.duration??jr(n.motion.speed.base,r))),ease:i.ease??(i.preset==="pop"?n.motion.ease.snap:e==="enter"?n.motion.ease.enter:n.motion.ease.exit),distance:i.distance??(i.preset.startsWith("slide-")?120:40)*n.scale,delay:Math.max(0,Math.round(i.delay??0)),blur:ip(i.blur??i.preset.startsWith("slide-"))}}var ip=t=>t===!0?90:t===!1?0:Math.max(0,Math.min(360,t)),tl=t=>t.preset.startsWith("mask-");function nl(t,e){switch(t.preset){case"mask-up":return[0,e?.height??t.distance];case"mask-down":return[0,-(e?.height??t.distance)];case"mask-left":return[e?.width??t.distance,0];case"mask-right":return[-(e?.width??t.distance),0];case"rise":case"slide-up":return[0,t.distance];case"drop":case"slide-down":return[0,-t.distance];case"slide-left":return[t.distance,0];case"slide-right":return[-t.distance,0];default:return[0,0]}}function rl(t,e=0,n){let r=e+t.delay,i=r+t.duration,o=ne.create();tl(t)||o.keys("opacity",[[r,0],[i,1,t.ease]]);let[a,s]=nl(t,n);return a!==0&&o.keys("x",[[r,a],[i,0,t.ease]]),s!==0&&o.keys("y",[[r,s],[i,0,t.ease]]),t.preset==="scale"&&o.keys("scale",[[r,.92],[i,1,t.ease]]),t.preset==="pop"&&o.keys("scale",[[r,.6],[i,1,t.ease]]),t.preset==="tilt"&&(o.keys("perspective",[[r,1200]]),o.keys("rotateX",[[r,28],[i,0,t.ease]]),o.keys("translateZ",[[r,-160],[i,0,t.ease]])),o}function il(t,e,n){let r=e-t.delay,i=Math.max(0,r-t.duration),o=ne.create();tl(t)||o.keys("opacity",[[i,1],[r,0,t.ease]]);let[a,s]=nl(t,n);return a!==0&&o.keys("x",[[i,0],[r,-a,t.ease]]),s!==0&&o.keys("y",[[i,0],[r,-s,t.ease]]),t.preset==="scale"&&o.keys("scale",[[i,1],[r,.92,t.ease]]),t.preset==="pop"&&o.keys("scale",[[i,1],[r,.6,t.ease]]),t.preset==="tilt"&&(o.keys("perspective",[[i,1200]]),o.keys("rotateX",[[i,0],[r,-28,t.ease]]),o.keys("translateZ",[[i,0],[r,-160,t.ease]])),o}h();var _r={ease:{enter:"expo.out",exit:"power2.in",move:"power3.inOut",snap:"back.out(1.6)"},speed:{fast:8,base:16,slow:30},spring:{settle:{stiffness:230,damping:24},base:{stiffness:260,damping:20},pop:{stiffness:320,damping:14}}},Zo={regular:400,medium:500,semibold:600,bold:700,heavy:800},Jo={low:{opacity:.32,distance:3,size:10,edge:.07},mid:{opacity:.4,distance:10,size:30,edge:.08},high:{opacity:.5,distance:22,size:60,edge:.1}},ol={low:{opacity:.1,distance:2,size:8,edge:0},mid:{opacity:.14,distance:8,size:26,edge:0},high:{opacity:.2,distance:18,size:54,edge:0}},Ko={radius:{sm:6,md:12,lg:24,pill:999},stroke:{hair:1,base:2,bold:4}},Qo={display:"Inter",body:"Inter",mono:"JetBrains Mono"},al={graphite:{mode:"dark",color:{bg:"#0d0e11",surface:"#16181d",raised:"#1f2229",line:"#2b2f38",ink:"#f3f4f6",muted:"#8b909c",accent:"#5b8cff",accent2:"#b07cff",positive:"#3ecf8e",negative:"#ff5c5c",highlight:"#ffd23f",shadow:"#000000"},font:Qo,weight:Zo,...Ko,elevation:Jo,motion:_r,scale:1},paper:{mode:"light",color:{bg:"#f4f1ea",surface:"#fffdf8",raised:"#ffffff",line:"#dcd6c8",ink:"#1a1814",muted:"#6b665c",accent:"#e0451f",accent2:"#1f5fe0",positive:"#1f8a4c",negative:"#c8282d",highlight:"#ffe066",shadow:"#3b2f1e"},font:Qo,weight:Zo,...Ko,elevation:ol,motion:_r,scale:1},signal:{mode:"dark",color:{bg:"#000000",surface:"#111111",raised:"#1c1c1c",line:"#333333",ink:"#ffffff",muted:"#a3a3a3",accent:"#c6ff00",accent2:"#ff2e88",positive:"#00e676",negative:"#ff1744",highlight:"#c6ff00",shadow:"#000000"},font:Qo,weight:Zo,...Ko,elevation:Jo,motion:{..._r,ease:{..._r.ease,enter:"back.out(1.8)"},speed:{fast:6,base:12,slow:24},spring:{settle:{stiffness:300,damping:26},base:{stiffness:340,damping:22},pop:{stiffness:400,damping:14}}},scale:1}};function jn(t={},e=al.graphite){let n=sl(e,t);t.mode===void 0&&t.color?.bg!==void 0&&(n.mode=el(n.color.bg)?"light":"dark",t.elevation===void 0&&(n.elevation=n.mode==="light"?ol:Jo));let r=zr(n.color.ink,n.color.surface);if(r!==null&&r<4.5)throw new Error(`Theme contrast too low: ink ${n.color.ink} on surface ${n.color.surface} is ${r.toFixed(2)}:1 (needs 4.5:1).`);return n}function y0(t,e,n=30){return jr(t.motion.speed[e],n)}function sl(t,e){if(e===void 0)return t;if(t===null||e===null||typeof t!="object"||typeof e!="object"||Array.isArray(t)||Array.isArray(e))return e;let n={...t};for(let[r,i]of Object.entries(e))n[r]=sl(n[r],i);return n}function op(t,e){let n={};for(let[r,i]of Object.entries(t))n[r]=i.map(o=>{let a={...o,frame:o.frame+e};return typeof o.end=="number"&&(a.end=o.end+e),a});return n}function ap(t,{rest:e=0,peak:n=1,attack:r=0,release:i=8,ease:o="power2.out"}={}){let a=t.map(u=>typeof u=="number"?u:u.frame).sort((u,c)=>u-c),s=new Map;for(let u of a){let c=Math.max(0,u-r);s.has(c)||s.set(c,[c,e]),s.set(u,[u,n]),s.set(u+i,[u+i,e,o])}return[...s.values()].sort((u,c)=>u[0]-c[0])}var sp=()=>l.custom(t=>typeof t=="function",{message:"Expected a function"});function ul(){return l.union([l.enum(zn),l.object({preset:l.enum(zn),duration:l.number().int().positive().optional(),ease:l.string().optional(),distance:l.number().optional(),delay:l.number().int().min(0).optional(),blur:l.union([l.boolean(),l.number().min(0).max(360)]).optional()})])}var ll;function up(){return ll??=lp(),ll}function lp(){return l.object({id:l.string().min(1).optional(),at:l.number().int().min(0).optional(),duration:l.number().int().positive().optional(),hold:l.number().int().min(0).optional(),enter:l.union([ul(),l.literal(!1)]).optional(),exit:l.union([ul(),l.literal(!1)]).optional(),x:l.number().optional(),y:l.number().optional(),width:l.number().positive().optional(),height:l.number().positive().optional(),position:l.enum(["absolute","relative"]).optional(),theme:l.custom(t=>typeof t=="object"&&t!==null).optional(),seed:l.number().int().optional(),fps:l.number().positive().optional(),canvas:l.object({width:l.number().positive(),height:l.number().positive()}).strict().optional(),customize:sp().optional()})}function M0(t){return t}function cp(t){let e=t.theme?jn(t.theme):void 0;return n=>r=>n({...t,...r,theme:r.theme&&e?jn(r.theme,e):r.theme??e})}function dp(t,e=0){if(!Number.isFinite(t.span.end))throw new Error("after(): this component is open-ended (it stays until its parent ends). Give it a `duration`, or use its cues.");return t.span.end+e}var mp=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function cl(t,e){let n;return r=>{n??=up().extend(e.props()).strict();let i=n.safeParse(r??{});if(!i.success){let o=Object.keys(n.shape),a=i.error.issues.map(u=>{let c=u.path.join(".")||"(props)",m=u.code==="unrecognized_keys"&&u.path.length===0?pp(u.keys,o):"";return` - ${c}: ${u.message}${m}`}).join(`
|
|
381
381
|
`),s=typeof r?.id=="string"?`${e.name}#${r.id}`:e.name;throw new Error(`${s}: invalid props
|
|
382
|
-
${a}`)}return
|
|
383
|
-
`)}function
|
|
382
|
+
${a}`)}return hp(t,e,i.data)}}function pp(t,e){let n=t.flatMap(r=>{let i,o=3;for(let a of e){let s=fp(r.toLowerCase(),a.toLowerCase());s<o&&([i,o]=[a,s])}return i?[`"${r}" \u2192 "${i}"`]:[]});return n.length>0?` (did you mean ${n.join(", ")}?)`:""}function fp(t,e){let n=Array.from({length:e.length+1},(r,i)=>i);for(let r=1;r<=t.length;r++){let i=[r];for(let o=1;o<=e.length;o++)i[o]=Math.min(n[o]+1,i[o-1]+1,n[o-1]+(t[r-1]===e[o-1]?0:1));n=i}return n[e.length]}function hp(t,e,n){let r=jn(n.theme??{}),i=n.fps??30,o=n.seed??1,a=n.id??t.autoId(mp(e.name)),s=e.defaults??{},u=n.hold??s.hold??0,c={host:t,theme:r,fps:i,seed:o,id:a,partId:F=>`${a}-${F}`,rng:F=>Vn(o,F),requested:{width:n.width,height:n.height,duration:n.duration,at:n.at??0},hold:u,canvas:n.canvas??{width:1920*r.scale,height:1080*r.scale}},m=e.build(c,n),d=qo(n.enter===void 0?s.enter:n.enter,"enter",r,i),p=qo(n.exit===void 0?s.exit:n.exit,"exit",r,i),f=m.duration===null||m.openEnded===!0&&!p&&!m.afterHold,b=n.duration??(f||m.duration===null?null:Math.max(1,m.duration+u+(m.afterHold??0)+(p?p.duration+p.delay:0)));if(b===null&&p)throw new Error(`${e.name}: an exit needs a known end. Give \`duration\`, or drop \`exit\`.`);let g=n.width??m.width,y=n.height??m.height,k=Math.max(d?.blur??0,p?.blur??0),S=t.box({id:c.partId("stage"),position:"absolute",x:0,y:0,width:g,height:y,...k>0&&{motionBlurShutter:k},children:m.children}),P={width:g,height:y};d&&S.animate(rl(d,0,P)),p&&b!==null&&S.animate(il(p,b,P));let w=n.x===void 0&&n.y===void 0&&!n.position?m.origin:void 0,A=n.x!==void 0||n.y!==void 0||w!==void 0,v=n.x??w?.[0]??0,O=n.y??w?.[1]??0,C=t.box({id:a,...A?{position:"absolute",x:v,y:O}:n.position?{position:n.position}:{},width:g,height:y,...(d?.preset.startsWith("mask-")||p?.preset.startsWith("mask-"))&&{overflow:"hidden"},startFrame:n.at??0,...b!==null&&{durationFrames:b},children:[S]}),B={...m.parts,root:C,stage:S};n.customize?.(B),ea(C);let _=n.at??0,z=op(m.cues,_);if(Object.defineProperties(C,{cues:{value:z,enumerable:!1},span:{value:{start:_,end:b===null?Number.POSITIVE_INFINITY:_+b,duration:b??Number.POSITIVE_INFINITY},enumerable:!1},part:{value:F=>B[F],enumerable:!1},partNames:{value:Object.keys(B),enumerable:!1}}),m.api){let F=m.api({x:A?v:0,y:A?O:0,width:g,height:y,absolute:A,start:_});for(let[T,M]of Object.entries(F))Object.defineProperty(C,T,{value:M,enumerable:!1})}return C}function ea(t){let e=t;for(let n of e.animation?.tracks??[]){let r=n.keyframes?.[0];!r||r.frame<=0||n.repeat||n.keyframes?.unshift({id:`${r.id}-hold`,frame:0,value:r.value})}for(let n of e.children??[])ea(n);e.matte?.node&&ea(e.matte.node)}h();h();var dl=(t,e)=>Math.hypot(e[0]-t[0],e[1]-t[1]),ml=(t,e,n)=>[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n];function pl(t,e=16){if(t.length<2)return t.map(r=>[r[0],r[1]]);let n=[[t[0][0],t[0][1]]];for(let r=0;r<t.length-1;r++){let i=t[Math.max(0,r-1)],o=t[r],a=t[r+1],s=t[Math.min(t.length-1,r+2)];for(let u=1;u<=e;u++)n.push(gp(i,o,a,s,u/e))}return n}function gp(t,e,n,r,i){let o=(k,S)=>Math.max(1e-6,Math.sqrt(dl(k,S))),s=0+o(t,e),u=s+o(e,n),c=u+o(n,r),m=s+(u-s)*i,d=(k,S,P,w)=>w===P?k:ml(k,S,(m-P)/(w-P)),p=d(t,e,0,s),f=d(e,n,s,u),b=d(n,r,u,c),g=d(p,f,0,u),y=d(f,b,s,c);return d(g,y,s,u)}function A0(t){if(t.length===0)throw new Error("arcPath: no points");let e=[0];for(let i=1;i<t.length;i++)e.push(e[i-1]+dl(t[i-1],t[i]));let n=e[e.length-1],r=i=>{if(t.length===1||n===0)return[0,0];let o=Math.min(1,Math.max(0,i))*n,a=0,s=e.length-1;for(;s-a>1;){let c=a+s>>1;e[c]<=o?a=c:s=c}let u=e[s]-e[a];return[a,u>0?(o-e[a])/u:0]};return{points:t,length:n,at(i){let[o,a]=r(i);return t.length===1?[t[0][0],t[0][1]]:ml(t[o],t[Math.min(o+1,t.length-1)],a)},angleAt(i){let[o]=r(i),a=t[Math.min(o,t.length-2)]??t[0],s=t[Math.min(o+1,t.length-1)];return Math.atan2(s[1]-a[1],s[0]-a[0])}}}function tt(t,e=!1){if(t.length===0)return"";let n=a=>Math.round(a*100)/100,[r,...i]=t,o=[`M${n(r[0])} ${n(r[1])}`];for(let a of i)o.push(`L${n(a[0])} ${n(a[1])}`);return e&&o.push("Z"),o.join(" ")}function D0(t,e,n=0,r=0){let i=c=>Math.round(c*1e3)/1e3,o=t.match(/[a-zA-Z]|[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi)??[],a=[],s="",u=0;for(let c of o){if(/^[a-zA-Z]$/.test(c)){s=c,u=0,a.push(s);continue}let m=Number(c),d=s.toUpperCase(),p=s!==d;if(d==="A"){let f=u%7;u++,f===2||f===3||f===4?a.push(String(m)):f<2||p?a.push(String(i(m*e))):a.push(String(i(m*e+(f===5?n:r))));continue}p?a.push(String(i(m*e))):d==="H"?a.push(String(i(m*e+n))):d==="V"?a.push(String(i(m*e+r))):(a.push(String(i(m*e+(u%2===0?n:r)))),u++)}return a.join(" ").replace(/ ?([a-zA-Z]) ?/g,"$1")}function B0(t,e,n="power2.inOut"){return[[t,0],[t+Math.max(1,e),1,n]]}function _n(t,{wobble:e=0,seed:n=1}={},r=0){if(e<=0||t.length===0)return t.map(c=>[c[0],c[1]]);let i=Vn(n,`wobble:${r}`),o=Math.max(2,Math.min(8,Math.ceil(t.length/6))),a=Array.from({length:o},()=>i.spread(e)),s=Array.from({length:o},()=>i.spread(e)),u=(c,m)=>{let d=m*(c.length-1),p=Math.min(c.length-2,Math.floor(d)),f=d-p,b=f*f*(3-2*f);return c[p]*(1-b)+c[p+1]*b};return t.map((c,m)=>{let d=t.length===1?0:m/(t.length-1);return[c[0]+u(a,d),c[1]+u(s,d)]})}function L0(t,{padding:e=0,wobble:n=0,seed:r=1}={},i=0){let o=t.x+t.width/2,a=t.y+t.height/2,s=t.width/2+e,u=t.height/2+e,c=Vn(r,`ellipse:${i}`),m=n>0?-Math.PI*.6+c.spread(.3):0,d=n>0?Math.PI*2*1.08:Math.PI*2,p=64,f=[];for(let b=0;b<=p;b++){let g=m+d*b/p,y=n>0?1+(b/p-.5)*.06:1;f.push([o+Math.cos(g)*s*y,a+Math.sin(g)*u*y])}return tt(_n(f,{wobble:n,seed:r},i),n<=0)}function E0(t,{padding:e=0,wobble:n=0,seed:r=1}={},i=0){let o=t.x-e,a=t.y-e,s=t.x+t.width+e,u=t.y+t.height+e,c=[[o,a],[s,a],[s,u],[o,u],[o,a]];if(n<=0)return tt(c.slice(0,4),!0);let m=s-o,d=[[o+m*.06,a]];for(let p=0;p<4;p++){let f=c[p],b=c[p+1];for(let g=1;g<=8;g++){let y=g/8;p===0&&f[0]+(b[0]-f[0])*y<o+m*.06||d.push([f[0]+(b[0]-f[0])*y,f[1]+(b[1]-f[1])*y])}}return d.push([o+m*.14,a+(u-a)*.01]),tt(_n(d,{wobble:n,seed:r},i))}function I0(t,e,{wobble:n=0,seed:r=1}={},i=0){let o=n>0?16:1,a=[];for(let s=0;s<=o;s++){let u=s/o;a.push([t[0]+(e[0]-t[0])*u,t[1]+(e[1]-t[1])*u])}return tt(_n(a,{wobble:n,seed:r},i))}function V0(t,e,{amplitude:n=6,waves:r,wobble:i=0,seed:o=1}={},a=0){let s=Math.hypot(e[0]-t[0],e[1]-t[1]),u=r??Math.max(2,Math.round(s/28)),c=Math.atan2(e[1]-t[1],e[0]-t[0]),m=-Math.sin(c),d=Math.cos(c),p=u*8,f=[];for(let b=0;b<=p;b++){let g=b/p,y=Math.sin(g*u*Math.PI*2)*n;f.push([t[0]+(e[0]-t[0])*g+m*y,t[1]+(e[1]-t[1])*g+d*y])}return tt(_n(f,{wobble:i,seed:o},a))}function z0(t,e,{curve:n="arc",headSize:r=18,wobble:i=0,seed:o=1}={},a=0){let s=e[0]-t[0],u=e[1]-t[1],c=Math.hypot(s,u)||1,m=-u/c,d=s/c,p=n==="straight"?0:n==="arc"?.18:.35,f=n==="swoop"?[t,[t[0]+s*.3+m*c*p,t[1]+u*.3+d*c*p],[t[0]+s*.75-m*c*p*.4,t[1]+u*.75-d*c*p*.4],e]:[t,[t[0]+s*.5+m*c*p,t[1]+u*.5+d*c*p],e],b=p===0?[t,e]:pl(f,12),g=_n(b,{wobble:i,seed:o},a),y=g[g.length-2]??t,k=Math.atan2(e[1]-y[1],e[0]-y[0]),S=A=>[e[0]-Math.cos(k+A*.5)*r,e[1]-Math.sin(k+A*.5)*r],P=S(1),w=S(-1);return{shaft:tt(g),head:`${tt([P,e])} ${tt([e,w]).replace(/^M/,"L")}`}}function j0(t,{start:e,end:n,every:r,variants:i=3}){let o=Array.from({length:Math.max(1,i)},(u,c)=>t(c));if(r<=0||o.length===1)return[[e,o[0]]];let a=[],s=0;for(let u=e;u<=n;u+=r)a.push([u,o[s%o.length],"hold"]),s++;return a}h();var $r={char:"textIndex",word:"wordIndex",line:"lineIndex"},bp=t=>String(Math.round(t*1e4)/1e4),pt=t=>`[${t.map(bp).join(",")}]`;function G0(t,e,n,r){let i=Math.max(1,Math.round(e.duration)),o=Array.from({length:i+1},(m,d)=>Er(e.ease,d/i)),a=$r[t],s=m=>`(${m}[${a}]??${m}[${m}.length-1])`,u=n==="enter"?"1-v":"v",c=r?`(${u})*${s("F")}`:u;return["((S,L,F)=>{",`const t=frame-${s("S")};`,"const k=floor(t);",`const v=t<=0?L[0]:t>=${i}?L[${i}]:L[k]+(L[k+1]-L[k])*(t-k);`,`return ${c};`,`})(${pt(e.starts)},${pt(o)},${r?pt(r):"0"})`].join("")}function W0(t,e,n,r){let i=$r[t],o=r?`*(${pt(r)}[${i}]??0)`:"";return`((S,E)=>{const s=S[${i}];return s!==undefined&&frame>=s&&frame<E[${i}]?1${o}:0;})(${pt(e)},${pt(n)})`}function H0(t,e){return`((S)=>frame<(S[${$r[t]}]??S[S.length-1])?1:0)(${pt(e)})`}function Y0(t,e){return e.filter((n,r)=>t[r]!==`
|
|
383
|
+
`)}function X0(t,e){return`(${pt(e)}[${$r[t]}]??0)`}function q0(t,e,n){return{name:t,selectors:[{type:"expression",expression:e,mode:"add",amount:1}],props:n}}function Z0(t,e){let n={textIndex:e.textIndex??0,wordIndex:e.wordIndex??0,lineIndex:e.lineIndex??0,frame:e.frame,floor:Math.floor,clamp:(o,a,s)=>Math.max(a,Math.min(s,o)),abs:Math.abs,min:Math.min,max:Math.max},r=new Function(...Object.keys(n),`return (${t});`),i=Number(r(...Object.values(n)));return Number.isFinite(i)?Math.max(-1,Math.min(1,i)):0}h();var yp={titles:{landscape:{x:.06,top:.08,bottom:.1},portrait:{x:.08,top:.1,bottom:.24}},captions:{landscape:{x:.1,top:.08,bottom:.1},portrait:{x:.08,top:.12,bottom:.22}}};function J0(t,e,n=yp.titles){if(e&&typeof e=="object")return e;let{width:r,height:i}=t,a=(e?e==="portrait":i>r)?n.portrait:n.landscape;return{x:r*a.x,y:i*a.top,width:r*(1-2*a.x),height:i*(1-a.top-a.bottom)}}h();function nx(t){if(!/^[A-Z][A-Za-z0-9]+$/.test(t.name))throw new Error(`Component name must be PascalCase: "${t.name}"`);if(t.summary.length>200)throw new Error(`${t.name}: summary must be one sentence (\u2264 200 chars).`);return t}h();var fl;function ax(){return fl??=l.custom(t=>t!=null&&(Array.isArray(t)||typeof t=="object"||typeof t=="function"),{message:"Expected a target: [x, y], a rect, { node }, { text }, { track } or (frame) => point"}),fl}h();function xp(t,e){let n=t.elevation[e],r=t.scale;return{...n.opacity>0&&{dropShadow:{color:t.color.shadow,opacity:n.opacity,angle:90,distance:n.distance*r,size:n.size*r}},...n.edge>0&&{innerShadow:{color:"#ffffff",opacity:n.edge,angle:270,distance:Math.max(1,r),size:0,blendMode:"normal"}}}}function cx(t,e,n,r){if(r===!1)return e;let i=xp(n,r);return Object.keys(i).length>0?t.style(e,i):e}function dx(t,e,n=.05){if(e.mode==="light"||n<=0)return t;let r=Ju(t,"#ffffff",n);return r===t?t:`linear-gradient(180deg, ${r} 0%, ${t} 100%)`}h();h();function fx(t){let e=[];for(let n of t.matchAll(/\S+/g)){let r=n.index??0;e.push({text:n[0],start:r,end:r+n[0].length,index:e.length})}return e}function hl(t,e,n=0){if(typeof e=="string"){let o=0;for(let a=0;;a++){let s=t.indexOf(e,o);if(s<0)return null;if(a===n)return[s,s+e.length];o=s+Math.max(1,e.length)}}let r=e.flags.includes("g")?e.flags:`${e.flags}g`,i=0;for(let o of t.matchAll(new RegExp(e.source,r))){if(i===n)return[o.index??0,(o.index??0)+o[0].length];i++}return null}function wp(t,e,n){if(!n.width||!n.align||n.align==="left")return 0;let r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let a of t.glyphs)a.line!==e||a.char.trim()===""||(r=Math.min(r,a.x),i=Math.max(i,a.x+a.width));if(!Number.isFinite(r))return 0;let o=n.width-(i-r);return(n.align==="center"?o/2:o)-r}function gl(t,e,n,r){let i=new Map;for(let o of t.glyphs){if(o.index<e||o.index>=n||o.char.trim()==="")continue;let a=i.get(o.line)??{min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};a.min=Math.min(a.min,o.x),a.max=Math.max(a.max,o.x+o.width-(r.letterSpacing??0)),i.set(o.line,a)}return[...i.entries()].sort(([o],[a])=>o-a).map(([o,a])=>{let s=wp(t,o,r);return{x:a.min+s,y:o*t.lineHeight,width:a.max-a.min,height:t.lineHeight}})}var bl=t=>Array.isArray(t)&&t.length===2&&t.every(e=>typeof e=="number"),vp=t=>typeof t=="object"&&t!==null&&["x","y","width","height"].every(e=>typeof t[e]=="number"),We=t=>typeof t=="number"&&Number.isFinite(t)?t:void 0;function Ur(t,e,n){if(typeof t=="function")return t(e);if(t&&typeof t.get=="function"){let r=e/n;return t.get({frame:e,fps:n,time:r,duration:0,durationMs:0,progress:0,deltaTime:1/n})}throw new Error("Tracked target values must be signals or (frame) => number.")}function yx(t,e={}){if(typeof t=="function")return{kind:"dynamic",anchor:"center",at:i=>{let o=t(i);return bl(o)?{x:o[0],y:o[1],width:0,height:0}:o}};if(bl(t))return{kind:"static",anchor:"center",rects:[{x:t[0],y:t[1],width:0,height:0}]};if(vp(t))return{kind:"static",anchor:"center",rects:[t]};if("track"in t){let i=t.track,o=e.fps??30;return{kind:"dynamic",anchor:t.anchor??"center",at:a=>({x:Ur(i.x,a,o),y:Ur(i.y,a,o),width:Ur(i.width,a,o),height:Ur(i.height,a,o)})}}if("text"in t)return{kind:"static",anchor:t.anchor??"tip",rects:Pp(t,e)};let n=t.node,r=Sp(n);if(!r)throw new Error(`Target node "${n.id??"?"}" has no absolute geometry. Give it numeric x, y, width and height, or target a rect.`);return{kind:"static",anchor:t.anchor??"center",rects:[r]}}function Sp(t){let e=We(t.x),n=We(t.y),r=We(t.width),i=We(t.height);return e===void 0||n===void 0||r===void 0||i===void 0?null:{x:e,y:n,width:r,height:i}}function kp(t,e){let n=t.text,r=typeof n.text=="string"?n.text:typeof n.content=="string"?n.content:null;if(r===null)throw new Error("Text target node has no string content.");let i=We(n.x),o=We(n.y);if(i===void 0||o===void 0)throw new Error(`Text target "${n.id??"?"}" needs numeric x and y so its glyphs can be placed.`);if(!e.measure)throw new Error("Text targets need a measure function.");let a=n.fontFamily??e.textDefaults?.fontFamily;if(!a)throw new Error("Text target has no fontFamily.");let s={...e.textDefaults,fontFamily:a,fontSize:We(n.fontSize)??e.textDefaults?.fontSize,fontWeight:n.fontWeight??e.textDefaults?.fontWeight,letterSpacing:We(n.letterSpacing)??e.textDefaults?.letterSpacing,lineHeight:We(n.lineHeight)??e.textDefaults?.lineHeight,width:We(n.width),align:Mp(n.align),direction:n.direction},u=t.range??(t.match!==void 0?hl(r,t.match,t.nth??0):[0,r.length]);if(!u)throw new Error(`Text target: "${String(t.match)}" not found in "${r}".`);return{content:r,metrics:e.measure(r,s),options:s,range:[u[0],u[1]],x:i,y:o}}function Pp(t,e){let n=kp(t,e),r=gl(n.metrics,n.range[0],n.range[1],n.options);if(r.length===0)throw new Error("Text target range covers no glyphs.");return r.map(i=>({...i,x:i.x+n.x,y:i.y+n.y}))}function Mp(t){return t==="center"?"center":t==="end"||t==="right"?"right":"left"}function Tp(t){if(t.length===0)return{x:0,y:0,width:0,height:0};let e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let o of t)e=Math.min(e,o.x),n=Math.min(n,o.y),r=Math.max(r,o.x+o.width),i=Math.max(i,o.y+o.height);return{x:e,y:n,width:r-e,height:i-n}}function yl(t,e="center",n=!1){let{x:r,y:i,width:o,height:a}=t;switch(e){case"tip":return n?[r,i+a/2]:[r+o/2,i+a/2];case"center":return[r+o/2,i+a/2];case"top":return[r+o/2,i];case"bottom":return[r+o/2,i+a];case"left":return[r,i+a/2];case"right":return[r+o,i+a/2];case"top-left":return[r,i];case"top-right":return[r+o,i];case"bottom-left":return[r,i+a];case"bottom-right":return[r+o,i+a]}}function xx(t,e=0,n=!1){if(t.kind==="dynamic")return yl(t.at(e),t.anchor,n);let r=t.rects[0];return yl(t.anchor==="tip"?r:Tp(t.rects),t.anchor,n)}h();function Sx(t,e,n,r,i=0){let o=n/e,a=[],s=i;for(let u=0;u<t.length;u++){let c=t[u-1]??"",m=u===0?0:o*(1+r.spread(.3));c===" "&&(m+=o*.6),/[.,!?;:]/.test(c)&&(m+=o*3),s+=m,a.push(Math.max(i,Math.round(s)))}for(let u=1;u<a.length;u++)a[u]=Math.max(a[u],a[u-1]+1);return a}h();h();var $n=class{textures=new Map;set(e,n){this.textures.set(e,n)}get(e){return this.textures.get(e)}has(e){return this.textures.has(e)}getOutputs(){return{canny:this.textures.get("canny"),depth:this.textures.get("depth"),normals:this.textures.get("normals"),poseSkeleton:this.textures.get("poseSkeleton"),segmentationMask:this.textures.get("segmentationMask"),faceLandmarks:this.textures.get("faceLandmarks"),motionVectors:this.textures.get("motionVectors"),deflickered:this.textures.get("deflickered")}}createBindGroupEntry(e,n){let r=this.textures.get(e);if(!r)throw new Error(`[ControlNetMultiplexer] Cannot create bind group entry: conditioning texture "${e}" is not registered in VRAM.`);return{binding:n,resource:r.createView({label:`controlnet_${e}_view`})}}exportTensorView(e){let n=this.textures.get(e);if(!n)throw new Error(`[ControlNetMultiplexer] Conditioning tensor "${e}" not found in multiplexer.`);return{texture:n,width:n.width,height:n.height,format:n.format}}async readPixelsAsync(e,n){let r=this.textures.get(n);if(!r)throw new Error(`[ControlNetMultiplexer] Cannot read pixels: conditioning texture "${n}" is missing.`);let i=r.width,o=r.height,a=r.format,s=4;a==="rgba16float"||a==="rg32float"?s=8:a==="r32float"?s=4:a==="rgba32float"&&(s=16);let u=i*s,c=Math.ceil(u/256)*256,m=c*o,d=e.createBuffer({size:m,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:`controlnet_readback_staging_${n}`}),p=e.createCommandEncoder({label:`readback_encoder_${n}`});p.copyTextureToBuffer({texture:r},{buffer:d,bytesPerRow:c,rowsPerImage:o},[i,o,1]),e.queue.submit([p.finish()]),await d.mapAsync(GPUMapMode.READ);let f=d.getMappedRange(),b=new Uint8Array(i*o*s),g=new Uint8Array(f);if(c===u)b.set(g.subarray(0,i*o*s));else for(let y=0;y<o;y++){let k=y*c,S=y*u;b.set(g.subarray(k,k+u),S)}return d.unmap(),d.destroy(),{width:i,height:o,format:a,data:b}}destroy(){for(let e of this.textures.values())try{e.destroy()}catch{}this.textures.clear()}};h();h();h();var xl=`
|
|
384
384
|
struct CannyParams {
|
|
385
385
|
lowThreshold: f32,
|
|
386
386
|
highThreshold: f32,
|
|
@@ -436,7 +436,7 @@ fn computeSobel(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
436
436
|
|
|
437
437
|
textureStore(magnitudeTex, id.xy, vec4<f32>(mag, sector, 0.0, 1.0));
|
|
438
438
|
}
|
|
439
|
-
`,
|
|
439
|
+
`,wl=`
|
|
440
440
|
struct CannyParams {
|
|
441
441
|
lowThreshold: f32,
|
|
442
442
|
highThreshold: f32,
|
|
@@ -494,7 +494,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
494
494
|
|
|
495
495
|
textureStore(edgeTex, id.xy, vec4<f32>(edge, edge, edge, 1.0));
|
|
496
496
|
}
|
|
497
|
-
`,
|
|
497
|
+
`,vl=`
|
|
498
498
|
struct CannyParams {
|
|
499
499
|
lowThreshold: f32,
|
|
500
500
|
highThreshold: f32,
|
|
@@ -552,7 +552,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
552
552
|
|
|
553
553
|
textureStore(edgeTex, id.xy, vec4<f32>(edge, 0.0, 0.0, 1.0));
|
|
554
554
|
}
|
|
555
|
-
`;var Un=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"canny_sobel.wgsl",code:
|
|
555
|
+
`;var Un=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"canny_sobel.wgsl",code:xl});this.sobelPipeline=e.createComputePipeline({label:"CannySobelPipeline",layout:"auto",compute:{module:n,entryPoint:"computeSobel"}});let r=e.createShaderModule({label:"canny_nms_rgba8.wgsl",code:wl});this.nmsRgba8Pipeline=e.createComputePipeline({label:"CannyNmsRgba8Pipeline",layout:"auto",compute:{module:r,entryPoint:"computeNonMaxSuppression"}});let i=e.createShaderModule({label:"canny_nms_r32f.wgsl",code:vl});this.nmsR32fPipeline=e.createComputePipeline({label:"CannyNmsR32fPipeline",layout:"auto",compute:{module:i,entryPoint:"computeNonMaxSuppression"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"canny_uniform_buffer"})}device;sobelPipeline;nmsRgba8Pipeline;nmsR32fPipeline;uniformBuffer;cachedIntermediateTexture;cachedOutputTexture;execute(e,n={}){let r=e.width,i=e.height,o=n.low??.1,a=n.high??.3,s=n.outputFormat??"rgba8unorm",u=new ArrayBuffer(16),c=new Float32Array(u),m=new Uint32Array(u);c[0]=o,c[1]=a,m[2]=r,m[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,u),(!this.cachedIntermediateTexture||this.cachedIntermediateTexture.width!==r||this.cachedIntermediateTexture.height!==i)&&(this.cachedIntermediateTexture?.destroy(),this.cachedIntermediateTexture=this.device.createTexture({label:"canny_magnitude_intermediate",size:[r,i],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING})),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==s)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`canny_edge_output_${s}`,size:[r,i],format:s,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=this.device.createCommandEncoder({label:"canny_command_encoder"}),p=this.device.createBindGroup({layout:this.sobelPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:this.cachedIntermediateTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),f=d.beginComputePass({label:"canny_sobel_pass"});f.setPipeline(this.sobelPipeline),f.setBindGroup(0,p),f.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16)),f.end();let b=s==="r32float"?this.nmsR32fPipeline:this.nmsRgba8Pipeline,g=this.device.createBindGroup({layout:b.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedIntermediateTexture.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),y=d.beginComputePass({label:"canny_nms_pass"});return y.setPipeline(b),y.setBindGroup(0,g),y.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16)),y.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedIntermediateTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};h();h();var Sl=`
|
|
556
556
|
struct DepthNormalParams {
|
|
557
557
|
width: u32,
|
|
558
558
|
height: u32,
|
|
@@ -585,7 +585,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
585
585
|
let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
|
|
586
586
|
textureStore(normalTex, id.xy, packedColor);
|
|
587
587
|
}
|
|
588
|
-
`,
|
|
588
|
+
`,kl=`
|
|
589
589
|
struct DepthNormalParams {
|
|
590
590
|
width: u32,
|
|
591
591
|
height: u32,
|
|
@@ -618,7 +618,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
618
618
|
let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
|
|
619
619
|
textureStore(normalTex, id.xy, packedColor);
|
|
620
620
|
}
|
|
621
|
-
`;var Gn=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"depth_normals_rgba16f.wgsl",code:
|
|
621
|
+
`;var Gn=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"depth_normals_rgba16f.wgsl",code:Sl});this.normalRgba16fPipeline=e.createComputePipeline({label:"DepthNormalsRgba16fPipeline",layout:"auto",compute:{module:n,entryPoint:"computeNormals"}});let r=e.createShaderModule({label:"depth_normals_rgba8.wgsl",code:kl});this.normalRgba8Pipeline=e.createComputePipeline({label:"DepthNormalsRgba8Pipeline",layout:"auto",compute:{module:r,entryPoint:"computeNormals"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"depth_normals_uniform_buffer"})}device;normalRgba16fPipeline;normalRgba8Pipeline;uniformBuffer;cachedOutputTexture;execute(e,n={}){let r=e.width,i=e.height,o=n.depthScale??1,a=n.outputFormat??"rgba16float",s=new ArrayBuffer(16),u=new Uint32Array(s),c=new Float32Array(s);u[0]=r,u[1]=i,c[2]=o,c[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==a)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`normal_output_${a}`,size:[r,i],format:a,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=a==="rgba8unorm"?this.normalRgba8Pipeline:this.normalRgba16fPipeline,d=this.device.createCommandEncoder({label:"depth_normals_command_encoder"}),p=this.device.createBindGroup({layout:m.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),f=d.beginComputePass({label:"depth_normals_compute_pass"});return f.setPipeline(m),f.setBindGroup(0,p),f.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16)),f.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};h();h();var Pl=`
|
|
622
622
|
struct FaceSegment {
|
|
623
623
|
start: vec2<f32>,
|
|
624
624
|
end: vec2<f32>,
|
|
@@ -675,7 +675,7 @@ fn computeFaceLandmarks(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
675
675
|
|
|
676
676
|
textureStore(outputTex, id.xy, outColor);
|
|
677
677
|
}
|
|
678
|
-
`;function nt(t,e){let n=[];for(let r=0;r<t.length-1;r++)n.push({from:t[r],to:t[r+1],color:e});return n}var Wn=[...nt([70,63,105,66,107],[0,1,1,1]),...nt([300,293,334,296,336],[0,1,1,1]),...nt([33,160,158,133,153,144,33],[0,1,0,1]),...nt([263,387,385,362,380,373,263],[0,1,0,1]),...nt([168,6,197,195,4],[1,1,0,1]),...nt([98,97,2,326,327],[1,1,0,1]),...nt([61,185,40,39,37,0,267,269,270,409,291,375,321,405,314,17,84,181,91,146,61],[1,.2,.2,1]),...nt([78,95,88,178,87,14,317,402,318,324,308,415,310,311,312,13,82,81,80,191,78],[1,0,.8,1]),...nt([10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109,10],[.9,.9,.9,1])],Gr=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"face_landmarks.wgsl",code:
|
|
678
|
+
`;function nt(t,e){let n=[];for(let r=0;r<t.length-1;r++)n.push({from:t[r],to:t[r+1],color:e});return n}var Wn=[...nt([70,63,105,66,107],[0,1,1,1]),...nt([300,293,334,296,336],[0,1,1,1]),...nt([33,160,158,133,153,144,33],[0,1,0,1]),...nt([263,387,385,362,380,373,263],[0,1,0,1]),...nt([168,6,197,195,4],[1,1,0,1]),...nt([98,97,2,326,327],[1,1,0,1]),...nt([61,185,40,39,37,0,267,269,270,409,291,375,321,405,314,17,84,181,91,146,61],[1,.2,.2,1]),...nt([78,95,88,178,87,14,317,402,318,324,308,415,310,311,312,13,82,81,80,191,78],[1,0,.8,1]),...nt([10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109,10],[.9,.9,.9,1])],Gr=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"face_landmarks.wgsl",code:Pl});this.computePipeline=e.createComputePipeline({label:"FaceLandmarksComputePipeline",layout:"auto",compute:{module:n,entryPoint:"computeFaceLandmarks"}}),this.uniformBuffer=e.createBuffer({size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"face_landmarks_uniform_buffer"});let r=Math.max(256,Wn.length*48);this.storageBuffer=e.createBuffer({size:r,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"face_landmarks_storage_buffer"})}device;computePipeline;uniformBuffer;storageBuffer;cachedOutputTexture;execute(e,n={}){let r=n.width??1024,i=n.height??1024,o=n.lineWidth??4,a=Math.max(1,o/2),s=new Uint32Array(4);s[0]=r,s[1]=i,s[2]=Wn.length,s[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s);let u=new Float32Array(Wn.length*12);for(let p=0;p<Wn.length;p++){let f=Wn[p],b=e[f.from],g=e[f.to],y=p*12;if(!b||!g||(b.visibility??1)<.2||(g.visibility??1)<.2){u[y+9]=0;continue}u[y+0]=b.x*r,u[y+1]=b.y*i,u[y+2]=g.x*r,u[y+3]=g.y*i,u[y+4]=f.color[0],u[y+5]=f.color[1],u[y+6]=f.color[2],u[y+7]=f.color[3],u[y+8]=a,u[y+9]=1,u[y+10]=0,u[y+11]=0}this.device.queue.writeBuffer(this.storageBuffer,0,u),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({size:{width:r,height:i},format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST,label:"face_landmarks_output_texture"}));let c=this.device.createBindGroup({label:"FaceLandmarksBindGroup",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView()},{binding:1,resource:{buffer:this.uniformBuffer}},{binding:2,resource:{buffer:this.storageBuffer}}]}),m=this.device.createCommandEncoder({label:"FaceLandmarksCommandEncoder"}),d=m.beginComputePass({label:"FaceLandmarksComputePass"});return d.setPipeline(this.computePipeline),d.setBindGroup(0,c),d.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16)),d.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.uniformBuffer.destroy(),this.storageBuffer.destroy(),this.cachedOutputTexture?.destroy()}};h();h();var Ml=`
|
|
679
679
|
struct SegParams {
|
|
680
680
|
threshold: f32,
|
|
681
681
|
feather: f32,
|
|
@@ -705,25 +705,25 @@ fn computeSegmentation(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
|
705
705
|
|
|
706
706
|
textureStore(outputTex, id.xy, vec4<f32>(alpha, alpha, alpha, 1.0));
|
|
707
707
|
}
|
|
708
|
-
`;var Wr=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"segmentation.wgsl",code:kl});this.computePipeline=e.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:n,entryPoint:"computeSegmentation"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(e,n={}){let r=e.width,i=e.height,o=n.threshold??.5,a=n.feather??.05,s=new ArrayBuffer(16),u=new Float32Array(s),c=new Uint32Array(s);u[0]=o,u[1]=a,c[2]=r,c[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[r,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),d=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=m.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,d),p.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var Jt=class t{constructor(e){this.source=e;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new $n;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(e){return new t(e)}canny(e={}){return this.cannyOptions=e,this}depthNormals(e={}){return this.depthNormalsOptions=e,this}poseSkeleton(e={}){return this.poseSkeletonOptions=e,this}pose(e,n={}){return this.poseSkeletonOptions={...n,landmarks:e},this}faceLandmarks(e={}){return this.faceLandmarksOptions=e,this}face(e,n={}){return this.faceLandmarksOptions={...n,landmarks:e},this}segmentation(e={}){return this.segmentationOptions=e,this}opticalFlow(e={}){return this.opticalFlowOptions=e,this}deflicker(e={}){return this.deflickerOptions=e,this}getMultiplexer(){return this.multiplexer}async execute(e,n){let r=n;if(!r&&typeof this.source?.createView=="function"&&(r=this.source),!r)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new Un(e));let i=this.cannyPipeline.execute(r,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new Gn(e));let i=this.depthNormalsPipeline.execute(r,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new Es(e));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??r.width,height:this.poseSkeletonOptions.height??r.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new Gr(e));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??r.width,height:this.faceLandmarksOptions.height??r.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new Wr(e));let i=this.segmentationPipeline.execute(r,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new _i(e));let i=this.prevInputTexture??r,o=this.opticalFlowPipeline.execute(i,r,this.opticalFlowOptions);this.multiplexer.set("motionVectors",o)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new $i(e));let i=this.deflickerPipeline.execute(r,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=r,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};h();var ew=t=>{if(!t)return"srcOver";switch(t){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},tw=t=>t==="destination-in"||t==="source-in";h();function iw(t,e,n,r,i="outside"){if(i==="inside"){let o=r/2;return{x:o,y:o,width:Math.max(0,t-r),height:Math.max(0,e-r),radius:n===0?0:Math.max(0,n-o)}}if(i==="outside"){let o=r/2;return{x:-o,y:-o,width:t+r,height:e+r,radius:n===0?0:n+o}}return{x:0,y:0,width:t,height:e,radius:n}}h();var Pl=new Map;function Q(t){let e=(Pl.get(t)??0)+1;return Pl.set(t,e),`${t}-auto-${e}`}h();h();h();h();var je=class extends Error{status;body;requestId;type;constructor({message:e,status:n,body:r,requestId:i,type:o}){super(e),this.name="ApiError",this.status=n,this.body=r,this.requestId=i??"",this.type=o}},Hn=class extends je{constructor(e){super(e),this.name="ValidationError"}get fieldErrors(){return Array.isArray(this.body?.detail)?this.body.detail:[]}getFieldErrors(e){return this.fieldErrors.filter(n=>n.loc[n.loc.length-1]===e)}};function Pp(t,e){if(t?.error?.message)return t.error.message;if(typeof t?.detail=="string")return t.detail;if(Array.isArray(t?.detail)){let n=t.detail[0];if(n?.msg)return`${n.msg} (${(n.loc??[]).join(".")})`}return typeof t?.message=="string"?t.message:e}async function Hr(t){let e=await t.text().catch(()=>""),n=e||void 0;try{n=e?JSON.parse(e):void 0}catch{}let r=typeof n=="object"&&n!==null?n:void 0,i={message:Pp(r,`${t.status} ${t.statusText}`.trim()),status:t.status,body:n,requestId:t.headers.get("x-framefields-request-id")??void 0,type:r?.error?.type};return t.status===422&&Array.isArray(r?.detail)?new Hn(i):new je(i)}h();h();var ta="https://api.framefields.dev/v1/ai/proxy",Ml,Tl=t=>typeof x<"u"?x.env?.[t]:void 0;function Cl(t){Ml=t}function Mp(){let t=Ml??Tl("FRAMEFIELDS_API_KEY");if(!t)throw new Error("framefields ai: no API key. Set FRAMEFIELDS_API_KEY or call ai.config({ apiKey }). Create a key at https://framefields.dev/dashboard/keys");return t}function Tp({service:t,path:e,query:n}){let r=new URLSearchParams;for(let[o,a]of Object.entries(n??{}))a!==void 0&&r.set(o,a);let i=r.size?`?${r}`:"";return`${t}/${e.replace(/^\/+/,"")}${i}`}async function na(t){let e={Authorization:`Key ${Mp()}`,Accept:t.accept??"application/json","x-framefields-target":Tp(t)},n=t.body!==void 0;n&&(e["Content-Type"]="application/json");let r=await fetch(Tl("FRAMEFIELDS_AI_PROXY_URL")??ta,{method:t.method??(n?"POST":"GET"),headers:e,body:n?JSON.stringify(t.body):void 0,signal:t.signal});if(!r.ok)throw await Hr(r);return r}async function rt(t){let e=await na(t);return{data:await e.json(),requestId:e.headers.get("x-framefields-request-id")??""}}var Cp=90*1024*1024,Al=10*1024*1024,Ap=3,Dp={"image/jpeg":"jpg","image/png":"png","image/webp":"webp","video/mp4":"mp4","audio/mpeg":"mp3","audio/wav":"wav"};function Np(t,e){return"name"in t&&typeof t.name=="string"&&t.name?t.name:`${Date.now()}.${Dp[e]??"bin"}`}function Dl(t,e){let n=t.type||"application/octet-stream";return rt({service:"storage",path:e?"upload/initiate-multipart":"upload/initiate",body:{content_type:n,file_name:Np(t,n)}}).then(r=>r.data)}async function ia(t,e){let n=await fetch(t,e);if(!n.ok)throw await Hr(n);return n}async function Op(t,e){for(let n=1;;n++)try{return await(await ia(t,{method:"PUT",body:e})).json()}catch(r){if(n>=Ap)throw r}}async function Rp(t){let e=await Dl(t,!0),n=new URL(e.upload_url),r=o=>`${n.origin}${n.pathname}/${o}${n.search}`,i=[];for(let o=0;o<t.size;o+=Al){let a=t.slice(o,Math.min(o+Al,t.size));i.push(await Op(r(i.length+1),a))}return await ia(r("complete"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parts:i.map(({partNumber:o,etag:a})=>({partNumber:o,etag:a}))})}),e.file_url}async function Nl(t){if(t.size>Cp)return Rp(t);let e=await Dl(t,!1);return await ia(e.upload_url,{method:"PUT",body:t,headers:{"Content-Type":t.type||"application/octet-stream"}}),e.file_url}var Fp=t=>typeof t=="object"&&t!==null&&Object.getPrototypeOf(t)===Object.prototype;async function ra(t){if(t instanceof Blob)return await Nl(t);if(Array.isArray(t))return await Promise.all(t.map(e=>ra(e)));if(Fp(t)){let e=await Promise.all(Object.entries(t).map(async([n,r])=>[n,await ra(r)]));return Object.fromEntries(e)}return t}var Ct={upload:Nl,transformInput:ra};var Bp=new Set([429,502,503,504]),Lp=4,Ol=(t,e)=>new Promise((n,r)=>{e?.throwIfAborted();let i=setTimeout(n,t);e?.addEventListener("abort",()=>{clearTimeout(i),r(e.reason)},{once:!0})});async function Rl(t,e){for(let n=1;;n++)try{return await t()}catch(r){if(!(r instanceof je&&Bp.has(r.status))||n>=Lp)throw r;await Ol(500*2**n,e)}}var oa=(t,e,n="")=>`${t}/requests/${encodeURIComponent(e)}${n}`;async function Fl(t,{input:e,abortSignal:n}){let{data:r}=await rt({service:"queue",path:t,body:await Ct.transformInput(e)??{},signal:n});return r}function Bl(t,{requestId:e,logs:n,abortSignal:r}){return Rl(async()=>{let{data:i}=await rt({service:"queue",path:oa(t,e,"/status"),query:{logs:n?"1":void 0},signal:r});return i},r)}function Ll(t,{requestId:e,abortSignal:n}){return Rl(async()=>{let{data:r}=await rt({service:"queue",path:oa(t,e),signal:n});return{data:r,requestId:e}},n)}async function Ep(t,{requestId:e,abortSignal:n}){await rt({service:"queue",path:oa(t,e,"/cancel"),method:"PUT",signal:n})}async function El(t,e){let n=e.pollInterval??500;for(;;){let r=await Bl(t,e);if(e.onQueueUpdate?.(r),r.status==="COMPLETED")return r;await Ol(n,e.abortSignal)}}var Il={submit:Fl,status:Bl,result:Ll,cancel:Ep,subscribeToStatus:El};async function Vl(t,e){let{request_id:n}=await Fl(t,e);return e.onEnqueue?.(n),await El(t,{...e,requestId:n}),Ll(t,{requestId:n,abortSignal:e.abortSignal})}h();async function*Ip(t){let e=new TextDecoder,n="";for await(let i of t){n+=e.decode(i,{stream:!0}).replace(/\r\n?/g,`
|
|
708
|
+
`;var Wr=class{constructor(e){this.device=e;let n=e.createShaderModule({label:"segmentation.wgsl",code:Ml});this.computePipeline=e.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:n,entryPoint:"computeSegmentation"}}),this.uniformBuffer=e.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(e,n={}){let r=e.width,i=e.height,o=n.threshold??.5,a=n.feather??.05,s=new ArrayBuffer(16),u=new Float32Array(s),c=new Uint32Array(s);u[0]=o,u[1]=a,c[2]=r,c[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[r,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),d=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=m.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,d),p.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var Jt=class t{constructor(e){this.source=e;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new $n;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(e){return new t(e)}canny(e={}){return this.cannyOptions=e,this}depthNormals(e={}){return this.depthNormalsOptions=e,this}poseSkeleton(e={}){return this.poseSkeletonOptions=e,this}pose(e,n={}){return this.poseSkeletonOptions={...n,landmarks:e},this}faceLandmarks(e={}){return this.faceLandmarksOptions=e,this}face(e,n={}){return this.faceLandmarksOptions={...n,landmarks:e},this}segmentation(e={}){return this.segmentationOptions=e,this}opticalFlow(e={}){return this.opticalFlowOptions=e,this}deflicker(e={}){return this.deflickerOptions=e,this}getMultiplexer(){return this.multiplexer}async execute(e,n){let r=n;if(!r&&typeof this.source?.createView=="function"&&(r=this.source),!r)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new Un(e));let i=this.cannyPipeline.execute(r,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new Gn(e));let i=this.depthNormalsPipeline.execute(r,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new Is(e));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??r.width,height:this.poseSkeletonOptions.height??r.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new Gr(e));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??r.width,height:this.faceLandmarksOptions.height??r.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new Wr(e));let i=this.segmentationPipeline.execute(r,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new _i(e));let i=this.prevInputTexture??r,o=this.opticalFlowPipeline.execute(i,r,this.opticalFlowOptions);this.multiplexer.set("motionVectors",o)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new $i(e));let i=this.deflickerPipeline.execute(r,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=r,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};h();var rw=t=>{if(!t)return"srcOver";switch(t){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},iw=t=>t==="destination-in"||t==="source-in";h();function sw(t,e,n,r,i="outside"){if(i==="inside"){let o=r/2;return{x:o,y:o,width:Math.max(0,t-r),height:Math.max(0,e-r),radius:n===0?0:Math.max(0,n-o)}}if(i==="outside"){let o=r/2;return{x:-o,y:-o,width:t+r,height:e+r,radius:n===0?0:n+o}}return{x:0,y:0,width:t,height:e,radius:n}}h();var Tl=new Map;function Q(t){let e=(Tl.get(t)??0)+1;return Tl.set(t,e),`${t}-auto-${e}`}h();h();h();h();var je=class extends Error{status;body;requestId;type;constructor({message:e,status:n,body:r,requestId:i,type:o}){super(e),this.name="ApiError",this.status=n,this.body=r,this.requestId=i??"",this.type=o}},Hn=class extends je{constructor(e){super(e),this.name="ValidationError"}get fieldErrors(){return Array.isArray(this.body?.detail)?this.body.detail:[]}getFieldErrors(e){return this.fieldErrors.filter(n=>n.loc[n.loc.length-1]===e)}};function Cp(t,e){if(t?.error?.message)return t.error.message;if(typeof t?.detail=="string")return t.detail;if(Array.isArray(t?.detail)){let n=t.detail[0];if(n?.msg)return`${n.msg} (${(n.loc??[]).join(".")})`}return typeof t?.message=="string"?t.message:e}async function Hr(t){let e=await t.text().catch(()=>""),n=e||void 0;try{n=e?JSON.parse(e):void 0}catch{}let r=typeof n=="object"&&n!==null?n:void 0,i={message:Cp(r,`${t.status} ${t.statusText}`.trim()),status:t.status,body:n,requestId:t.headers.get("x-framefields-request-id")??void 0,type:r?.error?.type};return t.status===422&&Array.isArray(r?.detail)?new Hn(i):new je(i)}h();h();var ta="https://api.framefields.dev/v1/ai/proxy",Cl,Al=t=>typeof x<"u"?x.env?.[t]:void 0;function Dl(t){Cl=t}function Ap(){let t=Cl??Al("FRAMEFIELDS_API_KEY");if(!t)throw new Error("framefields ai: no API key. Set FRAMEFIELDS_API_KEY or call ai.config({ apiKey }). Create a key at https://framefields.dev/dashboard/keys");return t}function Dp({service:t,path:e,query:n}){let r=new URLSearchParams;for(let[o,a]of Object.entries(n??{}))a!==void 0&&r.set(o,a);let i=r.size?`?${r}`:"";return`${t}/${e.replace(/^\/+/,"")}${i}`}async function na(t){let e={Authorization:`Key ${Ap()}`,Accept:t.accept??"application/json","x-framefields-target":Dp(t)},n=t.body!==void 0;n&&(e["Content-Type"]="application/json");let r=await fetch(Al("FRAMEFIELDS_AI_PROXY_URL")??ta,{method:t.method??(n?"POST":"GET"),headers:e,body:n?JSON.stringify(t.body):void 0,signal:t.signal});if(!r.ok)throw await Hr(r);return r}async function rt(t){let e=await na(t);return{data:await e.json(),requestId:e.headers.get("x-framefields-request-id")??""}}var Np=90*1024*1024,Nl=10*1024*1024,Op=3,Rp={"image/jpeg":"jpg","image/png":"png","image/webp":"webp","video/mp4":"mp4","audio/mpeg":"mp3","audio/wav":"wav"};function Fp(t,e){return"name"in t&&typeof t.name=="string"&&t.name?t.name:`${Date.now()}.${Rp[e]??"bin"}`}function Ol(t,e){let n=t.type||"application/octet-stream";return rt({service:"storage",path:e?"upload/initiate-multipart":"upload/initiate",body:{content_type:n,file_name:Fp(t,n)}}).then(r=>r.data)}async function ia(t,e){let n=await fetch(t,e);if(!n.ok)throw await Hr(n);return n}async function Bp(t,e){for(let n=1;;n++)try{return await(await ia(t,{method:"PUT",body:e})).json()}catch(r){if(n>=Op)throw r}}async function Lp(t){let e=await Ol(t,!0),n=new URL(e.upload_url),r=o=>`${n.origin}${n.pathname}/${o}${n.search}`,i=[];for(let o=0;o<t.size;o+=Nl){let a=t.slice(o,Math.min(o+Nl,t.size));i.push(await Bp(r(i.length+1),a))}return await ia(r("complete"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parts:i.map(({partNumber:o,etag:a})=>({partNumber:o,etag:a}))})}),e.file_url}async function Rl(t){if(t.size>Np)return Lp(t);let e=await Ol(t,!1);return await ia(e.upload_url,{method:"PUT",body:t,headers:{"Content-Type":t.type||"application/octet-stream"}}),e.file_url}var Ep=t=>typeof t=="object"&&t!==null&&Object.getPrototypeOf(t)===Object.prototype;async function ra(t){if(t instanceof Blob)return await Rl(t);if(Array.isArray(t))return await Promise.all(t.map(e=>ra(e)));if(Ep(t)){let e=await Promise.all(Object.entries(t).map(async([n,r])=>[n,await ra(r)]));return Object.fromEntries(e)}return t}var Ct={upload:Rl,transformInput:ra};var Ip=new Set([429,502,503,504]),Vp=4,Fl=(t,e)=>new Promise((n,r)=>{e?.throwIfAborted();let i=setTimeout(n,t);e?.addEventListener("abort",()=>{clearTimeout(i),r(e.reason)},{once:!0})});async function Bl(t,e){for(let n=1;;n++)try{return await t()}catch(r){if(!(r instanceof je&&Ip.has(r.status))||n>=Vp)throw r;await Fl(500*2**n,e)}}var oa=(t,e,n="")=>`${t}/requests/${encodeURIComponent(e)}${n}`;async function Ll(t,{input:e,abortSignal:n}){let{data:r}=await rt({service:"queue",path:t,body:await Ct.transformInput(e)??{},signal:n});return r}function El(t,{requestId:e,logs:n,abortSignal:r}){return Bl(async()=>{let{data:i}=await rt({service:"queue",path:oa(t,e,"/status"),query:{logs:n?"1":void 0},signal:r});return i},r)}function Il(t,{requestId:e,abortSignal:n}){return Bl(async()=>{let{data:r}=await rt({service:"queue",path:oa(t,e),signal:n});return{data:r,requestId:e}},n)}async function zp(t,{requestId:e,abortSignal:n}){await rt({service:"queue",path:oa(t,e,"/cancel"),method:"PUT",signal:n})}async function Vl(t,e){let n=e.pollInterval??500;for(;;){let r=await El(t,e);if(e.onQueueUpdate?.(r),r.status==="COMPLETED")return r;await Fl(n,e.abortSignal)}}var zl={submit:Ll,status:El,result:Il,cancel:zp,subscribeToStatus:Vl};async function jl(t,e){let{request_id:n}=await Ll(t,e);return e.onEnqueue?.(n),await Vl(t,{...e,requestId:n}),Il(t,{requestId:n,abortSignal:e.abortSignal})}h();async function*jp(t){let e=new TextDecoder,n="";for await(let i of t){n+=e.decode(i,{stream:!0}).replace(/\r\n?/g,`
|
|
709
709
|
`);let o=n.indexOf(`
|
|
710
710
|
|
|
711
|
-
`);for(;o!==-1;){let a=n.slice(0,o);n=n.slice(o+2);let s=
|
|
711
|
+
`);for(;o!==-1;){let a=n.slice(0,o);n=n.slice(o+2);let s=_l(a);s&&(yield s),o=n.indexOf(`
|
|
712
712
|
|
|
713
|
-
`)}}let r=
|
|
713
|
+
`)}}let r=_l(n);r&&(yield r)}function _l(t){let e="message",n=[];for(let r of t.split(`
|
|
714
714
|
`))r.startsWith("data:")?n.push(r.slice(5).replace(/^ /,"")):r.startsWith("event:")&&(e=r.slice(6).trim());return n.length?{event:e,data:n.join(`
|
|
715
|
-
`)}:null}async function*Vp(t,e){for await(let{event:n,data:r}of Ip(t)){let i=JSON.parse(r);if(n==="error")throw new je({message:"The model stream ended with an error",status:500,body:i,requestId:e});yield i}}async function jl(t,{input:e,abortSignal:n}){let r=new AbortController,i=n?AbortSignal.any([n,r.signal]):r.signal,o=await na({service:"run",path:`${t}/stream`,body:await Ct.transformInput(e)??{},accept:"text/event-stream",signal:i}),a=o.headers.get("x-framefields-request-id")??"";if(!o.body)throw new je({message:"Empty stream",status:502,requestId:a});let s=Vp(o.body,a),u,c;async function*m(){for await(let f of s)u=f,yield f}let d=m(),p=async()=>{let f=await d.next();for(;!f.done;)f=await d.next();if(u===void 0)throw new je({message:"Stream had no output",status:502,requestId:a});return u};return{requestId:a,[Symbol.asyncIterator]:()=>d,done:()=>(c??=p(),c),abort:()=>r.abort()}}async function zp(t,{input:e,abortSignal:n}){return rt({service:"run",path:t,body:await Ct.transformInput(e)??{},signal:n})}var jp={config(t){Cl(t.apiKey)},run:zp,subscribe:Vl,stream:jl,queue:Il,storage:Ct};h();function _p(t,...e){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i&&n.push({text:i}),r<e.length){let o=e[r];if(o==null)continue;if(Array.isArray(o))for(let a of o)typeof a=="string"?a&&n.push({text:a}):a&&typeof a=="object"&&"text"in a&&n.push(a);else typeof o=="object"&&"text"in o?n.push(o):typeof o=="object"&&"get"in o&&typeof o.get=="function"?n.push({text:o}):n.push({text:String(o)})}}return n}function $p(t,e={}){return{text:t,...e}}function Up(t,e={}){return{text:t,fontWeight:e.fontWeight??700,...e}}function Gp(t,e={}){return{text:t,fontStyle:"italic",...e}}function Wp(t,e={}){return{text:t,fill:e.fill??"#6366f1",...e}}function Hp(t,e,n={}){return{text:t,fill:e,...n}}function Yp(t,e,n={}){return{text:t,fontSize:e,...n}}function Xp(t,e={}){let{bg:n,fill:r,radius:i,paddingX:o,paddingY:a,...s}=e;return{text:t,fill:r,mark:{background:n??"#6366f133",borderRadius:i??4,paddingX:o??6,paddingY:a??2},...s}}function qp(t,e={}){return{text:t,baselineShift:e.baselineShift??-8,...e}}function Zp(t,e={}){return{text:t,baselineShift:e.baselineShift??6,...e}}function Kp(t,e={}){return{text:t,fontFamily:e.fontFamily??"JetBrains Mono",mark:e.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...e}}function Yr(t){if(typeof t=="string")return{text:t};if(!Array.isArray(t))return{text:String(t)};let e=[],n="";for(let r of t)if(typeof r=="string")r&&(e.push({text:r}),n+=r);else if(r&&typeof r=="object"&&"text"in r){let i=r;e.push(i);let o=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");n+=o}return{text:n,spans:e.length>0?e:void 0}}function Qp(t){if(!t||!t.includes("<"))return[{text:t}];let e=[],n=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,r=0,i=[],o=()=>{let s={};for(let u of i)Object.assign(s,u.style);return s};for(;;){let s=n.exec(t);if(!s)break;let u=t.slice(r,s.index);u&&e.push({text:u,...o()}),r=s.index+s[0].length;let c=s[1].toLowerCase(),m=s[2];if(c.startsWith("/")){let d=c.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===d){i.splice(p,1);break}}else{let d={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let b=p.exec(m);if(!b)break;d[b[1].toLowerCase()]=b[2]}let f={};if(c==="b"||c==="strong")f.fontWeight=700,(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="i"||c==="em")f.fontStyle="italic",(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="accent")f.fill="#6366f1";else if(c==="color")f.fill=d.value??d.hex??d.fill;else if(c==="size"){let b=parseFloat(d.value??d.px??d.pt??"0");b>0&&(f.fontSize=b)}else if(c==="mark")f.mark={background:d.bg??d.background??"#6366f133",borderRadius:d.radius?parseFloat(d.radius):4,paddingX:d.paddingx?parseFloat(d.paddingx):6,paddingY:d.paddingy?parseFloat(d.paddingy):2},(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="sup")f.baselineShift=-8;else if(c==="sub")f.baselineShift=6;else if(c==="code")f.fontFamily="JetBrains Mono",f.mark={background:d.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(c==="span"){if((d.color||d.fill)&&(f.fill=d.color??d.fill),d.fontfamily&&(f.fontFamily=d.fontfamily),d.fontsize&&(f.fontSize=parseFloat(d.fontsize)),d.fontweight){let b=parseInt(d.fontweight,10);f.fontWeight=Number.isNaN(b)?d.fontweight:b}(d.fontstyle==="italic"||d.fontstyle==="normal")&&(f.fontStyle=d.fontstyle),d.letterspacing&&(f.letterSpacing=parseFloat(d.letterspacing)),d.baselineshift&&(f.baselineShift=parseFloat(d.baselineshift)),d.opacity&&(f.opacity=parseFloat(d.opacity))}i.push({tag:c,style:f})}}let a=t.slice(r);return a&&e.push({text:a,...o()}),e}h();h();h();h();h();h();function _l(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function At(t,e){if(!isFinite(t)||t===0)return null;var n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function He(t){return t=At(Math.abs(t)),t?t[1]:NaN}h();function $l(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),o.push(n.substring(i-=s,i+s)),!((u+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}h();function Ul(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}h();var Jp=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=Jp.exec(t)))throw new Error("invalid format: "+t);var e;return new Xr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}ft.prototype=Xr.prototype;function Xr(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Xr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};h();function Gl(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}h();h();var Yn;function Wl(t,e){var n=At(t,e);if(!n)return Yn=void 0,t.toPrecision(e);var r=n[0],i=n[1],o=i-(Yn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+At(t,Math.max(0,e+o-1))[0]}h();function aa(t,e){var n=At(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var sa={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:_l,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>aa(t*100,e),r:aa,s:Wl,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};h();function ua(t){return t}var Hl=Array.prototype.map,Yl=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Xl(t){var e=t.grouping===void 0||t.thousands===void 0?ua:$l(Hl.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?ua:Ul(Hl.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(d,p){d=ft(d);var f=d.fill,b=d.align,g=d.sign,y=d.symbol,k=d.zero,S=d.width,P=d.comma,w=d.precision,A=d.trim,v=d.type;v==="n"?(P=!0,v="g"):sa[v]||(w===void 0&&(w=12),A=!0,v="g"),(k||f==="0"&&b==="=")&&(k=!0,f="0",b="=");var O=(p&&p.prefix!==void 0?p.prefix:"")+(y==="$"?n:y==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),C=(y==="$"?r:/[%p]/.test(v)?a:"")+(p&&p.suffix!==void 0?p.suffix:""),B=sa[v],_=/[defgprs%]/.test(v);w=w===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function z(F){var T=O,M=C,H,Y,$;if(v==="c")M=B(F)+M,F="";else{F=+F;var V=F<0||1/F<0;if(F=isNaN(F)?u:B(Math.abs(F),w),A&&(F=Gl(F)),V&&+F==0&&g!=="+"&&(V=!1),T=(V?g==="("?g:s:g==="-"||g==="("?"":g)+T,M=(v==="s"&&!isNaN(F)&&Yn!==void 0?Yl[8+Yn/3]:"")+M+(V&&g==="("?")":""),_){for(H=-1,Y=F.length;++H<Y;)if($=F.charCodeAt(H),48>$||$>57){M=($===46?i+F.slice(H+1):F.slice(H))+M,F=F.slice(0,H);break}}}P&&!k&&(F=e(F,1/0));var ee=T.length+F.length+M.length,oe=ee<S?new Array(S-ee+1).join(f):"";switch(P&&k&&(F=e(oe+F,oe.length?S-M.length:1/0),oe=""),b){case"<":F=T+F+M+oe;break;case"=":F=T+oe+F+M;break;case"^":F=oe.slice(0,ee=oe.length>>1)+T+F+M+oe.slice(ee);break;default:F=oe+T+F+M;break}return o(F)}return z.toString=function(){return d+""},z}function m(d,p){var f=Math.max(-8,Math.min(8,Math.floor(He(p)/3)))*3,b=Math.pow(10,-f),g=c((d=ft(d),d.type="f",d),{suffix:Yl[8+f/3]});return function(y){return g(b*y)}}return{format:c,formatPrefix:m}}var qr,en,Zr;la({thousands:",",grouping:[3],currency:["$",""]});function la(t){return qr=Xl(t),en=qr.format,Zr=qr.formatPrefix,qr}h();function ca(t){return Math.max(0,-He(Math.abs(t)))}h();function da(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(He(e)/3)))*3-He(Math.abs(t)))}h();function ma(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,He(e)-He(t))+1}h();h();h();h();h();function Dt(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}h();h();function pa(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Nt(t){let e,n,r;t.length!==2?(e=Dt,n=(s,u)=>Dt(t(s),u),r=(s,u)=>t(s)-u):(e=t===Dt||t===pa?t:ef,n=t,r=t);function i(s,u,c=0,m=s.length){if(c<m){if(e(u,u)!==0)return m;do{let d=c+m>>>1;n(s[d],u)<0?c=d+1:m=d}while(c<m)}return c}function o(s,u,c=0,m=s.length){if(c<m){if(e(u,u)!==0)return m;do{let d=c+m>>>1;n(s[d],u)<=0?c=d+1:m=d}while(c<m)}return c}function a(s,u,c=0,m=s.length){let d=i(s,u,c,m-1);return d>c&&r(s[d-1],u)>-r(s[d],u)?d-1:d}return{left:i,center:a,right:o}}function ef(){return 0}h();function fa(t){return t===null?NaN:+t}var ql=Nt(Dt),Zl=ql.right,tf=ql.left,nf=Nt(fa).center,ha=Zl;h();var tn=class extends Map{constructor(e,n=af){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(let[r,i]of e)this.set(r,i)}get(e){return super.get(Kl(this,e))}has(e){return super.has(Kl(this,e))}set(e,n){return super.set(rf(this,e),n)}delete(e){return super.delete(of(this,e))}};function Kl({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):n}function rf({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function of({_intern:t,_key:e},n){let r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function af(t){return t!==null&&typeof t=="object"?t.valueOf():t}h();var sf=Math.sqrt(50),uf=Math.sqrt(10),lf=Math.sqrt(2);function Kr(t,e,n){let r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=sf?10:o>=uf?5:o>=lf?2:1,s,u,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(t*c),u=Math.round(e*c),s/c<t&&++s,u/c>e&&--u,c=-c):(c=Math.pow(10,i)*a,s=Math.round(t/c),u=Math.round(e/c),s*c<t&&++s,u*c>e&&--u),u<s&&.5<=n&&n<2?Kr(t,e,n*2):[s,u,c]}function Qr(t,e,n){if(e=+e,t=+t,n=+n,!(n>0))return[];if(t===e)return[t];let r=e<t,[i,o,a]=r?Kr(e,t,n):Kr(t,e,n);if(!(o>=i))return[];let s=o-i+1,u=new Array(s);if(r)if(a<0)for(let c=0;c<s;++c)u[c]=(o-c)/-a;else for(let c=0;c<s;++c)u[c]=(o-c)*a;else if(a<0)for(let c=0;c<s;++c)u[c]=(i+c)/-a;else for(let c=0;c<s;++c)u[c]=(i+c)*a;return u}function Xn(t,e,n){return e=+e,t=+t,n=+n,Kr(t,e,n)[2]}function nn(t,e,n){e=+e,t=+t,n=+n;let r=e<t,i=r?Xn(e,t,n):Xn(t,e,n);return(r?-1:1)*(i<0?1/-i:i)}h();function Jr(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}h();function ht(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}h();var Ql=Symbol("implicit");function ei(){var t=new tn,e=[],n=[],r=Ql;function i(o){let a=t.get(o);if(a===void 0){if(r!==Ql)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new tn;for(let a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return ei(e,n).unknown(r)},ht.apply(i,arguments),i}function qn(){var t=ei().unknown(void 0),e=t.domain,n=t.range,r=0,i=1,o,a,s=!1,u=0,c=0,m=.5;delete t.unknown;function d(){var p=e().length,f=i<r,b=f?i:r,g=f?r:i;o=(g-b)/Math.max(1,p-u+c*2),s&&(o=Math.floor(o)),b+=(g-b-o*(p-u))*m,a=o*(1-u),s&&(b=Math.round(b),a=Math.round(a));var y=Jr(p).map(function(k){return b+o*k});return n(f?y.reverse():y)}return t.domain=function(p){return arguments.length?(e(p),d()):e()},t.range=function(p){return arguments.length?([r,i]=p,r=+r,i=+i,d()):[r,i]},t.rangeRound=function(p){return[r,i]=p,r=+r,i=+i,s=!0,d()},t.bandwidth=function(){return a},t.step=function(){return o},t.round=function(p){return arguments.length?(s=!!p,d()):s},t.padding=function(p){return arguments.length?(u=Math.min(1,c=+p),d()):u},t.paddingInner=function(p){return arguments.length?(u=Math.min(1,p),d()):u},t.paddingOuter=function(p){return arguments.length?(c=+p,d()):c},t.align=function(p){return arguments.length?(m=Math.max(0,Math.min(1,p)),d()):m},t.copy=function(){return qn(e(),[r,i]).round(s).paddingInner(u).paddingOuter(c).align(m)},ht.apply(d(),arguments)}h();h();h();h();h();h();h();function ti(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ga(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Qn(){}var Zn=.7,ii=1/Zn,rn="\\s*([+-]?\\d+)\\s*",Kn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ye="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",cf=/^#([0-9a-f]{3,8})$/,df=new RegExp(`^rgb\\(${rn},${rn},${rn}\\)$`),mf=new RegExp(`^rgb\\(${Ye},${Ye},${Ye}\\)$`),pf=new RegExp(`^rgba\\(${rn},${rn},${rn},${Kn}\\)$`),ff=new RegExp(`^rgba\\(${Ye},${Ye},${Ye},${Kn}\\)$`),hf=new RegExp(`^hsl\\(${Kn},${Ye},${Ye}\\)$`),gf=new RegExp(`^hsla\\(${Kn},${Ye},${Ye},${Kn}\\)$`),Jl={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ti(Qn,gt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:ec,formatHex:ec,formatHex8:bf,formatHsl:yf,formatRgb:tc,toString:tc});function ec(){return this.rgb().formatHex()}function bf(){return this.rgb().formatHex8()}function yf(){return sc(this).formatHsl()}function tc(){return this.rgb().formatRgb()}function gt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=cf.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?nc(e):n===3?new Ee(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ni(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ni(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=df.exec(t))?new Ee(e[1],e[2],e[3],1):(e=mf.exec(t))?new Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=pf.exec(t))?ni(e[1],e[2],e[3],e[4]):(e=ff.exec(t))?ni(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=hf.exec(t))?oc(e[1],e[2]/100,e[3]/100,1):(e=gf.exec(t))?oc(e[1],e[2]/100,e[3]/100,e[4]):Jl.hasOwnProperty(t)?nc(Jl[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function nc(t){return new Ee(t>>16&255,t>>8&255,t&255,1)}function ni(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ee(t,e,n,r)}function xf(t){return t instanceof Qn||(t=gt(t)),t?(t=t.rgb(),new Ee(t.r,t.g,t.b,t.opacity)):new Ee}function on(t,e,n,r){return arguments.length===1?xf(t):new Ee(t,e,n,r??1)}function Ee(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}ti(Ee,on,ga(Qn,{brighter(t){return t=t==null?ii:Math.pow(ii,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Zn:Math.pow(Zn,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ee(Rt(this.r),Rt(this.g),Rt(this.b),oi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:rc,formatHex:rc,formatHex8:wf,formatRgb:ic,toString:ic}));function rc(){return`#${Ot(this.r)}${Ot(this.g)}${Ot(this.b)}`}function wf(){return`#${Ot(this.r)}${Ot(this.g)}${Ot(this.b)}${Ot((isNaN(this.opacity)?1:this.opacity)*255)}`}function ic(){let t=oi(this.opacity);return`${t===1?"rgb(":"rgba("}${Rt(this.r)}, ${Rt(this.g)}, ${Rt(this.b)}${t===1?")":`, ${t})`}`}function oi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Rt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ot(t){return t=Rt(t),(t<16?"0":"")+t.toString(16)}function oc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new _e(t,e,n,r)}function sc(t){if(t instanceof _e)return new _e(t.h,t.s,t.l,t.opacity);if(t instanceof Qn||(t=gt(t)),!t)return new _e;if(t instanceof _e)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,u=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new _e(a,s,u,t.opacity)}function uc(t,e,n,r){return arguments.length===1?sc(t):new _e(t,e,n,r??1)}function _e(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}ti(_e,uc,ga(Qn,{brighter(t){return t=t==null?ii:Math.pow(ii,t),new _e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Zn:Math.pow(Zn,t),new _e(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ee(ba(t>=240?t-240:t+120,i,r),ba(t,i,r),ba(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new _e(ac(this.h),ri(this.s),ri(this.l),oi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=oi(this.opacity);return`${t===1?"hsl(":"hsla("}${ac(this.h)}, ${ri(this.s)*100}%, ${ri(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ac(t){return t=(t||0)%360,t<0?t+360:t}function ri(t){return Math.max(0,Math.min(1,t||0))}function ba(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}h();h();function ya(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function lc(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return ya((n-r/e)*e,a,i,o,s)}}h();function cc(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return ya((n-r/e)*e,i,o,a,s)}}h();h();var Jn=t=>()=>t;function vf(t,e){return function(n){return t+n*e}}function Sf(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function dc(t){return(t=+t)==1?ai:function(e,n){return n-e?Sf(e,n,t):Jn(isNaN(e)?n:e)}}function ai(t,e){var n=e-t;return n?vf(t,n):Jn(isNaN(t)?e:t)}var xa=(function t(e){var n=dc(e);function r(i,o){var a=n((i=on(i)).r,(o=on(o)).r),s=n(i.g,o.g),u=n(i.b,o.b),c=ai(i.opacity,o.opacity);return function(m){return i.r=a(m),i.g=s(m),i.b=u(m),i.opacity=c(m),i+""}}return r.gamma=t,r})(1);function mc(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=on(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(u){return s.r=r(u),s.g=i(u),s.b=o(u),s+""}}}var Y1=mc(lc),X1=mc(cc);h();h();function pc(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function fc(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function hc(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=Ft(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}h();function gc(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}h();function bt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}h();function bc(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=Ft(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}h();var va=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wa=new RegExp(va.source,"g");function kf(t){return function(){return t}}function Pf(t){return function(e){return t(e)+""}}function yc(t,e){var n=va.lastIndex=wa.lastIndex=0,r,i,o,a=-1,s=[],u=[];for(t=t+"",e=e+"";(r=va.exec(t))&&(i=wa.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,u.push({i:a,x:bt(r,i)})),n=wa.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?u[0]?Pf(u[0].x):kf(e):(e=u.length,function(c){for(var m=0,d;m<e;++m)s[(d=u[m]).i]=d.x(c);return s.join("")})}function Ft(t,e){var n=typeof e,r;return e==null||n==="boolean"?Jn(e):(n==="number"?bt:n==="string"?(r=gt(e))?(e=r,xa):yc:e instanceof gt?xa:e instanceof Date?gc:fc(e)?pc:Array.isArray(e)?hc:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?bc:bt)(t,e)}h();function Sa(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}h();function ka(t){return function(){return t}}h();function Pa(t){return+t}var xc=[0,1];function an(t){return t}function Ma(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:ka(isNaN(e)?NaN:.5)}function Mf(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Tf(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Ma(i,r),o=n(a,o)):(r=Ma(r,i),o=n(o,a)),function(s){return o(r(s))}}function Cf(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Ma(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var u=ha(t,s,1,r)-1;return o[u](i[u](s))}}function si(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Af(){var t=xc,e=xc,n=Ft,r,i,o,a=an,s,u,c;function m(){var p=Math.min(t.length,e.length);return a!==an&&(a=Mf(t[0],t[p-1])),s=p>2?Cf:Tf,u=c=null,d}function d(p){return p==null||isNaN(p=+p)?o:(u||(u=s(t.map(r),e,n)))(r(a(p)))}return d.invert=function(p){return a(i((c||(c=s(e,t.map(r),bt)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,Pa),m()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),m()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),n=Sa,m()},d.clamp=function(p){return arguments.length?(a=p?!0:an,m()):a!==an},d.interpolate=function(p){return arguments.length?(n=p,m()):n},d.unknown=function(p){return arguments.length?(o=p,d):o},function(p,f){return r=p,i=f,m()}}function er(){return Af()(an,an)}h();function Ta(t,e,n,r){var i=nn(t,e,n),o;switch(r=ft(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=da(i,a))&&(r.precision=o),Zr(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=ma(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ca(i))&&(r.precision=o-(r.type==="%")*2);break}}return en(r)}function Df(t){var e=t.domain;return t.ticks=function(n){var r=e();return Qr(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Ta(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],u,c,m=10;for(s<a&&(c=a,a=s,s=c,c=i,i=o,o=c);m-- >0;){if(c=Xn(a,s,n),c===u)return r[i]=a,r[o]=s,e(r);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;u=c}return t},t}function sn(){var t=er();return t.copy=function(){return si(t,sn())},ht.apply(t,arguments),Df(t)}h();function Ca(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}h();h();h();var Aa=new Date,Da=new Date;function me(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(t(o=new Date(+o)),o),i.ceil=o=>(t(o=new Date(o-1)),e(o,1),t(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=(o,a)=>(e(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let u=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return u;let c;do u.push(c=new Date(+o)),e(o,s),t(o);while(c<o&&o<a);return u},i.filter=o=>me(a=>{if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););}),n&&(i.count=(o,a)=>(Aa.setTime(+o),Da.setTime(+a),t(Aa),t(Da),Math.floor(n(Aa,Da))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?a=>r(a)%o===0:a=>i.count(0,a)%o===0):i)),i}h();var tr=me(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);tr.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):tr);var tk=tr.range;h();var Xe=me(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),wc=Xe.range;h();var ui=me(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Nf=ui.range,un=me(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Of=un.range;h();var li=me(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),Rf=li.range,ln=me(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),Ff=ln.range;h();var Et=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),Bf=Et.range,It=me(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),Lf=It.range,ci=me(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),Ef=ci.range;h();function Vt(t){return me(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var zt=Vt(0),cn=Vt(1),Sc=Vt(2),kc=Vt(3),yt=Vt(4),Pc=Vt(5),Mc=Vt(6),Tc=zt.range,If=cn.range,Vf=Sc.range,zf=kc.range,jf=yt.range,_f=Pc.range,$f=Mc.range;function jt(t){return me(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/6048e5)}var it=jt(0),dn=jt(1),Cc=jt(2),Ac=jt(3),xt=jt(4),Dc=jt(5),Nc=jt(6),Oc=it.range,Uf=dn.range,Gf=Cc.range,Wf=Ac.range,Hf=xt.range,Yf=Dc.range,Xf=Nc.range;h();var di=me(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),qf=di.range,mn=me(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Zf=mn.range;h();var $e=me(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());$e.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:me(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});var Kf=$e.range,Ve=me(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Ve.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:me(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});var Qf=Ve.range;h();function Fc(t,e,n,r,i,o){let a=[[Xe,1,1e3],[Xe,5,5*1e3],[Xe,15,15*1e3],[Xe,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[r,1,864e5],[r,2,2*864e5],[n,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function s(c,m,d){let p=m<c;p&&([c,m]=[m,c]);let f=d&&typeof d.range=="function"?d:u(c,m,d),b=f?f.range(c,+m+1):[];return p?b.reverse():b}function u(c,m,d){let p=Math.abs(m-c)/d,f=Nt(([,,y])=>y).right(a,p);if(f===a.length)return t.every(nn(c/31536e6,m/31536e6,d));if(f===0)return tr.every(Math.max(nn(c,m,d),1));let[b,g]=a[p/a[f-1][2]<a[f][2]/p?f-1:f];return b.every(g)}return[s,u]}var[Na,Oa]=Fc(Ve,mn,it,ci,ln,un),[eh,th]=Fc($e,di,zt,Et,li,ui);h();h();h();function Ra(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fa(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function rr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Ba(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,u=t.shortMonths,c=ir(i),m=or(i),d=ir(o),p=or(o),f=ir(a),b=or(a),g=ir(s),y=or(s),k=ir(u),S=or(u),P={a:$,A:V,b:ee,B:oe,c:null,d:zc,e:zc,f:Ph,g:Bh,G:Eh,H:vh,I:Sh,j:kh,L:Gc,m:Mh,M:Th,p:ge,q:le,Q:$c,s:Uc,S:Ch,u:Ah,U:Dh,V:Nh,w:Oh,W:Rh,x:null,X:null,y:Fh,Y:Lh,Z:Ih,"%":_c},w={a:E,A:j,b:W,B:K,c:null,d:jc,e:jc,f:_h,g:Kh,G:Jh,H:Vh,I:zh,j:jh,L:Hc,m:$h,M:Uh,p:X,q:te,Q:$c,s:Uc,S:Gh,u:Wh,U:Hh,V:Yh,w:Xh,W:qh,x:null,X:null,y:Zh,Y:Qh,Z:eg,"%":_c},A={a:_,A:z,b:F,B:T,c:M,d:Ic,e:Ic,f:bh,g:Ec,G:Lc,H:Vc,I:Vc,j:ph,L:gh,m:mh,M:fh,p:B,q:dh,Q:xh,s:wh,S:hh,u:ah,U:sh,V:uh,w:oh,W:lh,x:H,X:Y,y:Ec,Y:Lc,Z:ch,"%":yh};P.x=v(n,P),P.X=v(r,P),P.c=v(e,P),w.x=v(n,w),w.X=v(r,w),w.c=v(e,w);function v(R,I){return function(q){var N=[],Se=-1,ce=0,Ae=R.length,De,Ke,br;for(q instanceof Date||(q=new Date(+q));++Se<Ae;)R.charCodeAt(Se)===37&&(N.push(R.slice(ce,Se)),(Ke=Bc[De=R.charAt(++Se)])!=null?De=R.charAt(++Se):Ke=De==="e"?" ":"0",(br=I[De])&&(De=br(q,Ke)),N.push(De),ce=Se+1);return N.push(R.slice(ce,Se)),N.join("")}}function O(R,I){return function(q){var N=rr(1900,void 0,1),Se=C(N,R,q+="",0),ce,Ae;if(Se!=q.length)return null;if("Q"in N)return new Date(N.Q);if("s"in N)return new Date(N.s*1e3+("L"in N?N.L:0));if(I&&!("Z"in N)&&(N.Z=0),"p"in N&&(N.H=N.H%12+N.p*12),N.m===void 0&&(N.m="q"in N?N.q:0),"V"in N){if(N.V<1||N.V>53)return null;"w"in N||(N.w=1),"Z"in N?(ce=Fa(rr(N.y,0,1)),Ae=ce.getUTCDay(),ce=Ae>4||Ae===0?dn.ceil(ce):dn(ce),ce=It.offset(ce,(N.V-1)*7),N.y=ce.getUTCFullYear(),N.m=ce.getUTCMonth(),N.d=ce.getUTCDate()+(N.w+6)%7):(ce=Ra(rr(N.y,0,1)),Ae=ce.getDay(),ce=Ae>4||Ae===0?cn.ceil(ce):cn(ce),ce=Et.offset(ce,(N.V-1)*7),N.y=ce.getFullYear(),N.m=ce.getMonth(),N.d=ce.getDate()+(N.w+6)%7)}else("W"in N||"U"in N)&&("w"in N||(N.w="u"in N?N.u%7:"W"in N?1:0),Ae="Z"in N?Fa(rr(N.y,0,1)).getUTCDay():Ra(rr(N.y,0,1)).getDay(),N.m=0,N.d="W"in N?(N.w+6)%7+N.W*7-(Ae+5)%7:N.w+N.U*7-(Ae+6)%7);return"Z"in N?(N.H+=N.Z/100|0,N.M+=N.Z%100,Fa(N)):Ra(N)}}function C(R,I,q,N){for(var Se=0,ce=I.length,Ae=q.length,De,Ke;Se<ce;){if(N>=Ae)return-1;if(De=I.charCodeAt(Se++),De===37){if(De=I.charAt(Se++),Ke=A[De in Bc?I.charAt(Se++):De],!Ke||(N=Ke(R,q,N))<0)return-1}else if(De!=q.charCodeAt(N++))return-1}return N}function B(R,I,q){var N=c.exec(I.slice(q));return N?(R.p=m.get(N[0].toLowerCase()),q+N[0].length):-1}function _(R,I,q){var N=f.exec(I.slice(q));return N?(R.w=b.get(N[0].toLowerCase()),q+N[0].length):-1}function z(R,I,q){var N=d.exec(I.slice(q));return N?(R.w=p.get(N[0].toLowerCase()),q+N[0].length):-1}function F(R,I,q){var N=k.exec(I.slice(q));return N?(R.m=S.get(N[0].toLowerCase()),q+N[0].length):-1}function T(R,I,q){var N=g.exec(I.slice(q));return N?(R.m=y.get(N[0].toLowerCase()),q+N[0].length):-1}function M(R,I,q){return C(R,e,I,q)}function H(R,I,q){return C(R,n,I,q)}function Y(R,I,q){return C(R,r,I,q)}function $(R){return a[R.getDay()]}function V(R){return o[R.getDay()]}function ee(R){return u[R.getMonth()]}function oe(R){return s[R.getMonth()]}function ge(R){return i[+(R.getHours()>=12)]}function le(R){return 1+~~(R.getMonth()/3)}function E(R){return a[R.getUTCDay()]}function j(R){return o[R.getUTCDay()]}function W(R){return u[R.getUTCMonth()]}function K(R){return s[R.getUTCMonth()]}function X(R){return i[+(R.getUTCHours()>=12)]}function te(R){return 1+~~(R.getUTCMonth()/3)}return{format:function(R){var I=v(R+="",P);return I.toString=function(){return R},I},parse:function(R){var I=O(R+="",!1);return I.toString=function(){return R},I},utcFormat:function(R){var I=v(R+="",w);return I.toString=function(){return R},I},utcParse:function(R){var I=O(R+="",!0);return I.toString=function(){return R},I}}}var Bc={"-":"",_:" ",0:"0"},Pe=/^\s*\d+/,nh=/^%/,rh=/[\\^$*+?|[\]().{}]/g;function se(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function ih(t){return t.replace(rh,"\\$&")}function ir(t){return new RegExp("^(?:"+t.map(ih).join("|")+")","i")}function or(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function oh(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function ah(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function sh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function uh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function lh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Lc(t,e,n){var r=Pe.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ec(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function ch(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function dh(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function mh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ic(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function ph(t,e,n){var r=Pe.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Vc(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function fh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function hh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function gh(t,e,n){var r=Pe.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function bh(t,e,n){var r=Pe.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function yh(t,e,n){var r=nh.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function xh(t,e,n){var r=Pe.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function wh(t,e,n){var r=Pe.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zc(t,e){return se(t.getDate(),e,2)}function vh(t,e){return se(t.getHours(),e,2)}function Sh(t,e){return se(t.getHours()%12||12,e,2)}function kh(t,e){return se(1+Et.count($e(t),t),e,3)}function Gc(t,e){return se(t.getMilliseconds(),e,3)}function Ph(t,e){return Gc(t,e)+"000"}function Mh(t,e){return se(t.getMonth()+1,e,2)}function Th(t,e){return se(t.getMinutes(),e,2)}function Ch(t,e){return se(t.getSeconds(),e,2)}function Ah(t){var e=t.getDay();return e===0?7:e}function Dh(t,e){return se(zt.count($e(t)-1,t),e,2)}function Wc(t){var e=t.getDay();return e>=4||e===0?yt(t):yt.ceil(t)}function Nh(t,e){return t=Wc(t),se(yt.count($e(t),t)+($e(t).getDay()===4),e,2)}function Oh(t){return t.getDay()}function Rh(t,e){return se(cn.count($e(t)-1,t),e,2)}function Fh(t,e){return se(t.getFullYear()%100,e,2)}function Bh(t,e){return t=Wc(t),se(t.getFullYear()%100,e,2)}function Lh(t,e){return se(t.getFullYear()%1e4,e,4)}function Eh(t,e){var n=t.getDay();return t=n>=4||n===0?yt(t):yt.ceil(t),se(t.getFullYear()%1e4,e,4)}function Ih(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+se(e/60|0,"0",2)+se(e%60,"0",2)}function jc(t,e){return se(t.getUTCDate(),e,2)}function Vh(t,e){return se(t.getUTCHours(),e,2)}function zh(t,e){return se(t.getUTCHours()%12||12,e,2)}function jh(t,e){return se(1+It.count(Ve(t),t),e,3)}function Hc(t,e){return se(t.getUTCMilliseconds(),e,3)}function _h(t,e){return Hc(t,e)+"000"}function $h(t,e){return se(t.getUTCMonth()+1,e,2)}function Uh(t,e){return se(t.getUTCMinutes(),e,2)}function Gh(t,e){return se(t.getUTCSeconds(),e,2)}function Wh(t){var e=t.getUTCDay();return e===0?7:e}function Hh(t,e){return se(it.count(Ve(t)-1,t),e,2)}function Yc(t){var e=t.getUTCDay();return e>=4||e===0?xt(t):xt.ceil(t)}function Yh(t,e){return t=Yc(t),se(xt.count(Ve(t),t)+(Ve(t).getUTCDay()===4),e,2)}function Xh(t){return t.getUTCDay()}function qh(t,e){return se(dn.count(Ve(t)-1,t),e,2)}function Zh(t,e){return se(t.getUTCFullYear()%100,e,2)}function Kh(t,e){return t=Yc(t),se(t.getUTCFullYear()%100,e,2)}function Qh(t,e){return se(t.getUTCFullYear()%1e4,e,4)}function Jh(t,e){var n=t.getUTCDay();return t=n>=4||n===0?xt(t):xt.ceil(t),se(t.getUTCFullYear()%1e4,e,4)}function eg(){return"+0000"}function _c(){return"%"}function $c(t){return+t}function Uc(t){return Math.floor(+t/1e3)}var pn,Xc,qc,mi,Zc;La({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function La(t){return pn=Ba(t),Xc=pn.format,qc=pn.parse,mi=pn.utcFormat,Zc=pn.utcParse,pn}function tg(t){return new Date(t)}function ng(t){return t instanceof Date?+t:+new Date(+t)}function Ea(t,e,n,r,i,o,a,s,u,c){var m=er(),d=m.invert,p=m.domain,f=c(".%L"),b=c(":%S"),g=c("%I:%M"),y=c("%I %p"),k=c("%a %d"),S=c("%b %d"),P=c("%B"),w=c("%Y");function A(v){return(u(v)<v?f:s(v)<v?b:a(v)<v?g:o(v)<v?y:r(v)<v?i(v)<v?k:S:n(v)<v?P:w)(v)}return m.invert=function(v){return new Date(d(v))},m.domain=function(v){return arguments.length?p(Array.from(v,ng)):p().map(tg)},m.ticks=function(v){var O=p();return t(O[0],O[O.length-1],v??10)},m.tickFormat=function(v,O){return O==null?A:c(O)},m.nice=function(v){var O=p();return(!v||typeof v.range!="function")&&(v=e(O[0],O[O.length-1],v??10)),v?p(Ca(O,v)):m},m.copy=function(){return si(m,Ea(t,e,n,r,i,o,a,s,u,c))},m}h();function pi(){return ht.apply(Ea(Na,Oa,Ve,mn,it,It,ln,un,Xe,mi).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}h();h();h();function J(t){return function(){return t}}h();var Ia=Math.abs,Ce=Math.atan2,wt=Math.cos,Kc=Math.max,fi=Math.min,Ue=Math.sin,_t=Math.sqrt,Le=1e-12,fn=Math.PI,ar=fn/2,hn=2*fn;function Qc(t){return t>1?0:t<-1?fn:Math.acos(t)}function Va(t){return t>=1?ar:t<=-1?-ar:Math.asin(t)}h();h();h();var za=Math.PI,ja=2*za,$t=1e-6,rg=ja-$t;function Jc(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}function ig(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Jc;let n=10**e;return function(r){this._+=r[0];for(let i=1,o=r.length;i<o;++i)this._+=Math.round(arguments[i]*n)/n+r[i]}}var Ut=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?Jc:ig(e)}moveTo(e,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,n){this._append`L${this._x1=+e},${this._y1=+n}`}quadraticCurveTo(e,n,r,i){this._append`Q${+e},${+n},${this._x1=+r},${this._y1=+i}`}bezierCurveTo(e,n,r,i,o,a){this._append`C${+e},${+n},${+r},${+i},${this._x1=+o},${this._y1=+a}`}arcTo(e,n,r,i,o){if(e=+e,n=+n,r=+r,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let a=this._x1,s=this._y1,u=r-e,c=i-n,m=a-e,d=s-n,p=m*m+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=n}`;else if(p>$t)if(!(Math.abs(d*u-c*m)>$t)||!o)this._append`L${this._x1=e},${this._y1=n}`;else{let f=r-a,b=i-s,g=u*u+c*c,y=f*f+b*b,k=Math.sqrt(g),S=Math.sqrt(p),P=o*Math.tan((za-Math.acos((g+p-y)/(2*k*S)))/2),w=P/S,A=P/k;Math.abs(w-1)>$t&&this._append`L${e+w*m},${n+w*d}`,this._append`A${o},${o},0,0,${+(d*f>m*b)},${this._x1=e+A*u},${this._y1=n+A*c}`}}arc(e,n,r,i,o,a){if(e=+e,n=+n,r=+r,a=!!a,r<0)throw new Error(`negative radius: ${r}`);let s=r*Math.cos(i),u=r*Math.sin(i),c=e+s,m=n+u,d=1^a,p=a?i-o:o-i;this._x1===null?this._append`M${c},${m}`:(Math.abs(this._x1-c)>$t||Math.abs(this._y1-m)>$t)&&this._append`L${c},${m}`,r&&(p<0&&(p=p%ja+ja),p>rg?this._append`A${r},${r},0,1,${d},${e-s},${n-u}A${r},${r},0,1,${d},${this._x1=c},${this._y1=m}`:p>$t&&this._append`A${r},${r},0,${+(p>=za)},${d},${this._x1=e+r*Math.cos(o)},${this._y1=n+r*Math.sin(o)}`)}rect(e,n,r,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}};function ed(){return new Ut}ed.prototype=Ut.prototype;function gn(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{let r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);e=r}return t},()=>new Ut(e)}function og(t){return t.innerRadius}function ag(t){return t.outerRadius}function sg(t){return t.startAngle}function ug(t){return t.endAngle}function lg(t){return t&&t.padAngle}function cg(t,e,n,r,i,o,a,s){var u=n-t,c=r-e,m=a-i,d=s-o,p=d*u-m*c;if(!(p*p<Le))return p=(m*(e-o)-d*(t-i))/p,[t+p*u,e+p*c]}function hi(t,e,n,r,i,o,a){var s=t-n,u=e-r,c=(a?o:-o)/_t(s*s+u*u),m=c*u,d=-c*s,p=t+m,f=e+d,b=n+m,g=r+d,y=(p+b)/2,k=(f+g)/2,S=b-p,P=g-f,w=S*S+P*P,A=i-o,v=p*g-b*f,O=(P<0?-1:1)*_t(Kc(0,A*A*w-v*v)),C=(v*P-S*O)/w,B=(-v*S-P*O)/w,_=(v*P+S*O)/w,z=(-v*S+P*O)/w,F=C-y,T=B-k,M=_-y,H=z-k;return F*F+T*T>M*M+H*H&&(C=_,B=z),{cx:C,cy:B,x01:-m,y01:-d,x11:C*(i/A-1),y11:B*(i/A-1)}}function gi(){var t=og,e=ag,n=J(0),r=null,i=sg,o=ug,a=lg,s=null,u=gn(c);function c(){var m,d,p=+t.apply(this,arguments),f=+e.apply(this,arguments),b=i.apply(this,arguments)-ar,g=o.apply(this,arguments)-ar,y=Ia(g-b),k=g>b;if(s||(s=m=u()),f<p&&(d=f,f=p,p=d),!(f>Le))s.moveTo(0,0);else if(y>hn-Le)s.moveTo(f*wt(b),f*Ue(b)),s.arc(0,0,f,b,g,!k),p>Le&&(s.moveTo(p*wt(g),p*Ue(g)),s.arc(0,0,p,g,b,k));else{var S=b,P=g,w=b,A=g,v=y,O=y,C=a.apply(this,arguments)/2,B=C>Le&&(r?+r.apply(this,arguments):_t(p*p+f*f)),_=fi(Ia(f-p)/2,+n.apply(this,arguments)),z=_,F=_,T,M;if(B>Le){var H=Va(B/p*Ue(C)),Y=Va(B/f*Ue(C));(v-=H*2)>Le?(H*=k?1:-1,w+=H,A-=H):(v=0,w=A=(b+g)/2),(O-=Y*2)>Le?(Y*=k?1:-1,S+=Y,P-=Y):(O=0,S=P=(b+g)/2)}var $=f*wt(S),V=f*Ue(S),ee=p*wt(A),oe=p*Ue(A);if(_>Le){var ge=f*wt(P),le=f*Ue(P),E=p*wt(w),j=p*Ue(w),W;if(y<fn)if(W=cg($,V,E,j,ge,le,ee,oe)){var K=$-W[0],X=V-W[1],te=ge-W[0],R=le-W[1],I=1/Ue(Qc((K*te+X*R)/(_t(K*K+X*X)*_t(te*te+R*R)))/2),q=_t(W[0]*W[0]+W[1]*W[1]);z=fi(_,(p-q)/(I-1)),F=fi(_,(f-q)/(I+1))}else z=F=0}O>Le?F>Le?(T=hi(E,j,$,V,f,F,k),M=hi(ge,le,ee,oe,f,F,k),s.moveTo(T.cx+T.x01,T.cy+T.y01),F<_?s.arc(T.cx,T.cy,F,Ce(T.y01,T.x01),Ce(M.y01,M.x01),!k):(s.arc(T.cx,T.cy,F,Ce(T.y01,T.x01),Ce(T.y11,T.x11),!k),s.arc(0,0,f,Ce(T.cy+T.y11,T.cx+T.x11),Ce(M.cy+M.y11,M.cx+M.x11),!k),s.arc(M.cx,M.cy,F,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):(s.moveTo($,V),s.arc(0,0,f,S,P,!k)):s.moveTo($,V),!(p>Le)||!(v>Le)?s.lineTo(ee,oe):z>Le?(T=hi(ee,oe,ge,le,p,-z,k),M=hi($,V,E,j,p,-z,k),s.lineTo(T.cx+T.x01,T.cy+T.y01),z<_?s.arc(T.cx,T.cy,z,Ce(T.y01,T.x01),Ce(M.y01,M.x01),!k):(s.arc(T.cx,T.cy,z,Ce(T.y01,T.x01),Ce(T.y11,T.x11),!k),s.arc(0,0,p,Ce(T.cy+T.y11,T.cx+T.x11),Ce(M.cy+M.y11,M.cx+M.x11),k),s.arc(M.cx,M.cy,z,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):s.arc(0,0,p,A,w,k)}if(s.closePath(),m)return s=null,m+""||null}return c.centroid=function(){var m=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-fn/2;return[wt(d)*m,Ue(d)*m]},c.innerRadius=function(m){return arguments.length?(t=typeof m=="function"?m:J(+m),c):t},c.outerRadius=function(m){return arguments.length?(e=typeof m=="function"?m:J(+m),c):e},c.cornerRadius=function(m){return arguments.length?(n=typeof m=="function"?m:J(+m),c):n},c.padRadius=function(m){return arguments.length?(r=m==null?null:typeof m=="function"?m:J(+m),c):r},c.startAngle=function(m){return arguments.length?(i=typeof m=="function"?m:J(+m),c):i},c.endAngle=function(m){return arguments.length?(o=typeof m=="function"?m:J(+m),c):o},c.padAngle=function(m){return arguments.length?(a=typeof m=="function"?m:J(+m),c):a},c.context=function(m){return arguments.length?(s=m??null,c):s},c}h();h();var L2=Array.prototype.slice;function vt(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}h();function td(t){this._context=t}td.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Gt(t){return new td(t)}h();h();function bi(t){return t[0]}function yi(t){return t[1]}function sr(t,e){var n=J(!0),r=null,i=Gt,o=null,a=gn(s);t=typeof t=="function"?t:t===void 0?bi:J(t),e=typeof e=="function"?e:e===void 0?yi:J(e);function s(u){var c,m=(u=vt(u)).length,d,p=!1,f;for(r==null&&(o=i(f=a())),c=0;c<=m;++c)!(c<m&&n(d=u[c],c,u))===p&&((p=!p)?o.lineStart():o.lineEnd()),p&&o.point(+t(d,c,u),+e(d,c,u));if(f)return o=null,f+""||null}return s.x=function(u){return arguments.length?(t=typeof u=="function"?u:J(+u),s):t},s.y=function(u){return arguments.length?(e=typeof u=="function"?u:J(+u),s):e},s.defined=function(u){return arguments.length?(n=typeof u=="function"?u:J(!!u),s):n},s.curve=function(u){return arguments.length?(i=u,r!=null&&(o=i(r)),s):i},s.context=function(u){return arguments.length?(u==null?r=o=null:o=i(r=u),s):r},s}function _a(t,e,n){var r=null,i=J(!0),o=null,a=Gt,s=null,u=gn(c);t=typeof t=="function"?t:t===void 0?bi:J(+t),e=typeof e=="function"?e:e===void 0?J(0):J(+e),n=typeof n=="function"?n:n===void 0?yi:J(+n);function c(d){var p,f,b,g=(d=vt(d)).length,y,k=!1,S,P=new Array(g),w=new Array(g);for(o==null&&(s=a(S=u())),p=0;p<=g;++p){if(!(p<g&&i(y=d[p],p,d))===k)if(k=!k)f=p,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),b=p-1;b>=f;--b)s.point(P[b],w[b]);s.lineEnd(),s.areaEnd()}k&&(P[p]=+t(y,p,d),w[p]=+e(y,p,d),s.point(r?+r(y,p,d):P[p],n?+n(y,p,d):w[p]))}if(S)return s=null,S+""||null}function m(){return sr().defined(i).curve(a).context(o)}return c.x=function(d){return arguments.length?(t=typeof d=="function"?d:J(+d),r=null,c):t},c.x0=function(d){return arguments.length?(t=typeof d=="function"?d:J(+d),c):t},c.x1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:J(+d),c):r},c.y=function(d){return arguments.length?(e=typeof d=="function"?d:J(+d),n=null,c):e},c.y0=function(d){return arguments.length?(e=typeof d=="function"?d:J(+d),c):e},c.y1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:J(+d),c):n},c.lineX0=c.lineY0=function(){return m().x(t).y(e)},c.lineY1=function(){return m().x(t).y(n)},c.lineX1=function(){return m().x(r).y(e)},c.defined=function(d){return arguments.length?(i=typeof d=="function"?d:J(!!d),c):i},c.curve=function(d){return arguments.length?(a=d,o!=null&&(s=a(o)),c):a},c.context=function(d){return arguments.length?(d==null?o=s=null:s=a(o=d),c):o},c}h();h();function nd(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}h();function rd(t){return t}function $a(){var t=rd,e=nd,n=null,r=J(0),i=J(hn),o=J(0);function a(s){var u,c=(s=vt(s)).length,m,d,p=0,f=new Array(c),b=new Array(c),g=+r.apply(this,arguments),y=Math.min(hn,Math.max(-hn,i.apply(this,arguments)-g)),k,S=Math.min(Math.abs(y)/c,o.apply(this,arguments)),P=S*(y<0?-1:1),w;for(u=0;u<c;++u)(w=b[f[u]=u]=+t(s[u],u,s))>0&&(p+=w);for(e!=null?f.sort(function(A,v){return e(b[A],b[v])}):n!=null&&f.sort(function(A,v){return n(s[A],s[v])}),u=0,d=p?(y-c*P)/p:0;u<c;++u,g=k)m=f[u],w=b[m],k=g+(w>0?w*d:0)+P,b[m]={data:s[m],index:u,value:w,startAngle:g,endAngle:k,padAngle:S};return b}return a.value=function(s){return arguments.length?(t=typeof s=="function"?s:J(+s),a):t},a.sortValues=function(s){return arguments.length?(e=s,n=null,a):e},a.sort=function(s){return arguments.length?(n=s,e=null,a):n},a.startAngle=function(s){return arguments.length?(r=typeof s=="function"?s:J(+s),a):r},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:J(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:J(+s),a):o},a}h();function id(t){return t<0?-1:1}function od(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),s=(o*i+a*r)/(r+i);return(id(o)+id(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function ad(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ua(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._context.bezierCurveTo(r+s,i+s*e,o-s,a-s*n,o,a)}function xi(t){this._context=t}xi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Ua(this,this._t0,ad(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Ua(this,ad(this,n=od(this,t,e)),n);break;default:Ua(this,this._t0,n=od(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};function dg(t){this._context=new sd(t)}(dg.prototype=Object.create(xi.prototype)).point=function(t,e){xi.prototype.point.call(this,e,t)};function sd(t){this._context=t}sd.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}};function Ga(t){return new xi(t)}h();function ud(t,e){this._context=t,this._t=e}ud.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e}};function Wa(t){return new ud(t,1)}h();h();function Ha(t,e){if((a=t.length)>1)for(var n=1,r,i,o=t[e[0]],a,s=o.length;n<a;++n)for(i=o,o=t[e[n]],r=0;r<s;++r)o[r][1]+=o[r][0]=isNaN(i[r][1])?i[r][0]:i[r][1]}h();function Ya(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}function mg(t,e){return t[e]}function pg(t){let e=[];return e.key=t,e}function Xa(){var t=J([]),e=Ya,n=Ha,r=mg;function i(o){var a=Array.from(t.apply(this,arguments),pg),s,u=a.length,c=-1,m;for(let d of o)for(s=0,++c;s<u;++s)(a[s][c]=[0,+r(d,a[s].key,c,o)]).data=d;for(s=0,m=vt(e(a));s<u;++s)a[m[s]].index=s;return n(a,m),a}return i.keys=function(o){return arguments.length?(t=typeof o=="function"?o:J(Array.from(o)),i):t},i.value=function(o){return arguments.length?(r=typeof o=="function"?o:J(+o),i):r},i.order=function(o){return arguments.length?(e=o==null?Ya:typeof o=="function"?o:J(Array.from(o)),i):e},i.offset=function(o){return arguments.length?(n=o??Ha,i):n},i}h();function qa(t,e){if((u=t.length)>0)for(var n,r=0,i,o,a,s,u,c=t[e[0]].length;r<c;++r)for(a=s=0,n=0;n<u;++n)(o=(i=t[e[n]][r])[1]-i[0])>0?(i[0]=a,i[1]=a+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var md=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],fg=t=>typeof t=="object"&&t!==null&&"open"in t&&"close"in t,hg=t=>typeof t=="object"&&t!==null&&"label"in t&&"value"in t;function gg(t){return t==="linear"?Gt:t==="step"?Wa:Ga}function Za(t,e){let n=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(t.trim());if(!n)return t;let r=n[1];r.length===3&&(r=[...r].map(o=>o+o).join(""));let i=parseInt(r,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${e})`}function ld(t){if(!t?.format)return null;if(typeof t.format=="function")return t.format;let e=en(t.format);return n=>typeof n=="number"?e(n):String(n)}function re(t){return Math.round(t*100)/100}function bn(t,e=0,n=t.duration){return ne.create().fromTo("opacity",0,1,{start:t.start+e,end:t.start+e+Math.max(1,n),ease:"power2.out"})}function pd(t,e,n){let r=e.id??Q("chart"),i=t.width??(typeof e.width=="number"?e.width:960),o=t.height??(typeof e.height=="number"?e.height:540),a=t.type??"line",s=t.fontSize??18,u=t.fontFamily??n,c=t.textColor??"#94a3b8",m=t.textColor??"#e2e8f0",d=t.gridColor??"rgba(148, 163, 184, 0.18)",p=t.colors?.length?t.colors:md,f=t.cornerRadius??4,b=t.animate===!1?void 0:t.animate??{},g={enabled:b!==void 0,start:b?.start??0,duration:b?.duration??30,stagger:b?.stagger??-1,ease:b?.ease??"power3.out"},y=[],k=(T,M,H,Y={},$="")=>{let V=L.text(T,{id:`${r}-label-${$||y.length}`,position:"absolute",x:re(M.x),y:re(M.y),width:re(M.width),height:re(M.height),fontFamily:u,fontSize:s,fontWeight:Y.weight??500,fill:Y.color??c,align:H,verticalAlign:"middle"});g.enabled&&V.animate(bn(g,Y.delay??0)),y.push(V)},S=Math.ceil(s*1.4);a==="pie"||a==="donut"?P():A();for(let T of y)fd(T);return L.box({background:t.background??"transparent",...e,id:r,width:i,height:o,children:y});function P(){let T=w(),M=T.reduce((K,X)=>K+Math.max(0,X.value),0),H=t.legend??!0,Y=O({top:16,right:H?B(T.map(K=>K.label)):16,bottom:16,left:16}),$=C(Y),V=Math.max(1,Math.min($.width,$.height)/2),ee=V*(t.innerRadius??(a==="donut"?.6:0)),oe=$.x+$.width/2,ge=$.y+$.height/2,le=4,E=$a().sort(null).value(K=>Math.max(0,K.value)).padAngle(T.length>1?.012:0)(T),j=gi().innerRadius(ee).outerRadius(V).cornerRadius(Math.min(f,(V-ee)/2)),W=v(E.length);E.forEach((K,X)=>{let te=j(K);if(!te)return;let R=T[X].color??p[X%p.length],I=L.shape("path",{id:`${r}-slice-${X}`,position:"absolute",x:re(oe-V-le),y:re(ge-V-le),width:re(2*(V+le)),height:re(2*(V+le)),d:bg(te,V+le,V+le),fillColor:R,anchorX:.5,anchorY:.5});if(g.enabled){let q=g.start+X*W;I.animate(ne.create().fromTo("opacity",0,1,{start:q,end:q+g.duration*.5}).fromTo("scale",.85,1,{start:q,end:q+g.duration,ease:g.ease}))}if(y.push(I),t.valueLabels&&M>0&&K.value>0){let[q,N]=gi().innerRadius(ee||V*.55).outerRadius(V).centroid(K),Se=`${Math.round(K.value/M*100)}%`;k(Se,{x:oe+q-60,y:ge+N-S/2,width:120,height:S},"center",{delay:X*W+g.duration*.5,color:"#ffffff",weight:700},`value-${X}`)}}),H&&_(T.map((K,X)=>({name:K.label,color:K.color??p[X%p.length]})),{x:$.x+$.width+24,y:$.y,height:$.height})}function w(){return(t.data??t.series?.[0]?.data??[]).map((M,H)=>{if(hg(M))return M;let Y=typeof M=="number"?M:Array.isArray(M)?Number(M[1]):Number(M.y);return{label:t.categories?.[H]??(Array.isArray(M)?String(M[0]):typeof M=="object"&&M?String(M.x):`${H+1}`),value:Y}})}function A(){let T=t.series?.length?[...t.series]:t.data?[{data:t.data}]:[];if(T.length===0)return;let M=D=>D.type??a??"line",H=(D,U)=>D.color??p[U%p.length],Y=T.map(D=>D.data.map((U,ie)=>fg(U)?{x:U.x,y:U.close}:typeof U=="number"?{x:t.categories?.[ie]??ie,y:U}:Array.isArray(U)?{x:U[0],y:Number(U[1])}:{x:U.x,y:Number(U.y)})),$=T.some(D=>M(D)==="bar"||M(D)==="candlestick"),V=Y.flat().map(D=>D.x),ee=$||V.some(D=>typeof D=="string")?"band":V.some(D=>D instanceof Date)?"time":"linear",oe=D=>M(D)==="bar"||M(D)==="area",ge=!!t.stacked,le=ee==="band"?[...new Set(V.map(String))]:[],E=new Map;if(ge){let D=T.map((fe,Me)=>Me).filter(fe=>oe(T[fe])),U=le.length?le:[...new Set(V.map(fe=>+fe))].sort((fe,Me)=>fe-Me).map(String),ie=U.map(fe=>{let Me={};for(let Ne of D){let Oe=Y[Ne].find(ke=>String(ee==="band"?ke.x:+ke.x)===fe);Me[Ne]=Oe?.y??0}return Me});Xa().keys(D.map(String)).offset(qa)(ie).forEach(fe=>{let Me=Number(fe.key);E.set(Me,Y[Me].map(Ne=>{let Oe=U.indexOf(String(ee==="band"?Ne.x:+Ne.x));return[fe[Oe][0],fe[Oe][1]]}))})}let j=[0];T.forEach((D,U)=>{let ie=E.get(U);if(M(D)==="candlestick")for(let pe of D.data)j.push(pe.high,pe.low);else if(ie)for(let[pe,fe]of ie)j.push(pe,fe);else for(let pe of Y[U])j.push(pe.y)}),T.every(D=>M(D)==="candlestick"||M(D)==="scatter"||M(D)==="line")&&j.shift();let W=t.yAxis??{},K=t.xAxis??{},X=W.ticks??5,te=W.min??Math.min(...j),R=W.max??Math.max(...j);(!Number.isFinite(te)||!Number.isFinite(R))&&([te,R]=[0,1]),te===R&&([te,R]=[te-1,R+1]);let I=sn().domain([te,R]);(W.min===void 0||W.max===void 0)&&I.nice(X);let q=ld(W)??(D=>I.tickFormat(X)(D)),N=I.ticks(X),Se=T.map((D,U)=>({name:D.name??`Series ${U+1}`,color:H(D,U)})),ce=t.legend??T.length>1,Ae=W.show!==!1,De=K.show!==!1,Ke=Ae?Math.max(...N.map(D=>q(D).length))*s*.7+20:0,br=O({top:(ce?S+20:0)+Math.ceil(S/2),right:20,bottom:De?S+14:12,left:Math.max(16,Math.ceil(Ke))}),ae=C(br),ps=S+6,fs=t.valueLabels?T.flatMap((D,U)=>M(D)==="bar"?Y[U].map(ie=>ie.y):[]):[],Qd=fs.some(D=>D>0)?ps:0,Jd=fs.some(D=>D<0)?ps:0;I.range([ae.height-Jd,Qd]);let Qe;if(ee==="band")Qe=qn().domain(le).range([0,ae.width]).paddingInner($?.28:0).paddingOuter($?.14:.5);else if(ee==="time"){let D=V.map(U=>+new Date(U));Qe=pi().domain([Math.min(...D),Math.max(...D)]).range([0,ae.width])}else{let D=V.map(Number);Qe=sn().domain([K.min??Math.min(...D),K.max??Math.max(...D)]).range([0,ae.width])}let hs=D=>{if(ee==="band"){let U=Qe;return(U(String(D))??0)+U.bandwidth()/2}return Qe(ee==="time"?new Date(D):Number(D))},gs=0;W.grid!==!1&&N.forEach((D,U)=>{let ie=L.box({id:`${r}-ygrid-${U}`,position:"absolute",x:ae.x,y:re(ae.y+I(D)-.5),width:ae.width,height:1,background:d});g.enabled&&ie.animate(bn(g,gs,g.duration/2)),y.push(ie)}),Ae&&N.forEach((D,U)=>{k(q(D),{x:0,y:ae.y+I(D)-S/2,width:ae.x-12,height:S},"end",{},`y-${U}`)});let Sn=[],yr=ld(K);if(ee==="band"){let D=Qe,U=Math.max(1,Math.ceil(le.length/Math.max(1,Math.floor(ae.width/(s*4)))));le.forEach((ie,pe)=>{pe%U===0&&Sn.push({pos:(D(ie)??0)+D.bandwidth()/2,text:yr?yr(ie):ie})})}else{let D=Qe,U=K.ticks??Math.max(2,Math.floor(ae.width/(s*6))),ie=D.tickFormat(U);for(let pe of D.ticks(U))Sn.push({pos:D(pe),text:yr?yr(ee==="time"?new Date(pe):pe):ie(pe)})}if(K.grid&&Sn.forEach((D,U)=>{let ie=L.box({id:`${r}-xgrid-${U}`,position:"absolute",x:re(ae.x+D.pos-.5),y:ae.y,width:1,height:ae.height,background:d});g.enabled&&ie.animate(bn(g,gs,g.duration/2)),y.push(ie)}),De){let D=Math.max(s*3,ae.width/Math.max(1,Sn.length));Sn.forEach((U,ie)=>{k(U.text,{x:ae.x+U.pos-D/2,y:ae.y+ae.height+10,width:D,height:S},"center",{},`x-${ie}`)})}let[em,tm]=I.domain();if(em<=0&&tm>=0&&$){let D=L.box({id:`${r}-zero`,position:"absolute",x:ae.x,y:re(ae.y+I(0)-1),width:ae.width,height:2,background:Za("#94a3b8",.45)});g.enabled&&D.animate(bn(g,0,g.duration/2)),y.push(D)}let xr=T.map((D,U)=>U).filter(D=>M(T[D])==="bar"),nm=[...xr,...T.map((D,U)=>U).filter(D=>M(T[D])==="candlestick"),...T.map((D,U)=>U).filter(D=>M(T[D])==="area"),...T.map((D,U)=>U).filter(D=>M(T[D])==="line"),...T.map((D,U)=>U).filter(D=>M(T[D])==="scatter")],lt=ee==="band"?Qe:null,bs=lt?v(le.length):0,ys=D=>lt?le.indexOf(String(D)):0;nm.forEach((D,U)=>{let ie=T[D],pe=H(ie,D),fe=M(ie),Me=Y[D],Ne=E.get(D);if(fe==="bar"&<){let Oe=ge?1:xr.length,ke=ge?0:xr.indexOf(D),Re=lt.bandwidth()/Oe,he=Oe>1?Math.min(4,Re*.12):0;Me.forEach((Fe,Ge)=>{let[ct,Te]=Ne?Ne[Ge]:[0,Fe.y],xe=ae.y+I(Math.max(ct,Te)),wr=ae.y+I(Math.min(ct,Te)),Be=Math.max(0,wr-xe),kn=ae.x+(lt(String(Fe.x))??0)+ke*Re+he/2,kt=Fe.y>=0?"up":"down",vr=L.box({id:`${r}-bar-${D}-${Ge}`,position:"absolute",x:re(kn),y:re(xe),width:re(Math.max(1,Re-he)),height:re(Be),background:pe,borderRadius:Math.min(f,(Re-he)/2,Be/2)}),ws=ys(Fe.x)*bs+(ge?xr.indexOf(D)*g.duration*.6:0);if(g.enabled){let Pn=g.start+ws,Sr=Pn+g.duration,vs=ne.create().fromTo("height",0,re(Be),{start:Pn,end:Sr,ease:g.ease});kt==="up"&&vs.fromTo("y",re(xe+Be),re(xe),{start:Pn,end:Sr,ease:g.ease}),vr.animate(vs)}if(y.push(vr),t.valueLabels){let Pn=q(Fe.y),Sr=kt==="up"?xe-S-4:xe+Be+4;k(Pn,{x:kn-30,y:Sr,width:Re-he+60,height:S},"center",{delay:ws+g.duration*.6,color:m,weight:600},`value-${D}-${Ge}`)}});return}if(fe==="candlestick"&<){let Oe=t.upColor??"#22c55e",ke=t.downColor??"#ef4444",Re=lt.bandwidth();ie.data.forEach((he,Fe)=>{let Ge=he.close>=he.open?Oe:ke,ct=ae.x+(lt(String(he.x))??0)+Re/2,Te=ys(he.x)*bs,xe=[["wick",{x:ct-Math.max(1,Re*.06),y:ae.y+I(he.high),width:Math.max(2,Re*.12),height:Math.max(1,I(he.low)-I(he.high))}],["body",{x:ct-Re/2,y:ae.y+I(Math.max(he.open,he.close)),width:Re,height:Math.max(2,Math.abs(I(he.open)-I(he.close)))}]];for(let[wr,Be]of xe){let kn=L.box({id:`${r}-candle-${D}-${Fe}-${wr}`,position:"absolute",x:re(Be.x),y:re(Be.y),width:re(Be.width),height:re(Be.height),background:Ge,borderRadius:wr==="body"?Math.min(f/2,Be.width/2):0});if(g.enabled){let kt=g.start+Te,vr=Be.y+Be.height/2;kn.animate(ne.create().fromTo("height",0,re(Be.height),{start:kt,end:kt+g.duration,ease:g.ease}).fromTo("y",re(vr),re(Be.y),{start:kt,end:kt+g.duration,ease:g.ease}))}y.push(kn)}});return}if(fe==="line"||fe==="area"){let Oe=ie.strokeWidth??3,ke=Math.ceil(Oe*2+(ie.pointRadius??0)+2),Re=Me.map((Te,xe)=>({x:hs(Te.x)+ke,top:I(Ne?Ne[xe][1]:Te.y)+ke,base:I(Ne?Ne[xe][0]:Math.max(I.domain()[0],Math.min(0,I.domain()[1])))+ke})),he=gg(ie.curve),Fe={x:ae.x-ke,y:ae.y-ke,width:ae.width+2*ke,height:ae.height+2*ke},Ge=U*(g.duration/3);if(fe==="area"){let Te=_a().x(xe=>xe.x).y0(xe=>xe.base).y1(xe=>xe.top).curve(he)(Re);if(Te){let xe=L.shape("path",{id:`${r}-area-${D}`,position:"absolute",...cd(Fe),d:dd(Te),fillType:"linear",fillColor:Za(pe,.45),gradientEndColor:Za(pe,.02),gradientAngle:90});g.enabled&&xe.animate(bn(g,Ge+g.duration*.4,g.duration)),y.push(xe)}}let ct=sr().x(Te=>Te.x).y(Te=>Te.top).curve(he)(Re);if(ct&&Oe>0){let Te=L.shape("path",{id:`${r}-line-${D}`,position:"absolute",...cd(Fe),d:dd(ct),fillType:"none",strokeColor:pe,strokeWidth:Oe,strokeLineCap:"round",strokeLineJoin:"round"});g.enabled&&Te.animate(ne.create().fromTo("trimEnd",0,1,{start:g.start+Ge,end:g.start+Ge+g.duration*1.5,ease:"power2.inOut"})),y.push(Te)}(ie.pointRadius??0)>0&&xs(D,Me,pe,ie.pointRadius??0,Ge+g.duration*.5,Ne);return}fe==="scatter"&&xs(D,Me,pe,ie.pointRadius??6,U*(g.duration/3),Ne)}),ce&&z(Se);function xs(D,U,ie,pe,fe,Me){let Ne=v(U.length);U.forEach((Oe,ke)=>{let Re=I(Me?Me[ke][1]:Oe.y),he=L.shape("circle",{id:`${r}-point-${D}-${ke}`,position:"absolute",x:re(ae.x+hs(Oe.x)-pe),y:re(ae.y+Re-pe),width:re(pe*2),height:re(pe*2),fillColor:ie,anchorX:.5,anchorY:.5});if(g.enabled){let Fe=g.start+fe+ke*Ne;he.animate(ne.create().fromTo("scale",0,1,{start:Fe,end:Fe+g.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:Fe,end:Fe+6}))}y.push(he)})}}function v(T){return!g.enabled||T<=1?0:g.stagger>=0?g.stagger:Math.min(4,g.duration/T)}function O(T){let M=t.padding;return typeof M=="number"?{top:M,right:M,bottom:M,left:M}:{top:M?.top??T.top,right:M?.right??T.right,bottom:M?.bottom??T.bottom,left:M?.left??T.left}}function C(T){return{x:T.left,y:T.top,width:Math.max(1,i-T.left-T.right),height:Math.max(1,o-T.top-T.bottom)}}function B(T){let M=Math.max(0,...T.map(H=>H.length));return Math.min(i*.4,M*s*.6+s+48)}function _(T,M){let H=S+8,Y=M.y+Math.max(0,(M.height-T.length*H)/2);T.forEach(($,V)=>{F($,M.x,Y+V*H,V)})}function z(T){let M=T.map($=>$.name.length*s*.6+s+28),H=M.reduce(($,V)=>$+V,0),Y=Math.max(0,i-H-20);T.forEach(($,V)=>{F($,Y,4,V),Y+=M[V]})}function F(T,M,H,Y){let $=Math.round(s*.7),V=L.box({id:`${r}-legend-swatch-${Y}`,position:"absolute",x:re(M),y:re(H+(S-$)/2),width:$,height:$,borderRadius:Math.round($/4),background:T.color});g.enabled&&V.animate(bn(g,0,g.duration/2)),y.push(V),k(T.name,{x:M+$+8,y:H,width:T.name.length*s*.6+12,height:S},"start",{color:t.textColor??"#cbd5e1"},`legend-${Y}`)}}function fd(t){for(let e of t.animation?.tracks??[])for(let n of e.keyframes??[])n.frame=Math.round(n.frame);for(let e of t.children??[])fd(e)}function cd(t){return{x:re(t.x),y:re(t.y),width:re(t.width),height:re(t.height)}}function dd(t){return t.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,e=>String(re(Number(e))))}function bg(t,e,n){let r=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,o,a]of t.matchAll(i)){let s=(a.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(o.toUpperCase()==="A")for(let u=0;u+6<s.length;u+=7)s[u+5]+=e,s[u+6]+=n;else if(o.toUpperCase()!=="Z")for(let u=0;u+1<s.length;u+=2)s[u]+=e,s[u+1]+=n;r.push(o+s.map(re).join(","))}return r.join("")}h();var hd=24,yg=1,ur=class{source;fps;startFrame;trimStartSec;smoothing;options;results=new Map;sourceWidth=0;sourceHeight=0;cellW=0;cellH=0;cell;queue=Promise.resolve();runner;cacheLoaded;unsaved=0;unsavedSubjects=0;blurred=new Map;smoothed=new Map;personView;subjects=new Map;wantSubjects=!1;subjectsLoaded;constructor(e,n,r={}){this.source=e,this.options=r,this.fps=r.fps??n,this.startFrame=Math.round(r.startFrame??0),this.trimStartSec=r.trimStartSec??0,this.smoothing=Math.max(0,Math.round(r.smoothing??2)),this.cell=Math.max(1,Math.round(r.maskCell??8))}get person(){return this.personView??=new wi(this),this.personView}ready(e,n=e){let[r,i]=this.window(e,n);return this.queue=this.queue.then(()=>this.compute(r,i)),this.queue}isReady(e){let[n,r]=this.window(e,e);for(let i=n;i<=r;i++)if(!this.results.has(i))return!1;return!0}keepSubjects(){this.wantSubjects=!0}subject(e,n){let r=e*this.fps/n;if(Math.abs(r-Math.round(r))>1e-6)return;let i=this.subjects.get(Math.round(r));if(i===void 0)return i;if(i===null||!this.sourceWidth)return null;let o=this.sourceWidth,a=this.sourceHeight;return{category:i.category,mask:Pg(i,o*a),width:o,height:a,area:i.area,coverage:i.area/(o*a),detectionIndex:-1}}clipFrame(e){return e-this.startFrame+this.trimStartSec*this.fps}window(e,n){let r=Math.floor(this.clipFrame(Math.min(e,n))),i=Math.ceil(this.clipFrame(Math.max(e,n)));return[Math.max(0,r-hd-this.smoothing),Math.max(0,i+this.smoothing)]}analysed(e){return this.results.has(e)&&(!this.wantSubjects||this.subjects.has(e))}async compute(e,n){this.cacheLoaded??=this.loadCache(),await this.cacheLoaded,this.wantSubjects&&(this.subjectsLoaded??=this.loadSubjects(),await this.subjectsLoaded);let r=!1;for(let s=e;s<=n;s++)this.analysed(s)||(r=!0);if(!r)return;let i=this.options.pose??!0,o=this.options.mask??!0;this.runner??=An.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,...this.options.confidence!==void 0&&{confidence:this.options.confidence},...this.options.variant!==void 0&&{variant:this.options.variant}});let a=Mr.getVideo(this.source,!0,"clip-vision");for(let s=e;s<=n;s++){if(this.analysed(s))continue;let u=await wg(await a.getFrame(s/this.fps));if(!u){this.results.set(s,{kp:null,mask:null}),this.wantSubjects&&this.subjects.set(s,null);continue}this.sourceWidth||this.setSize(u.width,u.height);let c=this.results.get(s),m=c?.kp??null,d=c?.mask??null;if(i&&!c){let f=(await this.runner.pose(u)).people[0];if(f){m=new Float32Array(51);for(let[b,g]of f.keypoints.entries())m.set([g.x,g.y,g.visibility],b*3)}}let p=o&&!c||this.wantSubjects?await this.runner.segment(u):void 0;if(p&&this.wantSubjects){let f=Is(p.masks);this.subjects.set(s,f?{category:f.category,area:f.area,...kg(f.mask)}:null),this.unsavedSubjects++}if(p&&o&&!c){let f=vg(p);f&&(d=new Uint8Array(this.cellW*this.cellH),Sg(f,u.width,u.height,this.cell,d,this.cellW,this.cellH))}this.results.set(s,{kp:m,mask:d}),c||this.unsaved++,this.unsaved>=24&&await this.saveCache(),this.unsavedSubjects>=24&&await this.saveSubjects()}this.unsaved>0&&await this.saveCache(),this.unsavedSubjects>0&&await this.saveSubjects()}setSize(e,n){this.sourceWidth=e,this.sourceHeight=n,this.cellW=Math.ceil(e/this.cell),this.cellH=Math.ceil(n/this.cell)}size(){return{width:this.sourceWidth,height:this.sourceHeight}}result(e){return this.results.get(Math.max(0,e))}keypoint(e,n){n=Math.max(0,n);let r=`${e}:${n}`,i=this.smoothed.get(r);if(i)return i;let o=s=>{let u=0,c=0,m=0,d=0;for(let p=s-this.smoothing;p<=s+this.smoothing;p++){let f=this.mustHave(p<0?0:p);if(!f.kp)continue;let b=f.kp[e*3+2],g=(this.smoothing+1-Math.abs(p-s))*b*b;u+=f.kp[e*3]*g,c+=f.kp[e*3+1]*g,m+=b*g,d+=g}return d>1e-6?[u/d,c/d,m/d]:null},a=null;for(let s=0;s<=hd&&!a;s++)n-s>=0&&(a=o(n-s));return a??=[this.sourceWidth/2,this.sourceHeight/2,0],this.smoothed.set(r,a),a}blurredMask(e){if(e=Math.max(0,e),this.blurred.has(e))return this.blurred.get(e)??null;let n=this.mustHave(e),r=n.mask?Mg(n.mask,this.cellW,this.cellH,2):null;return this.blurred.set(e,r),r}grid(){return{cell:this.cell,width:this.cellW,height:this.cellH}}mustHave(e){let n=this.results.get(e);if(n)return n;throw new Error(`ClipVision "${this.source}": frame ${e} is not analysed yet. Read it while rendering (the composition prepares each frame), in a live physics world, or after \`await clip.ready(frame)\`.`)}cacheFile;async cachePath(){if(this.cacheFile!==void 0)return this.cacheFile;if(this.cacheFile=null,this.options.cacheDir===!1||typeof x>"u"||!x.versions?.node)return null;try{let[e,n,r,i]=await Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-W5UAWSNT.mjs")]),o=e.statSync(this.source),a=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??n.join(r.homedir(),".cache","framefields","vision"),s=this.options,u=JSON.stringify([yg,n.resolve(this.source),o.size,o.mtimeMs,this.fps,s.pose??!0,s.mask??!0,this.cell,s.variant??"s",s.confidence??null]),c=i.createHash("sha256").update(u).digest("hex").slice(0,24);e.mkdirSync(a,{recursive:!0}),this.cacheFile=n.join(a,`${n.basename(this.source)}.${c}.json`)}catch{this.cacheFile=null}return this.cacheFile}async loadCache(){let e=await this.cachePath();if(e)try{let n=await import("./shims/fs.mjs");if(!n.existsSync(e))return;let r=JSON.parse(n.readFileSync(e,"utf8"));if(r.cell!==this.cell)return;this.setSize(r.width,r.height);for(let[i,o]of Object.entries(r.frames))this.results.set(Number(i),{kp:o.kp?Float32Array.from(o.kp):null,mask:o.mask?new Uint8Array(Buffer.from(o.mask,"base64")):null})}catch{}}async saveCache(){this.unsaved=0;let e=await this.cachePath();if(!e||!this.sourceWidth)return;let n={};for(let[o,a]of this.results)n[o]={kp:a.kp?Array.from(a.kp,s=>Math.round(s*100)/100):null,mask:a.mask?Buffer.from(a.mask).toString("base64"):null};let r=await import("./shims/fs.mjs"),i=`${e}.${x.pid}.tmp`;r.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,cell:this.cell,frames:n})),r.renameSync(i,e)}async subjectsPath(){let e=await this.cachePath();return e?e.replace(/\.json$/,".subjects.json"):null}async loadSubjects(){let e=await this.subjectsPath();if(e)try{let n=await import("./shims/fs.mjs");if(!n.existsSync(e))return;let r=JSON.parse(n.readFileSync(e,"utf8"));if(this.sourceWidth&&r.width!==this.sourceWidth)return;this.sourceWidth||this.setSize(r.width,r.height);for(let[i,o]of Object.entries(r.frames)){let a=Buffer.from(o?.lengths??"","base64");this.subjects.set(Number(i),o&&{category:o.category,area:o.area,values:new Uint8Array(Buffer.from(o.values,"base64")),lengths:new Uint32Array(a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength))})}}catch{}}async saveSubjects(){this.unsavedSubjects=0;let e=await this.subjectsPath();if(!e||!this.sourceWidth)return;let n={};for(let[o,a]of this.subjects)n[o]=a&&{category:a.category,area:a.area,values:Buffer.from(a.values).toString("base64"),lengths:Buffer.from(a.lengths.buffer,a.lengths.byteOffset,a.lengths.byteLength).toString("base64")};let r=await import("./shims/fs.mjs"),i=`${e}.${x.pid}.tmp`;r.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,frames:n})),r.renameSync(i,e)}},wi=class t{constructor(e,n,r){this.clip=e;this.t=n;this.placement=r}clip;t;placement;place(e){return new t(this.clip,void 0,e)}transform(){if(this.t)return this.t;let e=this.placement,{width:n,height:r}=this.clip.size();if(!e||!n)return{sx:1,sy:1,ox:0,oy:0};let i=e.width/n,o=e.height/r;if(e.fit!=="fill"){let a=e.fit==="contain"?Math.min(i,o):Math.max(i,o);i=a,o=a}return{sx:i,sy:o,ox:(e.x??0)+(e.width-n*i)/2,oy:(e.y??0)+(e.height-r*o)/2}}point(e,n){let r=xg(e),i=this.clip.clipFrame(n),o=Math.floor(i),a=i-o,s=this.clip.keypoint(r,o),u=a>0?this.clip.keypoint(r,o+1):s,c=this.transform();return{x:(s[0]+(u[0]-s[0])*a)*c.sx+c.ox,y:(s[1]+(u[1]-s[1])*a)*c.sy+c.oy,visibility:s[2]+(u[2]-s[2])*a}}signals(e){let n=r=>Tn.builder({type:"custom",fn:i=>this.point(e,i.frame)[r]});return{x:n("x"),y:n("y"),visibility:n("visibility")}}silhouetteGrid(e){let n=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!n)return null;let{cell:r,width:i,height:o}=this.clip.grid(),a=this.transform();return{data:n,width:i,height:o,originX:a.ox,originY:a.oy,scaleX:r*a.sx,scaleY:r*a.sy}}sample(e,n,r){let i=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!i)return{alpha:0,gx:0,gy:0};let{cell:o,width:a,height:s}=this.clip.grid(),u=this.transform(),c=(n-u.ox)/u.sx/o-.5,m=(r-u.oy)/u.sy/o-.5,d=(f,b)=>f<0||b<0||f>=a||b>=s?0:i[b*a+f],p=(f,b)=>{let g=Math.floor(f),y=Math.floor(b),k=f-g,S=b-y,P=d(g,y)+(d(g+1,y)-d(g,y))*k,w=d(g,y+1)+(d(g+1,y+1)-d(g,y+1))*k;return P+(w-P)*S};return{alpha:p(c,m),gx:(p(c+1,m)-p(c-1,m))/(2*o*u.sx),gy:(p(c,m+1)-p(c,m-1))/(2*o*u.sy)}}};function xg(t){let e=Cr.indexOf(t);if(e<0)throw new Error(`Unknown keypoint "${t}". Use one of ${Cr.join(", ")}.`);return e}async function wg(t){if(!t||t.width<=0)return null;if(t.buffer)return{data:t.buffer,width:t.width,height:t.height};let n=t.canvas?.getContext("2d");return n?{data:n.getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}:null}function vg(t){let e=t.masks.filter(o=>o.category==="person");if(e.length===0)return;let n=e.reduce((o,a)=>a.area>o.area?a:o),r=t.detections[n.detectionIndex]?.boundingBox,i=new Uint8Array(n.mask);if(!r)return i;for(let o of t.masks){if(o===n||o.area>n.area*2)continue;let a=t.detections[o.detectionIndex]?.boundingBox;if(!a)continue;let s=Math.max(0,Math.min(r.originX+r.width,a.originX+a.width)-Math.max(r.originX,a.originX)),u=Math.max(0,Math.min(r.originY+r.height,a.originY+a.height)-Math.max(r.originY,a.originY));if(!(s*u<.3*a.width*a.height))for(let c=0;c<i.length;c++)o.mask[c]>i[c]&&(i[c]=o.mask[c])}return i}function Sg(t,e,n,r,i,o,a){for(let s=0;s<a;s++)for(let u=0;u<o;u++){let c=0,m=0;for(let d=s*r;d<Math.min(n,(s+1)*r);d++)for(let p=u*r;p<Math.min(e,(u+1)*r);p++)c+=t[d*e+p],m++;i[s*o+u]=m?Math.round(c/m):0}}function kg(t){let e=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[a-1])&&e++;let n=new Uint8Array(e),r=new Uint32Array(e),i=0,o=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[o])&&(n[i]=t[o],r[i++]=a-o,o=a);return{values:n,lengths:r}}function Pg(t,e){let n=new Uint8Array(e),r=0;for(let i=0;i<t.values.length;i++){let o=Math.min(e,r+t.lengths[i]);t.values[i]!==0&&n.fill(t.values[i],r,o),r=o}return n}function Mg(t,e,n,r){let i=new Float32Array(e*n),o=new Float32Array(e*n);for(let a=0;a<n;a++)for(let s=0;s<e;s++){let u=0,c=0;for(let m=-r;m<=r;m++){let d=s+m;d>=0&&d<e&&(u+=t[a*e+d],c++)}i[a*e+s]=u/c/255}for(let a=0;a<n;a++)for(let s=0;s<e;s++){let u=0,c=0;for(let m=-r;m<=r;m++){let d=a+m;d>=0&&d<n&&(u+=i[d*e+s],c++)}o[a*e+s]=u/c}return o}h();h();var Tg={rotation:.2,rotateX:.2,rotateY:.2,rotateZ:.2};function ze(t,e,n){if(typeof t=="number")return t;if(typeof t=="function")return t(e);let r=e/n;return t.get({frame:e,fps:n,time:r,duration:0,durationMs:0,progress:0,deltaTime:1/n})}function Wt(t,e){let n=e-t;return n-=Math.round(n/360)*360,t+n}function Cg(t,e){let n=t.length;if(n===0)return[];let r=new Uint8Array(n);r[0]=1,r[n-1]=1;let i=[[0,n-1]];for(;i.length>0;){let[a,s]=i.pop(),u=-1,c=e;for(let m=a+1;m<s;m++){let d=(m-a)/(s-a),p=t[a]+(t[s]-t[a])*d,f=Math.abs(t[m]-p);f>c&&(c=f,u=m)}u>=0&&(r[u]=1,i.push([a,u],[u,s]))}let o=[];for(let a=0;a<n;a++)r[a]&&o.push([a,Ag(t[a]),"none"]);return o.length===2&&o[0][1]===o[1][1]&&o.pop(),o}function Ag(t){return Math.round(t*1e4)/1e4}var Ka=class{constructor(e,n,r){this.length=e;this.fps=n;this.ensure=r}length;fps;ensure;channels=new Map;signals=new Map;channel(e){let n=this.channels.get(e);return n||(n=new Float32Array(this.length),this.channels.set(e,n)),n}signal(e){let n=this.signals.get(e);if(!n){let r=this.channel(e),i=this.fps;n=Tn.builder({type:"custom",fn:o=>{this.ensure();let a=o.fps&&o.fps!==i?o.frame/o.fps*i:o.frame,s=Math.max(0,Math.min(r.length-1,Math.round(a)));return r[s]}}),this.signals.set(e,n)}return n}},yn=class{constructor(e,n,r){this.sim=e;this.gravity=n;if(!(r.fps>0))throw new Error("Physics: `fps` must be > 0.");if(!(r.frames>=1)||!Number.isInteger(r.frames))throw new Error("Physics: `frames` must be a positive integer.");this.fps=r.fps,this.frames=r.frames,this.startFrame=Math.max(0,Math.round(r.startFrame??0)),this.pixelsPerMeter=r.pixelsPerMeter??100,this.substeps=Math.max(1,Math.round(r.substeps??4)),this.impactDecay=Math.max(.5,r.impactDecay??8),this.impactReference=r.impactReference??1500,this.worldRecording=this.newRecording()}sim;gravity;fps;frames;startFrame;pixelsPerMeter;substeps;impactDecay;impactReference;bodies=[];forces=[];impulses=[];fields=[];worldRecording;allCollisions=[];locked=!1;liveMode=!1;stepper;chain=Promise.resolve();get collisions(){return this.ensureSimulated(),this.allCollisions}get impact(){return this.worldRecording.signal("impact")}simulate(){if(this.liveMode)throw new Error("Physics: this world is live; it steps as frames render.");return this.ensureSimulated(),this}bakeKeyframes(e={}){if(this.locked)throw new Error("Physics: bakeKeyframes() must come before simulate(), live() or reading any body signal.");return this.bakeDefault=e,this.ensureSimulated(),this}live(e,n={}){if(this.locked)throw new Error("Physics: live() must come before simulate() or reading any body signal.");this.locked=!0,this.liveMode=!0;let r=async i=>{await e.prepareVision?.(i);for(let o of n.inputs??[])await o.ready(i)};this.prepareInputs=r;for(let i of this.bodies)this.bind(i);return e.onPrepareFrame(i=>this.advanceTo(i.frame)),this}advanceTo(e){return this.chain=this.chain.then(async()=>{let n=Math.min(this.frames-1,Math.round(e)-this.startFrame);this.stepper||(await this.prepareInputs?.(this.startFrame),this.stepper=this.begin());let r=this.stepper;for(;r.current<n;){let i=r.current+1;await this.prepareInputs?.(this.startFrame+i),this.stepFrame(r,i)}r.current===this.frames-1&&!r.freed&&(r.freed=!0,this.sim.free())}),this.chain}prepareInputs;bakeDefault;newRecording(){return new Ka(this.startFrame+this.frames,this.fps,()=>this.ensureSimulated())}assertOpen(){if(this.locked)throw new Error("Physics: the world has already started; add every body, joint and force before simulate(), live() or reading signals.")}addBody(e){return this.assertOpen(),this.bodies.push(e),e}addForce(e,n){this.assertOpen(),this.forces.push({body:e,accel:n})}addField(e,n){this.assertOpen(),this.fields.push({accel:e,...n&&{targets:new Set(n)}})}addImpulse(e,n,r){this.assertOpen(),this.impulses.push({body:e,frame:Math.round(n),dv:r})}ensureSimulated(){if(this.locked)return;this.locked=!0;let e=this.begin();for(let n=1;n<this.frames;n++)this.stepFrame(e,n);e.freed=!0,this.sim.free();for(let n of this.bodies)this.bind(n)}begin(){let{startFrame:e}=this,n=this.bodies,r=new Map;for(let o of n)r.set(o.sim,o);for(let o of n)o.startFrame>0&&o.sim.setEnabled(!1);let i=new Map;for(let o of n){o.record(e,-1),o.recording.channel("impact");let a=o.kinematicTarget?.(e);a&&i.set(o,a)}this.worldRecording.channel("impact");for(let o of[...n.map(a=>a.recording),this.worldRecording])for(let a of o.channels.values())a.fill(a[e]);return{current:0,freed:!1,bySim:r,kinematicFrom:i,level:new Map(n.map(o=>[o,0]))}}stepFrame(e,n){let{fps:r,startFrame:i,substeps:o}=this,a=1/(r*o),s=this.bodies,u=i+n,c=this.gravity.length,m=new Map;for(let w of s)w.startFrame>0&&n===w.startFrame+1&&w.sim.setEnabled(!0),m.set(w,w.sim.velocity());let d=w=>w.type==="dynamic"&&n>w.startFrame,p=new Map;for(let w of s)p.set(w,this.gravity.map(A=>d(w)?A*w.gravityScale/r:0));for(let w of this.impulses){if(w.frame!==n)continue;let A=w.body;if(!d(A))continue;let v=A.sim.mass();A.sim.applyImpulse(w.dv.map(C=>C*v));let O=p.get(A);for(let C=0;C<c;C++)O[C]+=w.dv[C]}let f=this.forces.filter(w=>d(w.body)).map(w=>{let A=w.body,v=w.accel(u),O=p.get(A);for(let C=0;C<c;C++)O[C]+=v[C]/r;return{body:A,a:v}}),b=new Map;for(let w of s){let A=w.kinematicTarget?.(u);A&&b.set(w,A)}let g=new Set,y=[];for(let w=1;w<=o;w++){for(let{body:A,a:v}of f){let O=A.sim.mass();A.sim.applyImpulse(v.map(C=>C*O*a))}for(let A of this.fields)for(let v of s){if(!d(v)||A.targets&&!A.targets.has(v))continue;let O=A.accel(v,u);if(!O)continue;let C=v.sim.mass();v.sim.applyImpulse(O.map(_=>_*C*a));let B=p.get(v);for(let _=0;_<c;_++)B[_]+=O[_]*a}for(let[A,v]of b){let O=e.kinematicFrom.get(A)??v,C=w/o;A.sim.setKinematicTarget(Dg(O.position,v.position,C),this.lerpRotation(O.rotation,v.rotation,C))}this.sim.step(a);for(let[A,v]of this.sim.drainCollisionStarts()){let O=e.bySim.get(A),C=e.bySim.get(v);if(!O||!C)continue;let B=`${s.indexOf(O)}:${s.indexOf(C)}`;g.has(B)||(g.add(B),y.push([O,C]))}}e.kinematicFrom=b;for(let w of s)w.record(u,u-1);let k=new Map;if(y.length>0){let w=this.pixelsPerMeter,A=v=>{if(v.type!=="dynamic")return 0;let O=v.sim.velocity(),C=m.get(v),B=p.get(v),_=0;for(let z=0;z<c;z++){let F=O[z]-(C[z]+B[z]);_+=F*F}return Math.sqrt(_)*w};for(let[v,O]of y){let C=Math.max(A(v),A(O));for(let[B,_]of[[v,O],[O,v]]){k.set(B,Math.max(k.get(B)??0,C));let z={frame:u,with:_,speed:C};B.collisions.push(z),B===v&&this.allCollisions.push({...z,body:v})}}}let S=Math.exp(-1/this.impactDecay),P=0;for(let w of s){let A=Math.max((k.get(w)??0)/this.impactReference,(e.level.get(w)??0)*S);e.level.set(w,A),w.recording.channel("impact")[u]=A,A>P&&(P=A)}this.worldRecording.channel("impact")[u]=P,e.current=n}bind(e){let n=e.layer,r=e.output??(this.bakeDefault?"keyframes":"signals");if(typeof n?.animate!="function"||r==="none"||e.type==="fixed")return;let i=e.boundChannels();if(r==="keyframes"&&this.liveMode)throw new Error('Physics: live worlds bind signals; drop `output: "keyframes"` or use simulate().');if(r==="signals"){let s=ne.create();for(let[u,c]of i)s.signal(u,e.recording.signal(c));n.animate(s);return}let o=this.bakeDefault?.tolerance??.25,a=ne.create();for(let[s,u]of i){let m=e.recording.channel(u).subarray(this.startFrame),d=Tg[s]??1;a.keys(s,Cg(m,o*d))}n.animate(a)}};function Dg(t,e,n){return t.map((r,i)=>r+(e[i]-r)*n)}var Qa=(t,e)=>t===void 0?e:typeof t=="number"?[t,t]:t,lr=class extends Yt{op="Particles";particleStatic;particleState;options;constructor(e){super({}),this.options=e;let n=e.emitter??{},r=s=>typeof s=="number"?s:void 0,i=e.width,o=e.height,a=(Array.isArray(e.color)?e.color:[e.color??"#ffffff"]).map(s=>{let u=Cs(s);return[u.r,u.g,u.b,u.a]});this.particleStatic={max:Math.max(1,Math.round(e.max??2e4)),seed:Math.round(e.seed??1)>>>0,layer:{x:e.x??0,y:e.y??0,width:i,height:o},emitter:{shape:n.shape??"rect",x:r(n.x)??(n.shape==="circle"||n.shape==="ring"||n.shape==="point"?i/2:0),y:r(n.y)??(n.shape==="circle"||n.shape==="ring"||n.shape==="point"?o/2:0),width:n.width??i,height:n.height??(n.shape==="line"?0:o),radius:n.radius??Math.min(i,o)/4,radial:n.radial??!1},lifetime:Qa(e.lifetime,[2,4]),speed:Qa(e.speed,[40,160]),direction:e.direction??-90,spread:e.spread??360,bounds:e.bounds??"none",floor:e.floor??null,bounce:e.bounce??.3,size:Qa(e.size,[6,0]),sizeJitter:e.sizeJitter??.5,fade:e.fade??[.1,.3],shape:e.shape??"circle",stretch:e.stretch??.04,blend:e.blend??"normal",colors:a.slice(0,8),colorBySpeed:e.colorBySpeed??null,opacity:e.opacity??1,substeps:e.substeps??2,prewarm:e.prewarm??0}}particleFrame(e,n){let r=this.options,i=(g,y)=>g===void 0?y:ze(g,e,n),o=e-(r.startFrame??0),a=(r.emitter?.bursts??[]).filter(g=>Math.round(g.frame)===o).reduce((g,y)=>g+y.count,0),s=r.gravity,u=Array.isArray(s)?[i(s[0],0),i(s[1],0)]:[0,i(s,0)],c=null;r.push&&(c={strength:i(r.push.strength,6e3),sweep:i(r.push.sweep,6e4),mask:r.push.person.silhouetteGrid(e),previous:r.push.person.silhouetteGrid(Math.max(0,e-1))});let m=r.emitter?.x,d=r.emitter?.y,p=m!==void 0&&typeof m!="number"||d!==void 0&&typeof d!="number",f=g=>({x:m===void 0?this.particleStatic.emitter.x:ze(m,g,n),y:d===void 0?this.particleStatic.emitter.y:ze(d,g,n)}),b;if(p){let g=f(e),y=f(Math.max(0,e-1));b={x:g.x,y:g.y,previousX:y.x,previousY:y.y}}return{...b&&{emitter:b},rate:i(r.emitter?.rate,1e3),burst:a,gravity:u,drag:i(r.drag,.4),noise:{strength:i(r.noise?.strength,0),scale:r.noise?.scale??300,speed:r.noise?.speed??.3},attractors:(r.attractors??[]).map(g=>({x:i(g.x,0),y:i(g.y,0),strength:i(g.strength,0),radius:g.radius??200})),push:c}}};h();var ve=Mn(bd(),1);h();var Si=Mn(rm(),1);function Ja(t,e=24,n){let r=t.fps??e;if(r<=0)throw new Error(`[FrameGrid] Invalid fps: ${r}. Must be > 0.`);let i=[];if(Array.isArray(t.frames)&&t.frames.length>0)for(let a of t.frames){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid frame index in frames list: ${a}`);i.push({frame:Math.round(a),timeMs:Math.round(a/r*1e3)})}else if(Array.isArray(t.timesMs)&&t.timesMs.length>0)for(let a of t.timesMs){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid timestamp in timesMs list: ${a}`);i.push({frame:Math.round(a/1e3*r),timeMs:Math.round(a)})}else if(t.startMs!==void 0||t.endMs!==void 0||t.stepMs!==void 0){let a=t.startMs??0,s=t.endMs??n??a+1e3,u=t.stepMs??Math.round(5/r*1e3);if(a<0||s<a)throw new Error(`[FrameGrid] Invalid millisecond range: startMs=${a}, endMs=${s}. startMs must be <= endMs.`);if(u<=0)throw new Error(`[FrameGrid] Invalid stepMs: ${u}. Must be > 0.`);for(let c=a;c<=s;c+=u)i.push({frame:Math.round(c/1e3*r),timeMs:Math.round(c)})}else{let a=t.startFrame??0,s=t.endFrame??(n?Math.min(a+30,Math.floor(n/1e3*r)):a+30),u=t.stepFrames??5;if(a<0||s<a)throw new Error(`[FrameGrid] Invalid frame range: startFrame=${a}, endFrame=${s}. startFrame must be <= endFrame.`);if(u<=0)throw new Error(`[FrameGrid] Invalid stepFrames: ${u}. Must be > 0.`);for(let c=a;c<=s;c+=u)i.push({frame:Math.round(c),timeMs:Math.round(c/r*1e3)})}let o=Math.min(t.maxFrames??64,120);if(i.length>o)throw new Error(`[FrameGrid] Requested ${i.length} frames exceeds the safety threshold of ${o}. Increase stepFrames/stepMs or narrow the start/end range to prevent oversized images.`);if(i.length===0)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:i,fps:r}}function es(t,e,n){let r=n.gap??12,i=n.padding??16,a=n.showHeader??!0?54:0,s=n.maxGridWidth??4096,u=n.maxGridHeight??4096,c=n.columns;(!c||c<=0)&&(t<=4?c=t:t<=9?c=3:t<=16?c=4:t<=25?c=5:c=6),c=Math.min(c,t);let m=Math.ceil(t/c),d=Math.max(120,Math.min(n.cellWidth??320,960)),p=n.cellHeight??Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*r+i*2,b=m*p+(m-1)*r+i*2+a;if(f>s||b>u){let g=Math.min((s-(c-1)*r-i*2)/(c*d),(u-(m-1)*r-i*2-a)/(m*p));if(g<.25)throw new Error(`[FrameGrid] Cannot fit ${t} cells (${c}x${m}) into max dimensions [${s}x${u}]. Reduce cell count or decrease cellWidth.`);d=Math.max(100,Math.floor(d*g)),p=Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*r+i*2,b=m*p+(m-1)*r+i*2+a}return{columns:c,rows:m,cellWidth:d,cellHeight:p,totalWidth:f,totalHeight:b,headerHeight:a,gap:r,padding:i}}async function cr(t,e={}){let n=t.fps??24,r=t.durationMs,{samples:i,fps:o}=Ja(e,n,r),a=t.width??1920,s=t.height??1080,u=a>0&&s>0?a/s:16/9,c=es(i.length,u,e),m=e.renderer??new ve.HeadlessMediaRenderer,d=[];for(let y of i){let k=await t.renderFrame({frame:y.frame,atMs:y.timeMs,fps:o,renderer:m});d.push(k)}let p=new Si.Canvas(c.totalWidth,c.totalHeight),f=p.getContext("2d");if(f.fillStyle=e.backgroundColor??"#090a0f",f.fillRect(0,0,c.totalWidth,c.totalHeight),e.showHeader!==!1&&c.headerHeight>0){let y=e.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,k=`${a}\xD7${s} @ ${o} FPS | Cell: ${c.cellWidth}\xD7${c.cellHeight}px | Step: ${e.stepFrames?`${e.stepFrames}f`:e.stepMs?`${e.stepMs}ms`:"Custom"}`;f.fillStyle="#f8fafc",f.font="bold 15px sans-serif",f.fillText(y,c.padding,c.padding+18),f.fillStyle="#94a3b8",f.font="12px sans-serif",f.fillText(k,c.padding,c.padding+36),f.strokeStyle="#1e2433",f.lineWidth=1,f.beginPath(),f.moveTo(c.padding,c.padding+46),f.lineTo(c.totalWidth-c.padding,c.padding+46),f.stroke()}let b=e.showLabels??!0;for(let y=0;y<i.length;y++){let k=i[y],S=y%c.columns,P=Math.floor(y/c.columns),w=c.padding+S*(c.cellWidth+c.gap),A=c.padding+c.headerHeight+P*(c.cellHeight+c.gap),v=await(0,Si.loadImage)(d[y]);if(f.drawImage(v,w,A,c.cellWidth,c.cellHeight),f.strokeStyle="#262b3d",f.lineWidth=1,f.strokeRect(w,A,c.cellWidth,c.cellHeight),b){let O=`F:${k.frame} \u2022 ${k.timeMs}ms`;f.font="bold 11px sans-serif";let B=f.measureText(O).width+14,_=20,z=w+6,F=A+6;f.fillStyle="#090a0fee",f.beginPath(),f.roundRect(z,F,B,_,4),f.fill(),f.strokeStyle="#6366f155",f.lineWidth=1,f.stroke(),f.fillStyle="#e2e8f0",f.fillText(O,z+7,F+14)}}let g=await p.toBuffer("png");return e.outputPath&&await Cn.writeFile(e.outputPath,g),g}h();var Og=["material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function dr(t){let e=t,n={};for(let r of Og)e[r]!==void 0&&(n[r]=e[r]);return n}function Rg(t){return t==="lit"||t==="unlit"||t==="toon"?t:void 0}function ts(t,e,n){let r=Object.fromEntries(Object.entries({...e,color:n.color,material:Rg(n.material),shininess:n.shininess,roughness:n.roughness,metallic:n.metallic}).filter(([,i])=>i!==void 0));return L.model({id:n.id??Q(t),modelData:Bs(r),primitive3d:r,is3D:!0,x:n.x??0,y:n.y??0,z:n.z??0,rotateX:n.rotateX??0,rotateY:n.rotateY??0,rotateZ:n.rotateZ??0,scale:n.scale??1,scaleX:n.scaleX??1,scaleY:n.scaleY??1,scaleZ:n.scaleZ??1,opacity:n.opacity??1,color:n.tint,material:n.material,shininess:n.shininess??32,roughness:n.roughness,specularIntensity:n.specularIntensity??.5,ambientIntensity:n.ambientIntensity??1,metallic:n.metallic,...dr({emissive:n.emissive,emissiveIntensity:n.emissiveIntensity,castShadow:n.castShadow}),twoSided:!1,startFrame:n.startFrame,durationFrames:n.durationFrames})}function ki(t,e){let n=e.faces??e.items??[];for(let[r,i]of Object.entries(e))Object.defineProperty(t,r,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(t,Symbol.iterator,{value:function*(){yield*n},enumerable:!1,configurable:!0}),t}function Fg(t){let e=t.scale??1,n=Math.max(Math.abs(e*(t.scaleX??1)),Math.abs(e*(t.scaleY??1)));return n>0?n:1}var ot={cube(t){let e=t.size,[n,r,i]=typeof e=="number"?[e,e,e]:e,o=t.twoSided??!0,a={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},s=(f,b,g,y,k,S)=>{if(b&&typeof b=="object"&&"kind"in b){let w=b;return w.position="absolute",w.is3D=!0,w.twoSided=o,w.material=w.material??t.material??"lit",w.shininess=w.shininess??t.shininess??32,w.specularIntensity=w.specularIntensity??t.specularIntensity??.5,t.roughness!==void 0&&w.roughness===void 0&&(w.roughness=t.roughness),t.metallic!==void 0&&w.metallic===void 0&&(w.metallic=t.metallic),t.ambientIntensity!==void 0&&w.ambientIntensity===void 0&&(w.ambientIntensity=t.ambientIntensity),Object.assign(w,S),w}let P=typeof b=="string"?{background:b}:b??{background:g};return L.box({id:`${t.id??"cube"}-${f}`,position:"absolute",width:y,height:k,is3D:!0,twoSided:o,material:P.material??t.material??"lit",shininess:P.shininess??t.shininess??32,specularIntensity:P.specularIntensity??t.specularIntensity??.5,roughness:P.roughness??t.roughness,metallic:P.metallic??t.metallic,ambientIntensity:P.ambientIntensity??t.ambientIntensity??1,...dr({emissive:P.emissive??t.emissive,emissiveIntensity:P.emissiveIntensity??t.emissiveIntensity,castShadow:P.castShadow??t.castShadow}),background:P.background??g,borderRadius:P.borderRadius??0,borderWidth:P.borderWidth,borderColor:P.borderColor,opacity:P.opacity??1,children:P.children??[],...S})},u=n/2,c=r/2,m=i/2,d=[s("front",t.faces?.front,a.front,n,r,{x:0,y:0,z:-m,rotateX:0,rotateY:0,rotateZ:0}),s("back",t.faces?.back,a.back,n,r,{x:0,y:0,z:m,rotateX:0,rotateY:180,rotateZ:0}),s("left",t.faces?.left,a.left,i,r,{x:-u,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),s("right",t.faces?.right,a.right,i,r,{x:u,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),s("top",t.faces?.top,a.top,n,i,{x:0,y:-c,z:0,rotateX:-90,rotateY:0,rotateZ:0}),s("bottom",t.faces?.bottom,a.bottom,n,i,{x:0,y:c,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=L.box({id:t.id??Q("cube"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:n,height:r,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:d});return ki(p,{faces:d})},carousel(t){let{items:e,radius:n,faceInward:r=!1,twoSided:i=!0}=t,o=e.length,a=o>0?360/o:0,s=e.map((c,m)=>{let d=m*a,p=d*Math.PI/180,f=n*Math.sin(p),b=-n*Math.cos(p),g=r?180-d:-d,y=c;return y.position="absolute",y.is3D=!0,y.twoSided=i,y.x=f,y.y=0,y.z=b,y.rotateY=g,y}),u=L.box({id:t.id??Q("carousel"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:t.itemWidth??200,height:t.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:s});return ki(u,{items:s})},prism(t){let{sides:e,radius:n,height:r,twoSided:i=!0}=t,o=Math.max(3,e),a=2*n*Math.tan(Math.PI/o),s=360/o,u=[];for(let m=0;m<o;m++){let d=m*s,p=d*Math.PI/180,f=n*Math.sin(p),b=n*Math.cos(p),g=t.sideConfigs?.[m],y=typeof g=="string"?g:g?.background??`hsl(${m*360/o}, 70%, 50%)`;u.push(L.box({id:`${t.id??"prism"}-panel-${m}`,position:"absolute",width:a,height:r,is3D:!0,twoSided:i,x:f,y:0,z:b,rotateY:d,background:y}))}let c=L.box({id:t.id??Q("prism"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:a,height:r,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:u});return ki(c,{faces:u})},plane(t){return L.box({id:t.id??Q("plane"),position:"absolute",width:t.width,height:t.height,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:t.background??"#3b82f6",borderRadius:t.borderRadius??0,opacity:t.opacity??1,...dr(t),children:t.children??[]})},grid(t){let{width:e,height:n}=t,r=t.id??Q("grid"),i=Math.max(1,Math.round(t.divisions??10)),o=t.lineWidth??2,a=t.color??"rgba(59, 130, 246, 0.5)",s=(p,f,b,g,y)=>L.box({id:`${r}-${p}`,position:"absolute",x:f,y:b,z:0,width:g,height:y,is3D:!0,twoSided:!0,material:"unlit",background:a}),u=4096,c=[],m=Math.ceil(n/u),d=Math.ceil(e/u);for(let p=0;p<=i;p++){let f=p/i-.5;for(let b=0;b<m;b++){let g=n/m,y=-n/2+g*(b+.5);c.push(s(`v${p}-${b}`,f*e,y,o,g))}for(let b=0;b<d;b++){let g=e/d,y=-e/2+g*(b+.5);c.push(s(`h${p}-${b}`,y,f*n,g,o))}}return L.box({id:r,position:"absolute",width:e,height:n,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??90,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:"transparent",opacity:t.opacity??1,children:c})},text(t){return t.extrusionDepth&&t.extrusionDepth>0?ot.extrudedText({...t,depth:t.extrusionDepth}):L.text(t.text,{id:t.id??Q("text3d"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,fontSize:t.fontSize??48,fontFamily:t.fontFamily,fontWeight:t.fontWeight??"bold",fontStyle:t.fontStyle,fill:t.fill??"#ffffff",align:t.align??"center",direction:t.direction,verticalAlign:t.verticalAlign??"middle",letterSpacing:t.letterSpacing,lineHeight:t.lineHeight,material:t.material??"lit",shininess:t.shininess??64,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...dr(t),opacity:t.opacity??1,background:t.background,borderRadius:t.borderRadius,padding:t.padding,stroke:t.stroke,strokeWidth:t.strokeWidth})},extrudedText(t){let{depth:e,text:n,fill:r="#ffffff",bevelColor:i}=t,o,a=(t.curveTolerance??.1)/Fg(t),s=(t.fontFamily?Xt.getParsed(t.fontFamily):null)??Xt.getParsed("Inter")??Xt.getParsed("Unbounded")??Xt.getFirstParsed();s&&(o=Fs({text:n,font:s,fontSize:t.fontSize??48,depth:e,fill:r,bevelColor:i,curveSegments:t.curveSegments,curveTolerance:a,align:t.align,direction:t.direction,verticalAlign:t.verticalAlign,letterSpacing:t.letterSpacing,material:t.material==="lit"||t.material==="unlit"||t.material==="toon"?t.material:void 0,shininess:t.shininess,roughness:t.roughness,metallic:t.metallic}).modelData);let u=L.model({id:t.id??Q("extruded-text"),modelData:o,is3D:!0,x:t.x??0,y:t.y??0,z:t.z??0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,material:t.material,shininess:t.shininess??32,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...dr(t),twoSided:t.twoSided??!0,text3dOptions:{...t,curveTolerance:a}});return ki(u,{faces:[u],items:[u]})},roundedBox(t){return ts("rounded-box",{type:"roundedBox",width:t.width,height:t.height,depth:t.depth,radius:t.radius,segments:t.segments,taper:t.taper},t)},sphere(t){return ts("sphere",{type:"sphere",radius:t.radius,segments:t.segments},t)},cylinder(t){return ts("cylinder",{type:"cylinder",radius:t.radius,radiusTop:t.radiusTop,radiusBottom:t.radiusBottom,height:t.height,segments:t.segments,openEnded:t.openEnded},t)},model(t={}){return L.model(t)},obj(t,e={}){return L.obj(t,e)},fbx(t,e={}){return L.fbx(t,e)},gltf(t,e={}){return L.gltf(t,e)},glb(t,e={}){return L.glb(t,e)},stl(t,e={}){return L.stl(t,e)},ply(t,e={}){return L.ply(t,e)},vox(t,e={}){return L.vox(t,e)},threeDS(t,e={}){return L.threeDS(t,e)},off(t,e={}){return L.off(t,e)}};h();var ns=(t,e,n)=>{switch(t){case"left":return{dx:-e,dy:0};case"right":return{dx:e,dy:0};case"up":return{dx:0,dy:-n};default:return{dx:0,dy:n}}};function at(t,e,n){return{kind:t,frames:Math.max(0,Math.round(e)),build:n}}var yd={cut:()=>at("cut",0,()=>({})),crossfade:(t=15,e="sine.inOut")=>at("crossfade",t,n=>({incoming:ne.keys("opacity",[[0,0],[n.frames,1,e]])})),fadeThrough:(t=20,e="sine.inOut")=>at("fadeThrough",t,n=>{let r=Math.max(1,Math.floor(n.frames/2));return{outgoing:ne.keys("opacity",[[n.outStart,1],[n.outStart+r,0,e]]),incoming:ne.keys("opacity",[[0,0],[r,0],[n.frames,1,e]])}}),push:(t="left",e=18,n="power3.inOut")=>at("push",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=ne.create(),s=ne.create();return i!==0?(a.keys("x",[[r.outStart,r.outRest.x],[r.outStart+r.frames,r.outRest.x+i,n]]),s.keys("x",[[0,r.inRest.x-i],[r.frames,r.inRest.x,n]])):(a.keys("y",[[r.outStart,r.outRest.y],[r.outStart+r.frames,r.outRest.y+o,n]]),s.keys("y",[[0,r.inRest.y-o],[r.frames,r.inRest.y,n]])),{outgoing:a,incoming:s}}),slide:(t="left",e=18,n="power3.out")=>at("slide",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=i!==0?"x":"y",s=i!==0?r.inRest.x:r.inRest.y;return{outgoing:ne.keys("opacity",[[r.outStart,1],[r.outStart+r.frames,.6,n]]),incoming:ne.keys(a,[[0,s-(i||o)],[r.frames,s,n]])}}),zoom:(t=18,e="power2.inOut")=>at("zoom",t,n=>({outgoing:ne.create().keys("scale",[[n.outStart,1],[n.outStart+n.frames,1.25,e]]).keys("opacity",[[n.outStart,1],[n.outStart+n.frames,0,e]]),incoming:ne.create().keys("scale",[[0,.85],[n.frames,1,e]]).keys("opacity",[[0,0],[n.frames,1,e]])})),whip:(t="left",e=10)=>{let n=yd.push(t,e,"expo.inOut");return at("whip",e,r=>({...n.build(r),sceneProps:{motionBlurShutter:360}}))},wipe:(t="left",e=18,n="power2.inOut")=>at("wipe",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=i!==0?"x":"y",s=i!==0?r.inRest.x:r.inRest.y;return{incomingMatte:L.box({id:Q("wipe-matte"),position:"absolute",x:r.inRest.x,y:r.inRest.y,width:r.width,height:r.height,background:"#ffffff"}).animate(ne.keys(a,[[0,s-(i||o)],[r.frames,s,n]]))}}),iris:(t=20,e={})=>at("iris",t,n=>{let[r,i]=e.at??[.5,.5],o=n.inRest.x+r*n.width,a=n.inRest.y+i*n.height,s=Math.hypot(Math.max(r,1-r)*n.width,Math.max(i,1-i)*n.height);return{incomingMatte:L.shape("circle",{id:Q("iris-matte"),position:"absolute",x:o-s,y:a-s,width:s*2,height:s*2,fillColor:"#ffffff"}).animate(ne.keys("scale",[[0,0],[n.frames,1,e.ease??"power2.inOut"]]))}})};function Pi(t,e,n){let r=t[e];return typeof r=="number"?r:n}function xd(t,e={}){let n=[],r=[],i=0;t.forEach((a,s)=>{let u=s===0?void 0:a.transition,c=Math.min(u?.frames??0,t[s-1]?.duration??0),m=Math.max(0,i-c),d=Math.max(1,Math.round(a.duration));r.push(m);let p=a.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=m,p.durationFrames=d,n.push(p),i=m+d}),t.forEach((a,s)=>{if(s===0||!a.transition||a.transition.frames===0)return;let u=n[s-1],c=n[s],m=Math.min(a.transition.frames,t[s-1].duration),d=e.width??Pi(c,"width",1920),p=e.height??Pi(c,"height",1080),f=a.transition.build({width:d,height:p,frames:m,outStart:t[s-1].duration-m,outRest:{x:typeof u.x=="number"?u.x:0,y:typeof u.y=="number"?u.y:0},inRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0}}),b=(g,y)=>{if(!y)return;let k=g.animation?.tracks??[];g.animation=ne.merge({tracks:k},y).toSpec()};b(u,f.outgoing),b(c,f.incoming),f.sceneProps&&(Object.assign(u,f.sceneProps),Object.assign(c,f.sceneProps)),f.incomingMatte&&(c.matte={node:f.incomingMatte,mode:"alpha"})});let o=L.box({id:e.id??Q("sequence"),position:"absolute",x:0,y:0,width:e.width??Pi(n[0]??{},"width",1920),height:e.height??Pi(n[0]??{},"height",1080),startFrame:e.startFrame??0,durationFrames:Math.max(1,i),children:n});return Object.defineProperty(o,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(o,"sceneStarts",{value:r,enumerable:!1}),o}h();var Bg={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function Lg([t,e,n],r){let i=r*Math.PI/180,o=Math.cos(i),a=Math.sin(i);return[o*t+a*n,e,-a*t+o*n]}function wd(t,e,n,r){let[i,o,a]=Lg(t,r),s=Math.hypot(i,o,a)||1;return{x:e[0]+i/s*n,y:e[1]+o/s*n,z:e[2]+a/s*n,targetX:e[0],targetY:e[1],targetZ:e[2]}}function Mi(t,e){let n=Bg[t],r=e.target??[960,540,0],i=e.distance??1600,o=e.rotation??0,a=e.intensity??1,s=e.id??Q(`lighting-${t}`),u=[st.environment(n.environment,{id:`${s}-environment`,intensity:n.envIntensity*a,rotation:o,exposure:e.exposure,toneMapping:e.toneMapping,fog:e.fog,bloom:e.bloom}),st.directional({id:`${s}-key`,color:n.key.color,intensity:n.key.intensity*a,...wd(n.key.dir,r,i,o),castShadow:e.shadows??!0,shadowSoftness:e.shadowSoftness??3})];for(let[c,m]of[["rim",n.rim],["fill",n.fill]])m&&u.push(st.directional({id:`${s}-${c}`,color:m.color,intensity:m.intensity*a,...wd(m.dir,r,i,o)}));return u}var Eg={studio:(t={})=>Mi("studio",t),soft:(t={})=>Mi("soft",t),sunset:(t={})=>Mi("sunset",t),dramatic:(t={})=>Mi("dramatic",t)};h();h();var Ig="@dimforge/rapier2d-deterministic-compat",Vg="@dimforge/rapier3d-deterministic-compat";async function vd(t,e){let n;try{n=await e()}catch(i){throw new Error(`Physics needs the optional dependency "${t}". Install it with \`npm i ${t}\`.`,{cause:i})}let r=n.default??n;return await r.init(),r}var Sd,kd;async function os(t){if(t===2){Sd??=vd(Ig,()=>import("./rapier-JD7KNQRV.mjs"));let n=await Sd;return{createWorld2D:r=>new rs(n,r),createWorld3D:()=>{throw new Error("This backend was loaded for 2D.")}}}kd??=vd(Vg,()=>import("./rapier-AHBIGHEL.mjs"));let e=await kd;return{createWorld2D:()=>{throw new Error("This backend was loaded for 3D.")},createWorld3D:n=>new is(e,n)}}var rs=class{constructor(e,n){this.R=e;this.world=new e.World({x:n[0],y:n[1]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let n=this.R,r=Pd(n,e.type).setTranslation(e.position[0],e.position[1]).setRotation(e.angle).setLinvel(e.velocity[0],e.velocity[1]).setAngvel(e.angularVelocity).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation&&r.lockRotations();let i=this.world.createRigidBody(r),o=this.world.createCollider(zg(n,e.shape).setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(n.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),i),a={raw:i,position:()=>{let s=i.translation();return[s.x,s.y]},rotation:()=>i.rotation(),velocity:()=>{let s=i.linvel();return[s.x,s.y]},angularVelocity:()=>i.angvel(),sleeping:()=>i.isSleeping(),mass:()=>i.mass(),setEnabled:s=>i.setEnabled(s),applyImpulse:([s,u])=>i.applyImpulse({x:s,y:u},!0),setKinematicTarget:([s,u],c)=>{i.setNextKinematicTranslation({x:s,y:u}),i.setNextKinematicRotation(c)}};return this.byCollider.set(o.handle,a),a}addJoint(e,n,r){let i=this.R,o={x:r.anchorA[0],y:r.anchorA[1]},a={x:r.anchorB[0],y:r.anchorB[1]},s;switch(r.type){case"revolute":case"spherical":s=i.JointData.revolute(o,a);break;case"fixed":s=i.JointData.fixed(o,0,a,0);break;case"rope":s=i.JointData.rope(r.length,o,a);break;case"spring":s=i.JointData.spring(r.restLength,r.stiffness,r.damping,o,a);break}this.world.createImpulseJoint(s,Ti(e),Ti(n),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((n,r,i)=>{if(!i)return;let o=this.byCollider.get(n),a=this.byCollider.get(r);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}},is=class{constructor(e,n){this.R=e;this.world=new e.World({x:n[0],y:n[1],z:n[2]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let n=this.R,[r,i,o,a]=e.rotation,s=Pd(n,e.type).setTranslation(e.position[0],e.position[1],e.position[2]).setRotation({x:r,y:i,z:o,w:a}).setLinvel(e.velocity[0],e.velocity[1],e.velocity[2]).setAngvel(xn(e.lockRotation?[0,0,0]:e.angularVelocity.map((p,f)=>e.enabledRotations&&!e.enabledRotations[f]?0:p))).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation?s.lockRotations():e.enabledRotations&&s.enabledRotations(...e.enabledRotations);let u=this.world.createRigidBody(s),c=jg(n,e.shape),m=this.world.createCollider(c.setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(n.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),u),d={raw:u,position:()=>{let p=u.translation();return[p.x,p.y,p.z]},rotation:()=>{let p=u.rotation();return[p.x,p.y,p.z,p.w]},velocity:()=>{let p=u.linvel();return[p.x,p.y,p.z]},angularVelocity:()=>{let p=u.angvel();return[p.x,p.y,p.z]},sleeping:()=>u.isSleeping(),mass:()=>u.mass(),setEnabled:p=>u.setEnabled(p),applyImpulse:p=>u.applyImpulse(xn(p),!0),setKinematicTarget:(p,[f,b,g,y])=>{u.setNextKinematicTranslation(xn(p)),u.setNextKinematicRotation({x:f,y:b,z:g,w:y})}};return this.byCollider.set(m.handle,d),d}addJoint(e,n,r){let i=this.R,o=xn(r.anchorA),a=xn(r.anchorB),s;switch(r.type){case"revolute":s=i.JointData.revolute(o,a,xn(r.axis??[0,0,1]));break;case"spherical":s=i.JointData.spherical(o,a);break;case"fixed":{let u={x:0,y:0,z:0,w:1};s=i.JointData.fixed(o,u,a,u);break}case"rope":s=i.JointData.rope(r.length,o,a);break;case"spring":s=i.JointData.spring(r.restLength,r.stiffness,r.damping,o,a);break}this.world.createImpulseJoint(s,Ti(e),Ti(n),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((n,r,i)=>{if(!i)return;let o=this.byCollider.get(n),a=this.byCollider.get(r);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}};function xn([t,e,n]){return{x:t,y:e,z:n}}function Ti(t){return t.raw}function Pd(t,e){let n=t.RigidBodyDesc;return e==="fixed"?n.fixed():e==="kinematic"?n.kinematicPositionBased():n.dynamic()}function zg(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let n=Math.min(e.radius??0,e.hx/2,e.hy/2);return n>0?t.ColliderDesc.roundCuboid(e.hx-n,e.hy-n,n):t.ColliderDesc.cuboid(e.hx,e.hy)}case"hull":{let n=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!n)throw new Error("Physics: could not build a convex hull for this shape.");return n}}}function jg(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let n=Math.min(e.radius??0,e.hx/2,e.hy/2,e.hz/2);return n>0?t.ColliderDesc.roundCuboid(e.hx-n,e.hy-n,e.hz-n,n):t.ColliderDesc.cuboid(e.hx,e.hy,e.hz)}case"cylinder":return t.ColliderDesc.cylinder(e.halfHeight,e.radius);case"hull":{let n=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!n)throw new Error("Physics: could not build a convex hull for this shape.");return n}}}h();var mr=class{constructor(e,n,r,i,o,a,s){this.world=e;this.type=r;this.layer=i;this.frame=o;this.options=a;this.sim=n,this.recording=s}world;type;layer;frame;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get rotation(){return this.recording.signal("rotation")}get centerX(){return this.recording.signal("centerX")}get centerY(){return this.recording.signal("centerY")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get speed(){return this.recording.signal("speed")}get angularVelocity(){return this.recording.signal("angularVelocity")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let n=this.options.follow;if(this.type!=="kinematic"||!n)return;let r=this.frame,i=this.world.fps,o=n.x===void 0?void 0:ze(n.x,e,i),a=n.y===void 0?void 0:ze(n.y,e,i),s=n.rotation===void 0?r.rotation:ze(n.rotation,e,i),u=this.initialLayerXY(),c=Cd(o??u[0],a??u[1],s,r),m=this.world.pixelsPerMeter;return{position:[c[0]/m,c[1]/m],rotation:s*Math.PI/180}}initialLayerXY(){let e=this.layer;return[Number(e?.x??0),Number(e?.y??0)]}record(e,n){let r=this.world.pixelsPerMeter,[i,o]=this.sim.position(),a=i*r,s=o*r,u=this.recording,c=u.channel("rotation"),m=this.sim.rotation()*180/Math.PI;c[e]=n<0?Wt(this.frame.rotation,m):Wt(c[n],m);let[d,p]=Wg(a,s,c[e],this.frame);u.channel("x")[e]=d,u.channel("y")[e]=p,u.channel("centerX")[e]=a,u.channel("centerY")[e]=s;let[f,b]=this.sim.velocity();u.channel("vx")[e]=f*r,u.channel("vy")[e]=b*r,u.channel("speed")[e]=Math.hypot(f,b)*r,u.channel("angularVelocity")[e]=this.sim.angularVelocity()*180/Math.PI,u.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"]];return this.options.lockRotation||e.push(["rotation","rotation"]),e}localAnchor(e){if(!e)return[0,0];let n=this.world.pixelsPerMeter,[r,i]=this.sim.position(),o=-this.sim.rotation(),a=e[0]/n-r,s=e[1]/n-i;return[a*Math.cos(o)-s*Math.sin(o),a*Math.sin(o)+s*Math.cos(o)]}center(){let e=this.world.pixelsPerMeter,[n,r]=this.sim.position();return[n*e,r*e]}},wn=class extends yn{constructor(e,n){let r=n.pixelsPerMeter??100,i=n.gravity??2400,o=typeof i=="number"?[0,i/r]:[i[0]/r,i[1]/r],a=e.createWorld2D(o);super(a,o,n)}body(e,n={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=$g(e,n),a=this.pixelsPerMeter,s=n.type??"dynamic",[u,c]=Cd(o.x,o.y,o.rotation,o),m=n.velocity??[0,0],d={type:s,position:[u/a,c/a],angle:o.rotation*Math.PI/180,velocity:[m[0]/a,m[1]/a],angularVelocity:(n.angularVelocity??0)*Math.PI/180,linearDamping:n.linearDamping??0,angularDamping:n.angularDamping??0,gravityScale:n.gravityScale??1,lockRotation:n.lockRotation??!1,ccd:n.ccd??!1,enabled:!0,sensor:n.sensor??!1,density:n.density??1,friction:n.friction??.6,restitution:n.restitution??.3,shape:Md(o.shape,1/a)},p=this.sim.addBody(d),f=new mr(this,p,s,i,o,n,this.newRecording());return this.addBody(f)}ground(e){return this.body({x:-1e6/2,y:e.y,width:1e6,height:2e3},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:n,height:r}=e,i=e.x??0,o=e.y??0,a=e.thickness??400,s={type:"fixed",friction:e.friction,restitution:e.restitution??.2},u=r*4+a,c={floor:this.body({x:i-a,y:o+r,width:n+2*a,height:a},s),left:this.body({x:i-a,y:o+r-u,width:a,height:u},s),right:this.body({x:i+n,y:o+r-u,width:a,height:u},s),ceiling:void 0};return e.ceiling&&(c.ceiling=this.body({x:i-a,y:o-a,width:n+2*a,height:a},s)),c}pin(e,n){let r=n??e.center(),i=this.anchorBody(r);return this.joint(e,i,{type:"revolute",anchorA:e.localAnchor(r),anchorB:[0,0]}),this}hinge(e,n,r){return this.joint(e,n,{type:"revolute",anchorA:e.localAnchor(r),anchorB:n.localAnchor(r)}),this}weld(e,n){let r=e.center();return this.joint(e,n,{type:"fixed",anchorA:[0,0],anchorB:n.localAnchor(r)}),this}spring(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=this.pixelsPerMeter,u=(r.length??Math.hypot(a[0]-o[0],a[1]-o[1]))/s,c=_g(e,i),m=2*Math.PI*(r.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:c*m*m,damping:2*(r.dampingRatio??.2)*c*m}),this}rope(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=r.length??Math.hypot(a[0]-o[0],a[1]-o[1]);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:s/this.pixelsPerMeter}),this}force(e,n){let r=this.pixelsPerMeter;return this.addForce(e,i=>[n.x===void 0?0:ze(n.x,i,this.fps)/r,n.y===void 0?0:ze(n.y,i,this.fps)/r]),this}field(e,n={}){let r=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s]=i.sim.position(),[u,c]=i.sim.velocity(),m=e({x:a*r,y:s*r,vx:u*r,vy:c*r,frame:o,body:i});return m?[m[0]/r,m[1]/r]:null},n.bodies),this}impulse(e,n,r){let i=this.pixelsPerMeter;return this.addImpulse(e,n,[r[0]/i,r[1]/i]),this}lerpRotation(e,n,r){return e+(n-e)*r}joint(e,n,r){this.assertOpen(),this.sim.addJoint(e.sim,n.sim,r)}anchorBody(e){return this.body({x:e[0]-.5,y:e[1]-.5,width:1,height:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,n,r,i){let o=r??e.center();if(Array.isArray(n)){let a=i??n;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:n,pa:o,pb:i??n.center()}}};function _g(t,e){let n=t.type==="dynamic"?t.sim.mass():0,r=e.type==="dynamic"?e.sim.mass():0;return n>0&&r>0?n*r/(n+r):Math.max(n,r,.001)}function Ze(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function $g(t,e){let n=typeof t.id=="string"?` "${t.id}"`:"";if(typeof t.x!="number"||typeof t.y!="number")throw new Error(`Physics: layer${n} needs numeric \`x\` and \`y\` (absolute position) to become a body.`);let r=e.size?.[0]??(typeof t.width=="number"?t.width:void 0),i=e.size?.[1]??(typeof t.height=="number"?t.height:void 0);if((r===void 0||i===void 0)&&t.kind==="text"){let s=Ie.measure(String(t.text??""),{fontFamily:String(t.fontFamily??"Inter"),fontSize:Ze(t.fontSize,48),fontWeight:t.fontWeight,letterSpacing:Ze(t.letterSpacing,0),lineHeight:typeof t.lineHeight=="number"?t.lineHeight:void 0});r??=s.width,i??=s.height}if(r===void 0||i===void 0||r<=0||i<=0)throw new Error(`Physics: layer${n} needs a numeric \`width\` and \`height\` (or the \`size\` option) to become a body.`);let o=Ze(t.scale,1);return{...{x:t.x,y:t.y,width:r,height:i,scale:o,anchorX:Ze(t.anchorX,.5),anchorY:Ze(t.anchorY,.5),rotation:Ze(t.rotation,0)},shape:Md(Ug(t,r,i,e.shape??"auto"),o)}}function Ug(t,e,n,r){let o=t.kind==="shape"?String(t.shapeType??"rect"):"rect",a=Ze(t.borderRadius,Ze(t.cornerRadius,0)),s={kind:"box",hx:e/2,hy:n/2,radius:a};if(r==="box")return s;if(r==="circle"||r==="auto"&&o==="circle")return{kind:"ball",radius:Math.min(e,n)/2};if(r==="auto"&&o==="rect")return s;if(r==="hull"||r==="auto"){let u=Gg(t,o,e,n);return u.length>=6?{kind:"hull",points:u}:s}return s}function Gg(t,e,n,r){let i=e==="path"?String(t.d??""):Ns({shapeType:e,width:n,height:r,cornerRadius:Ze(t.cornerRadius,Ze(t.borderRadius,0)),polygonSides:t.polygonSides,starPoints:t.starPoints,starInnerRadiusRatio:t.starInnerRadiusRatio,arrowHeadWidth:t.arrowHeadWidth,arrowHeadLength:t.arrowHeadLength,arrowShaftWidth:t.arrowShaftWidth}),o=[];for(let a of Ds(i))o.push(a.p0.x-n/2,a.p0.y-r/2,a.p1.x-n/2,a.p1.y-r/2);return o}function Md(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,radius:(t.radius??0)*e};case"hull":return{kind:"hull",points:t.points.map(n=>n*e)}}}function Td(t,e){let n=t*Math.PI/180,r=(.5-e.anchorX)*e.width*e.scale,i=(.5-e.anchorY)*e.height*e.scale;return[r*Math.cos(n)-i*Math.sin(n),r*Math.sin(n)+i*Math.cos(n)]}function Cd(t,e,n,r){let[i,o]=Td(n,r);return[t+r.anchorX*r.width+i,e+r.anchorY*r.height+o]}function Wg(t,e,n,r){let[i,o]=Td(n,r);return[t-i-r.anchorX*r.width,e-o-r.anchorY*r.height]}h();var St=Math.PI/180;function Dd(t,e,n){let r=s=>s*St/2,i=[Math.sin(r(t)),0,0,Math.cos(r(t))],o=[0,Math.sin(r(e)),0,Math.cos(r(e))],a=[0,0,Math.sin(r(n)),Math.cos(r(n))];return Ci(Ci(a,o),i)}function Ci(t,e){let[n,r,i,o]=t,[a,s,u,c]=e;return[o*a+n*c+r*u-i*s,o*s-n*u+r*c+i*a,o*u+n*s-r*a+i*c,o*c-n*a-r*s-i*u]}function Hg(t,e){let[n,r,i,o]=t,a=1-2*(r*r+i*i),s=2*(n*r+o*i),u=2*(n*i-o*r),c=2*(r*i+o*n),m=1-2*(n*n+r*r),d=2*(n*r-o*i),p=1-2*(n*n+i*i),f=Math.max(-1,Math.min(1,-u)),b;if(Math.abs(f)>.999999){let A=Math.asin(f),v=e?e[0]*St:0,O=Math.atan2(-d,p)+(f>0?v:-v);b=[v,A,O]}else b=[Math.atan2(c,m),Math.asin(f),Math.atan2(s,a)];let g=[b[0]/St,b[1]/St,b[2]/St];if(!e)return g;let y=[g[0]+180,180-g[1],g[2]+180],k=A=>[Wt(e[0],A[0]),Wt(e[1],A[1]),Wt(e[2],A[2])],S=k(g),P=k(y),w=A=>Math.abs(A[0]-e[0])+Math.abs(A[1]-e[1])+Math.abs(A[2]-e[2]);return w(S)<=w(P)?S:P}var pr=class{constructor(e,n,r,i,o,a,s){this.world=e;this.type=r;this.layer=i;this.start=o;this.options=a;this.sim=n,this.recording=s}world;type;layer;start;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get z(){return this.recording.signal("z")}get rotateX(){return this.recording.signal("rotateX")}get rotateY(){return this.recording.signal("rotateY")}get rotateZ(){return this.recording.signal("rotateZ")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get vz(){return this.recording.signal("vz")}get speed(){return this.recording.signal("speed")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let n=this.options.follow;if(this.type!=="kinematic"||!n)return;let r=this.world.fps,i=(u,c)=>u===void 0?c:ze(u,e,r),o=this.start.position,a=this.start.rotation,s=this.world.pixelsPerMeter;return{position:[i(n.x,o[0])/s,i(n.y,o[1])/s,i(n.z,o[2])/s],rotation:Dd(i(n.rotateX,a[0]),i(n.rotateY,a[1]),i(n.rotateZ,a[2]))}}record(e,n){let r=this.world.pixelsPerMeter,i=this.recording,[o,a,s]=this.sim.position();i.channel("x")[e]=o*r,i.channel("y")[e]=a*r,i.channel("z")[e]=s*r;let u=i.channel("rotateX"),c=i.channel("rotateY"),m=i.channel("rotateZ"),d=n<0?this.start.rotation:[u[n],c[n],m[n]],p=Hg(this.sim.rotation(),d);u[e]=p[0],c[e]=p[1],m[e]=p[2];let[f,b,g]=this.sim.velocity();i.channel("vx")[e]=f*r,i.channel("vy")[e]=b*r,i.channel("vz")[e]=g*r,i.channel("speed")[e]=Math.hypot(f,b,g)*r,i.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"],["z","z"]];return this.options.lockRotation!==!0&&e.push(["rotateX","rotateX"],["rotateY","rotateY"],["rotateZ","rotateZ"]),e}localAnchor(e){if(!e)return[0,0,0];let n=this.world.pixelsPerMeter,r=this.sim.position(),[i,o,a,s]=this.sim.rotation(),u=[e[0]/n-r[0],e[1]/n-r[1],e[2]/n-r[2]];return Yg(u,[-i,-o,-a,s])}center(){let e=this.world.pixelsPerMeter,[n,r,i]=this.sim.position();return[n*e,r*e,i*e]}};function Yg(t,e){let n=Ci(Ci(e,[t[0],t[1],t[2],0]),[-e[0],-e[1],-e[2],e[3]]);return[n[0],n[1],n[2]]}var vn=class extends yn{constructor(e,n){let r=n.pixelsPerMeter??100,i=n.gravity??2400,o=typeof i=="number"?[0,i/r,0]:[i[0]/r,i[1]/r,i[2]/r];super(e.createWorld3D(o),o,n)}body(e,n={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=e,a=[ue(o.x,0),ue(o.y,0),ue(o.z,0)],s=[ue(o.rotateX,0),ue(o.rotateY,0),ue(o.rotateZ,0)],u=this.pixelsPerMeter,c=n.type??"dynamic",m=n.velocity??[0,0,0],d=n.angularVelocity??[0,0,0],p={type:c,position:[a[0]/u,a[1]/u,a[2]/u],rotation:Dd(s[0],s[1],s[2]),velocity:[m[0]/u,m[1]/u,m[2]/u],angularVelocity:[d[0]*St,d[1]*St,d[2]*St],linearDamping:n.linearDamping??0,angularDamping:n.angularDamping??0,gravityScale:n.gravityScale??1,lockRotation:n.lockRotation===!0,...typeof n.lockRotation=="object"&&{enabledRotations:[!n.lockRotation.x,!n.lockRotation.y,!n.lockRotation.z]},ccd:n.ccd??!1,enabled:!0,sensor:n.sensor??!1,density:n.density??1,friction:n.friction??.6,restitution:n.restitution??.3,shape:Zg(Xg(o,n),1/u)},f=this.sim.addBody(p),b=new pr(this,f,c,i,{position:a,rotation:s},n,this.newRecording());return this.addBody(b)}ground(e){return this.body({x:0,y:e.y+2e3/2,z:0,width:1e6,height:2e3,depth:1e6},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:n,height:r,depth:i}=e,[o,a,s]=[e.x??0,e.y??0,e.z??0],u=e.thickness??400,c={type:"fixed",friction:e.friction,restitution:e.restitution??.2},m=r*4,d=a+r/2-m/2;return[this.body({x:o,y:a+r/2+u/2,z:s,width:n+2*u,height:u,depth:i+2*u},c),this.body({x:o-n/2-u/2,y:d,z:s,width:u,height:m,depth:i+2*u},c),this.body({x:o+n/2+u/2,y:d,z:s,width:u,height:m,depth:i+2*u},c),this.body({x:o,y:d,z:s-i/2-u/2,width:n,height:m,depth:u},c),this.body({x:o,y:d,z:s+i/2+u/2,width:n,height:m,depth:u},c)]}pin(e,n){let r=n??e.center(),i=this.anchorBody(r);return this.joint(e,i,{type:"spherical",anchorA:e.localAnchor(r),anchorB:[0,0,0]}),this}hinge(e,n,r,i=[0,0,1]){return this.joint(e,n,{type:"revolute",anchorA:e.localAnchor(r),anchorB:n.localAnchor(r),axis:i}),this}weld(e,n){return this.joint(e,n,{type:"fixed",anchorA:[0,0,0],anchorB:n.localAnchor(e.center())}),this}spring(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=this.pixelsPerMeter,u=(r.length??Ad(o,a))/s,c=e.type==="dynamic"?e.sim.mass():0,m=i.type==="dynamic"?i.sim.mass():0,d=c>0&&m>0?c*m/(c+m):Math.max(c,m,.001),p=2*Math.PI*(r.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:d*p*p,damping:2*(r.dampingRatio??.2)*d*p}),this}rope(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:(r.length??Ad(o,a))/this.pixelsPerMeter}),this}force(e,n){let r=this.pixelsPerMeter,i=(o,a)=>o===void 0?0:ze(o,a,this.fps)/r;return this.addForce(e,o=>[i(n.x,o),i(n.y,o),i(n.z,o)]),this}field(e,n={}){let r=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s,u]=i.sim.position(),[c,m,d]=i.sim.velocity(),p=e({x:a*r,y:s*r,z:u*r,vx:c*r,vy:m*r,vz:d*r,frame:o,body:i});return p?[p[0]/r,p[1]/r,p[2]/r]:null},n.bodies),this}impulse(e,n,r){let i=this.pixelsPerMeter;return this.addImpulse(e,n,[r[0]/i,r[1]/i,r[2]/i]),this}lerpRotation(e,n,r){let i=e[0]*n[0]+e[1]*n[1]+e[2]*n[2]+e[3]*n[3]<0?-1:1,o=e.map((s,u)=>s+(n[u]*i-s)*r),a=Math.hypot(...o)||1;return o.map(s=>s/a)}joint(e,n,r){this.assertOpen(),this.sim.addJoint(e.sim,n.sim,r)}anchorBody(e){return this.body({x:e[0],y:e[1],z:e[2],width:1,height:1,depth:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,n,r,i){let o=r??e.center();if(Array.isArray(n)){let a=i??n;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:n,pa:o,pb:i??n.center()}}};function Ad(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])}function ue(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function Xg(t,e){let n=typeof t.id=="string"?` "${t.id}"`:"",r=ue(t.scale,1),i=[r*ue(t.scaleX,1),r*ue(t.scaleY,1),r*ue(t.scaleZ,1)],o=i[0]===i[1]&&i[1]===i[2],a=t.primitive3d??{},s=e.shape??"auto",u=()=>{let g=qg(t.modelData);if(g)return{kind:"hull",points:g.map((y,k)=>y*i[k%3])}};if(e.size||s==="box"){let[g,y,k]=e.size??as(t,a)??[0,0,0];if(g>0&&y>0&&k>0)return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:a.type==="roundedBox"?ue(a.radius,0)*Math.min(...i):0}}if(s==="hull"){let g=u();if(g)return g}if((s==="sphere"||s==="auto"&&a.type==="sphere")&&(o||s==="sphere")){let g=ue(a.radius,0)||Math.max(...as(t,a)??[0])/2;if(g>0)return{kind:"ball",radius:g*Math.max(...i)}}let m=ue(a.radiusTop,ue(a.radius,0)),d=ue(a.radiusBottom,ue(a.radius,0));if((s==="cylinder"||s==="auto"&&a.type==="cylinder")&&m===d&&m>0&&i[0]===i[2])return{kind:"cylinder",halfHeight:ue(a.height,0)*i[1]/2,radius:m*i[0]};if(s==="auto"&&a.type==="roundedBox"&&(a.taper??1)===1){let[g,y,k]=[ue(a.width,0),ue(a.height,0),ue(a.depth,0)];return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:ue(a.radius,0)*Math.min(...i)}}let f=u();if(f)return f;let b=as(t,a);if(b)return{kind:"box",hx:b[0]*i[0]/2,hy:b[1]*i[1]/2,hz:b[2]*i[2]/2};throw new Error(`Physics: layer${n} has no mesh or size to build a 3D collider from; pass \`size: [w, h, d]\`.`)}function as(t,e){if(e.type==="roundedBox")return[ue(e.width,0),ue(e.height,0),ue(e.depth,0)];if(e.type==="sphere"){let n=ue(e.radius,0)*2;return[n,n,n]}if(e.type==="cylinder"){let n=Math.max(ue(e.radiusTop,ue(e.radius,0)),ue(e.radiusBottom,ue(e.radius,0)))*2;return[n,ue(e.height,0),n]}if(typeof t.width=="number"&&typeof t.height=="number"&&typeof t.depth=="number")return[t.width,t.height,t.depth]}function qg(t){let e=t?.meshes;if(!e?.length)return;let n=0;for(let a of e)n+=(a.positions?.length??0)/3;if(n<4)return;let r=Math.max(1,Math.floor(n/4096)),i=[],o=0;for(let a of e){let s=a.positions;if(s)for(let u=0;u<s.length;u+=3,o++)o%r===0&&i.push(s[u],s[u+1],s[u+2])}return i}function Zg(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,hz:t.hz*e,radius:(t.radius??0)*e};case"cylinder":return{kind:"cylinder",halfHeight:t.halfHeight*e,radius:t.radius*e};case"hull":return{kind:"hull",points:t.points.map(n=>n*e)}}}var Kg={async world2d(t){return new wn(await os(2),t)},async world3d(t){return new vn(await os(3),t)}};h();var ye=(...t)=>t,Qg={pixelArt:(t={})=>ye(new qt({palette:t.palette??"pico8",pixelSize:t.pixelSize??6,dither:.4})),gameBoy:(t={})=>ye(new qt({palette:"gameboy",pixelSize:t.pixelSize??4,dither:.6})),teletext:(t={})=>ye(new qt({palette:"teletext",pixelSize:t.pixelSize??10})),ledWall:(t={})=>ye(new io({size:t.size??14,shape:"circle",gap:.18})),ascii:(t={})=>ye(new qi({cellSize:t.cellSize??10,colorMode:t.matrix?"green":"source",bg:t.matrix?"#020a04":"#0b0b0b"})),oneBit:(t={})=>ye(new Ji({mode:"bayer",scale:t.scale??2,dark:t.dark??"#111111",light:t.light??"#f2efe6"})),risograph:(t={})=>{let e=t.inkA??"#1d3fbb",n=t.inkB??"#ff5fa2",r=t.paper??"#f4efe4";return ye(new Mt({stops:[{position:0,color:e},{position:.55,color:n},{position:1,color:r}]}),new qt({palette:"custom",colors:[e,n,r],dither:.8,pixelSize:2}),new Je({strength:.2}))},cartoon:(t={})=>ye(new Nr({levels:t.levels??4,edgeColor:t.ink??"#111111",saturation:1.3})),comic:(t={})=>ye(new Nr({levels:4,edgeWidth:1.5,saturation:1.4}),new On({frequency:t.dotFrequency??70,opacity:.35})),thermal:()=>ye(new Mt({stops:[{position:0,color:"#000010"},{position:.25,color:"#3b0a7a"},{position:.5,color:"#c4205f"},{position:.75,color:"#ff9a1f"},{position:1,color:"#fffbe0"}]})),vhs:(t={})=>ye(new Nn({tracking:t.tracking??.5,chroma:4,curvature:.04,scanlines:.25,mask:.05,noise:.15}),new Dr({amount:3})),crt:(t={})=>ye(new Nn({curvature:t.curvature??.15,scanlines:.5,mask:.35})),glitch:(t={})=>ye(new Dr({amount:t.amount??18}),new Nn({tracking:1,chroma:6,curvature:0,scanlines:.1,mask:0,vignette:0})),oilPainting:(t={})=>ye(new Ar({style:"oil",radius:t.brush??5})),watercolor:(t={})=>ye(new Ar({style:"watercolor",radius:t.brush??6,paper:.5})),topographic:(t={})=>ye(new Qi({levels:t.levels??16,fill:"flat",lineColor:t.ink??"#5a3a1a",fillColor:t.paper??"#f3ead8"})),kaleidoscope:(t={})=>ye(new to({segments:t.segments??8,rotation:t.rotation??0})),opArt:(t={})=>ye(new ro({pattern:t.pattern??"stripes",frequency:t.frequency??60})),holographic:(t={})=>ye(new eo({strength:t.strength??.7,shift:t.shift??0})),noir:()=>ye(new Mt({stops:[{position:0,color:"#000000"},{position:.55,color:"#8a8a8a"},{position:1,color:"#ffffff"}]}),new Je({strength:.35}),new Zt({strength:.6})),film:()=>ye(new Je({strength:.25}),new Zt({strength:.35}))};h();var Wd=Mn(im(),1),Ri=Mn(om(),1);var ds=Mn(Od(),1);h();var fr=G.dirname(kr(import.meta.url)),Rd=["import","meta","url"].join("."),Jg=Ii(import.meta.url),hr="/@framefields/engine",Bd={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts","framefields/components":"components/index.ts"},ss={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},Fd=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),eb=`
|
|
715
|
+
`)}:null}async function*_p(t,e){for await(let{event:n,data:r}of jp(t)){let i=JSON.parse(r);if(n==="error")throw new je({message:"The model stream ended with an error",status:500,body:i,requestId:e});yield i}}async function $l(t,{input:e,abortSignal:n}){let r=new AbortController,i=n?AbortSignal.any([n,r.signal]):r.signal,o=await na({service:"run",path:`${t}/stream`,body:await Ct.transformInput(e)??{},accept:"text/event-stream",signal:i}),a=o.headers.get("x-framefields-request-id")??"";if(!o.body)throw new je({message:"Empty stream",status:502,requestId:a});let s=_p(o.body,a),u,c;async function*m(){for await(let f of s)u=f,yield f}let d=m(),p=async()=>{let f=await d.next();for(;!f.done;)f=await d.next();if(u===void 0)throw new je({message:"Stream had no output",status:502,requestId:a});return u};return{requestId:a,[Symbol.asyncIterator]:()=>d,done:()=>(c??=p(),c),abort:()=>r.abort()}}async function $p(t,{input:e,abortSignal:n}){return rt({service:"run",path:t,body:await Ct.transformInput(e)??{},signal:n})}var Up={config(t){Dl(t.apiKey)},run:$p,subscribe:jl,stream:$l,queue:zl,storage:Ct};h();function Gp(t,...e){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i&&n.push({text:i}),r<e.length){let o=e[r];if(o==null)continue;if(Array.isArray(o))for(let a of o)typeof a=="string"?a&&n.push({text:a}):a&&typeof a=="object"&&"text"in a&&n.push(a);else typeof o=="object"&&"text"in o?n.push(o):typeof o=="object"&&"get"in o&&typeof o.get=="function"?n.push({text:o}):n.push({text:String(o)})}}return n}function Wp(t,e={}){return{text:t,...e}}function Hp(t,e={}){return{text:t,fontWeight:e.fontWeight??700,...e}}function Yp(t,e={}){return{text:t,fontStyle:"italic",...e}}function Xp(t,e={}){return{text:t,fill:e.fill??"#6366f1",...e}}function qp(t,e,n={}){return{text:t,fill:e,...n}}function Zp(t,e,n={}){return{text:t,fontSize:e,...n}}function Kp(t,e={}){let{bg:n,fill:r,radius:i,paddingX:o,paddingY:a,...s}=e;return{text:t,fill:r,mark:{background:n??"#6366f133",borderRadius:i??4,paddingX:o??6,paddingY:a??2},...s}}function Qp(t,e={}){return{text:t,baselineShift:e.baselineShift??-8,...e}}function Jp(t,e={}){return{text:t,baselineShift:e.baselineShift??6,...e}}function ef(t,e={}){return{text:t,fontFamily:e.fontFamily??"JetBrains Mono",mark:e.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...e}}function Yr(t){if(typeof t=="string")return{text:t};if(!Array.isArray(t))return{text:String(t)};let e=[],n="";for(let r of t)if(typeof r=="string")r&&(e.push({text:r}),n+=r);else if(r&&typeof r=="object"&&"text"in r){let i=r;e.push(i);let o=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");n+=o}return{text:n,spans:e.length>0?e:void 0}}function tf(t){if(!t||!t.includes("<"))return[{text:t}];let e=[],n=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,r=0,i=[],o=()=>{let s={};for(let u of i)Object.assign(s,u.style);return s};for(;;){let s=n.exec(t);if(!s)break;let u=t.slice(r,s.index);u&&e.push({text:u,...o()}),r=s.index+s[0].length;let c=s[1].toLowerCase(),m=s[2];if(c.startsWith("/")){let d=c.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===d){i.splice(p,1);break}}else{let d={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let b=p.exec(m);if(!b)break;d[b[1].toLowerCase()]=b[2]}let f={};if(c==="b"||c==="strong")f.fontWeight=700,(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="i"||c==="em")f.fontStyle="italic",(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="accent")f.fill="#6366f1";else if(c==="color")f.fill=d.value??d.hex??d.fill;else if(c==="size"){let b=parseFloat(d.value??d.px??d.pt??"0");b>0&&(f.fontSize=b)}else if(c==="mark")f.mark={background:d.bg??d.background??"#6366f133",borderRadius:d.radius?parseFloat(d.radius):4,paddingX:d.paddingx?parseFloat(d.paddingx):6,paddingY:d.paddingy?parseFloat(d.paddingy):2},(d.color||d.fill)&&(f.fill=d.color??d.fill);else if(c==="sup")f.baselineShift=-8;else if(c==="sub")f.baselineShift=6;else if(c==="code")f.fontFamily="JetBrains Mono",f.mark={background:d.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(c==="span"){if((d.color||d.fill)&&(f.fill=d.color??d.fill),d.fontfamily&&(f.fontFamily=d.fontfamily),d.fontsize&&(f.fontSize=parseFloat(d.fontsize)),d.fontweight){let b=parseInt(d.fontweight,10);f.fontWeight=Number.isNaN(b)?d.fontweight:b}(d.fontstyle==="italic"||d.fontstyle==="normal")&&(f.fontStyle=d.fontstyle),d.letterspacing&&(f.letterSpacing=parseFloat(d.letterspacing)),d.baselineshift&&(f.baselineShift=parseFloat(d.baselineshift)),d.opacity&&(f.opacity=parseFloat(d.opacity))}i.push({tag:c,style:f})}}let a=t.slice(r);return a&&e.push({text:a,...o()}),e}h();h();h();h();h();h();function Ul(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function At(t,e){if(!isFinite(t)||t===0)return null;var n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function He(t){return t=At(Math.abs(t)),t?t[1]:NaN}h();function Gl(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),o.push(n.substring(i-=s,i+s)),!((u+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}h();function Wl(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}h();var nf=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ft(t){if(!(e=nf.exec(t)))throw new Error("invalid format: "+t);var e;return new Xr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}ft.prototype=Xr.prototype;function Xr(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Xr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};h();function Hl(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}h();h();var Yn;function Yl(t,e){var n=At(t,e);if(!n)return Yn=void 0,t.toPrecision(e);var r=n[0],i=n[1],o=i-(Yn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+At(t,Math.max(0,e+o-1))[0]}h();function aa(t,e){var n=At(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var sa={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Ul,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>aa(t*100,e),r:aa,s:Yl,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};h();function ua(t){return t}var Xl=Array.prototype.map,ql=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Zl(t){var e=t.grouping===void 0||t.thousands===void 0?ua:Gl(Xl.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?ua:Wl(Xl.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(d,p){d=ft(d);var f=d.fill,b=d.align,g=d.sign,y=d.symbol,k=d.zero,S=d.width,P=d.comma,w=d.precision,A=d.trim,v=d.type;v==="n"?(P=!0,v="g"):sa[v]||(w===void 0&&(w=12),A=!0,v="g"),(k||f==="0"&&b==="=")&&(k=!0,f="0",b="=");var O=(p&&p.prefix!==void 0?p.prefix:"")+(y==="$"?n:y==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),C=(y==="$"?r:/[%p]/.test(v)?a:"")+(p&&p.suffix!==void 0?p.suffix:""),B=sa[v],_=/[defgprs%]/.test(v);w=w===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function z(F){var T=O,M=C,H,Y,$;if(v==="c")M=B(F)+M,F="";else{F=+F;var V=F<0||1/F<0;if(F=isNaN(F)?u:B(Math.abs(F),w),A&&(F=Hl(F)),V&&+F==0&&g!=="+"&&(V=!1),T=(V?g==="("?g:s:g==="-"||g==="("?"":g)+T,M=(v==="s"&&!isNaN(F)&&Yn!==void 0?ql[8+Yn/3]:"")+M+(V&&g==="("?")":""),_){for(H=-1,Y=F.length;++H<Y;)if($=F.charCodeAt(H),48>$||$>57){M=($===46?i+F.slice(H+1):F.slice(H))+M,F=F.slice(0,H);break}}}P&&!k&&(F=e(F,1/0));var ee=T.length+F.length+M.length,oe=ee<S?new Array(S-ee+1).join(f):"";switch(P&&k&&(F=e(oe+F,oe.length?S-M.length:1/0),oe=""),b){case"<":F=T+F+M+oe;break;case"=":F=T+oe+F+M;break;case"^":F=oe.slice(0,ee=oe.length>>1)+T+F+M+oe.slice(ee);break;default:F=oe+T+F+M;break}return o(F)}return z.toString=function(){return d+""},z}function m(d,p){var f=Math.max(-8,Math.min(8,Math.floor(He(p)/3)))*3,b=Math.pow(10,-f),g=c((d=ft(d),d.type="f",d),{suffix:ql[8+f/3]});return function(y){return g(b*y)}}return{format:c,formatPrefix:m}}var qr,en,Zr;la({thousands:",",grouping:[3],currency:["$",""]});function la(t){return qr=Zl(t),en=qr.format,Zr=qr.formatPrefix,qr}h();function ca(t){return Math.max(0,-He(Math.abs(t)))}h();function da(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(He(e)/3)))*3-He(Math.abs(t)))}h();function ma(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,He(e)-He(t))+1}h();h();h();h();h();function Dt(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}h();h();function pa(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Nt(t){let e,n,r;t.length!==2?(e=Dt,n=(s,u)=>Dt(t(s),u),r=(s,u)=>t(s)-u):(e=t===Dt||t===pa?t:rf,n=t,r=t);function i(s,u,c=0,m=s.length){if(c<m){if(e(u,u)!==0)return m;do{let d=c+m>>>1;n(s[d],u)<0?c=d+1:m=d}while(c<m)}return c}function o(s,u,c=0,m=s.length){if(c<m){if(e(u,u)!==0)return m;do{let d=c+m>>>1;n(s[d],u)<=0?c=d+1:m=d}while(c<m)}return c}function a(s,u,c=0,m=s.length){let d=i(s,u,c,m-1);return d>c&&r(s[d-1],u)>-r(s[d],u)?d-1:d}return{left:i,center:a,right:o}}function rf(){return 0}h();function fa(t){return t===null?NaN:+t}var Kl=Nt(Dt),Ql=Kl.right,of=Kl.left,af=Nt(fa).center,ha=Ql;h();var tn=class extends Map{constructor(e,n=lf){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(let[r,i]of e)this.set(r,i)}get(e){return super.get(Jl(this,e))}has(e){return super.has(Jl(this,e))}set(e,n){return super.set(sf(this,e),n)}delete(e){return super.delete(uf(this,e))}};function Jl({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):n}function sf({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function uf({_intern:t,_key:e},n){let r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function lf(t){return t!==null&&typeof t=="object"?t.valueOf():t}h();var cf=Math.sqrt(50),df=Math.sqrt(10),mf=Math.sqrt(2);function Kr(t,e,n){let r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=cf?10:o>=df?5:o>=mf?2:1,s,u,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(t*c),u=Math.round(e*c),s/c<t&&++s,u/c>e&&--u,c=-c):(c=Math.pow(10,i)*a,s=Math.round(t/c),u=Math.round(e/c),s*c<t&&++s,u*c>e&&--u),u<s&&.5<=n&&n<2?Kr(t,e,n*2):[s,u,c]}function Qr(t,e,n){if(e=+e,t=+t,n=+n,!(n>0))return[];if(t===e)return[t];let r=e<t,[i,o,a]=r?Kr(e,t,n):Kr(t,e,n);if(!(o>=i))return[];let s=o-i+1,u=new Array(s);if(r)if(a<0)for(let c=0;c<s;++c)u[c]=(o-c)/-a;else for(let c=0;c<s;++c)u[c]=(o-c)*a;else if(a<0)for(let c=0;c<s;++c)u[c]=(i+c)/-a;else for(let c=0;c<s;++c)u[c]=(i+c)*a;return u}function Xn(t,e,n){return e=+e,t=+t,n=+n,Kr(t,e,n)[2]}function nn(t,e,n){e=+e,t=+t,n=+n;let r=e<t,i=r?Xn(e,t,n):Xn(t,e,n);return(r?-1:1)*(i<0?1/-i:i)}h();function Jr(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}h();function ht(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}h();var ec=Symbol("implicit");function ei(){var t=new tn,e=[],n=[],r=ec;function i(o){let a=t.get(o);if(a===void 0){if(r!==ec)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new tn;for(let a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return ei(e,n).unknown(r)},ht.apply(i,arguments),i}function qn(){var t=ei().unknown(void 0),e=t.domain,n=t.range,r=0,i=1,o,a,s=!1,u=0,c=0,m=.5;delete t.unknown;function d(){var p=e().length,f=i<r,b=f?i:r,g=f?r:i;o=(g-b)/Math.max(1,p-u+c*2),s&&(o=Math.floor(o)),b+=(g-b-o*(p-u))*m,a=o*(1-u),s&&(b=Math.round(b),a=Math.round(a));var y=Jr(p).map(function(k){return b+o*k});return n(f?y.reverse():y)}return t.domain=function(p){return arguments.length?(e(p),d()):e()},t.range=function(p){return arguments.length?([r,i]=p,r=+r,i=+i,d()):[r,i]},t.rangeRound=function(p){return[r,i]=p,r=+r,i=+i,s=!0,d()},t.bandwidth=function(){return a},t.step=function(){return o},t.round=function(p){return arguments.length?(s=!!p,d()):s},t.padding=function(p){return arguments.length?(u=Math.min(1,c=+p),d()):u},t.paddingInner=function(p){return arguments.length?(u=Math.min(1,p),d()):u},t.paddingOuter=function(p){return arguments.length?(c=+p,d()):c},t.align=function(p){return arguments.length?(m=Math.max(0,Math.min(1,p)),d()):m},t.copy=function(){return qn(e(),[r,i]).round(s).paddingInner(u).paddingOuter(c).align(m)},ht.apply(d(),arguments)}h();h();h();h();h();h();h();function ti(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ga(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Qn(){}var Zn=.7,ii=1/Zn,rn="\\s*([+-]?\\d+)\\s*",Kn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ye="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",pf=/^#([0-9a-f]{3,8})$/,ff=new RegExp(`^rgb\\(${rn},${rn},${rn}\\)$`),hf=new RegExp(`^rgb\\(${Ye},${Ye},${Ye}\\)$`),gf=new RegExp(`^rgba\\(${rn},${rn},${rn},${Kn}\\)$`),bf=new RegExp(`^rgba\\(${Ye},${Ye},${Ye},${Kn}\\)$`),yf=new RegExp(`^hsl\\(${Kn},${Ye},${Ye}\\)$`),xf=new RegExp(`^hsla\\(${Kn},${Ye},${Ye},${Kn}\\)$`),tc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ti(Qn,gt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:nc,formatHex:nc,formatHex8:wf,formatHsl:vf,formatRgb:rc,toString:rc});function nc(){return this.rgb().formatHex()}function wf(){return this.rgb().formatHex8()}function vf(){return lc(this).formatHsl()}function rc(){return this.rgb().formatRgb()}function gt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=pf.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?ic(e):n===3?new Ee(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ni(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ni(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=ff.exec(t))?new Ee(e[1],e[2],e[3],1):(e=hf.exec(t))?new Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=gf.exec(t))?ni(e[1],e[2],e[3],e[4]):(e=bf.exec(t))?ni(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=yf.exec(t))?sc(e[1],e[2]/100,e[3]/100,1):(e=xf.exec(t))?sc(e[1],e[2]/100,e[3]/100,e[4]):tc.hasOwnProperty(t)?ic(tc[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function ic(t){return new Ee(t>>16&255,t>>8&255,t&255,1)}function ni(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ee(t,e,n,r)}function Sf(t){return t instanceof Qn||(t=gt(t)),t?(t=t.rgb(),new Ee(t.r,t.g,t.b,t.opacity)):new Ee}function on(t,e,n,r){return arguments.length===1?Sf(t):new Ee(t,e,n,r??1)}function Ee(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}ti(Ee,on,ga(Qn,{brighter(t){return t=t==null?ii:Math.pow(ii,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Zn:Math.pow(Zn,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ee(Rt(this.r),Rt(this.g),Rt(this.b),oi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:oc,formatHex:oc,formatHex8:kf,formatRgb:ac,toString:ac}));function oc(){return`#${Ot(this.r)}${Ot(this.g)}${Ot(this.b)}`}function kf(){return`#${Ot(this.r)}${Ot(this.g)}${Ot(this.b)}${Ot((isNaN(this.opacity)?1:this.opacity)*255)}`}function ac(){let t=oi(this.opacity);return`${t===1?"rgb(":"rgba("}${Rt(this.r)}, ${Rt(this.g)}, ${Rt(this.b)}${t===1?")":`, ${t})`}`}function oi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Rt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ot(t){return t=Rt(t),(t<16?"0":"")+t.toString(16)}function sc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new _e(t,e,n,r)}function lc(t){if(t instanceof _e)return new _e(t.h,t.s,t.l,t.opacity);if(t instanceof Qn||(t=gt(t)),!t)return new _e;if(t instanceof _e)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,u=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new _e(a,s,u,t.opacity)}function cc(t,e,n,r){return arguments.length===1?lc(t):new _e(t,e,n,r??1)}function _e(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}ti(_e,cc,ga(Qn,{brighter(t){return t=t==null?ii:Math.pow(ii,t),new _e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Zn:Math.pow(Zn,t),new _e(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ee(ba(t>=240?t-240:t+120,i,r),ba(t,i,r),ba(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new _e(uc(this.h),ri(this.s),ri(this.l),oi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=oi(this.opacity);return`${t===1?"hsl(":"hsla("}${uc(this.h)}, ${ri(this.s)*100}%, ${ri(this.l)*100}%${t===1?")":`, ${t})`}`}}));function uc(t){return t=(t||0)%360,t<0?t+360:t}function ri(t){return Math.max(0,Math.min(1,t||0))}function ba(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}h();h();function ya(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function dc(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return ya((n-r/e)*e,a,i,o,s)}}h();function mc(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return ya((n-r/e)*e,i,o,a,s)}}h();h();var Jn=t=>()=>t;function Pf(t,e){return function(n){return t+n*e}}function Mf(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function pc(t){return(t=+t)==1?ai:function(e,n){return n-e?Mf(e,n,t):Jn(isNaN(e)?n:e)}}function ai(t,e){var n=e-t;return n?Pf(t,n):Jn(isNaN(t)?e:t)}var xa=(function t(e){var n=pc(e);function r(i,o){var a=n((i=on(i)).r,(o=on(o)).r),s=n(i.g,o.g),u=n(i.b,o.b),c=ai(i.opacity,o.opacity);return function(m){return i.r=a(m),i.g=s(m),i.b=u(m),i.opacity=c(m),i+""}}return r.gamma=t,r})(1);function fc(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=on(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(u){return s.r=r(u),s.g=i(u),s.b=o(u),s+""}}}var Z1=fc(dc),K1=fc(mc);h();h();function hc(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function gc(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function bc(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=Ft(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}h();function yc(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}h();function bt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}h();function xc(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=Ft(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}h();var va=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wa=new RegExp(va.source,"g");function Tf(t){return function(){return t}}function Cf(t){return function(e){return t(e)+""}}function wc(t,e){var n=va.lastIndex=wa.lastIndex=0,r,i,o,a=-1,s=[],u=[];for(t=t+"",e=e+"";(r=va.exec(t))&&(i=wa.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,u.push({i:a,x:bt(r,i)})),n=wa.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?u[0]?Cf(u[0].x):Tf(e):(e=u.length,function(c){for(var m=0,d;m<e;++m)s[(d=u[m]).i]=d.x(c);return s.join("")})}function Ft(t,e){var n=typeof e,r;return e==null||n==="boolean"?Jn(e):(n==="number"?bt:n==="string"?(r=gt(e))?(e=r,xa):wc:e instanceof gt?xa:e instanceof Date?yc:gc(e)?hc:Array.isArray(e)?bc:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?xc:bt)(t,e)}h();function Sa(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}h();function ka(t){return function(){return t}}h();function Pa(t){return+t}var vc=[0,1];function an(t){return t}function Ma(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:ka(isNaN(e)?NaN:.5)}function Af(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Df(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Ma(i,r),o=n(a,o)):(r=Ma(r,i),o=n(o,a)),function(s){return o(r(s))}}function Nf(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Ma(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var u=ha(t,s,1,r)-1;return o[u](i[u](s))}}function si(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Of(){var t=vc,e=vc,n=Ft,r,i,o,a=an,s,u,c;function m(){var p=Math.min(t.length,e.length);return a!==an&&(a=Af(t[0],t[p-1])),s=p>2?Nf:Df,u=c=null,d}function d(p){return p==null||isNaN(p=+p)?o:(u||(u=s(t.map(r),e,n)))(r(a(p)))}return d.invert=function(p){return a(i((c||(c=s(e,t.map(r),bt)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,Pa),m()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),m()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),n=Sa,m()},d.clamp=function(p){return arguments.length?(a=p?!0:an,m()):a!==an},d.interpolate=function(p){return arguments.length?(n=p,m()):n},d.unknown=function(p){return arguments.length?(o=p,d):o},function(p,f){return r=p,i=f,m()}}function er(){return Of()(an,an)}h();function Ta(t,e,n,r){var i=nn(t,e,n),o;switch(r=ft(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=da(i,a))&&(r.precision=o),Zr(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=ma(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ca(i))&&(r.precision=o-(r.type==="%")*2);break}}return en(r)}function Rf(t){var e=t.domain;return t.ticks=function(n){var r=e();return Qr(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Ta(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],u,c,m=10;for(s<a&&(c=a,a=s,s=c,c=i,i=o,o=c);m-- >0;){if(c=Xn(a,s,n),c===u)return r[i]=a,r[o]=s,e(r);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;u=c}return t},t}function sn(){var t=er();return t.copy=function(){return si(t,sn())},ht.apply(t,arguments),Rf(t)}h();function Ca(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}h();h();h();var Aa=new Date,Da=new Date;function me(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(t(o=new Date(+o)),o),i.ceil=o=>(t(o=new Date(o-1)),e(o,1),t(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=(o,a)=>(e(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let u=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return u;let c;do u.push(c=new Date(+o)),e(o,s),t(o);while(c<o&&o<a);return u},i.filter=o=>me(a=>{if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););}),n&&(i.count=(o,a)=>(Aa.setTime(+o),Da.setTime(+a),t(Aa),t(Da),Math.floor(n(Aa,Da))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?a=>r(a)%o===0:a=>i.count(0,a)%o===0):i)),i}h();var tr=me(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);tr.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):tr);var ik=tr.range;h();var Xe=me(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),Sc=Xe.range;h();var ui=me(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Ff=ui.range,un=me(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Bf=un.range;h();var li=me(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),Lf=li.range,ln=me(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),Ef=ln.range;h();var Et=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),If=Et.range,It=me(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),Vf=It.range,ci=me(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),zf=ci.range;h();function Vt(t){return me(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var zt=Vt(0),cn=Vt(1),Pc=Vt(2),Mc=Vt(3),yt=Vt(4),Tc=Vt(5),Cc=Vt(6),Ac=zt.range,jf=cn.range,_f=Pc.range,$f=Mc.range,Uf=yt.range,Gf=Tc.range,Wf=Cc.range;function jt(t){return me(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/6048e5)}var it=jt(0),dn=jt(1),Dc=jt(2),Nc=jt(3),xt=jt(4),Oc=jt(5),Rc=jt(6),Fc=it.range,Hf=dn.range,Yf=Dc.range,Xf=Nc.range,qf=xt.range,Zf=Oc.range,Kf=Rc.range;h();var di=me(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),Qf=di.range,mn=me(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Jf=mn.range;h();var $e=me(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());$e.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:me(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});var eh=$e.range,Ve=me(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Ve.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:me(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});var th=Ve.range;h();function Lc(t,e,n,r,i,o){let a=[[Xe,1,1e3],[Xe,5,5*1e3],[Xe,15,15*1e3],[Xe,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[r,1,864e5],[r,2,2*864e5],[n,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function s(c,m,d){let p=m<c;p&&([c,m]=[m,c]);let f=d&&typeof d.range=="function"?d:u(c,m,d),b=f?f.range(c,+m+1):[];return p?b.reverse():b}function u(c,m,d){let p=Math.abs(m-c)/d,f=Nt(([,,y])=>y).right(a,p);if(f===a.length)return t.every(nn(c/31536e6,m/31536e6,d));if(f===0)return tr.every(Math.max(nn(c,m,d),1));let[b,g]=a[p/a[f-1][2]<a[f][2]/p?f-1:f];return b.every(g)}return[s,u]}var[Na,Oa]=Lc(Ve,mn,it,ci,ln,un),[rh,ih]=Lc($e,di,zt,Et,li,ui);h();h();h();function Ra(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fa(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function rr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Ba(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,u=t.shortMonths,c=ir(i),m=or(i),d=ir(o),p=or(o),f=ir(a),b=or(a),g=ir(s),y=or(s),k=ir(u),S=or(u),P={a:$,A:V,b:ee,B:oe,c:null,d:_c,e:_c,f:Ch,g:Ih,G:zh,H:Ph,I:Mh,j:Th,L:Hc,m:Ah,M:Dh,p:ge,q:le,Q:Gc,s:Wc,S:Nh,u:Oh,U:Rh,V:Fh,w:Bh,W:Lh,x:null,X:null,y:Eh,Y:Vh,Z:jh,"%":Uc},w={a:E,A:j,b:W,B:K,c:null,d:$c,e:$c,f:Gh,g:eg,G:ng,H:_h,I:$h,j:Uh,L:Xc,m:Wh,M:Hh,p:X,q:te,Q:Gc,s:Wc,S:Yh,u:Xh,U:qh,V:Zh,w:Kh,W:Qh,x:null,X:null,y:Jh,Y:tg,Z:rg,"%":Uc},A={a:_,A:z,b:F,B:T,c:M,d:zc,e:zc,f:wh,g:Vc,G:Ic,H:jc,I:jc,j:gh,L:xh,m:hh,M:bh,p:B,q:fh,Q:Sh,s:kh,S:yh,u:lh,U:ch,V:dh,w:uh,W:mh,x:H,X:Y,y:Vc,Y:Ic,Z:ph,"%":vh};P.x=v(n,P),P.X=v(r,P),P.c=v(e,P),w.x=v(n,w),w.X=v(r,w),w.c=v(e,w);function v(R,I){return function(q){var N=[],Se=-1,ce=0,Ae=R.length,De,Ke,br;for(q instanceof Date||(q=new Date(+q));++Se<Ae;)R.charCodeAt(Se)===37&&(N.push(R.slice(ce,Se)),(Ke=Ec[De=R.charAt(++Se)])!=null?De=R.charAt(++Se):Ke=De==="e"?" ":"0",(br=I[De])&&(De=br(q,Ke)),N.push(De),ce=Se+1);return N.push(R.slice(ce,Se)),N.join("")}}function O(R,I){return function(q){var N=rr(1900,void 0,1),Se=C(N,R,q+="",0),ce,Ae;if(Se!=q.length)return null;if("Q"in N)return new Date(N.Q);if("s"in N)return new Date(N.s*1e3+("L"in N?N.L:0));if(I&&!("Z"in N)&&(N.Z=0),"p"in N&&(N.H=N.H%12+N.p*12),N.m===void 0&&(N.m="q"in N?N.q:0),"V"in N){if(N.V<1||N.V>53)return null;"w"in N||(N.w=1),"Z"in N?(ce=Fa(rr(N.y,0,1)),Ae=ce.getUTCDay(),ce=Ae>4||Ae===0?dn.ceil(ce):dn(ce),ce=It.offset(ce,(N.V-1)*7),N.y=ce.getUTCFullYear(),N.m=ce.getUTCMonth(),N.d=ce.getUTCDate()+(N.w+6)%7):(ce=Ra(rr(N.y,0,1)),Ae=ce.getDay(),ce=Ae>4||Ae===0?cn.ceil(ce):cn(ce),ce=Et.offset(ce,(N.V-1)*7),N.y=ce.getFullYear(),N.m=ce.getMonth(),N.d=ce.getDate()+(N.w+6)%7)}else("W"in N||"U"in N)&&("w"in N||(N.w="u"in N?N.u%7:"W"in N?1:0),Ae="Z"in N?Fa(rr(N.y,0,1)).getUTCDay():Ra(rr(N.y,0,1)).getDay(),N.m=0,N.d="W"in N?(N.w+6)%7+N.W*7-(Ae+5)%7:N.w+N.U*7-(Ae+6)%7);return"Z"in N?(N.H+=N.Z/100|0,N.M+=N.Z%100,Fa(N)):Ra(N)}}function C(R,I,q,N){for(var Se=0,ce=I.length,Ae=q.length,De,Ke;Se<ce;){if(N>=Ae)return-1;if(De=I.charCodeAt(Se++),De===37){if(De=I.charAt(Se++),Ke=A[De in Ec?I.charAt(Se++):De],!Ke||(N=Ke(R,q,N))<0)return-1}else if(De!=q.charCodeAt(N++))return-1}return N}function B(R,I,q){var N=c.exec(I.slice(q));return N?(R.p=m.get(N[0].toLowerCase()),q+N[0].length):-1}function _(R,I,q){var N=f.exec(I.slice(q));return N?(R.w=b.get(N[0].toLowerCase()),q+N[0].length):-1}function z(R,I,q){var N=d.exec(I.slice(q));return N?(R.w=p.get(N[0].toLowerCase()),q+N[0].length):-1}function F(R,I,q){var N=k.exec(I.slice(q));return N?(R.m=S.get(N[0].toLowerCase()),q+N[0].length):-1}function T(R,I,q){var N=g.exec(I.slice(q));return N?(R.m=y.get(N[0].toLowerCase()),q+N[0].length):-1}function M(R,I,q){return C(R,e,I,q)}function H(R,I,q){return C(R,n,I,q)}function Y(R,I,q){return C(R,r,I,q)}function $(R){return a[R.getDay()]}function V(R){return o[R.getDay()]}function ee(R){return u[R.getMonth()]}function oe(R){return s[R.getMonth()]}function ge(R){return i[+(R.getHours()>=12)]}function le(R){return 1+~~(R.getMonth()/3)}function E(R){return a[R.getUTCDay()]}function j(R){return o[R.getUTCDay()]}function W(R){return u[R.getUTCMonth()]}function K(R){return s[R.getUTCMonth()]}function X(R){return i[+(R.getUTCHours()>=12)]}function te(R){return 1+~~(R.getUTCMonth()/3)}return{format:function(R){var I=v(R+="",P);return I.toString=function(){return R},I},parse:function(R){var I=O(R+="",!1);return I.toString=function(){return R},I},utcFormat:function(R){var I=v(R+="",w);return I.toString=function(){return R},I},utcParse:function(R){var I=O(R+="",!0);return I.toString=function(){return R},I}}}var Ec={"-":"",_:" ",0:"0"},Pe=/^\s*\d+/,oh=/^%/,ah=/[\\^$*+?|[\]().{}]/g;function se(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function sh(t){return t.replace(ah,"\\$&")}function ir(t){return new RegExp("^(?:"+t.map(sh).join("|")+")","i")}function or(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function uh(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function lh(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function ch(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function dh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function mh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Ic(t,e,n){var r=Pe.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Vc(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function ph(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function fh(t,e,n){var r=Pe.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function hh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function zc(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function gh(t,e,n){var r=Pe.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function jc(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function bh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function yh(t,e,n){var r=Pe.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function xh(t,e,n){var r=Pe.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function wh(t,e,n){var r=Pe.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function vh(t,e,n){var r=oh.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Sh(t,e,n){var r=Pe.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function kh(t,e,n){var r=Pe.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function _c(t,e){return se(t.getDate(),e,2)}function Ph(t,e){return se(t.getHours(),e,2)}function Mh(t,e){return se(t.getHours()%12||12,e,2)}function Th(t,e){return se(1+Et.count($e(t),t),e,3)}function Hc(t,e){return se(t.getMilliseconds(),e,3)}function Ch(t,e){return Hc(t,e)+"000"}function Ah(t,e){return se(t.getMonth()+1,e,2)}function Dh(t,e){return se(t.getMinutes(),e,2)}function Nh(t,e){return se(t.getSeconds(),e,2)}function Oh(t){var e=t.getDay();return e===0?7:e}function Rh(t,e){return se(zt.count($e(t)-1,t),e,2)}function Yc(t){var e=t.getDay();return e>=4||e===0?yt(t):yt.ceil(t)}function Fh(t,e){return t=Yc(t),se(yt.count($e(t),t)+($e(t).getDay()===4),e,2)}function Bh(t){return t.getDay()}function Lh(t,e){return se(cn.count($e(t)-1,t),e,2)}function Eh(t,e){return se(t.getFullYear()%100,e,2)}function Ih(t,e){return t=Yc(t),se(t.getFullYear()%100,e,2)}function Vh(t,e){return se(t.getFullYear()%1e4,e,4)}function zh(t,e){var n=t.getDay();return t=n>=4||n===0?yt(t):yt.ceil(t),se(t.getFullYear()%1e4,e,4)}function jh(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+se(e/60|0,"0",2)+se(e%60,"0",2)}function $c(t,e){return se(t.getUTCDate(),e,2)}function _h(t,e){return se(t.getUTCHours(),e,2)}function $h(t,e){return se(t.getUTCHours()%12||12,e,2)}function Uh(t,e){return se(1+It.count(Ve(t),t),e,3)}function Xc(t,e){return se(t.getUTCMilliseconds(),e,3)}function Gh(t,e){return Xc(t,e)+"000"}function Wh(t,e){return se(t.getUTCMonth()+1,e,2)}function Hh(t,e){return se(t.getUTCMinutes(),e,2)}function Yh(t,e){return se(t.getUTCSeconds(),e,2)}function Xh(t){var e=t.getUTCDay();return e===0?7:e}function qh(t,e){return se(it.count(Ve(t)-1,t),e,2)}function qc(t){var e=t.getUTCDay();return e>=4||e===0?xt(t):xt.ceil(t)}function Zh(t,e){return t=qc(t),se(xt.count(Ve(t),t)+(Ve(t).getUTCDay()===4),e,2)}function Kh(t){return t.getUTCDay()}function Qh(t,e){return se(dn.count(Ve(t)-1,t),e,2)}function Jh(t,e){return se(t.getUTCFullYear()%100,e,2)}function eg(t,e){return t=qc(t),se(t.getUTCFullYear()%100,e,2)}function tg(t,e){return se(t.getUTCFullYear()%1e4,e,4)}function ng(t,e){var n=t.getUTCDay();return t=n>=4||n===0?xt(t):xt.ceil(t),se(t.getUTCFullYear()%1e4,e,4)}function rg(){return"+0000"}function Uc(){return"%"}function Gc(t){return+t}function Wc(t){return Math.floor(+t/1e3)}var pn,Zc,Kc,mi,Qc;La({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function La(t){return pn=Ba(t),Zc=pn.format,Kc=pn.parse,mi=pn.utcFormat,Qc=pn.utcParse,pn}function ig(t){return new Date(t)}function og(t){return t instanceof Date?+t:+new Date(+t)}function Ea(t,e,n,r,i,o,a,s,u,c){var m=er(),d=m.invert,p=m.domain,f=c(".%L"),b=c(":%S"),g=c("%I:%M"),y=c("%I %p"),k=c("%a %d"),S=c("%b %d"),P=c("%B"),w=c("%Y");function A(v){return(u(v)<v?f:s(v)<v?b:a(v)<v?g:o(v)<v?y:r(v)<v?i(v)<v?k:S:n(v)<v?P:w)(v)}return m.invert=function(v){return new Date(d(v))},m.domain=function(v){return arguments.length?p(Array.from(v,og)):p().map(ig)},m.ticks=function(v){var O=p();return t(O[0],O[O.length-1],v??10)},m.tickFormat=function(v,O){return O==null?A:c(O)},m.nice=function(v){var O=p();return(!v||typeof v.range!="function")&&(v=e(O[0],O[O.length-1],v??10)),v?p(Ca(O,v)):m},m.copy=function(){return si(m,Ea(t,e,n,r,i,o,a,s,u,c))},m}h();function pi(){return ht.apply(Ea(Na,Oa,Ve,mn,it,It,ln,un,Xe,mi).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}h();h();h();function J(t){return function(){return t}}h();var Ia=Math.abs,Ce=Math.atan2,wt=Math.cos,Jc=Math.max,fi=Math.min,Ue=Math.sin,_t=Math.sqrt,Le=1e-12,fn=Math.PI,ar=fn/2,hn=2*fn;function ed(t){return t>1?0:t<-1?fn:Math.acos(t)}function Va(t){return t>=1?ar:t<=-1?-ar:Math.asin(t)}h();h();h();var za=Math.PI,ja=2*za,$t=1e-6,ag=ja-$t;function td(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}function sg(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return td;let n=10**e;return function(r){this._+=r[0];for(let i=1,o=r.length;i<o;++i)this._+=Math.round(arguments[i]*n)/n+r[i]}}var Ut=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?td:sg(e)}moveTo(e,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,n){this._append`L${this._x1=+e},${this._y1=+n}`}quadraticCurveTo(e,n,r,i){this._append`Q${+e},${+n},${this._x1=+r},${this._y1=+i}`}bezierCurveTo(e,n,r,i,o,a){this._append`C${+e},${+n},${+r},${+i},${this._x1=+o},${this._y1=+a}`}arcTo(e,n,r,i,o){if(e=+e,n=+n,r=+r,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let a=this._x1,s=this._y1,u=r-e,c=i-n,m=a-e,d=s-n,p=m*m+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=n}`;else if(p>$t)if(!(Math.abs(d*u-c*m)>$t)||!o)this._append`L${this._x1=e},${this._y1=n}`;else{let f=r-a,b=i-s,g=u*u+c*c,y=f*f+b*b,k=Math.sqrt(g),S=Math.sqrt(p),P=o*Math.tan((za-Math.acos((g+p-y)/(2*k*S)))/2),w=P/S,A=P/k;Math.abs(w-1)>$t&&this._append`L${e+w*m},${n+w*d}`,this._append`A${o},${o},0,0,${+(d*f>m*b)},${this._x1=e+A*u},${this._y1=n+A*c}`}}arc(e,n,r,i,o,a){if(e=+e,n=+n,r=+r,a=!!a,r<0)throw new Error(`negative radius: ${r}`);let s=r*Math.cos(i),u=r*Math.sin(i),c=e+s,m=n+u,d=1^a,p=a?i-o:o-i;this._x1===null?this._append`M${c},${m}`:(Math.abs(this._x1-c)>$t||Math.abs(this._y1-m)>$t)&&this._append`L${c},${m}`,r&&(p<0&&(p=p%ja+ja),p>ag?this._append`A${r},${r},0,1,${d},${e-s},${n-u}A${r},${r},0,1,${d},${this._x1=c},${this._y1=m}`:p>$t&&this._append`A${r},${r},0,${+(p>=za)},${d},${this._x1=e+r*Math.cos(o)},${this._y1=n+r*Math.sin(o)}`)}rect(e,n,r,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}};function nd(){return new Ut}nd.prototype=Ut.prototype;function gn(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{let r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);e=r}return t},()=>new Ut(e)}function ug(t){return t.innerRadius}function lg(t){return t.outerRadius}function cg(t){return t.startAngle}function dg(t){return t.endAngle}function mg(t){return t&&t.padAngle}function pg(t,e,n,r,i,o,a,s){var u=n-t,c=r-e,m=a-i,d=s-o,p=d*u-m*c;if(!(p*p<Le))return p=(m*(e-o)-d*(t-i))/p,[t+p*u,e+p*c]}function hi(t,e,n,r,i,o,a){var s=t-n,u=e-r,c=(a?o:-o)/_t(s*s+u*u),m=c*u,d=-c*s,p=t+m,f=e+d,b=n+m,g=r+d,y=(p+b)/2,k=(f+g)/2,S=b-p,P=g-f,w=S*S+P*P,A=i-o,v=p*g-b*f,O=(P<0?-1:1)*_t(Jc(0,A*A*w-v*v)),C=(v*P-S*O)/w,B=(-v*S-P*O)/w,_=(v*P+S*O)/w,z=(-v*S+P*O)/w,F=C-y,T=B-k,M=_-y,H=z-k;return F*F+T*T>M*M+H*H&&(C=_,B=z),{cx:C,cy:B,x01:-m,y01:-d,x11:C*(i/A-1),y11:B*(i/A-1)}}function gi(){var t=ug,e=lg,n=J(0),r=null,i=cg,o=dg,a=mg,s=null,u=gn(c);function c(){var m,d,p=+t.apply(this,arguments),f=+e.apply(this,arguments),b=i.apply(this,arguments)-ar,g=o.apply(this,arguments)-ar,y=Ia(g-b),k=g>b;if(s||(s=m=u()),f<p&&(d=f,f=p,p=d),!(f>Le))s.moveTo(0,0);else if(y>hn-Le)s.moveTo(f*wt(b),f*Ue(b)),s.arc(0,0,f,b,g,!k),p>Le&&(s.moveTo(p*wt(g),p*Ue(g)),s.arc(0,0,p,g,b,k));else{var S=b,P=g,w=b,A=g,v=y,O=y,C=a.apply(this,arguments)/2,B=C>Le&&(r?+r.apply(this,arguments):_t(p*p+f*f)),_=fi(Ia(f-p)/2,+n.apply(this,arguments)),z=_,F=_,T,M;if(B>Le){var H=Va(B/p*Ue(C)),Y=Va(B/f*Ue(C));(v-=H*2)>Le?(H*=k?1:-1,w+=H,A-=H):(v=0,w=A=(b+g)/2),(O-=Y*2)>Le?(Y*=k?1:-1,S+=Y,P-=Y):(O=0,S=P=(b+g)/2)}var $=f*wt(S),V=f*Ue(S),ee=p*wt(A),oe=p*Ue(A);if(_>Le){var ge=f*wt(P),le=f*Ue(P),E=p*wt(w),j=p*Ue(w),W;if(y<fn)if(W=pg($,V,E,j,ge,le,ee,oe)){var K=$-W[0],X=V-W[1],te=ge-W[0],R=le-W[1],I=1/Ue(ed((K*te+X*R)/(_t(K*K+X*X)*_t(te*te+R*R)))/2),q=_t(W[0]*W[0]+W[1]*W[1]);z=fi(_,(p-q)/(I-1)),F=fi(_,(f-q)/(I+1))}else z=F=0}O>Le?F>Le?(T=hi(E,j,$,V,f,F,k),M=hi(ge,le,ee,oe,f,F,k),s.moveTo(T.cx+T.x01,T.cy+T.y01),F<_?s.arc(T.cx,T.cy,F,Ce(T.y01,T.x01),Ce(M.y01,M.x01),!k):(s.arc(T.cx,T.cy,F,Ce(T.y01,T.x01),Ce(T.y11,T.x11),!k),s.arc(0,0,f,Ce(T.cy+T.y11,T.cx+T.x11),Ce(M.cy+M.y11,M.cx+M.x11),!k),s.arc(M.cx,M.cy,F,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):(s.moveTo($,V),s.arc(0,0,f,S,P,!k)):s.moveTo($,V),!(p>Le)||!(v>Le)?s.lineTo(ee,oe):z>Le?(T=hi(ee,oe,ge,le,p,-z,k),M=hi($,V,E,j,p,-z,k),s.lineTo(T.cx+T.x01,T.cy+T.y01),z<_?s.arc(T.cx,T.cy,z,Ce(T.y01,T.x01),Ce(M.y01,M.x01),!k):(s.arc(T.cx,T.cy,z,Ce(T.y01,T.x01),Ce(T.y11,T.x11),!k),s.arc(0,0,p,Ce(T.cy+T.y11,T.cx+T.x11),Ce(M.cy+M.y11,M.cx+M.x11),k),s.arc(M.cx,M.cy,z,Ce(M.y11,M.x11),Ce(M.y01,M.x01),!k))):s.arc(0,0,p,A,w,k)}if(s.closePath(),m)return s=null,m+""||null}return c.centroid=function(){var m=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-fn/2;return[wt(d)*m,Ue(d)*m]},c.innerRadius=function(m){return arguments.length?(t=typeof m=="function"?m:J(+m),c):t},c.outerRadius=function(m){return arguments.length?(e=typeof m=="function"?m:J(+m),c):e},c.cornerRadius=function(m){return arguments.length?(n=typeof m=="function"?m:J(+m),c):n},c.padRadius=function(m){return arguments.length?(r=m==null?null:typeof m=="function"?m:J(+m),c):r},c.startAngle=function(m){return arguments.length?(i=typeof m=="function"?m:J(+m),c):i},c.endAngle=function(m){return arguments.length?(o=typeof m=="function"?m:J(+m),c):o},c.padAngle=function(m){return arguments.length?(a=typeof m=="function"?m:J(+m),c):a},c.context=function(m){return arguments.length?(s=m??null,c):s},c}h();h();var V2=Array.prototype.slice;function vt(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}h();function rd(t){this._context=t}rd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Gt(t){return new rd(t)}h();h();function bi(t){return t[0]}function yi(t){return t[1]}function sr(t,e){var n=J(!0),r=null,i=Gt,o=null,a=gn(s);t=typeof t=="function"?t:t===void 0?bi:J(t),e=typeof e=="function"?e:e===void 0?yi:J(e);function s(u){var c,m=(u=vt(u)).length,d,p=!1,f;for(r==null&&(o=i(f=a())),c=0;c<=m;++c)!(c<m&&n(d=u[c],c,u))===p&&((p=!p)?o.lineStart():o.lineEnd()),p&&o.point(+t(d,c,u),+e(d,c,u));if(f)return o=null,f+""||null}return s.x=function(u){return arguments.length?(t=typeof u=="function"?u:J(+u),s):t},s.y=function(u){return arguments.length?(e=typeof u=="function"?u:J(+u),s):e},s.defined=function(u){return arguments.length?(n=typeof u=="function"?u:J(!!u),s):n},s.curve=function(u){return arguments.length?(i=u,r!=null&&(o=i(r)),s):i},s.context=function(u){return arguments.length?(u==null?r=o=null:o=i(r=u),s):r},s}function _a(t,e,n){var r=null,i=J(!0),o=null,a=Gt,s=null,u=gn(c);t=typeof t=="function"?t:t===void 0?bi:J(+t),e=typeof e=="function"?e:e===void 0?J(0):J(+e),n=typeof n=="function"?n:n===void 0?yi:J(+n);function c(d){var p,f,b,g=(d=vt(d)).length,y,k=!1,S,P=new Array(g),w=new Array(g);for(o==null&&(s=a(S=u())),p=0;p<=g;++p){if(!(p<g&&i(y=d[p],p,d))===k)if(k=!k)f=p,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),b=p-1;b>=f;--b)s.point(P[b],w[b]);s.lineEnd(),s.areaEnd()}k&&(P[p]=+t(y,p,d),w[p]=+e(y,p,d),s.point(r?+r(y,p,d):P[p],n?+n(y,p,d):w[p]))}if(S)return s=null,S+""||null}function m(){return sr().defined(i).curve(a).context(o)}return c.x=function(d){return arguments.length?(t=typeof d=="function"?d:J(+d),r=null,c):t},c.x0=function(d){return arguments.length?(t=typeof d=="function"?d:J(+d),c):t},c.x1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:J(+d),c):r},c.y=function(d){return arguments.length?(e=typeof d=="function"?d:J(+d),n=null,c):e},c.y0=function(d){return arguments.length?(e=typeof d=="function"?d:J(+d),c):e},c.y1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:J(+d),c):n},c.lineX0=c.lineY0=function(){return m().x(t).y(e)},c.lineY1=function(){return m().x(t).y(n)},c.lineX1=function(){return m().x(r).y(e)},c.defined=function(d){return arguments.length?(i=typeof d=="function"?d:J(!!d),c):i},c.curve=function(d){return arguments.length?(a=d,o!=null&&(s=a(o)),c):a},c.context=function(d){return arguments.length?(d==null?o=s=null:s=a(o=d),c):o},c}h();h();function id(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}h();function od(t){return t}function $a(){var t=od,e=id,n=null,r=J(0),i=J(hn),o=J(0);function a(s){var u,c=(s=vt(s)).length,m,d,p=0,f=new Array(c),b=new Array(c),g=+r.apply(this,arguments),y=Math.min(hn,Math.max(-hn,i.apply(this,arguments)-g)),k,S=Math.min(Math.abs(y)/c,o.apply(this,arguments)),P=S*(y<0?-1:1),w;for(u=0;u<c;++u)(w=b[f[u]=u]=+t(s[u],u,s))>0&&(p+=w);for(e!=null?f.sort(function(A,v){return e(b[A],b[v])}):n!=null&&f.sort(function(A,v){return n(s[A],s[v])}),u=0,d=p?(y-c*P)/p:0;u<c;++u,g=k)m=f[u],w=b[m],k=g+(w>0?w*d:0)+P,b[m]={data:s[m],index:u,value:w,startAngle:g,endAngle:k,padAngle:S};return b}return a.value=function(s){return arguments.length?(t=typeof s=="function"?s:J(+s),a):t},a.sortValues=function(s){return arguments.length?(e=s,n=null,a):e},a.sort=function(s){return arguments.length?(n=s,e=null,a):n},a.startAngle=function(s){return arguments.length?(r=typeof s=="function"?s:J(+s),a):r},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:J(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:J(+s),a):o},a}h();function ad(t){return t<0?-1:1}function sd(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),s=(o*i+a*r)/(r+i);return(ad(o)+ad(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function ud(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ua(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._context.bezierCurveTo(r+s,i+s*e,o-s,a-s*n,o,a)}function xi(t){this._context=t}xi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Ua(this,this._t0,ud(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Ua(this,ud(this,n=sd(this,t,e)),n);break;default:Ua(this,this._t0,n=sd(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};function fg(t){this._context=new ld(t)}(fg.prototype=Object.create(xi.prototype)).point=function(t,e){xi.prototype.point.call(this,e,t)};function ld(t){this._context=t}ld.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}};function Ga(t){return new xi(t)}h();function cd(t,e){this._context=t,this._t=e}cd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e}};function Wa(t){return new cd(t,1)}h();h();function Ha(t,e){if((a=t.length)>1)for(var n=1,r,i,o=t[e[0]],a,s=o.length;n<a;++n)for(i=o,o=t[e[n]],r=0;r<s;++r)o[r][1]+=o[r][0]=isNaN(i[r][1])?i[r][0]:i[r][1]}h();function Ya(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}function hg(t,e){return t[e]}function gg(t){let e=[];return e.key=t,e}function Xa(){var t=J([]),e=Ya,n=Ha,r=hg;function i(o){var a=Array.from(t.apply(this,arguments),gg),s,u=a.length,c=-1,m;for(let d of o)for(s=0,++c;s<u;++s)(a[s][c]=[0,+r(d,a[s].key,c,o)]).data=d;for(s=0,m=vt(e(a));s<u;++s)a[m[s]].index=s;return n(a,m),a}return i.keys=function(o){return arguments.length?(t=typeof o=="function"?o:J(Array.from(o)),i):t},i.value=function(o){return arguments.length?(r=typeof o=="function"?o:J(+o),i):r},i.order=function(o){return arguments.length?(e=o==null?Ya:typeof o=="function"?o:J(Array.from(o)),i):e},i.offset=function(o){return arguments.length?(n=o??Ha,i):n},i}h();function qa(t,e){if((u=t.length)>0)for(var n,r=0,i,o,a,s,u,c=t[e[0]].length;r<c;++r)for(a=s=0,n=0;n<u;++n)(o=(i=t[e[n]][r])[1]-i[0])>0?(i[0]=a,i[1]=a+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var fd=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],bg=t=>typeof t=="object"&&t!==null&&"open"in t&&"close"in t,yg=t=>typeof t=="object"&&t!==null&&"label"in t&&"value"in t;function xg(t){return t==="linear"?Gt:t==="step"?Wa:Ga}function Za(t,e){let n=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(t.trim());if(!n)return t;let r=n[1];r.length===3&&(r=[...r].map(o=>o+o).join(""));let i=parseInt(r,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${e})`}function dd(t){if(!t?.format)return null;if(typeof t.format=="function")return t.format;let e=en(t.format);return n=>typeof n=="number"?e(n):String(n)}function re(t){return Math.round(t*100)/100}function bn(t,e=0,n=t.duration){return ne.create().fromTo("opacity",0,1,{start:t.start+e,end:t.start+e+Math.max(1,n),ease:"power2.out"})}function hd(t,e,n){let r=e.id??Q("chart"),i=t.width??(typeof e.width=="number"?e.width:960),o=t.height??(typeof e.height=="number"?e.height:540),a=t.type??"line",s=t.fontSize??18,u=t.fontFamily??n,c=t.textColor??"#94a3b8",m=t.textColor??"#e2e8f0",d=t.gridColor??"rgba(148, 163, 184, 0.18)",p=t.colors?.length?t.colors:fd,f=t.cornerRadius??4,b=t.animate===!1?void 0:t.animate??{},g={enabled:b!==void 0,start:b?.start??0,duration:b?.duration??30,stagger:b?.stagger??-1,ease:b?.ease??"power3.out"},y=[],k=(T,M,H,Y={},$="")=>{let V=L.text(T,{id:`${r}-label-${$||y.length}`,position:"absolute",x:re(M.x),y:re(M.y),width:re(M.width),height:re(M.height),fontFamily:u,fontSize:s,fontWeight:Y.weight??500,fill:Y.color??c,align:H,verticalAlign:"middle"});g.enabled&&V.animate(bn(g,Y.delay??0)),y.push(V)},S=Math.ceil(s*1.4);a==="pie"||a==="donut"?P():A();for(let T of y)gd(T);return L.box({background:t.background??"transparent",...e,id:r,width:i,height:o,children:y});function P(){let T=w(),M=T.reduce((K,X)=>K+Math.max(0,X.value),0),H=t.legend??!0,Y=O({top:16,right:H?B(T.map(K=>K.label)):16,bottom:16,left:16}),$=C(Y),V=Math.max(1,Math.min($.width,$.height)/2),ee=V*(t.innerRadius??(a==="donut"?.6:0)),oe=$.x+$.width/2,ge=$.y+$.height/2,le=4,E=$a().sort(null).value(K=>Math.max(0,K.value)).padAngle(T.length>1?.012:0)(T),j=gi().innerRadius(ee).outerRadius(V).cornerRadius(Math.min(f,(V-ee)/2)),W=v(E.length);E.forEach((K,X)=>{let te=j(K);if(!te)return;let R=T[X].color??p[X%p.length],I=L.shape("path",{id:`${r}-slice-${X}`,position:"absolute",x:re(oe-V-le),y:re(ge-V-le),width:re(2*(V+le)),height:re(2*(V+le)),d:wg(te,V+le,V+le),fillColor:R,anchorX:.5,anchorY:.5});if(g.enabled){let q=g.start+X*W;I.animate(ne.create().fromTo("opacity",0,1,{start:q,end:q+g.duration*.5}).fromTo("scale",.85,1,{start:q,end:q+g.duration,ease:g.ease}))}if(y.push(I),t.valueLabels&&M>0&&K.value>0){let[q,N]=gi().innerRadius(ee||V*.55).outerRadius(V).centroid(K),Se=`${Math.round(K.value/M*100)}%`;k(Se,{x:oe+q-60,y:ge+N-S/2,width:120,height:S},"center",{delay:X*W+g.duration*.5,color:"#ffffff",weight:700},`value-${X}`)}}),H&&_(T.map((K,X)=>({name:K.label,color:K.color??p[X%p.length]})),{x:$.x+$.width+24,y:$.y,height:$.height})}function w(){return(t.data??t.series?.[0]?.data??[]).map((M,H)=>{if(yg(M))return M;let Y=typeof M=="number"?M:Array.isArray(M)?Number(M[1]):Number(M.y);return{label:t.categories?.[H]??(Array.isArray(M)?String(M[0]):typeof M=="object"&&M?String(M.x):`${H+1}`),value:Y}})}function A(){let T=t.series?.length?[...t.series]:t.data?[{data:t.data}]:[];if(T.length===0)return;let M=D=>D.type??a??"line",H=(D,U)=>D.color??p[U%p.length],Y=T.map(D=>D.data.map((U,ie)=>bg(U)?{x:U.x,y:U.close}:typeof U=="number"?{x:t.categories?.[ie]??ie,y:U}:Array.isArray(U)?{x:U[0],y:Number(U[1])}:{x:U.x,y:Number(U.y)})),$=T.some(D=>M(D)==="bar"||M(D)==="candlestick"),V=Y.flat().map(D=>D.x),ee=$||V.some(D=>typeof D=="string")?"band":V.some(D=>D instanceof Date)?"time":"linear",oe=D=>M(D)==="bar"||M(D)==="area",ge=!!t.stacked,le=ee==="band"?[...new Set(V.map(String))]:[],E=new Map;if(ge){let D=T.map((fe,Me)=>Me).filter(fe=>oe(T[fe])),U=le.length?le:[...new Set(V.map(fe=>+fe))].sort((fe,Me)=>fe-Me).map(String),ie=U.map(fe=>{let Me={};for(let Ne of D){let Oe=Y[Ne].find(ke=>String(ee==="band"?ke.x:+ke.x)===fe);Me[Ne]=Oe?.y??0}return Me});Xa().keys(D.map(String)).offset(qa)(ie).forEach(fe=>{let Me=Number(fe.key);E.set(Me,Y[Me].map(Ne=>{let Oe=U.indexOf(String(ee==="band"?Ne.x:+Ne.x));return[fe[Oe][0],fe[Oe][1]]}))})}let j=[0];T.forEach((D,U)=>{let ie=E.get(U);if(M(D)==="candlestick")for(let pe of D.data)j.push(pe.high,pe.low);else if(ie)for(let[pe,fe]of ie)j.push(pe,fe);else for(let pe of Y[U])j.push(pe.y)}),T.every(D=>M(D)==="candlestick"||M(D)==="scatter"||M(D)==="line")&&j.shift();let W=t.yAxis??{},K=t.xAxis??{},X=W.ticks??5,te=W.min??Math.min(...j),R=W.max??Math.max(...j);(!Number.isFinite(te)||!Number.isFinite(R))&&([te,R]=[0,1]),te===R&&([te,R]=[te-1,R+1]);let I=sn().domain([te,R]);(W.min===void 0||W.max===void 0)&&I.nice(X);let q=dd(W)??(D=>I.tickFormat(X)(D)),N=I.ticks(X),Se=T.map((D,U)=>({name:D.name??`Series ${U+1}`,color:H(D,U)})),ce=t.legend??T.length>1,Ae=W.show!==!1,De=K.show!==!1,Ke=Ae?Math.max(...N.map(D=>q(D).length))*s*.7+20:0,br=O({top:(ce?S+20:0)+Math.ceil(S/2),right:20,bottom:De?S+14:12,left:Math.max(16,Math.ceil(Ke))}),ae=C(br),ps=S+6,fs=t.valueLabels?T.flatMap((D,U)=>M(D)==="bar"?Y[U].map(ie=>ie.y):[]):[],em=fs.some(D=>D>0)?ps:0,tm=fs.some(D=>D<0)?ps:0;I.range([ae.height-tm,em]);let Qe;if(ee==="band")Qe=qn().domain(le).range([0,ae.width]).paddingInner($?.28:0).paddingOuter($?.14:.5);else if(ee==="time"){let D=V.map(U=>+new Date(U));Qe=pi().domain([Math.min(...D),Math.max(...D)]).range([0,ae.width])}else{let D=V.map(Number);Qe=sn().domain([K.min??Math.min(...D),K.max??Math.max(...D)]).range([0,ae.width])}let hs=D=>{if(ee==="band"){let U=Qe;return(U(String(D))??0)+U.bandwidth()/2}return Qe(ee==="time"?new Date(D):Number(D))},gs=0;W.grid!==!1&&N.forEach((D,U)=>{let ie=L.box({id:`${r}-ygrid-${U}`,position:"absolute",x:ae.x,y:re(ae.y+I(D)-.5),width:ae.width,height:1,background:d});g.enabled&&ie.animate(bn(g,gs,g.duration/2)),y.push(ie)}),Ae&&N.forEach((D,U)=>{k(q(D),{x:0,y:ae.y+I(D)-S/2,width:ae.x-12,height:S},"end",{},`y-${U}`)});let Sn=[],yr=dd(K);if(ee==="band"){let D=Qe,U=Math.max(1,Math.ceil(le.length/Math.max(1,Math.floor(ae.width/(s*4)))));le.forEach((ie,pe)=>{pe%U===0&&Sn.push({pos:(D(ie)??0)+D.bandwidth()/2,text:yr?yr(ie):ie})})}else{let D=Qe,U=K.ticks??Math.max(2,Math.floor(ae.width/(s*6))),ie=D.tickFormat(U);for(let pe of D.ticks(U))Sn.push({pos:D(pe),text:yr?yr(ee==="time"?new Date(pe):pe):ie(pe)})}if(K.grid&&Sn.forEach((D,U)=>{let ie=L.box({id:`${r}-xgrid-${U}`,position:"absolute",x:re(ae.x+D.pos-.5),y:ae.y,width:1,height:ae.height,background:d});g.enabled&&ie.animate(bn(g,gs,g.duration/2)),y.push(ie)}),De){let D=Math.max(s*3,ae.width/Math.max(1,Sn.length));Sn.forEach((U,ie)=>{k(U.text,{x:ae.x+U.pos-D/2,y:ae.y+ae.height+10,width:D,height:S},"center",{},`x-${ie}`)})}let[nm,rm]=I.domain();if(nm<=0&&rm>=0&&$){let D=L.box({id:`${r}-zero`,position:"absolute",x:ae.x,y:re(ae.y+I(0)-1),width:ae.width,height:2,background:Za("#94a3b8",.45)});g.enabled&&D.animate(bn(g,0,g.duration/2)),y.push(D)}let xr=T.map((D,U)=>U).filter(D=>M(T[D])==="bar"),im=[...xr,...T.map((D,U)=>U).filter(D=>M(T[D])==="candlestick"),...T.map((D,U)=>U).filter(D=>M(T[D])==="area"),...T.map((D,U)=>U).filter(D=>M(T[D])==="line"),...T.map((D,U)=>U).filter(D=>M(T[D])==="scatter")],lt=ee==="band"?Qe:null,bs=lt?v(le.length):0,ys=D=>lt?le.indexOf(String(D)):0;im.forEach((D,U)=>{let ie=T[D],pe=H(ie,D),fe=M(ie),Me=Y[D],Ne=E.get(D);if(fe==="bar"&<){let Oe=ge?1:xr.length,ke=ge?0:xr.indexOf(D),Re=lt.bandwidth()/Oe,he=Oe>1?Math.min(4,Re*.12):0;Me.forEach((Fe,Ge)=>{let[ct,Te]=Ne?Ne[Ge]:[0,Fe.y],xe=ae.y+I(Math.max(ct,Te)),wr=ae.y+I(Math.min(ct,Te)),Be=Math.max(0,wr-xe),kn=ae.x+(lt(String(Fe.x))??0)+ke*Re+he/2,kt=Fe.y>=0?"up":"down",vr=L.box({id:`${r}-bar-${D}-${Ge}`,position:"absolute",x:re(kn),y:re(xe),width:re(Math.max(1,Re-he)),height:re(Be),background:pe,borderRadius:Math.min(f,(Re-he)/2,Be/2)}),ws=ys(Fe.x)*bs+(ge?xr.indexOf(D)*g.duration*.6:0);if(g.enabled){let Pn=g.start+ws,Sr=Pn+g.duration,vs=ne.create().fromTo("height",0,re(Be),{start:Pn,end:Sr,ease:g.ease});kt==="up"&&vs.fromTo("y",re(xe+Be),re(xe),{start:Pn,end:Sr,ease:g.ease}),vr.animate(vs)}if(y.push(vr),t.valueLabels){let Pn=q(Fe.y),Sr=kt==="up"?xe-S-4:xe+Be+4;k(Pn,{x:kn-30,y:Sr,width:Re-he+60,height:S},"center",{delay:ws+g.duration*.6,color:m,weight:600},`value-${D}-${Ge}`)}});return}if(fe==="candlestick"&<){let Oe=t.upColor??"#22c55e",ke=t.downColor??"#ef4444",Re=lt.bandwidth();ie.data.forEach((he,Fe)=>{let Ge=he.close>=he.open?Oe:ke,ct=ae.x+(lt(String(he.x))??0)+Re/2,Te=ys(he.x)*bs,xe=[["wick",{x:ct-Math.max(1,Re*.06),y:ae.y+I(he.high),width:Math.max(2,Re*.12),height:Math.max(1,I(he.low)-I(he.high))}],["body",{x:ct-Re/2,y:ae.y+I(Math.max(he.open,he.close)),width:Re,height:Math.max(2,Math.abs(I(he.open)-I(he.close)))}]];for(let[wr,Be]of xe){let kn=L.box({id:`${r}-candle-${D}-${Fe}-${wr}`,position:"absolute",x:re(Be.x),y:re(Be.y),width:re(Be.width),height:re(Be.height),background:Ge,borderRadius:wr==="body"?Math.min(f/2,Be.width/2):0});if(g.enabled){let kt=g.start+Te,vr=Be.y+Be.height/2;kn.animate(ne.create().fromTo("height",0,re(Be.height),{start:kt,end:kt+g.duration,ease:g.ease}).fromTo("y",re(vr),re(Be.y),{start:kt,end:kt+g.duration,ease:g.ease}))}y.push(kn)}});return}if(fe==="line"||fe==="area"){let Oe=ie.strokeWidth??3,ke=Math.ceil(Oe*2+(ie.pointRadius??0)+2),Re=Me.map((Te,xe)=>({x:hs(Te.x)+ke,top:I(Ne?Ne[xe][1]:Te.y)+ke,base:I(Ne?Ne[xe][0]:Math.max(I.domain()[0],Math.min(0,I.domain()[1])))+ke})),he=xg(ie.curve),Fe={x:ae.x-ke,y:ae.y-ke,width:ae.width+2*ke,height:ae.height+2*ke},Ge=U*(g.duration/3);if(fe==="area"){let Te=_a().x(xe=>xe.x).y0(xe=>xe.base).y1(xe=>xe.top).curve(he)(Re);if(Te){let xe=L.shape("path",{id:`${r}-area-${D}`,position:"absolute",...md(Fe),d:pd(Te),fillType:"linear",fillColor:Za(pe,.45),gradientEndColor:Za(pe,.02),gradientAngle:90});g.enabled&&xe.animate(bn(g,Ge+g.duration*.4,g.duration)),y.push(xe)}}let ct=sr().x(Te=>Te.x).y(Te=>Te.top).curve(he)(Re);if(ct&&Oe>0){let Te=L.shape("path",{id:`${r}-line-${D}`,position:"absolute",...md(Fe),d:pd(ct),fillType:"none",strokeColor:pe,strokeWidth:Oe,strokeLineCap:"round",strokeLineJoin:"round"});g.enabled&&Te.animate(ne.create().fromTo("trimEnd",0,1,{start:g.start+Ge,end:g.start+Ge+g.duration*1.5,ease:"power2.inOut"})),y.push(Te)}(ie.pointRadius??0)>0&&xs(D,Me,pe,ie.pointRadius??0,Ge+g.duration*.5,Ne);return}fe==="scatter"&&xs(D,Me,pe,ie.pointRadius??6,U*(g.duration/3),Ne)}),ce&&z(Se);function xs(D,U,ie,pe,fe,Me){let Ne=v(U.length);U.forEach((Oe,ke)=>{let Re=I(Me?Me[ke][1]:Oe.y),he=L.shape("circle",{id:`${r}-point-${D}-${ke}`,position:"absolute",x:re(ae.x+hs(Oe.x)-pe),y:re(ae.y+Re-pe),width:re(pe*2),height:re(pe*2),fillColor:ie,anchorX:.5,anchorY:.5});if(g.enabled){let Fe=g.start+fe+ke*Ne;he.animate(ne.create().fromTo("scale",0,1,{start:Fe,end:Fe+g.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:Fe,end:Fe+6}))}y.push(he)})}}function v(T){return!g.enabled||T<=1?0:g.stagger>=0?g.stagger:Math.min(4,g.duration/T)}function O(T){let M=t.padding;return typeof M=="number"?{top:M,right:M,bottom:M,left:M}:{top:M?.top??T.top,right:M?.right??T.right,bottom:M?.bottom??T.bottom,left:M?.left??T.left}}function C(T){return{x:T.left,y:T.top,width:Math.max(1,i-T.left-T.right),height:Math.max(1,o-T.top-T.bottom)}}function B(T){let M=Math.max(0,...T.map(H=>H.length));return Math.min(i*.4,M*s*.6+s+48)}function _(T,M){let H=S+8,Y=M.y+Math.max(0,(M.height-T.length*H)/2);T.forEach(($,V)=>{F($,M.x,Y+V*H,V)})}function z(T){let M=T.map($=>$.name.length*s*.6+s+28),H=M.reduce(($,V)=>$+V,0),Y=Math.max(0,i-H-20);T.forEach(($,V)=>{F($,Y,4,V),Y+=M[V]})}function F(T,M,H,Y){let $=Math.round(s*.7),V=L.box({id:`${r}-legend-swatch-${Y}`,position:"absolute",x:re(M),y:re(H+(S-$)/2),width:$,height:$,borderRadius:Math.round($/4),background:T.color});g.enabled&&V.animate(bn(g,0,g.duration/2)),y.push(V),k(T.name,{x:M+$+8,y:H,width:T.name.length*s*.6+12,height:S},"start",{color:t.textColor??"#cbd5e1"},`legend-${Y}`)}}function gd(t){for(let e of t.animation?.tracks??[])for(let n of e.keyframes??[])n.frame=Math.round(n.frame);for(let e of t.children??[])gd(e)}function md(t){return{x:re(t.x),y:re(t.y),width:re(t.width),height:re(t.height)}}function pd(t){return t.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,e=>String(re(Number(e))))}function wg(t,e,n){let r=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,o,a]of t.matchAll(i)){let s=(a.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(o.toUpperCase()==="A")for(let u=0;u+6<s.length;u+=7)s[u+5]+=e,s[u+6]+=n;else if(o.toUpperCase()!=="Z")for(let u=0;u+1<s.length;u+=2)s[u]+=e,s[u+1]+=n;r.push(o+s.map(re).join(","))}return r.join("")}h();var bd=24,vg=1,ur=class{source;fps;startFrame;trimStartSec;smoothing;options;results=new Map;sourceWidth=0;sourceHeight=0;cellW=0;cellH=0;cell;queue=Promise.resolve();runner;cacheLoaded;unsaved=0;unsavedSubjects=0;blurred=new Map;smoothed=new Map;personView;subjects=new Map;wantSubjects=!1;subjectsLoaded;constructor(e,n,r={}){this.source=e,this.options=r,this.fps=r.fps??n,this.startFrame=Math.round(r.startFrame??0),this.trimStartSec=r.trimStartSec??0,this.smoothing=Math.max(0,Math.round(r.smoothing??2)),this.cell=Math.max(1,Math.round(r.maskCell??8))}get person(){return this.personView??=new wi(this),this.personView}ready(e,n=e){let[r,i]=this.window(e,n);return this.queue=this.queue.then(()=>this.compute(r,i)),this.queue}isReady(e){let[n,r]=this.window(e,e);for(let i=n;i<=r;i++)if(!this.results.has(i))return!1;return!0}keepSubjects(){this.wantSubjects=!0}subject(e,n){let r=e*this.fps/n;if(Math.abs(r-Math.round(r))>1e-6)return;let i=this.subjects.get(Math.round(r));if(i===void 0)return i;if(i===null||!this.sourceWidth)return null;let o=this.sourceWidth,a=this.sourceHeight;return{category:i.category,mask:Cg(i,o*a),width:o,height:a,area:i.area,coverage:i.area/(o*a),detectionIndex:-1}}clipFrame(e){return e-this.startFrame+this.trimStartSec*this.fps}window(e,n){let r=Math.floor(this.clipFrame(Math.min(e,n))),i=Math.ceil(this.clipFrame(Math.max(e,n)));return[Math.max(0,r-bd-this.smoothing),Math.max(0,i+this.smoothing)]}analysed(e){return this.results.has(e)&&(!this.wantSubjects||this.subjects.has(e))}async compute(e,n){this.cacheLoaded??=this.loadCache(),await this.cacheLoaded,this.wantSubjects&&(this.subjectsLoaded??=this.loadSubjects(),await this.subjectsLoaded);let r=!1;for(let s=e;s<=n;s++)this.analysed(s)||(r=!0);if(!r)return;let i=this.options.pose??!0,o=this.options.mask??!0;this.runner??=An.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,...this.options.confidence!==void 0&&{confidence:this.options.confidence},...this.options.variant!==void 0&&{variant:this.options.variant}});let a=Mr.getVideo(this.source,!0,"clip-vision");for(let s=e;s<=n;s++){if(this.analysed(s))continue;let u=await kg(await a.getFrame(s/this.fps));if(!u){this.results.set(s,{kp:null,mask:null}),this.wantSubjects&&this.subjects.set(s,null);continue}this.sourceWidth||this.setSize(u.width,u.height);let c=this.results.get(s),m=c?.kp??null,d=c?.mask??null;if(i&&!c){let f=(await this.runner.pose(u)).people[0];if(f){m=new Float32Array(51);for(let[b,g]of f.keypoints.entries())m.set([g.x,g.y,g.visibility],b*3)}}let p=o&&!c||this.wantSubjects?await this.runner.segment(u):void 0;if(p&&this.wantSubjects){let f=Vs(p.masks);this.subjects.set(s,f?{category:f.category,area:f.area,...Tg(f.mask)}:null),this.unsavedSubjects++}if(p&&o&&!c){let f=Pg(p);f&&(d=new Uint8Array(this.cellW*this.cellH),Mg(f,u.width,u.height,this.cell,d,this.cellW,this.cellH))}this.results.set(s,{kp:m,mask:d}),c||this.unsaved++,this.unsaved>=24&&await this.saveCache(),this.unsavedSubjects>=24&&await this.saveSubjects()}this.unsaved>0&&await this.saveCache(),this.unsavedSubjects>0&&await this.saveSubjects()}setSize(e,n){this.sourceWidth=e,this.sourceHeight=n,this.cellW=Math.ceil(e/this.cell),this.cellH=Math.ceil(n/this.cell)}size(){return{width:this.sourceWidth,height:this.sourceHeight}}result(e){return this.results.get(Math.max(0,e))}keypoint(e,n){n=Math.max(0,n);let r=`${e}:${n}`,i=this.smoothed.get(r);if(i)return i;let o=s=>{let u=0,c=0,m=0,d=0;for(let p=s-this.smoothing;p<=s+this.smoothing;p++){let f=this.mustHave(p<0?0:p);if(!f.kp)continue;let b=f.kp[e*3+2],g=(this.smoothing+1-Math.abs(p-s))*b*b;u+=f.kp[e*3]*g,c+=f.kp[e*3+1]*g,m+=b*g,d+=g}return d>1e-6?[u/d,c/d,m/d]:null},a=null;for(let s=0;s<=bd&&!a;s++)n-s>=0&&(a=o(n-s));return a??=[this.sourceWidth/2,this.sourceHeight/2,0],this.smoothed.set(r,a),a}blurredMask(e){if(e=Math.max(0,e),this.blurred.has(e))return this.blurred.get(e)??null;let n=this.mustHave(e),r=n.mask?Ag(n.mask,this.cellW,this.cellH,2):null;return this.blurred.set(e,r),r}grid(){return{cell:this.cell,width:this.cellW,height:this.cellH}}mustHave(e){let n=this.results.get(e);if(n)return n;throw new Error(`ClipVision "${this.source}": frame ${e} is not analysed yet. Read it while rendering (the composition prepares each frame), in a live physics world, or after \`await clip.ready(frame)\`.`)}cacheFile;async cachePath(){if(this.cacheFile!==void 0)return this.cacheFile;if(this.cacheFile=null,this.options.cacheDir===!1||typeof x>"u"||!x.versions?.node)return null;try{let[e,n,r,i]=await Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-W5UAWSNT.mjs")]),o=e.statSync(this.source),a=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??n.join(r.homedir(),".cache","framefields","vision"),s=this.options,u=JSON.stringify([vg,n.resolve(this.source),o.size,o.mtimeMs,this.fps,s.pose??!0,s.mask??!0,this.cell,s.variant??"s",s.confidence??null]),c=i.createHash("sha256").update(u).digest("hex").slice(0,24);e.mkdirSync(a,{recursive:!0}),this.cacheFile=n.join(a,`${n.basename(this.source)}.${c}.json`)}catch{this.cacheFile=null}return this.cacheFile}async loadCache(){let e=await this.cachePath();if(e)try{let n=await import("./shims/fs.mjs");if(!n.existsSync(e))return;let r=JSON.parse(n.readFileSync(e,"utf8"));if(r.cell!==this.cell)return;this.setSize(r.width,r.height);for(let[i,o]of Object.entries(r.frames))this.results.set(Number(i),{kp:o.kp?Float32Array.from(o.kp):null,mask:o.mask?new Uint8Array(Buffer.from(o.mask,"base64")):null})}catch{}}async saveCache(){this.unsaved=0;let e=await this.cachePath();if(!e||!this.sourceWidth)return;let n={};for(let[o,a]of this.results)n[o]={kp:a.kp?Array.from(a.kp,s=>Math.round(s*100)/100):null,mask:a.mask?Buffer.from(a.mask).toString("base64"):null};let r=await import("./shims/fs.mjs"),i=`${e}.${x.pid}.tmp`;r.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,cell:this.cell,frames:n})),r.renameSync(i,e)}async subjectsPath(){let e=await this.cachePath();return e?e.replace(/\.json$/,".subjects.json"):null}async loadSubjects(){let e=await this.subjectsPath();if(e)try{let n=await import("./shims/fs.mjs");if(!n.existsSync(e))return;let r=JSON.parse(n.readFileSync(e,"utf8"));if(this.sourceWidth&&r.width!==this.sourceWidth)return;this.sourceWidth||this.setSize(r.width,r.height);for(let[i,o]of Object.entries(r.frames)){let a=Buffer.from(o?.lengths??"","base64");this.subjects.set(Number(i),o&&{category:o.category,area:o.area,values:new Uint8Array(Buffer.from(o.values,"base64")),lengths:new Uint32Array(a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength))})}}catch{}}async saveSubjects(){this.unsavedSubjects=0;let e=await this.subjectsPath();if(!e||!this.sourceWidth)return;let n={};for(let[o,a]of this.subjects)n[o]=a&&{category:a.category,area:a.area,values:Buffer.from(a.values).toString("base64"),lengths:Buffer.from(a.lengths.buffer,a.lengths.byteOffset,a.lengths.byteLength).toString("base64")};let r=await import("./shims/fs.mjs"),i=`${e}.${x.pid}.tmp`;r.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,frames:n})),r.renameSync(i,e)}},wi=class t{constructor(e,n,r){this.clip=e;this.t=n;this.placement=r}clip;t;placement;place(e){return new t(this.clip,void 0,e)}transform(){if(this.t)return this.t;let e=this.placement,{width:n,height:r}=this.clip.size();if(!e||!n)return{sx:1,sy:1,ox:0,oy:0};let i=e.width/n,o=e.height/r;if(e.fit!=="fill"){let a=e.fit==="contain"?Math.min(i,o):Math.max(i,o);i=a,o=a}return{sx:i,sy:o,ox:(e.x??0)+(e.width-n*i)/2,oy:(e.y??0)+(e.height-r*o)/2}}point(e,n){let r=Sg(e),i=this.clip.clipFrame(n),o=Math.floor(i),a=i-o,s=this.clip.keypoint(r,o),u=a>0?this.clip.keypoint(r,o+1):s,c=this.transform();return{x:(s[0]+(u[0]-s[0])*a)*c.sx+c.ox,y:(s[1]+(u[1]-s[1])*a)*c.sy+c.oy,visibility:s[2]+(u[2]-s[2])*a}}signals(e){let n=r=>Tn.builder({type:"custom",fn:i=>this.point(e,i.frame)[r]});return{x:n("x"),y:n("y"),visibility:n("visibility")}}silhouetteGrid(e){let n=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!n)return null;let{cell:r,width:i,height:o}=this.clip.grid(),a=this.transform();return{data:n,width:i,height:o,originX:a.ox,originY:a.oy,scaleX:r*a.sx,scaleY:r*a.sy}}sample(e,n,r){let i=this.clip.blurredMask(Math.round(this.clip.clipFrame(e)));if(!i)return{alpha:0,gx:0,gy:0};let{cell:o,width:a,height:s}=this.clip.grid(),u=this.transform(),c=(n-u.ox)/u.sx/o-.5,m=(r-u.oy)/u.sy/o-.5,d=(f,b)=>f<0||b<0||f>=a||b>=s?0:i[b*a+f],p=(f,b)=>{let g=Math.floor(f),y=Math.floor(b),k=f-g,S=b-y,P=d(g,y)+(d(g+1,y)-d(g,y))*k,w=d(g,y+1)+(d(g+1,y+1)-d(g,y+1))*k;return P+(w-P)*S};return{alpha:p(c,m),gx:(p(c+1,m)-p(c-1,m))/(2*o*u.sx),gy:(p(c,m+1)-p(c,m-1))/(2*o*u.sy)}}};function Sg(t){let e=Cr.indexOf(t);if(e<0)throw new Error(`Unknown keypoint "${t}". Use one of ${Cr.join(", ")}.`);return e}async function kg(t){if(!t||t.width<=0)return null;if(t.buffer)return{data:t.buffer,width:t.width,height:t.height};let n=t.canvas?.getContext("2d");return n?{data:n.getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}:null}function Pg(t){let e=t.masks.filter(o=>o.category==="person");if(e.length===0)return;let n=e.reduce((o,a)=>a.area>o.area?a:o),r=t.detections[n.detectionIndex]?.boundingBox,i=new Uint8Array(n.mask);if(!r)return i;for(let o of t.masks){if(o===n||o.area>n.area*2)continue;let a=t.detections[o.detectionIndex]?.boundingBox;if(!a)continue;let s=Math.max(0,Math.min(r.originX+r.width,a.originX+a.width)-Math.max(r.originX,a.originX)),u=Math.max(0,Math.min(r.originY+r.height,a.originY+a.height)-Math.max(r.originY,a.originY));if(!(s*u<.3*a.width*a.height))for(let c=0;c<i.length;c++)o.mask[c]>i[c]&&(i[c]=o.mask[c])}return i}function Mg(t,e,n,r,i,o,a){for(let s=0;s<a;s++)for(let u=0;u<o;u++){let c=0,m=0;for(let d=s*r;d<Math.min(n,(s+1)*r);d++)for(let p=u*r;p<Math.min(e,(u+1)*r);p++)c+=t[d*e+p],m++;i[s*o+u]=m?Math.round(c/m):0}}function Tg(t){let e=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[a-1])&&e++;let n=new Uint8Array(e),r=new Uint32Array(e),i=0,o=0;for(let a=1;a<=t.length;a++)(a===t.length||t[a]!==t[o])&&(n[i]=t[o],r[i++]=a-o,o=a);return{values:n,lengths:r}}function Cg(t,e){let n=new Uint8Array(e),r=0;for(let i=0;i<t.values.length;i++){let o=Math.min(e,r+t.lengths[i]);t.values[i]!==0&&n.fill(t.values[i],r,o),r=o}return n}function Ag(t,e,n,r){let i=new Float32Array(e*n),o=new Float32Array(e*n);for(let a=0;a<n;a++)for(let s=0;s<e;s++){let u=0,c=0;for(let m=-r;m<=r;m++){let d=s+m;d>=0&&d<e&&(u+=t[a*e+d],c++)}i[a*e+s]=u/c/255}for(let a=0;a<n;a++)for(let s=0;s<e;s++){let u=0,c=0;for(let m=-r;m<=r;m++){let d=a+m;d>=0&&d<n&&(u+=i[d*e+s],c++)}o[a*e+s]=u/c}return o}h();h();var Dg={rotation:.2,rotateX:.2,rotateY:.2,rotateZ:.2};function ze(t,e,n){if(typeof t=="number")return t;if(typeof t=="function")return t(e);let r=e/n;return t.get({frame:e,fps:n,time:r,duration:0,durationMs:0,progress:0,deltaTime:1/n})}function Wt(t,e){let n=e-t;return n-=Math.round(n/360)*360,t+n}function Ng(t,e){let n=t.length;if(n===0)return[];let r=new Uint8Array(n);r[0]=1,r[n-1]=1;let i=[[0,n-1]];for(;i.length>0;){let[a,s]=i.pop(),u=-1,c=e;for(let m=a+1;m<s;m++){let d=(m-a)/(s-a),p=t[a]+(t[s]-t[a])*d,f=Math.abs(t[m]-p);f>c&&(c=f,u=m)}u>=0&&(r[u]=1,i.push([a,u],[u,s]))}let o=[];for(let a=0;a<n;a++)r[a]&&o.push([a,Og(t[a]),"none"]);return o.length===2&&o[0][1]===o[1][1]&&o.pop(),o}function Og(t){return Math.round(t*1e4)/1e4}var Ka=class{constructor(e,n,r){this.length=e;this.fps=n;this.ensure=r}length;fps;ensure;channels=new Map;signals=new Map;channel(e){let n=this.channels.get(e);return n||(n=new Float32Array(this.length),this.channels.set(e,n)),n}signal(e){let n=this.signals.get(e);if(!n){let r=this.channel(e),i=this.fps;n=Tn.builder({type:"custom",fn:o=>{this.ensure();let a=o.fps&&o.fps!==i?o.frame/o.fps*i:o.frame,s=Math.max(0,Math.min(r.length-1,Math.round(a)));return r[s]}}),this.signals.set(e,n)}return n}},yn=class{constructor(e,n,r){this.sim=e;this.gravity=n;if(!(r.fps>0))throw new Error("Physics: `fps` must be > 0.");if(!(r.frames>=1)||!Number.isInteger(r.frames))throw new Error("Physics: `frames` must be a positive integer.");this.fps=r.fps,this.frames=r.frames,this.startFrame=Math.max(0,Math.round(r.startFrame??0)),this.pixelsPerMeter=r.pixelsPerMeter??100,this.substeps=Math.max(1,Math.round(r.substeps??4)),this.impactDecay=Math.max(.5,r.impactDecay??8),this.impactReference=r.impactReference??1500,this.worldRecording=this.newRecording()}sim;gravity;fps;frames;startFrame;pixelsPerMeter;substeps;impactDecay;impactReference;bodies=[];forces=[];impulses=[];fields=[];worldRecording;allCollisions=[];locked=!1;liveMode=!1;stepper;chain=Promise.resolve();get collisions(){return this.ensureSimulated(),this.allCollisions}get impact(){return this.worldRecording.signal("impact")}simulate(){if(this.liveMode)throw new Error("Physics: this world is live; it steps as frames render.");return this.ensureSimulated(),this}bakeKeyframes(e={}){if(this.locked)throw new Error("Physics: bakeKeyframes() must come before simulate(), live() or reading any body signal.");return this.bakeDefault=e,this.ensureSimulated(),this}live(e,n={}){if(this.locked)throw new Error("Physics: live() must come before simulate() or reading any body signal.");this.locked=!0,this.liveMode=!0;let r=async i=>{await e.prepareVision?.(i);for(let o of n.inputs??[])await o.ready(i)};this.prepareInputs=r;for(let i of this.bodies)this.bind(i);return e.onPrepareFrame(i=>this.advanceTo(i.frame)),this}advanceTo(e){return this.chain=this.chain.then(async()=>{let n=Math.min(this.frames-1,Math.round(e)-this.startFrame);this.stepper||(await this.prepareInputs?.(this.startFrame),this.stepper=this.begin());let r=this.stepper;for(;r.current<n;){let i=r.current+1;await this.prepareInputs?.(this.startFrame+i),this.stepFrame(r,i)}r.current===this.frames-1&&!r.freed&&(r.freed=!0,this.sim.free())}),this.chain}prepareInputs;bakeDefault;newRecording(){return new Ka(this.startFrame+this.frames,this.fps,()=>this.ensureSimulated())}assertOpen(){if(this.locked)throw new Error("Physics: the world has already started; add every body, joint and force before simulate(), live() or reading signals.")}addBody(e){return this.assertOpen(),this.bodies.push(e),e}addForce(e,n){this.assertOpen(),this.forces.push({body:e,accel:n})}addField(e,n){this.assertOpen(),this.fields.push({accel:e,...n&&{targets:new Set(n)}})}addImpulse(e,n,r){this.assertOpen(),this.impulses.push({body:e,frame:Math.round(n),dv:r})}ensureSimulated(){if(this.locked)return;this.locked=!0;let e=this.begin();for(let n=1;n<this.frames;n++)this.stepFrame(e,n);e.freed=!0,this.sim.free();for(let n of this.bodies)this.bind(n)}begin(){let{startFrame:e}=this,n=this.bodies,r=new Map;for(let o of n)r.set(o.sim,o);for(let o of n)o.startFrame>0&&o.sim.setEnabled(!1);let i=new Map;for(let o of n){o.record(e,-1),o.recording.channel("impact");let a=o.kinematicTarget?.(e);a&&i.set(o,a)}this.worldRecording.channel("impact");for(let o of[...n.map(a=>a.recording),this.worldRecording])for(let a of o.channels.values())a.fill(a[e]);return{current:0,freed:!1,bySim:r,kinematicFrom:i,level:new Map(n.map(o=>[o,0]))}}stepFrame(e,n){let{fps:r,startFrame:i,substeps:o}=this,a=1/(r*o),s=this.bodies,u=i+n,c=this.gravity.length,m=new Map;for(let w of s)w.startFrame>0&&n===w.startFrame+1&&w.sim.setEnabled(!0),m.set(w,w.sim.velocity());let d=w=>w.type==="dynamic"&&n>w.startFrame,p=new Map;for(let w of s)p.set(w,this.gravity.map(A=>d(w)?A*w.gravityScale/r:0));for(let w of this.impulses){if(w.frame!==n)continue;let A=w.body;if(!d(A))continue;let v=A.sim.mass();A.sim.applyImpulse(w.dv.map(C=>C*v));let O=p.get(A);for(let C=0;C<c;C++)O[C]+=w.dv[C]}let f=this.forces.filter(w=>d(w.body)).map(w=>{let A=w.body,v=w.accel(u),O=p.get(A);for(let C=0;C<c;C++)O[C]+=v[C]/r;return{body:A,a:v}}),b=new Map;for(let w of s){let A=w.kinematicTarget?.(u);A&&b.set(w,A)}let g=new Set,y=[];for(let w=1;w<=o;w++){for(let{body:A,a:v}of f){let O=A.sim.mass();A.sim.applyImpulse(v.map(C=>C*O*a))}for(let A of this.fields)for(let v of s){if(!d(v)||A.targets&&!A.targets.has(v))continue;let O=A.accel(v,u);if(!O)continue;let C=v.sim.mass();v.sim.applyImpulse(O.map(_=>_*C*a));let B=p.get(v);for(let _=0;_<c;_++)B[_]+=O[_]*a}for(let[A,v]of b){let O=e.kinematicFrom.get(A)??v,C=w/o;A.sim.setKinematicTarget(Rg(O.position,v.position,C),this.lerpRotation(O.rotation,v.rotation,C))}this.sim.step(a);for(let[A,v]of this.sim.drainCollisionStarts()){let O=e.bySim.get(A),C=e.bySim.get(v);if(!O||!C)continue;let B=`${s.indexOf(O)}:${s.indexOf(C)}`;g.has(B)||(g.add(B),y.push([O,C]))}}e.kinematicFrom=b;for(let w of s)w.record(u,u-1);let k=new Map;if(y.length>0){let w=this.pixelsPerMeter,A=v=>{if(v.type!=="dynamic")return 0;let O=v.sim.velocity(),C=m.get(v),B=p.get(v),_=0;for(let z=0;z<c;z++){let F=O[z]-(C[z]+B[z]);_+=F*F}return Math.sqrt(_)*w};for(let[v,O]of y){let C=Math.max(A(v),A(O));for(let[B,_]of[[v,O],[O,v]]){k.set(B,Math.max(k.get(B)??0,C));let z={frame:u,with:_,speed:C};B.collisions.push(z),B===v&&this.allCollisions.push({...z,body:v})}}}let S=Math.exp(-1/this.impactDecay),P=0;for(let w of s){let A=Math.max((k.get(w)??0)/this.impactReference,(e.level.get(w)??0)*S);e.level.set(w,A),w.recording.channel("impact")[u]=A,A>P&&(P=A)}this.worldRecording.channel("impact")[u]=P,e.current=n}bind(e){let n=e.layer,r=e.output??(this.bakeDefault?"keyframes":"signals");if(typeof n?.animate!="function"||r==="none"||e.type==="fixed")return;let i=e.boundChannels();if(r==="keyframes"&&this.liveMode)throw new Error('Physics: live worlds bind signals; drop `output: "keyframes"` or use simulate().');if(r==="signals"){let s=ne.create();for(let[u,c]of i)s.signal(u,e.recording.signal(c));n.animate(s);return}let o=this.bakeDefault?.tolerance??.25,a=ne.create();for(let[s,u]of i){let m=e.recording.channel(u).subarray(this.startFrame),d=Dg[s]??1;a.keys(s,Ng(m,o*d))}n.animate(a)}};function Rg(t,e,n){return t.map((r,i)=>r+(e[i]-r)*n)}var Qa=(t,e)=>t===void 0?e:typeof t=="number"?[t,t]:t,lr=class extends Yt{op="Particles";particleStatic;particleState;options;constructor(e){super({}),this.options=e;let n=e.emitter??{},r=s=>typeof s=="number"?s:void 0,i=e.width,o=e.height,a=(Array.isArray(e.color)?e.color:[e.color??"#ffffff"]).map(s=>{let u=As(s);return[u.r,u.g,u.b,u.a]});this.particleStatic={max:Math.max(1,Math.round(e.max??2e4)),seed:Math.round(e.seed??1)>>>0,layer:{x:e.x??0,y:e.y??0,width:i,height:o},emitter:{shape:n.shape??"rect",x:r(n.x)??(n.shape==="circle"||n.shape==="ring"||n.shape==="point"?i/2:0),y:r(n.y)??(n.shape==="circle"||n.shape==="ring"||n.shape==="point"?o/2:0),width:n.width??i,height:n.height??(n.shape==="line"?0:o),radius:n.radius??Math.min(i,o)/4,radial:n.radial??!1},lifetime:Qa(e.lifetime,[2,4]),speed:Qa(e.speed,[40,160]),direction:e.direction??-90,spread:e.spread??360,bounds:e.bounds??"none",floor:e.floor??null,bounce:e.bounce??.3,size:Qa(e.size,[6,0]),sizeJitter:e.sizeJitter??.5,fade:e.fade??[.1,.3],shape:e.shape??"circle",stretch:e.stretch??.04,blend:e.blend??"normal",colors:a.slice(0,8),colorBySpeed:e.colorBySpeed??null,opacity:e.opacity??1,substeps:e.substeps??2,prewarm:e.prewarm??0}}particleFrame(e,n){let r=this.options,i=(g,y)=>g===void 0?y:ze(g,e,n),o=e-(r.startFrame??0),a=(r.emitter?.bursts??[]).filter(g=>Math.round(g.frame)===o).reduce((g,y)=>g+y.count,0),s=r.gravity,u=Array.isArray(s)?[i(s[0],0),i(s[1],0)]:[0,i(s,0)],c=null;r.push&&(c={strength:i(r.push.strength,6e3),sweep:i(r.push.sweep,6e4),mask:r.push.person.silhouetteGrid(e),previous:r.push.person.silhouetteGrid(Math.max(0,e-1))});let m=r.emitter?.x,d=r.emitter?.y,p=m!==void 0&&typeof m!="number"||d!==void 0&&typeof d!="number",f=g=>({x:m===void 0?this.particleStatic.emitter.x:ze(m,g,n),y:d===void 0?this.particleStatic.emitter.y:ze(d,g,n)}),b;if(p){let g=f(e),y=f(Math.max(0,e-1));b={x:g.x,y:g.y,previousX:y.x,previousY:y.y}}return{...b&&{emitter:b},rate:i(r.emitter?.rate,1e3),burst:a,gravity:u,drag:i(r.drag,.4),noise:{strength:i(r.noise?.strength,0),scale:r.noise?.scale??300,speed:r.noise?.speed??.3},attractors:(r.attractors??[]).map(g=>({x:i(g.x,0),y:i(g.y,0),strength:i(g.strength,0),radius:g.radius??200})),push:c}}};h();var ve=Mn(xd(),1);h();var Si=Mn(om(),1);function Ja(t,e=24,n){let r=t.fps??e;if(r<=0)throw new Error(`[FrameGrid] Invalid fps: ${r}. Must be > 0.`);let i=[];if(Array.isArray(t.frames)&&t.frames.length>0)for(let a of t.frames){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid frame index in frames list: ${a}`);i.push({frame:Math.round(a),timeMs:Math.round(a/r*1e3)})}else if(Array.isArray(t.timesMs)&&t.timesMs.length>0)for(let a of t.timesMs){if(typeof a!="number"||a<0||!Number.isFinite(a))throw new Error(`[FrameGrid] Invalid timestamp in timesMs list: ${a}`);i.push({frame:Math.round(a/1e3*r),timeMs:Math.round(a)})}else if(t.startMs!==void 0||t.endMs!==void 0||t.stepMs!==void 0){let a=t.startMs??0,s=t.endMs??n??a+1e3,u=t.stepMs??Math.round(5/r*1e3);if(a<0||s<a)throw new Error(`[FrameGrid] Invalid millisecond range: startMs=${a}, endMs=${s}. startMs must be <= endMs.`);if(u<=0)throw new Error(`[FrameGrid] Invalid stepMs: ${u}. Must be > 0.`);for(let c=a;c<=s;c+=u)i.push({frame:Math.round(c/1e3*r),timeMs:Math.round(c)})}else{let a=t.startFrame??0,s=t.endFrame??(n?Math.min(a+30,Math.floor(n/1e3*r)):a+30),u=t.stepFrames??5;if(a<0||s<a)throw new Error(`[FrameGrid] Invalid frame range: startFrame=${a}, endFrame=${s}. startFrame must be <= endFrame.`);if(u<=0)throw new Error(`[FrameGrid] Invalid stepFrames: ${u}. Must be > 0.`);for(let c=a;c<=s;c+=u)i.push({frame:Math.round(c),timeMs:Math.round(c/r*1e3)})}let o=Math.min(t.maxFrames??64,120);if(i.length>o)throw new Error(`[FrameGrid] Requested ${i.length} frames exceeds the safety threshold of ${o}. Increase stepFrames/stepMs or narrow the start/end range to prevent oversized images.`);if(i.length===0)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:i,fps:r}}function es(t,e,n){let r=n.gap??12,i=n.padding??16,a=n.showHeader??!0?54:0,s=n.maxGridWidth??4096,u=n.maxGridHeight??4096,c=n.columns;(!c||c<=0)&&(t<=4?c=t:t<=9?c=3:t<=16?c=4:t<=25?c=5:c=6),c=Math.min(c,t);let m=Math.ceil(t/c),d=Math.max(120,Math.min(n.cellWidth??320,960)),p=n.cellHeight??Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*r+i*2,b=m*p+(m-1)*r+i*2+a;if(f>s||b>u){let g=Math.min((s-(c-1)*r-i*2)/(c*d),(u-(m-1)*r-i*2-a)/(m*p));if(g<.25)throw new Error(`[FrameGrid] Cannot fit ${t} cells (${c}x${m}) into max dimensions [${s}x${u}]. Reduce cell count or decrease cellWidth.`);d=Math.max(100,Math.floor(d*g)),p=Math.round(d/(e>0?e:16/9)),f=c*d+(c-1)*r+i*2,b=m*p+(m-1)*r+i*2+a}return{columns:c,rows:m,cellWidth:d,cellHeight:p,totalWidth:f,totalHeight:b,headerHeight:a,gap:r,padding:i}}async function cr(t,e={}){let n=t.fps??24,r=t.durationMs,{samples:i,fps:o}=Ja(e,n,r),a=t.width??1920,s=t.height??1080,u=a>0&&s>0?a/s:16/9,c=es(i.length,u,e),m=e.renderer??new ve.HeadlessMediaRenderer,d=[];for(let y of i){let k=await t.renderFrame({frame:y.frame,atMs:y.timeMs,fps:o,renderer:m});d.push(k)}let p=new Si.Canvas(c.totalWidth,c.totalHeight),f=p.getContext("2d");if(f.fillStyle=e.backgroundColor??"#090a0f",f.fillRect(0,0,c.totalWidth,c.totalHeight),e.showHeader!==!1&&c.headerHeight>0){let y=e.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,k=`${a}\xD7${s} @ ${o} FPS | Cell: ${c.cellWidth}\xD7${c.cellHeight}px | Step: ${e.stepFrames?`${e.stepFrames}f`:e.stepMs?`${e.stepMs}ms`:"Custom"}`;f.fillStyle="#f8fafc",f.font="bold 15px sans-serif",f.fillText(y,c.padding,c.padding+18),f.fillStyle="#94a3b8",f.font="12px sans-serif",f.fillText(k,c.padding,c.padding+36),f.strokeStyle="#1e2433",f.lineWidth=1,f.beginPath(),f.moveTo(c.padding,c.padding+46),f.lineTo(c.totalWidth-c.padding,c.padding+46),f.stroke()}let b=e.showLabels??!0;for(let y=0;y<i.length;y++){let k=i[y],S=y%c.columns,P=Math.floor(y/c.columns),w=c.padding+S*(c.cellWidth+c.gap),A=c.padding+c.headerHeight+P*(c.cellHeight+c.gap),v=await(0,Si.loadImage)(d[y]);if(f.drawImage(v,w,A,c.cellWidth,c.cellHeight),f.strokeStyle="#262b3d",f.lineWidth=1,f.strokeRect(w,A,c.cellWidth,c.cellHeight),b){let O=`F:${k.frame} \u2022 ${k.timeMs}ms`;f.font="bold 11px sans-serif";let B=f.measureText(O).width+14,_=20,z=w+6,F=A+6;f.fillStyle="#090a0fee",f.beginPath(),f.roundRect(z,F,B,_,4),f.fill(),f.strokeStyle="#6366f155",f.lineWidth=1,f.stroke(),f.fillStyle="#e2e8f0",f.fillText(O,z+7,F+14)}}let g=await p.toBuffer("png");return e.outputPath&&await Cn.writeFile(e.outputPath,g),g}h();var Bg=["material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function dr(t){let e=t,n={};for(let r of Bg)e[r]!==void 0&&(n[r]=e[r]);return n}function Lg(t){return t==="lit"||t==="unlit"||t==="toon"?t:void 0}function ts(t,e,n){let r=Object.fromEntries(Object.entries({...e,color:n.color,material:Lg(n.material),shininess:n.shininess,roughness:n.roughness,metallic:n.metallic}).filter(([,i])=>i!==void 0));return L.model({id:n.id??Q(t),modelData:Ls(r),primitive3d:r,is3D:!0,x:n.x??0,y:n.y??0,z:n.z??0,rotateX:n.rotateX??0,rotateY:n.rotateY??0,rotateZ:n.rotateZ??0,scale:n.scale??1,scaleX:n.scaleX??1,scaleY:n.scaleY??1,scaleZ:n.scaleZ??1,opacity:n.opacity??1,color:n.tint,material:n.material,shininess:n.shininess??32,roughness:n.roughness,specularIntensity:n.specularIntensity??.5,ambientIntensity:n.ambientIntensity??1,metallic:n.metallic,...dr({emissive:n.emissive,emissiveIntensity:n.emissiveIntensity,castShadow:n.castShadow}),twoSided:!1,startFrame:n.startFrame,durationFrames:n.durationFrames})}function ki(t,e){let n=e.faces??e.items??[];for(let[r,i]of Object.entries(e))Object.defineProperty(t,r,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(t,Symbol.iterator,{value:function*(){yield*n},enumerable:!1,configurable:!0}),t}function Eg(t){let e=t.scale??1,n=Math.max(Math.abs(e*(t.scaleX??1)),Math.abs(e*(t.scaleY??1)));return n>0?n:1}var ot={cube(t){let e=t.size,[n,r,i]=typeof e=="number"?[e,e,e]:e,o=t.twoSided??!0,a={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},s=(f,b,g,y,k,S)=>{if(b&&typeof b=="object"&&"kind"in b){let w=b;return w.position="absolute",w.is3D=!0,w.twoSided=o,w.material=w.material??t.material??"lit",w.shininess=w.shininess??t.shininess??32,w.specularIntensity=w.specularIntensity??t.specularIntensity??.5,t.roughness!==void 0&&w.roughness===void 0&&(w.roughness=t.roughness),t.metallic!==void 0&&w.metallic===void 0&&(w.metallic=t.metallic),t.ambientIntensity!==void 0&&w.ambientIntensity===void 0&&(w.ambientIntensity=t.ambientIntensity),Object.assign(w,S),w}let P=typeof b=="string"?{background:b}:b??{background:g};return L.box({id:`${t.id??"cube"}-${f}`,position:"absolute",width:y,height:k,is3D:!0,twoSided:o,material:P.material??t.material??"lit",shininess:P.shininess??t.shininess??32,specularIntensity:P.specularIntensity??t.specularIntensity??.5,roughness:P.roughness??t.roughness,metallic:P.metallic??t.metallic,ambientIntensity:P.ambientIntensity??t.ambientIntensity??1,...dr({emissive:P.emissive??t.emissive,emissiveIntensity:P.emissiveIntensity??t.emissiveIntensity,castShadow:P.castShadow??t.castShadow}),background:P.background??g,borderRadius:P.borderRadius??0,borderWidth:P.borderWidth,borderColor:P.borderColor,opacity:P.opacity??1,children:P.children??[],...S})},u=n/2,c=r/2,m=i/2,d=[s("front",t.faces?.front,a.front,n,r,{x:0,y:0,z:-m,rotateX:0,rotateY:0,rotateZ:0}),s("back",t.faces?.back,a.back,n,r,{x:0,y:0,z:m,rotateX:0,rotateY:180,rotateZ:0}),s("left",t.faces?.left,a.left,i,r,{x:-u,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),s("right",t.faces?.right,a.right,i,r,{x:u,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),s("top",t.faces?.top,a.top,n,i,{x:0,y:-c,z:0,rotateX:-90,rotateY:0,rotateZ:0}),s("bottom",t.faces?.bottom,a.bottom,n,i,{x:0,y:c,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=L.box({id:t.id??Q("cube"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:n,height:r,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:d});return ki(p,{faces:d})},carousel(t){let{items:e,radius:n,faceInward:r=!1,twoSided:i=!0}=t,o=e.length,a=o>0?360/o:0,s=e.map((c,m)=>{let d=m*a,p=d*Math.PI/180,f=n*Math.sin(p),b=-n*Math.cos(p),g=r?180-d:-d,y=c;return y.position="absolute",y.is3D=!0,y.twoSided=i,y.x=f,y.y=0,y.z=b,y.rotateY=g,y}),u=L.box({id:t.id??Q("carousel"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:t.itemWidth??200,height:t.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:s});return ki(u,{items:s})},prism(t){let{sides:e,radius:n,height:r,twoSided:i=!0}=t,o=Math.max(3,e),a=2*n*Math.tan(Math.PI/o),s=360/o,u=[];for(let m=0;m<o;m++){let d=m*s,p=d*Math.PI/180,f=n*Math.sin(p),b=n*Math.cos(p),g=t.sideConfigs?.[m],y=typeof g=="string"?g:g?.background??`hsl(${m*360/o}, 70%, 50%)`;u.push(L.box({id:`${t.id??"prism"}-panel-${m}`,position:"absolute",width:a,height:r,is3D:!0,twoSided:i,x:f,y:0,z:b,rotateY:d,background:y}))}let c=L.box({id:t.id??Q("prism"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,width:a,height:r,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,opacity:t.opacity??1,background:"transparent",children:u});return ki(c,{faces:u})},plane(t){return L.box({id:t.id??Q("plane"),position:"absolute",width:t.width,height:t.height,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:t.background??"#3b82f6",borderRadius:t.borderRadius??0,opacity:t.opacity??1,...dr(t),children:t.children??[]})},grid(t){let{width:e,height:n}=t,r=t.id??Q("grid"),i=Math.max(1,Math.round(t.divisions??10)),o=t.lineWidth??2,a=t.color??"rgba(59, 130, 246, 0.5)",s=(p,f,b,g,y)=>L.box({id:`${r}-${p}`,position:"absolute",x:f,y:b,z:0,width:g,height:y,is3D:!0,twoSided:!0,material:"unlit",background:a}),u=4096,c=[],m=Math.ceil(n/u),d=Math.ceil(e/u);for(let p=0;p<=i;p++){let f=p/i-.5;for(let b=0;b<m;b++){let g=n/m,y=-n/2+g*(b+.5);c.push(s(`v${p}-${b}`,f*e,y,o,g))}for(let b=0;b<d;b++){let g=e/d,y=-e/2+g*(b+.5);c.push(s(`h${p}-${b}`,y,f*n,g,o))}}return L.box({id:r,position:"absolute",width:e,height:n,x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:t.rotateX??90,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,background:"transparent",opacity:t.opacity??1,children:c})},text(t){return t.extrusionDepth&&t.extrusionDepth>0?ot.extrudedText({...t,depth:t.extrusionDepth}):L.text(t.text,{id:t.id??Q("text3d"),position:"absolute",x:t.x??0,y:t.y??0,z:t.z??0,is3D:!0,twoSided:t.twoSided??!0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,fontSize:t.fontSize??48,fontFamily:t.fontFamily,fontWeight:t.fontWeight??"bold",fontStyle:t.fontStyle,fill:t.fill??"#ffffff",align:t.align??"center",direction:t.direction,verticalAlign:t.verticalAlign??"middle",letterSpacing:t.letterSpacing,lineHeight:t.lineHeight,material:t.material??"lit",shininess:t.shininess??64,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...dr(t),opacity:t.opacity??1,background:t.background,borderRadius:t.borderRadius,padding:t.padding,stroke:t.stroke,strokeWidth:t.strokeWidth})},extrudedText(t){let{depth:e,text:n,fill:r="#ffffff",bevelColor:i}=t,o,a=(t.curveTolerance??.1)/Eg(t),s=(t.fontFamily?Xt.getParsed(t.fontFamily):null)??Xt.getParsed("Inter")??Xt.getParsed("Unbounded")??Xt.getFirstParsed();s&&(o=Bs({text:n,font:s,fontSize:t.fontSize??48,depth:e,fill:r,bevelColor:i,curveSegments:t.curveSegments,curveTolerance:a,align:t.align,direction:t.direction,verticalAlign:t.verticalAlign,letterSpacing:t.letterSpacing,material:t.material==="lit"||t.material==="unlit"||t.material==="toon"?t.material:void 0,shininess:t.shininess,roughness:t.roughness,metallic:t.metallic}).modelData);let u=L.model({id:t.id??Q("extruded-text"),modelData:o,is3D:!0,x:t.x??0,y:t.y??0,z:t.z??0,rotateX:t.rotateX??0,rotateY:t.rotateY??0,rotateZ:t.rotateZ??0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,material:t.material,shininess:t.shininess??32,roughness:t.roughness,specularIntensity:t.specularIntensity??.8,ambientIntensity:t.ambientIntensity??1,metallic:t.metallic,...dr(t),twoSided:t.twoSided??!0,text3dOptions:{...t,curveTolerance:a}});return ki(u,{faces:[u],items:[u]})},roundedBox(t){return ts("rounded-box",{type:"roundedBox",width:t.width,height:t.height,depth:t.depth,radius:t.radius,segments:t.segments,taper:t.taper},t)},sphere(t){return ts("sphere",{type:"sphere",radius:t.radius,segments:t.segments},t)},cylinder(t){return ts("cylinder",{type:"cylinder",radius:t.radius,radiusTop:t.radiusTop,radiusBottom:t.radiusBottom,height:t.height,segments:t.segments,openEnded:t.openEnded},t)},model(t={}){return L.model(t)},obj(t,e={}){return L.obj(t,e)},fbx(t,e={}){return L.fbx(t,e)},gltf(t,e={}){return L.gltf(t,e)},glb(t,e={}){return L.glb(t,e)},stl(t,e={}){return L.stl(t,e)},ply(t,e={}){return L.ply(t,e)},vox(t,e={}){return L.vox(t,e)},threeDS(t,e={}){return L.threeDS(t,e)},off(t,e={}){return L.off(t,e)}};h();var ns=(t,e,n)=>{switch(t){case"left":return{dx:-e,dy:0};case"right":return{dx:e,dy:0};case"up":return{dx:0,dy:-n};default:return{dx:0,dy:n}}};function at(t,e,n){return{kind:t,frames:Math.max(0,Math.round(e)),build:n}}var wd={cut:()=>at("cut",0,()=>({})),crossfade:(t=15,e="sine.inOut")=>at("crossfade",t,n=>({incoming:ne.keys("opacity",[[0,0],[n.frames,1,e]])})),fadeThrough:(t=20,e="sine.inOut")=>at("fadeThrough",t,n=>{let r=Math.max(1,Math.floor(n.frames/2));return{outgoing:ne.keys("opacity",[[n.outStart,1],[n.outStart+r,0,e]]),incoming:ne.keys("opacity",[[0,0],[r,0],[n.frames,1,e]])}}),push:(t="left",e=18,n="power3.inOut")=>at("push",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=ne.create(),s=ne.create();return i!==0?(a.keys("x",[[r.outStart,r.outRest.x],[r.outStart+r.frames,r.outRest.x+i,n]]),s.keys("x",[[0,r.inRest.x-i],[r.frames,r.inRest.x,n]])):(a.keys("y",[[r.outStart,r.outRest.y],[r.outStart+r.frames,r.outRest.y+o,n]]),s.keys("y",[[0,r.inRest.y-o],[r.frames,r.inRest.y,n]])),{outgoing:a,incoming:s}}),slide:(t="left",e=18,n="power3.out")=>at("slide",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=i!==0?"x":"y",s=i!==0?r.inRest.x:r.inRest.y;return{outgoing:ne.keys("opacity",[[r.outStart,1],[r.outStart+r.frames,.6,n]]),incoming:ne.keys(a,[[0,s-(i||o)],[r.frames,s,n]])}}),zoom:(t=18,e="power2.inOut")=>at("zoom",t,n=>({outgoing:ne.create().keys("scale",[[n.outStart,1],[n.outStart+n.frames,1.25,e]]).keys("opacity",[[n.outStart,1],[n.outStart+n.frames,0,e]]),incoming:ne.create().keys("scale",[[0,.85],[n.frames,1,e]]).keys("opacity",[[0,0],[n.frames,1,e]])})),whip:(t="left",e=10)=>{let n=wd.push(t,e,"expo.inOut");return at("whip",e,r=>({...n.build(r),sceneProps:{motionBlurShutter:360}}))},wipe:(t="left",e=18,n="power2.inOut")=>at("wipe",e,r=>{let{dx:i,dy:o}=ns(t,r.width,r.height),a=i!==0?"x":"y",s=i!==0?r.inRest.x:r.inRest.y;return{incomingMatte:L.box({id:Q("wipe-matte"),position:"absolute",x:r.inRest.x,y:r.inRest.y,width:r.width,height:r.height,background:"#ffffff"}).animate(ne.keys(a,[[0,s-(i||o)],[r.frames,s,n]]))}}),iris:(t=20,e={})=>at("iris",t,n=>{let[r,i]=e.at??[.5,.5],o=n.inRest.x+r*n.width,a=n.inRest.y+i*n.height,s=Math.hypot(Math.max(r,1-r)*n.width,Math.max(i,1-i)*n.height);return{incomingMatte:L.shape("circle",{id:Q("iris-matte"),position:"absolute",x:o-s,y:a-s,width:s*2,height:s*2,fillColor:"#ffffff"}).animate(ne.keys("scale",[[0,0],[n.frames,1,e.ease??"power2.inOut"]]))}})};function Pi(t,e,n){let r=t[e];return typeof r=="number"?r:n}function vd(t,e={}){let n=[],r=[],i=0;t.forEach((a,s)=>{let u=s===0?void 0:a.transition,c=Math.min(u?.frames??0,t[s-1]?.duration??0),m=Math.max(0,i-c),d=Math.max(1,Math.round(a.duration));r.push(m);let p=a.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=m,p.durationFrames=d,n.push(p),i=m+d}),t.forEach((a,s)=>{if(s===0||!a.transition||a.transition.frames===0)return;let u=n[s-1],c=n[s],m=Math.min(a.transition.frames,t[s-1].duration),d=e.width??Pi(c,"width",1920),p=e.height??Pi(c,"height",1080),f=a.transition.build({width:d,height:p,frames:m,outStart:t[s-1].duration-m,outRest:{x:typeof u.x=="number"?u.x:0,y:typeof u.y=="number"?u.y:0},inRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0}}),b=(g,y)=>{if(!y)return;let k=g.animation?.tracks??[];g.animation=ne.merge({tracks:k},y).toSpec()};b(u,f.outgoing),b(c,f.incoming),f.sceneProps&&(Object.assign(u,f.sceneProps),Object.assign(c,f.sceneProps)),f.incomingMatte&&(c.matte={node:f.incomingMatte,mode:"alpha"})});let o=L.box({id:e.id??Q("sequence"),position:"absolute",x:0,y:0,width:e.width??Pi(n[0]??{},"width",1920),height:e.height??Pi(n[0]??{},"height",1080),startFrame:e.startFrame??0,durationFrames:Math.max(1,i),children:n});return Object.defineProperty(o,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(o,"sceneStarts",{value:r,enumerable:!1}),o}h();var Ig={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function Vg([t,e,n],r){let i=r*Math.PI/180,o=Math.cos(i),a=Math.sin(i);return[o*t+a*n,e,-a*t+o*n]}function Sd(t,e,n,r){let[i,o,a]=Vg(t,r),s=Math.hypot(i,o,a)||1;return{x:e[0]+i/s*n,y:e[1]+o/s*n,z:e[2]+a/s*n,targetX:e[0],targetY:e[1],targetZ:e[2]}}function Mi(t,e){let n=Ig[t],r=e.target??[960,540,0],i=e.distance??1600,o=e.rotation??0,a=e.intensity??1,s=e.id??Q(`lighting-${t}`),u=[st.environment(n.environment,{id:`${s}-environment`,intensity:n.envIntensity*a,rotation:o,exposure:e.exposure,toneMapping:e.toneMapping,fog:e.fog,bloom:e.bloom}),st.directional({id:`${s}-key`,color:n.key.color,intensity:n.key.intensity*a,...Sd(n.key.dir,r,i,o),castShadow:e.shadows??!0,shadowSoftness:e.shadowSoftness??3})];for(let[c,m]of[["rim",n.rim],["fill",n.fill]])m&&u.push(st.directional({id:`${s}-${c}`,color:m.color,intensity:m.intensity*a,...Sd(m.dir,r,i,o)}));return u}var zg={studio:(t={})=>Mi("studio",t),soft:(t={})=>Mi("soft",t),sunset:(t={})=>Mi("sunset",t),dramatic:(t={})=>Mi("dramatic",t)};h();h();var jg="@dimforge/rapier2d-deterministic-compat",_g="@dimforge/rapier3d-deterministic-compat";async function kd(t,e){let n;try{n=await e()}catch(i){throw new Error(`Physics needs the optional dependency "${t}". Install it with \`npm i ${t}\`.`,{cause:i})}let r=n.default??n;return await r.init(),r}var Pd,Md;async function os(t){if(t===2){Pd??=kd(jg,()=>import("./rapier-JD7KNQRV.mjs"));let n=await Pd;return{createWorld2D:r=>new rs(n,r),createWorld3D:()=>{throw new Error("This backend was loaded for 2D.")}}}Md??=kd(_g,()=>import("./rapier-AHBIGHEL.mjs"));let e=await Md;return{createWorld2D:()=>{throw new Error("This backend was loaded for 3D.")},createWorld3D:n=>new is(e,n)}}var rs=class{constructor(e,n){this.R=e;this.world=new e.World({x:n[0],y:n[1]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let n=this.R,r=Td(n,e.type).setTranslation(e.position[0],e.position[1]).setRotation(e.angle).setLinvel(e.velocity[0],e.velocity[1]).setAngvel(e.angularVelocity).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation&&r.lockRotations();let i=this.world.createRigidBody(r),o=this.world.createCollider($g(n,e.shape).setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(n.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),i),a={raw:i,position:()=>{let s=i.translation();return[s.x,s.y]},rotation:()=>i.rotation(),velocity:()=>{let s=i.linvel();return[s.x,s.y]},angularVelocity:()=>i.angvel(),sleeping:()=>i.isSleeping(),mass:()=>i.mass(),setEnabled:s=>i.setEnabled(s),applyImpulse:([s,u])=>i.applyImpulse({x:s,y:u},!0),setKinematicTarget:([s,u],c)=>{i.setNextKinematicTranslation({x:s,y:u}),i.setNextKinematicRotation(c)}};return this.byCollider.set(o.handle,a),a}addJoint(e,n,r){let i=this.R,o={x:r.anchorA[0],y:r.anchorA[1]},a={x:r.anchorB[0],y:r.anchorB[1]},s;switch(r.type){case"revolute":case"spherical":s=i.JointData.revolute(o,a);break;case"fixed":s=i.JointData.fixed(o,0,a,0);break;case"rope":s=i.JointData.rope(r.length,o,a);break;case"spring":s=i.JointData.spring(r.restLength,r.stiffness,r.damping,o,a);break}this.world.createImpulseJoint(s,Ti(e),Ti(n),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((n,r,i)=>{if(!i)return;let o=this.byCollider.get(n),a=this.byCollider.get(r);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}},is=class{constructor(e,n){this.R=e;this.world=new e.World({x:n[0],y:n[1],z:n[2]}),this.events=new e.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(e){let n=this.R,[r,i,o,a]=e.rotation,s=Td(n,e.type).setTranslation(e.position[0],e.position[1],e.position[2]).setRotation({x:r,y:i,z:o,w:a}).setLinvel(e.velocity[0],e.velocity[1],e.velocity[2]).setAngvel(xn(e.lockRotation?[0,0,0]:e.angularVelocity.map((p,f)=>e.enabledRotations&&!e.enabledRotations[f]?0:p))).setLinearDamping(e.linearDamping).setAngularDamping(e.angularDamping).setGravityScale(e.gravityScale).setCcdEnabled(e.ccd).setEnabled(e.enabled);e.lockRotation?s.lockRotations():e.enabledRotations&&s.enabledRotations(...e.enabledRotations);let u=this.world.createRigidBody(s),c=Ug(n,e.shape),m=this.world.createCollider(c.setDensity(e.density).setFriction(e.friction).setRestitution(e.restitution).setActiveEvents(n.ActiveEvents.COLLISION_EVENTS).setSensor(e.sensor??!1),u),d={raw:u,position:()=>{let p=u.translation();return[p.x,p.y,p.z]},rotation:()=>{let p=u.rotation();return[p.x,p.y,p.z,p.w]},velocity:()=>{let p=u.linvel();return[p.x,p.y,p.z]},angularVelocity:()=>{let p=u.angvel();return[p.x,p.y,p.z]},sleeping:()=>u.isSleeping(),mass:()=>u.mass(),setEnabled:p=>u.setEnabled(p),applyImpulse:p=>u.applyImpulse(xn(p),!0),setKinematicTarget:(p,[f,b,g,y])=>{u.setNextKinematicTranslation(xn(p)),u.setNextKinematicRotation({x:f,y:b,z:g,w:y})}};return this.byCollider.set(m.handle,d),d}addJoint(e,n,r){let i=this.R,o=xn(r.anchorA),a=xn(r.anchorB),s;switch(r.type){case"revolute":s=i.JointData.revolute(o,a,xn(r.axis??[0,0,1]));break;case"spherical":s=i.JointData.spherical(o,a);break;case"fixed":{let u={x:0,y:0,z:0,w:1};s=i.JointData.fixed(o,u,a,u);break}case"rope":s=i.JointData.rope(r.length,o,a);break;case"spring":s=i.JointData.spring(r.restLength,r.stiffness,r.damping,o,a);break}this.world.createImpulseJoint(s,Ti(e),Ti(n),!0).setContactsEnabled(!1)}step(e){this.world.timestep=e,this.world.step(this.events),this.events.drainCollisionEvents((n,r,i)=>{if(!i)return;let o=this.byCollider.get(n),a=this.byCollider.get(r);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}};function xn([t,e,n]){return{x:t,y:e,z:n}}function Ti(t){return t.raw}function Td(t,e){let n=t.RigidBodyDesc;return e==="fixed"?n.fixed():e==="kinematic"?n.kinematicPositionBased():n.dynamic()}function $g(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let n=Math.min(e.radius??0,e.hx/2,e.hy/2);return n>0?t.ColliderDesc.roundCuboid(e.hx-n,e.hy-n,n):t.ColliderDesc.cuboid(e.hx,e.hy)}case"hull":{let n=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!n)throw new Error("Physics: could not build a convex hull for this shape.");return n}}}function Ug(t,e){switch(e.kind){case"ball":return t.ColliderDesc.ball(e.radius);case"box":{let n=Math.min(e.radius??0,e.hx/2,e.hy/2,e.hz/2);return n>0?t.ColliderDesc.roundCuboid(e.hx-n,e.hy-n,e.hz-n,n):t.ColliderDesc.cuboid(e.hx,e.hy,e.hz)}case"cylinder":return t.ColliderDesc.cylinder(e.halfHeight,e.radius);case"hull":{let n=t.ColliderDesc.convexHull(new Float32Array(e.points));if(!n)throw new Error("Physics: could not build a convex hull for this shape.");return n}}}h();var mr=class{constructor(e,n,r,i,o,a,s){this.world=e;this.type=r;this.layer=i;this.frame=o;this.options=a;this.sim=n,this.recording=s}world;type;layer;frame;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get rotation(){return this.recording.signal("rotation")}get centerX(){return this.recording.signal("centerX")}get centerY(){return this.recording.signal("centerY")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get speed(){return this.recording.signal("speed")}get angularVelocity(){return this.recording.signal("angularVelocity")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let n=this.options.follow;if(this.type!=="kinematic"||!n)return;let r=this.frame,i=this.world.fps,o=n.x===void 0?void 0:ze(n.x,e,i),a=n.y===void 0?void 0:ze(n.y,e,i),s=n.rotation===void 0?r.rotation:ze(n.rotation,e,i),u=this.initialLayerXY(),c=Dd(o??u[0],a??u[1],s,r),m=this.world.pixelsPerMeter;return{position:[c[0]/m,c[1]/m],rotation:s*Math.PI/180}}initialLayerXY(){let e=this.layer;return[Number(e?.x??0),Number(e?.y??0)]}record(e,n){let r=this.world.pixelsPerMeter,[i,o]=this.sim.position(),a=i*r,s=o*r,u=this.recording,c=u.channel("rotation"),m=this.sim.rotation()*180/Math.PI;c[e]=n<0?Wt(this.frame.rotation,m):Wt(c[n],m);let[d,p]=Xg(a,s,c[e],this.frame);u.channel("x")[e]=d,u.channel("y")[e]=p,u.channel("centerX")[e]=a,u.channel("centerY")[e]=s;let[f,b]=this.sim.velocity();u.channel("vx")[e]=f*r,u.channel("vy")[e]=b*r,u.channel("speed")[e]=Math.hypot(f,b)*r,u.channel("angularVelocity")[e]=this.sim.angularVelocity()*180/Math.PI,u.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"]];return this.options.lockRotation||e.push(["rotation","rotation"]),e}localAnchor(e){if(!e)return[0,0];let n=this.world.pixelsPerMeter,[r,i]=this.sim.position(),o=-this.sim.rotation(),a=e[0]/n-r,s=e[1]/n-i;return[a*Math.cos(o)-s*Math.sin(o),a*Math.sin(o)+s*Math.cos(o)]}center(){let e=this.world.pixelsPerMeter,[n,r]=this.sim.position();return[n*e,r*e]}},wn=class extends yn{constructor(e,n){let r=n.pixelsPerMeter??100,i=n.gravity??2400,o=typeof i=="number"?[0,i/r]:[i[0]/r,i[1]/r],a=e.createWorld2D(o);super(a,o,n)}body(e,n={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=Wg(e,n),a=this.pixelsPerMeter,s=n.type??"dynamic",[u,c]=Dd(o.x,o.y,o.rotation,o),m=n.velocity??[0,0],d={type:s,position:[u/a,c/a],angle:o.rotation*Math.PI/180,velocity:[m[0]/a,m[1]/a],angularVelocity:(n.angularVelocity??0)*Math.PI/180,linearDamping:n.linearDamping??0,angularDamping:n.angularDamping??0,gravityScale:n.gravityScale??1,lockRotation:n.lockRotation??!1,ccd:n.ccd??!1,enabled:!0,sensor:n.sensor??!1,density:n.density??1,friction:n.friction??.6,restitution:n.restitution??.3,shape:Cd(o.shape,1/a)},p=this.sim.addBody(d),f=new mr(this,p,s,i,o,n,this.newRecording());return this.addBody(f)}ground(e){return this.body({x:-1e6/2,y:e.y,width:1e6,height:2e3},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:n,height:r}=e,i=e.x??0,o=e.y??0,a=e.thickness??400,s={type:"fixed",friction:e.friction,restitution:e.restitution??.2},u=r*4+a,c={floor:this.body({x:i-a,y:o+r,width:n+2*a,height:a},s),left:this.body({x:i-a,y:o+r-u,width:a,height:u},s),right:this.body({x:i+n,y:o+r-u,width:a,height:u},s),ceiling:void 0};return e.ceiling&&(c.ceiling=this.body({x:i-a,y:o-a,width:n+2*a,height:a},s)),c}pin(e,n){let r=n??e.center(),i=this.anchorBody(r);return this.joint(e,i,{type:"revolute",anchorA:e.localAnchor(r),anchorB:[0,0]}),this}hinge(e,n,r){return this.joint(e,n,{type:"revolute",anchorA:e.localAnchor(r),anchorB:n.localAnchor(r)}),this}weld(e,n){let r=e.center();return this.joint(e,n,{type:"fixed",anchorA:[0,0],anchorB:n.localAnchor(r)}),this}spring(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=this.pixelsPerMeter,u=(r.length??Math.hypot(a[0]-o[0],a[1]-o[1]))/s,c=Gg(e,i),m=2*Math.PI*(r.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:c*m*m,damping:2*(r.dampingRatio??.2)*c*m}),this}rope(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=r.length??Math.hypot(a[0]-o[0],a[1]-o[1]);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:s/this.pixelsPerMeter}),this}force(e,n){let r=this.pixelsPerMeter;return this.addForce(e,i=>[n.x===void 0?0:ze(n.x,i,this.fps)/r,n.y===void 0?0:ze(n.y,i,this.fps)/r]),this}field(e,n={}){let r=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s]=i.sim.position(),[u,c]=i.sim.velocity(),m=e({x:a*r,y:s*r,vx:u*r,vy:c*r,frame:o,body:i});return m?[m[0]/r,m[1]/r]:null},n.bodies),this}impulse(e,n,r){let i=this.pixelsPerMeter;return this.addImpulse(e,n,[r[0]/i,r[1]/i]),this}lerpRotation(e,n,r){return e+(n-e)*r}joint(e,n,r){this.assertOpen(),this.sim.addJoint(e.sim,n.sim,r)}anchorBody(e){return this.body({x:e[0]-.5,y:e[1]-.5,width:1,height:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,n,r,i){let o=r??e.center();if(Array.isArray(n)){let a=i??n;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:n,pa:o,pb:i??n.center()}}};function Gg(t,e){let n=t.type==="dynamic"?t.sim.mass():0,r=e.type==="dynamic"?e.sim.mass():0;return n>0&&r>0?n*r/(n+r):Math.max(n,r,.001)}function Ze(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function Wg(t,e){let n=typeof t.id=="string"?` "${t.id}"`:"";if(typeof t.x!="number"||typeof t.y!="number")throw new Error(`Physics: layer${n} needs numeric \`x\` and \`y\` (absolute position) to become a body.`);let r=e.size?.[0]??(typeof t.width=="number"?t.width:void 0),i=e.size?.[1]??(typeof t.height=="number"?t.height:void 0);if((r===void 0||i===void 0)&&t.kind==="text"){let s=Ie.measure(String(t.text??""),{fontFamily:String(t.fontFamily??"Inter"),fontSize:Ze(t.fontSize,48),fontWeight:t.fontWeight,letterSpacing:Ze(t.letterSpacing,0),lineHeight:typeof t.lineHeight=="number"?t.lineHeight:void 0});r??=s.width,i??=s.height}if(r===void 0||i===void 0||r<=0||i<=0)throw new Error(`Physics: layer${n} needs a numeric \`width\` and \`height\` (or the \`size\` option) to become a body.`);let o=Ze(t.scale,1);return{...{x:t.x,y:t.y,width:r,height:i,scale:o,anchorX:Ze(t.anchorX,.5),anchorY:Ze(t.anchorY,.5),rotation:Ze(t.rotation,0)},shape:Cd(Hg(t,r,i,e.shape??"auto"),o)}}function Hg(t,e,n,r){let o=t.kind==="shape"?String(t.shapeType??"rect"):"rect",a=Ze(t.borderRadius,Ze(t.cornerRadius,0)),s={kind:"box",hx:e/2,hy:n/2,radius:a};if(r==="box")return s;if(r==="circle"||r==="auto"&&o==="circle")return{kind:"ball",radius:Math.min(e,n)/2};if(r==="auto"&&o==="rect")return s;if(r==="hull"||r==="auto"){let u=Yg(t,o,e,n);return u.length>=6?{kind:"hull",points:u}:s}return s}function Yg(t,e,n,r){let i=e==="path"?String(t.d??""):Os({shapeType:e,width:n,height:r,cornerRadius:Ze(t.cornerRadius,Ze(t.borderRadius,0)),polygonSides:t.polygonSides,starPoints:t.starPoints,starInnerRadiusRatio:t.starInnerRadiusRatio,arrowHeadWidth:t.arrowHeadWidth,arrowHeadLength:t.arrowHeadLength,arrowShaftWidth:t.arrowShaftWidth}),o=[];for(let a of Ns(i))o.push(a.p0.x-n/2,a.p0.y-r/2,a.p1.x-n/2,a.p1.y-r/2);return o}function Cd(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,radius:(t.radius??0)*e};case"hull":return{kind:"hull",points:t.points.map(n=>n*e)}}}function Ad(t,e){let n=t*Math.PI/180,r=(.5-e.anchorX)*e.width*e.scale,i=(.5-e.anchorY)*e.height*e.scale;return[r*Math.cos(n)-i*Math.sin(n),r*Math.sin(n)+i*Math.cos(n)]}function Dd(t,e,n,r){let[i,o]=Ad(n,r);return[t+r.anchorX*r.width+i,e+r.anchorY*r.height+o]}function Xg(t,e,n,r){let[i,o]=Ad(n,r);return[t-i-r.anchorX*r.width,e-o-r.anchorY*r.height]}h();var St=Math.PI/180;function Od(t,e,n){let r=s=>s*St/2,i=[Math.sin(r(t)),0,0,Math.cos(r(t))],o=[0,Math.sin(r(e)),0,Math.cos(r(e))],a=[0,0,Math.sin(r(n)),Math.cos(r(n))];return Ci(Ci(a,o),i)}function Ci(t,e){let[n,r,i,o]=t,[a,s,u,c]=e;return[o*a+n*c+r*u-i*s,o*s-n*u+r*c+i*a,o*u+n*s-r*a+i*c,o*c-n*a-r*s-i*u]}function qg(t,e){let[n,r,i,o]=t,a=1-2*(r*r+i*i),s=2*(n*r+o*i),u=2*(n*i-o*r),c=2*(r*i+o*n),m=1-2*(n*n+r*r),d=2*(n*r-o*i),p=1-2*(n*n+i*i),f=Math.max(-1,Math.min(1,-u)),b;if(Math.abs(f)>.999999){let A=Math.asin(f),v=e?e[0]*St:0,O=Math.atan2(-d,p)+(f>0?v:-v);b=[v,A,O]}else b=[Math.atan2(c,m),Math.asin(f),Math.atan2(s,a)];let g=[b[0]/St,b[1]/St,b[2]/St];if(!e)return g;let y=[g[0]+180,180-g[1],g[2]+180],k=A=>[Wt(e[0],A[0]),Wt(e[1],A[1]),Wt(e[2],A[2])],S=k(g),P=k(y),w=A=>Math.abs(A[0]-e[0])+Math.abs(A[1]-e[1])+Math.abs(A[2]-e[2]);return w(S)<=w(P)?S:P}var pr=class{constructor(e,n,r,i,o,a,s){this.world=e;this.type=r;this.layer=i;this.start=o;this.options=a;this.sim=n,this.recording=s}world;type;layer;start;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get z(){return this.recording.signal("z")}get rotateX(){return this.recording.signal("rotateX")}get rotateY(){return this.recording.signal("rotateY")}get rotateZ(){return this.recording.signal("rotateZ")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get vz(){return this.recording.signal("vz")}get speed(){return this.recording.signal("speed")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(e){let n=this.options.follow;if(this.type!=="kinematic"||!n)return;let r=this.world.fps,i=(u,c)=>u===void 0?c:ze(u,e,r),o=this.start.position,a=this.start.rotation,s=this.world.pixelsPerMeter;return{position:[i(n.x,o[0])/s,i(n.y,o[1])/s,i(n.z,o[2])/s],rotation:Od(i(n.rotateX,a[0]),i(n.rotateY,a[1]),i(n.rotateZ,a[2]))}}record(e,n){let r=this.world.pixelsPerMeter,i=this.recording,[o,a,s]=this.sim.position();i.channel("x")[e]=o*r,i.channel("y")[e]=a*r,i.channel("z")[e]=s*r;let u=i.channel("rotateX"),c=i.channel("rotateY"),m=i.channel("rotateZ"),d=n<0?this.start.rotation:[u[n],c[n],m[n]],p=qg(this.sim.rotation(),d);u[e]=p[0],c[e]=p[1],m[e]=p[2];let[f,b,g]=this.sim.velocity();i.channel("vx")[e]=f*r,i.channel("vy")[e]=b*r,i.channel("vz")[e]=g*r,i.channel("speed")[e]=Math.hypot(f,b,g)*r,i.channel("sleeping")[e]=this.sim.sleeping()?1:0}boundChannels(){let e=[["x","x"],["y","y"],["z","z"]];return this.options.lockRotation!==!0&&e.push(["rotateX","rotateX"],["rotateY","rotateY"],["rotateZ","rotateZ"]),e}localAnchor(e){if(!e)return[0,0,0];let n=this.world.pixelsPerMeter,r=this.sim.position(),[i,o,a,s]=this.sim.rotation(),u=[e[0]/n-r[0],e[1]/n-r[1],e[2]/n-r[2]];return Zg(u,[-i,-o,-a,s])}center(){let e=this.world.pixelsPerMeter,[n,r,i]=this.sim.position();return[n*e,r*e,i*e]}};function Zg(t,e){let n=Ci(Ci(e,[t[0],t[1],t[2],0]),[-e[0],-e[1],-e[2],e[3]]);return[n[0],n[1],n[2]]}var vn=class extends yn{constructor(e,n){let r=n.pixelsPerMeter??100,i=n.gravity??2400,o=typeof i=="number"?[0,i/r,0]:[i[0]/r,i[1]/r,i[2]/r];super(e.createWorld3D(o),o,n)}body(e,n={}){this.assertOpen();let i=typeof e.kind=="string"?e:void 0,o=e,a=[ue(o.x,0),ue(o.y,0),ue(o.z,0)],s=[ue(o.rotateX,0),ue(o.rotateY,0),ue(o.rotateZ,0)],u=this.pixelsPerMeter,c=n.type??"dynamic",m=n.velocity??[0,0,0],d=n.angularVelocity??[0,0,0],p={type:c,position:[a[0]/u,a[1]/u,a[2]/u],rotation:Od(s[0],s[1],s[2]),velocity:[m[0]/u,m[1]/u,m[2]/u],angularVelocity:[d[0]*St,d[1]*St,d[2]*St],linearDamping:n.linearDamping??0,angularDamping:n.angularDamping??0,gravityScale:n.gravityScale??1,lockRotation:n.lockRotation===!0,...typeof n.lockRotation=="object"&&{enabledRotations:[!n.lockRotation.x,!n.lockRotation.y,!n.lockRotation.z]},ccd:n.ccd??!1,enabled:!0,sensor:n.sensor??!1,density:n.density??1,friction:n.friction??.6,restitution:n.restitution??.3,shape:Jg(Kg(o,n),1/u)},f=this.sim.addBody(p),b=new pr(this,f,c,i,{position:a,rotation:s},n,this.newRecording());return this.addBody(b)}ground(e){return this.body({x:0,y:e.y+2e3/2,z:0,width:1e6,height:2e3,depth:1e6},{type:"fixed",friction:e.friction,restitution:e.restitution??.2})}walls(e){let{width:n,height:r,depth:i}=e,[o,a,s]=[e.x??0,e.y??0,e.z??0],u=e.thickness??400,c={type:"fixed",friction:e.friction,restitution:e.restitution??.2},m=r*4,d=a+r/2-m/2;return[this.body({x:o,y:a+r/2+u/2,z:s,width:n+2*u,height:u,depth:i+2*u},c),this.body({x:o-n/2-u/2,y:d,z:s,width:u,height:m,depth:i+2*u},c),this.body({x:o+n/2+u/2,y:d,z:s,width:u,height:m,depth:i+2*u},c),this.body({x:o,y:d,z:s-i/2-u/2,width:n,height:m,depth:u},c),this.body({x:o,y:d,z:s+i/2+u/2,width:n,height:m,depth:u},c)]}pin(e,n){let r=n??e.center(),i=this.anchorBody(r);return this.joint(e,i,{type:"spherical",anchorA:e.localAnchor(r),anchorB:[0,0,0]}),this}hinge(e,n,r,i=[0,0,1]){return this.joint(e,n,{type:"revolute",anchorA:e.localAnchor(r),anchorB:n.localAnchor(r),axis:i}),this}weld(e,n){return this.joint(e,n,{type:"fixed",anchorA:[0,0,0],anchorB:n.localAnchor(e.center())}),this}spring(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB),s=this.pixelsPerMeter,u=(r.length??Nd(o,a))/s,c=e.type==="dynamic"?e.sim.mass():0,m=i.type==="dynamic"?i.sim.mass():0,d=c>0&&m>0?c*m/(c+m):Math.max(c,m,.001),p=2*Math.PI*(r.frequency??2);return this.joint(e,i,{type:"spring",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:d*p*p,damping:2*(r.dampingRatio??.2)*d*p}),this}rope(e,n,r={}){let{other:i,pa:o,pb:a}=this.endpoints(e,n,r.anchorA,r.anchorB);return this.joint(e,i,{type:"rope",anchorA:e.localAnchor(o),anchorB:i.localAnchor(a),length:(r.length??Nd(o,a))/this.pixelsPerMeter}),this}force(e,n){let r=this.pixelsPerMeter,i=(o,a)=>o===void 0?0:ze(o,a,this.fps)/r;return this.addForce(e,o=>[i(n.x,o),i(n.y,o),i(n.z,o)]),this}field(e,n={}){let r=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s,u]=i.sim.position(),[c,m,d]=i.sim.velocity(),p=e({x:a*r,y:s*r,z:u*r,vx:c*r,vy:m*r,vz:d*r,frame:o,body:i});return p?[p[0]/r,p[1]/r,p[2]/r]:null},n.bodies),this}impulse(e,n,r){let i=this.pixelsPerMeter;return this.addImpulse(e,n,[r[0]/i,r[1]/i,r[2]/i]),this}lerpRotation(e,n,r){let i=e[0]*n[0]+e[1]*n[1]+e[2]*n[2]+e[3]*n[3]<0?-1:1,o=e.map((s,u)=>s+(n[u]*i-s)*r),a=Math.hypot(...o)||1;return o.map(s=>s/a)}joint(e,n,r){this.assertOpen(),this.sim.addJoint(e.sim,n.sim,r)}anchorBody(e){return this.body({x:e[0],y:e[1],z:e[2],width:1,height:1,depth:1},{type:"fixed",output:"none",sensor:!0})}endpoints(e,n,r,i){let o=r??e.center();if(Array.isArray(n)){let a=i??n;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:n,pa:o,pb:i??n.center()}}};function Nd(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])}function ue(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function Kg(t,e){let n=typeof t.id=="string"?` "${t.id}"`:"",r=ue(t.scale,1),i=[r*ue(t.scaleX,1),r*ue(t.scaleY,1),r*ue(t.scaleZ,1)],o=i[0]===i[1]&&i[1]===i[2],a=t.primitive3d??{},s=e.shape??"auto",u=()=>{let g=Qg(t.modelData);if(g)return{kind:"hull",points:g.map((y,k)=>y*i[k%3])}};if(e.size||s==="box"){let[g,y,k]=e.size??as(t,a)??[0,0,0];if(g>0&&y>0&&k>0)return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:a.type==="roundedBox"?ue(a.radius,0)*Math.min(...i):0}}if(s==="hull"){let g=u();if(g)return g}if((s==="sphere"||s==="auto"&&a.type==="sphere")&&(o||s==="sphere")){let g=ue(a.radius,0)||Math.max(...as(t,a)??[0])/2;if(g>0)return{kind:"ball",radius:g*Math.max(...i)}}let m=ue(a.radiusTop,ue(a.radius,0)),d=ue(a.radiusBottom,ue(a.radius,0));if((s==="cylinder"||s==="auto"&&a.type==="cylinder")&&m===d&&m>0&&i[0]===i[2])return{kind:"cylinder",halfHeight:ue(a.height,0)*i[1]/2,radius:m*i[0]};if(s==="auto"&&a.type==="roundedBox"&&(a.taper??1)===1){let[g,y,k]=[ue(a.width,0),ue(a.height,0),ue(a.depth,0)];return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:ue(a.radius,0)*Math.min(...i)}}let f=u();if(f)return f;let b=as(t,a);if(b)return{kind:"box",hx:b[0]*i[0]/2,hy:b[1]*i[1]/2,hz:b[2]*i[2]/2};throw new Error(`Physics: layer${n} has no mesh or size to build a 3D collider from; pass \`size: [w, h, d]\`.`)}function as(t,e){if(e.type==="roundedBox")return[ue(e.width,0),ue(e.height,0),ue(e.depth,0)];if(e.type==="sphere"){let n=ue(e.radius,0)*2;return[n,n,n]}if(e.type==="cylinder"){let n=Math.max(ue(e.radiusTop,ue(e.radius,0)),ue(e.radiusBottom,ue(e.radius,0)))*2;return[n,ue(e.height,0),n]}if(typeof t.width=="number"&&typeof t.height=="number"&&typeof t.depth=="number")return[t.width,t.height,t.depth]}function Qg(t){let e=t?.meshes;if(!e?.length)return;let n=0;for(let a of e)n+=(a.positions?.length??0)/3;if(n<4)return;let r=Math.max(1,Math.floor(n/4096)),i=[],o=0;for(let a of e){let s=a.positions;if(s)for(let u=0;u<s.length;u+=3,o++)o%r===0&&i.push(s[u],s[u+1],s[u+2])}return i}function Jg(t,e){switch(t.kind){case"ball":return{kind:"ball",radius:t.radius*e};case"box":return{kind:"box",hx:t.hx*e,hy:t.hy*e,hz:t.hz*e,radius:(t.radius??0)*e};case"cylinder":return{kind:"cylinder",halfHeight:t.halfHeight*e,radius:t.radius*e};case"hull":return{kind:"hull",points:t.points.map(n=>n*e)}}}var eb={async world2d(t){return new wn(await os(2),t)},async world3d(t){return new vn(await os(3),t)}};h();var ye=(...t)=>t,tb={pixelArt:(t={})=>ye(new qt({palette:t.palette??"pico8",pixelSize:t.pixelSize??6,dither:.4})),gameBoy:(t={})=>ye(new qt({palette:"gameboy",pixelSize:t.pixelSize??4,dither:.6})),teletext:(t={})=>ye(new qt({palette:"teletext",pixelSize:t.pixelSize??10})),ledWall:(t={})=>ye(new io({size:t.size??14,shape:"circle",gap:.18})),ascii:(t={})=>ye(new qi({cellSize:t.cellSize??10,colorMode:t.matrix?"green":"source",bg:t.matrix?"#020a04":"#0b0b0b"})),oneBit:(t={})=>ye(new Ji({mode:"bayer",scale:t.scale??2,dark:t.dark??"#111111",light:t.light??"#f2efe6"})),risograph:(t={})=>{let e=t.inkA??"#1d3fbb",n=t.inkB??"#ff5fa2",r=t.paper??"#f4efe4";return ye(new Mt({stops:[{position:0,color:e},{position:.55,color:n},{position:1,color:r}]}),new qt({palette:"custom",colors:[e,n,r],dither:.8,pixelSize:2}),new Je({strength:.2}))},cartoon:(t={})=>ye(new Nr({levels:t.levels??4,edgeColor:t.ink??"#111111",saturation:1.3})),comic:(t={})=>ye(new Nr({levels:4,edgeWidth:1.5,saturation:1.4}),new On({frequency:t.dotFrequency??70,opacity:.35})),thermal:()=>ye(new Mt({stops:[{position:0,color:"#000010"},{position:.25,color:"#3b0a7a"},{position:.5,color:"#c4205f"},{position:.75,color:"#ff9a1f"},{position:1,color:"#fffbe0"}]})),vhs:(t={})=>ye(new Nn({tracking:t.tracking??.5,chroma:4,curvature:.04,scanlines:.25,mask:.05,noise:.15}),new Dr({amount:3})),crt:(t={})=>ye(new Nn({curvature:t.curvature??.15,scanlines:.5,mask:.35})),glitch:(t={})=>ye(new Dr({amount:t.amount??18}),new Nn({tracking:1,chroma:6,curvature:0,scanlines:.1,mask:0,vignette:0})),oilPainting:(t={})=>ye(new Ar({style:"oil",radius:t.brush??5})),watercolor:(t={})=>ye(new Ar({style:"watercolor",radius:t.brush??6,paper:.5})),topographic:(t={})=>ye(new Qi({levels:t.levels??16,fill:"flat",lineColor:t.ink??"#5a3a1a",fillColor:t.paper??"#f3ead8"})),kaleidoscope:(t={})=>ye(new to({segments:t.segments??8,rotation:t.rotation??0})),opArt:(t={})=>ye(new ro({pattern:t.pattern??"stripes",frequency:t.frequency??60})),holographic:(t={})=>ye(new eo({strength:t.strength??.7,shift:t.shift??0})),noir:()=>ye(new Mt({stops:[{position:0,color:"#000000"},{position:.55,color:"#8a8a8a"},{position:1,color:"#ffffff"}]}),new Je({strength:.35}),new Zt({strength:.6})),film:()=>ye(new Je({strength:.25}),new Zt({strength:.35}))};h();var Yd=Mn(am(),1),Ri=Mn(sm(),1);var ds=Mn(Fd(),1);h();var fr=G.dirname(kr(import.meta.url)),Bd=["import","meta","url"].join("."),nb=Ii(import.meta.url),hr="/@framefields/engine",Ed={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts","framefields/components":"components/index.ts"},ss={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},Ld=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),rb=`
|
|
716
716
|
const stub = () => new Proxy(function () {}, {
|
|
717
717
|
get: (_t, k) => (k === "__esModule" ? true : k === Symbol.toPrimitive ? () => "" : stub()),
|
|
718
718
|
apply: () => stub(),
|
|
719
719
|
construct: () => stub(),
|
|
720
720
|
});
|
|
721
721
|
module.exports = stub();
|
|
722
|
-
`;async function
|
|
723
|
-
`),resolveDir:G.dirname(n),loader:"js"})),s.onResolve({filter:/^\/@framefields\/engine\//},u=>({path:u.path,external:!0})),s.onResolve({filter:/^framefields(\/|$)/},u=>
|
|
724
|
-
${n.replaceAll(
|
|
722
|
+
`;async function ib(t){let{build:e}=await import("./esbuild-GWV7CM7D.mjs"),n=G.resolve(fr,".."),r=G.join(fr,"shims"),i={player:G.join(fr,"player.ts")};for(let[o,a]of Object.entries(Ed))i[$d(o)]=G.join(n,a);for(let o of new Set(Object.values(ss)))i[`shims/${o}`]=G.join(r,`${o}.ts`);await be.promises.rm(t,{recursive:!0,force:!0}),await e({..._d,entryPoints:i,outdir:t,outExtension:{".js":".mjs"},splitting:!0,minify:!0,conditions:["development","browser","import"],define:{"process.env.NODE_ENV":'"production"',global:"globalThis"},inject:[G.join(r,"process.ts")],plugins:[{name:"framefields-engine",setup(o){o.onResolve({filter:/^framefields-preview:renderers$/},()=>({path:ub()})),Ud(o,a=>({path:G.join(r,`${a}.ts`)}))}}]})}async function Id(t){let{build:e}=await import("./esbuild-GWV7CM7D.mjs"),n=G.resolve(t.entry),r=s=>({path:`${hr}/${s}.mjs`,external:!0}),i={modelsDir:t.modelsDir,ortBase:t.ortBase},o=await e({..._d,entryPoints:["framefields-preview:entry"],write:!1,metafile:!0,sourcemap:"inline",plugins:[{name:"framefields-project",setup(s){s.onResolve({filter:/^framefields-preview:entry$/},()=>({path:"entry",namespace:"framefields-preview"})),s.onLoad({filter:/.*/,namespace:"framefields-preview"},()=>({contents:[`import { startPlayer } from ${JSON.stringify(`${hr}/player.mjs`)};`,`import * as mod from ${JSON.stringify(n)};`,`startPlayer(mod, ${JSON.stringify(t.exportName)}, ${JSON.stringify(i)});`].join(`
|
|
723
|
+
`),resolveDir:G.dirname(n),loader:"js"})),s.onResolve({filter:/^\/@framefields\/engine\//},u=>({path:u.path,external:!0})),s.onResolve({filter:/^framefields(\/|$)/},u=>Ed[u.path]?r($d(u.path)):void 0),Ud(s,u=>r(`shims/${u}`)),sb(s)}}]}),a=Object.keys(o.metafile?.inputs??{}).filter(s=>!s.includes(":")&&!s.includes("node_modules")).map(s=>G.resolve(s));return{code:o.outputFiles[0].text,inputs:a}}var Di;function ob(t){return[t,G.join(t,"..")].map(e=>G.join(e,"preview-engine")).find(e=>be.existsSync(G.join(e,"player.mjs")))}function Vd(){let t=ob(fr);return t?Promise.resolve(t):(Di??=(async()=>{let e=G.join(Li.tmpdir(),`framefields-preview-engine-${x.pid}`);return await ib(e),e})(),Di.catch(()=>{Di=void 0}),Di)}function zd(){return x.env.FRAMEFIELDS_MODELS_DIR?G.resolve(x.env.FRAMEFIELDS_MODELS_DIR):G.join(Li.homedir(),".cache","framefields","models")}var ab="1.30.0";function jd(t){for(let e of[t,fr])try{let n=Ii(G.join(e,"noop.js")).resolve("onnxruntime-web"),r=G.dirname(n);return{base:`/@fs${r}/`,dir:r}}catch{}return{base:`https://cdn.jsdelivr.net/npm/onnxruntime-web@${ab}/dist/`}}var _d={bundle:!0,format:"esm",platform:"browser",target:"es2022",mainFields:["browser","module","main"],logLevel:"silent"};function $d(t){return t==="framefields"?"framefields":t.slice(12)}function Ud(t,e){t.onResolve({filter:/^(node:)?[a-z_/]+$/},n=>{let r=n.path.replace(/^node:/,"");if(ss[r])return e(ss[r]);if(n.path.startsWith("node:")||Ds(r))return{path:r,namespace:"framefields-stub"}}),t.onResolve({filter:/.*/},n=>{let r=lb(n.path);if(r&&(Ld.has(r)||Ld.has(n.path)))return{path:n.path,namespace:"framefields-stub"}}),t.onLoad({filter:/.*/,namespace:"framefields-stub"},()=>({contents:rb,loader:"js"}))}function sb(t){t.onLoad({filter:/\.[cm]?[jt]sx?$/},async e=>{if(e.path.includes(`${G.sep}node_modules${G.sep}`))return;let n=await be.promises.readFile(e.path,"utf8");if(n.includes(Bd))return{contents:`const __framefieldsFileUrl = ${JSON.stringify(Pr(e.path).href)};
|
|
724
|
+
${n.replaceAll(Bd,"__framefieldsFileUrl")}`,loader:cb(e.path)}})}function ub(){let t=nb.resolve("@framefields/renderer"),e=G.join(G.dirname(t),"..","src","generated","node-renderers.ts");if(!be.existsSync(e))throw new Error(`[framefields] node renderer list not found at ${e}`);return e}function lb(t){if(t.startsWith(".")||t.startsWith("/"))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function cb(t){return t.endsWith(".tsx")?"tsx":t.endsWith(".jsx")?"jsx":/\.[cm]?ts$/.test(t)?"ts":"js"}h();var Oi=class{constructor(e){this.dir=e;this.file=G.join(e,"notes.json")}dir;file;async list(){try{let e=JSON.parse(await be.promises.readFile(this.file,"utf8"));return Array.isArray(e)?e:[]}catch{return[]}}async add(e){let n=await this.list(),r=n.reduce((a,s)=>Math.max(a,s.id),0)+1,i={id:r,frame:Math.max(0,Math.round(Number(e.frame)||0)),time:gr(Number(e.time)||0,3),x:gr(Ni(e.x),4),y:gr(Ni(e.y),4),...e.w!==void 0&&e.h!==void 0&&{w:gr(Ni(e.w),4),h:gr(Ni(e.h),4)},text:String(e.text??"").trim(),done:!1,created:new Date().toISOString()};await this.ensureDir();let o=/^data:image\/jpeg;base64,(.+)$/.exec(e.image??"");return o&&(i.image=G.join(this.dir,`note-${r}.jpg`),await be.promises.writeFile(i.image,Buffer.from(o[1],"base64"))),await this.save([...n,i]),i}async update(e,n){let r=await this.list(),i=r.find(o=>o.id===e);if(i)return typeof n.done=="boolean"&&(i.done=n.done),typeof n.text=="string"&&n.text.trim()&&(i.text=n.text.trim()),await this.save(r),i}async remove(e){let n=await this.list(),r=n.find(i=>i.id===e);if(r)return r.image&&await be.promises.rm(r.image,{force:!0}),await this.save(n.filter(i=>i!==r)),r}async save(e){await this.ensureDir();let n=`${this.file}.${x.pid}.tmp`;await be.promises.writeFile(n,`${JSON.stringify(e,null," ")}
|
|
725
725
|
`),await be.promises.rename(n,this.file)}async ensureDir(){await be.promises.mkdir(this.dir,{recursive:!0});let e=G.join(G.dirname(this.dir),".gitignore");be.existsSync(e)||await be.promises.writeFile(e,`*
|
|
726
|
-
`)}};function
|
|
726
|
+
`)}};function Gd(t,e){let n=i=>`${Math.round(i*100)}%`,r=t.w!==void 0&&t.h!==void 0?`area ${n(t.x)},${n(t.y)} to ${n(t.x+t.w)},${n(t.y+t.h)}`:`spot ${n(t.x)},${n(t.y)}`;return`note ${t.id} at ${db(t.frame,e)} (frame ${t.frame}), ${r}: ${t.text}`}function db(t,e){let n=t/e,r=Math.floor(n/60);return`${r}:${(n-r*60).toFixed(2).padStart(5,"0")}`}function Ni(t){let e=Number(t);return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function gr(t,e){return Number(t.toFixed(e))}h();var Wd=`<!doctype html>
|
|
727
727
|
<html lang="en">
|
|
728
728
|
<head>
|
|
729
729
|
<meta charset="utf-8">
|
|
@@ -1961,14 +1961,14 @@ ${n.replaceAll(Rd,"__framefieldsFileUrl")}`,loader:sb(e.path)}})}function ob(){l
|
|
|
1961
1961
|
<script type="module" src="/@framefields/player.js"><\/script>
|
|
1962
1962
|
</body>
|
|
1963
1963
|
</html>
|
|
1964
|
-
`;var
|
|
1965
|
-
${
|
|
1964
|
+
`;var mb=1200,Xd="x-framefields-preview",pb="/@framefields/player.js";async function fb(t,e={}){let n=t.entry instanceof URL||String(t.entry).startsWith("file:")?kr(t.entry):G.resolve(String(t.entry)),r=t.export??"default",i=zd(),o=jd(G.dirname(n)),a=[...e.root===void 0?[gb(G.dirname(n))]:Array.isArray(e.root)?e.root:[e.root],i,o.dir].filter(E=>!!E).map(E=>G.resolve(E)),s=new Set,u=e.idleCloseMs??5e3,c,m=e.title??"framefields preview",d=(0,Ri.randomUUID)(),p=e.log===!1?()=>{}:e.log??(E=>console.error(E)),f=E=>p(`[framefields preview] ${E}`),b=new Set,g=!1,y=e.notesDir===!1?void 0:new Oi(G.resolve(e.notesDir??G.join(x.cwd(),".framefields","preview-notes"))),k=Promise.resolve(),S=await hb(n,r),P=await wb(S,m,d,y?.dir??null),w,A=()=>{if(!w){let E=Id({entry:n,exportName:r,modelsDir:i,ortBase:o.base}).then(j=>j.code);w=E,E.catch(j=>{f(`could not build ${G.relative(x.cwd(),n)}:
|
|
1965
|
+
${yb(j)}`),w===E&&(w=void 0)})}return w},v=Vd();v.catch(()=>{});let O={state:e.audio===!1?"none":"mixing"},C;function B(E,j){for(let W of s)W.write(`event: ${E}
|
|
1966
1966
|
data: ${JSON.stringify(j)}
|
|
1967
1967
|
|
|
1968
|
-
`)}function _(E){O=E,B("audio",O)}function z(){if(O.state!=="mixing")return;if(!S.toVirtualMediaAsync&&!S.toVirtualMedia){_({state:"none"});return}let E=e.renderer??new ve.HeadlessMediaRenderer;(async()=>{let j=S.toVirtualMediaAsync?await S.toVirtualMediaAsync():S.toVirtualMedia();return E.renderAudio(j,{fps:P.fps})})().then(({channels:j,sampleRate:W})=>{let K=j[0]??new Float32Array(0),X=j[1]??K,te=
|
|
1968
|
+
`)}function _(E){O=E,B("audio",O)}function z(){if(O.state!=="mixing")return;if(!S.toVirtualMediaAsync&&!S.toVirtualMedia){_({state:"none"});return}let E=e.renderer??new ve.HeadlessMediaRenderer;(async()=>{let j=S.toVirtualMediaAsync?await S.toVirtualMediaAsync():S.toVirtualMedia();return E.renderAudio(j,{fps:P.fps})})().then(({channels:j,sampleRate:W})=>{let K=j[0]??new Float32Array(0),X=j[1]??K,te=kb(K,X,mb);if(K.length===0||Math.max(...te)<.001){_({state:"none"});return}C=Xi([K,X],{sampleRate:W}),_({state:"ready",durationSec:K.length/W,peaks:te.map(R=>Math.round(R*1e3)/1e3)})},j=>{_({state:"error",error:j instanceof Error?j.message:String(j)})})}let F,T=new Promise(E=>{F=E}),M;function H(E="closed"){return M??=new Promise(j=>{clearTimeout(c),E==="idle"&&f("stopped: its tab was closed"),E==="replaced"&&f("stopped: a newer preview took over");for(let W of s)W.end();s.clear(),Y.close(()=>{j(),F(E)}),Y.closeAllConnections()}),M}let Y=ds.default.createServer(async(E,j)=>{let W=new URL(E.url??"/","http://localhost");j.setHeader("cross-origin-opener-policy","same-origin"),j.setHeader("cross-origin-embedder-policy","credentialless");try{if(E.method==="GET"&&W.pathname==="/"){j.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),j.end(Wd);return}if(E.method==="GET"&&W.pathname==="/meta"){ut(j,200,{...P,audio:O});return}if(E.method==="GET"&&W.pathname.startsWith(`${hr}/`)){let X=await v,te=G.resolve(X,`.${W.pathname.slice(hr.length)}`);if(us(X,te)&&await ls(te)){await cs(E,j,te);return}ut(j,404,{error:"not found"});return}if(E.method==="GET"&&W.pathname===pb){let X;try{await v,X=await A()}catch(te){let R=te instanceof Error?te.message:String(te);X=`throw new Error(${JSON.stringify(`Could not build the preview:
|
|
1969
1969
|
${R}`)});`}j.writeHead(200,{"content-type":"text/javascript; charset=utf-8","cache-control":"no-store"}),j.end(X);return}if(E.method==="GET"&&W.pathname==="/@framefields/stat"){let X=G.resolve(W.searchParams.get("path")??""),te=-1;a.some(R=>us(R,X))&&(te=await be.promises.stat(X).then(R=>R.isFile()?R.size:-1,()=>-1)),ut(j,200,{exists:te>=0,size:Math.max(0,te)});return}if(E.method==="GET"&&W.pathname==="/events"){j.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),j.write(`retry: 1000
|
|
1970
1970
|
`),j.write(`event: hello
|
|
1971
1971
|
data: ${JSON.stringify({session:P.session})}
|
|
1972
1972
|
|
|
1973
|
-
`),s.add(j),clearTimeout(c),g||(g=!0,f(u===!1?"page opened":`page opened; the server stops ${Number((u/1e3).toFixed(1))} s after its last tab closes`)),$?.(),E.on("close",()=>{s.delete(j),s.size===0&&u!==!1&&!M&&(c=setTimeout(()=>{s.size===0&&H("idle")},u))});return}if(E.method==="POST"&&W.pathname==="/takeover"&&E.headers[
|
|
1974
|
-
${a.filter(Boolean).join(" \xB7 ")}`),o}let i=Number(e.id);if(e.op==="update"){let o=await t.update(i,e);return o&&typeof e.done=="boolean"&&r(`note ${i} marked ${o.done?"done":"open"}`),o}if(e.op==="remove"){let o=await t.remove(i);return o&&r(`note ${i} deleted`),o}}function hb(t){return t instanceof Error?t.message:String(t)}function Gd(t,e){return new Promise((n,r)=>{let i="";t.setEncoding("utf8"),t.on("data",o=>{i+=o,i.length>e&&(r(new Error("request body too large")),t.destroy())}),t.on("end",()=>n(i)),t.on("error",r)})}function us(t,e){let n=G.relative(t,e);return!!n&&!n.startsWith("..")&&!G.isAbsolute(n)}async function ls(t){try{return(await be.promises.stat(t)).isFile()}catch{return!1}}var gb={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function cs(t,e,n){let{size:r}=await be.promises.stat(n),i=gb[G.extname(n).toLowerCase()]??"application/octet-stream",o=/^bytes=(\d*)-(\d*)$/.exec(t.headers.range??""),a=0,s=r-1;if(o&&(o[1]||o[2])&&(o[1]?(a=Number(o[1]),o[2]&&(s=Math.min(s,Number(o[2])))):a=Math.max(0,r-Number(o[2])),a>s||a>=r)){e.writeHead(416,{"content-range":`bytes */${r}`}),e.end();return}if(e.writeHead(o?206:200,{"content-type":i,"content-length":s-a+1,"accept-ranges":"bytes","cache-control":"no-cache",...o&&{"content-range":`bytes ${a}-${s}/${r}`}}),t.method==="HEAD"){e.end();return}be.createReadStream(n,{start:a,end:s}).pipe(e)}async function bb(t,e,n,r){let i=t.fps??24,o=t.durationMs??await t.computeDuration?.()??5e3;return{session:n,notesDir:r,title:e,fps:i,frameCount:Math.max(1,Math.round(o/1e3*i)),width:t.width??1920,height:t.height??1080}}function yb(){return 41e3+(0,Ri.createHash)("sha1").update(x.cwd()).digest().readUInt16BE(0)%900}async function xb(t,e){let n=await new Promise(r=>{let i=ds.default.request({host:t,port:e,method:"POST",path:"/takeover",agent:!1,headers:{[Hd]:"1"},timeout:1500},o=>{o.resume(),r(o.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>r(!1)),i.end()});return n&&await new Promise(r=>setTimeout(r,150)),n}function wb(t,e,n){let r=new Array(n).fill(0);if(t.length===0)return r;let i=t.length/n;for(let o=0;o<n;o++){let a=Math.floor(o*i),s=Math.min(t.length,Math.floor((o+1)*i)),u=0;for(let c=a;c<s;c++){let m=Math.max(Math.abs(t[c]??0),Math.abs(e[c]??0));m>u&&(u=m)}r[o]=Math.min(1,u)}return r}function ut(t,e,n){t.writeHead(e,{"content-type":"application/json","cache-control":"no-store"}),t.end(JSON.stringify(n))}function vb(t){let[e,n]=x.platform==="darwin"?["open",[t]]:x.platform==="win32"?["cmd",["/c","start","",t]]:["xdg-open",[t]];try{(0,Wd.spawn)(e,n,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function ms(t,e){return t&&(e&&!t.source&&Object.defineProperty(t,"source",{value:e,enumerable:!0,writable:!0,configurable:!0}),typeof t.section!="function"&&Object.defineProperty(t,"section",{value:(n,r)=>{if(typeof n=="object"&&n!==null&&!("kind"in n)&&!("inputHandleId"in n)&&!("src"in n)){let o=n.source??t.source??e;return L.section(o,t,n)}let i=n??t.source??e;return L.section(i,t,r)},enumerable:!1,writable:!0,configurable:!0}),typeof t.blurEffect!="function"&&Object.defineProperty(t,"blurEffect",{value:n=>new Pt({track:t,...n}),enumerable:!1,writable:!0,configurable:!0}),typeof t.isolate!="function"&&Object.defineProperty(t,"isolate",{value:(n,r)=>L.section(n,t,r),enumerable:!1,writable:!0,configurable:!0}),t)}var kb=Dn.attach;Dn.attach=function(t,e,n){let r=kb.call(this,t,e,n);if(r?.objects){let i=t,o=r.objects.get.bind(r.objects);r.objects.get=s=>ms(o(s),i);let a=r.objects.byCategory.bind(r.objects);r.objects.byCategory=(s,u)=>ms(a(s,u),i),r.objects.primary&&ms(r.objects.primary,i)}return r};var Yd=class t{virtualMedia;constructor(e,n="Video"){this.virtualMedia=Ps(e,n)}static video(e,n){let r=new t(e,"Video");return n&&Object.assign(r.virtualMedia.metadata,n),r}static image(e,n){let r=new t(e,"Image");return n&&Object.assign(r.virtualMedia.metadata,n),r}static lottie(e,n){let r=new t(e,"Lottie");return n&&Object.assign(r.virtualMedia.metadata,n),r}static audio(e,n){let r=new t(e,"Audio");return n&&Object.assign(r.virtualMedia.metadata,n),r}apply(e,n={}){let r;e instanceof Pb||typeof e=="object"&&e!==null&&"op"in e?r=e.toOperation():r={op:e,...n};let i=Ms(this.virtualMedia,{...r,dataType:this.virtualMedia.operation.dataType});return new t(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(e={}){return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.virtualMedia,e)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(e={}){return cr(this,e)}async renderVideo(e={},n={}){let r=typeof e=="string"?{...n,outputPath:e}:e,o=await(r.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.virtualMedia,r);return Zd(o,r.outputPath)}};async function Zd(t,e){if(!e)return t;let n=G.resolve(e);return await Cn.mkdir(G.dirname(n),{recursive:!0}),await Cn.copyFile(t.filePath,n),await t.cleanup(),{...t,filePath:n,cleanup:async()=>{}}}var Xd=class t{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_prepareHooks=[];_clipVision=new Map;_visionConfig;_visionBundle;_effects=[];apply(e){return e instanceof mt?(this.withVision(e),this):(this._effects.push(e),this)}withVision(e={}){this._visionBundle??=new Wi({width:this.width,height:this.height,fps:this.fps});let n=e instanceof mt?e.config:e;return this._visionConfig={...n,visionBundle:this._visionBundle},this._visionBundle}vision(e,n={}){let r=`${e}\0${JSON.stringify(n)}`,i=this._clipVision.get(r);return i||(i=new ur(e,this.fps,n),this._clipVision.set(r,i)),i}async prepareVision(e){this.linkClipMattes(),await Promise.all([...this._clipVision.values()].map(n=>n.ready(0,e)))}linkClipMattes(){if(this._clipVision.size===0)return;let e=n=>{if(!n||typeof n!="object")return;let r=n;if(r.kind==="media"&&r.dataType==="Video"&&typeof r.inputHandleId=="string"&&r.vision instanceof mt&&!(Gi in r.vision)){let i=this.clipForMatte(r.inputHandleId,r.vision);i&&(i.keepSubjects(),Object.defineProperty(r.vision,Gi,{value:i,enumerable:!1,configurable:!0}))}if(Array.isArray(r.children))for(let i of r.children)e(i)};for(let n of this.children)e(n)}clipForMatte(e,n){let r=n.mode??"passthrough";if(!(r!=="matte"&&r!=="mask"&&r!=="crop")&&!(n.matteSource==="selfie"||n.keyBackground===!0||n.classes!==void 0||n.enablePose===!0||n.enableMatte===!0||n.visionBundle!==void 0||(n.maskThreshold??.5)!==.5||n.featherRadius!==void 0))for(let i of this._clipVision.values()){let o=i.options;if(i.source===e&&(o.variant??"s")===(n.variant??"s")&&(o.confidence??.3)===(n.confidence??.3))return i}}async analyzeVisionSequence(e,n={}){let r=n.fps??this.fps,i=this.durationMs??await this.computeDuration(),o=n.totalFrames??Math.max(1,Math.round(i/1e3*r)),a=An.create({modelsDir:n.modelsDir,baseUrl:n.baseUrl,...n.confidence!==void 0?{confidence:n.confidence}:{},...n.variant!==void 0?{variant:n.variant}:{}}),s=Mr.getVideo(e,!0);async function*u(){for(let c=0;c<o;c++){let m=await s.getFrame(c/r);m?.buffer&&m.width>0&&m.height>0&&(yield{data:m.buffer,width:m.width,height:m.height})}}try{return await Ui(u(),{runner:a,source:e,fps:r,...n.tasks!==void 0?{tasks:n.tasks}:{},...n.categories!==void 0?{categories:n.categories}:{},...n.pathStride!==void 0?{pathStride:n.pathStride}:{},...n.includeMasks!==void 0?{includeMasks:n.includeMasks}:{},...n.iouThreshold!==void 0?{iouThreshold:n.iouThreshold}:{}})}finally{a.close(),s.destroy()}}onRequestFrame(e){return this._frameHooks.push(e),this}onPrepareFrame(e){return this._prepareHooks.push(e),this}notifyFrame(e){for(let n of this._frameHooks)n(e);if(!(this._clipVision.size===0&&this._prepareHooks.length===0))return(async()=>{await this.prepareVision(e.frame);for(let n of this._prepareHooks)await n(e)})()}hasFrameHooks(){return this._frameHooks.length>0||this._prepareHooks.length>0||this._clipVision.size>0}constructor(e){this.width=e.width,this.height=e.height,this.fps=e.fps??60,this.durationMs=e.durationMs??(e.durationFrames!==void 0?e.durationFrames/this.fps*1e3:void 0),this.backgroundColor=e.backgroundColor??"#000000",this.antialias3d=e.antialias3d,this.fonts=e.fonts??[],this.signals=e.signals??{}}static create(e){return new t(e)}addSignal(e,n){return this.signals[e]=n,this}add(e,...n){if(e instanceof Jt)this.children.push(e.toNode());else if(e instanceof Dn)this.children.push(e.toNode());else{if(e&&typeof e=="object"&&"node"in e)return this.add(e.node,...n),this;if(Array.isArray(e))for(let r of e)this.add(r);else{let r=e,i=n[0];if(i&&!(i instanceof Jt)&&!Array.isArray(i)&&(i instanceof ne||"tracks"in i))return r.animation=i instanceof ne?i.toSpec():i,this.children.push(r),this;this.children.push(r)}}for(let r of n)r&&!(r instanceof ne)&&!("tracks"in r)&&this.add(r);return this}addAudio(e){return this.audioTracks.push(e),this}addSubjectSandwich(e){let n=typeof e.source=="string"?e.source:e.source.inputHandleId??"",r=e.fit??"cover",i=e.feather??4,o=i>1?i/100:i,a=e.variant??"s",s=L.video(n,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:r,muted:e.muted??!1,volume:e.muted?0:e.volume??1});this.add(s);for(let c of e.behind)this.add(c);let u=L.video(n,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:r,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:a,confidence:e.confidence??.25,featherRadius:o,keyBackground:e.keyBackground??!0,backgroundKeyThreshold:e.backgroundKeyThreshold});return this.add(u),this}addSmartFraming(e){let n=typeof e.source=="string"?e.source:e.source.inputHandleId??"",r=Math.max(0,Math.min(.99,e.damping??.8)),i=e.leadHeadroom??.18,o=this.width,a=this.height,s=e.sourceAspect??16/9,u=o/a,c=u<s?Math.round(a*s):o,m=u<s?a:Math.round(o/s),d=o-c,p=a-m,f=e.target,b=new Ht(w=>{if(d>=0)return 0;let A=f.center?.x?f.center.x.get(w):f.bounds?.centerX?f.bounds.centerX.get(w)/o:f.center?.screenX?f.center.screenX.get(w)/o:.5,O=Math.max(0,Math.min(1,A))*c,C=o/2-O;return Math.max(d,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_x"}),g=new Ht(w=>{if(p>=0)return 0;let A=f.center?.y?f.center.y.get(w):f.bounds?.centerY?f.bounds.centerY.get(w)/a:f.center?.screenY?f.center.screenY.get(w)/a:.5,O=Math.max(0,Math.min(1,A))*m,C=a*i-O;return Math.max(p,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_y"}),y=new Ht(w=>{let A=w.frame;if(A<=0)return b.get(w);let v=b.get({...w,frame:0,time:0}),O=1-r;for(let C=1;C<=A;C++){let B=b.get({...w,frame:C,time:C/w.fps});v=v+O*(B-v)}return v},{fps:this.fps,label:"smart_framing_smooth_x"}),k=new Ht(w=>{let A=w.frame;if(A<=0)return g.get(w);let v=g.get({...w,frame:0,time:0}),O=1-r;for(let C=1;C<=A;C++){let B=g.get({...w,frame:C,time:C/w.fps});v=v+O*(B-v)}return v},{fps:this.fps,label:"smart_framing_smooth_y"}),S=L.box({width:o,height:a,overflow:"hidden",position:"relative"}),P=L.video(n,{width:c,height:m,position:"absolute",x:y,y:k,fit:e.fit??"cover",muted:e.muted??!1,volume:e.muted?0:e.volume??1});return S.children||(S.children=[]),S.children.push(P),this.add(S),this}addSubjectOutline(e,n={}){let r=n.blur??12,i=this.width,o=this.height,a=n.pulseSignal,s=a?new Ht(m=>Math.max(0,Math.min(1,Number(a.get(m))||0)),{fps:this.fps,label:"outline_pulse"}):1,u=typeof n.source=="string"?n.source:n.source?.inputHandleId??"",c=L.box({width:i,height:o,position:"absolute",x:0,y:0,opacity:s});if(u){let m=L.video(u,{width:i,height:o,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});c.children||(c.children=[]),c.children.push(m)}return c.apply(new Pt({strength:r,blurType:"Gaussian"})),this.add(c),this}section(e,n,r){let i,o,a={},s=e!==null&&typeof e=="object"&&"bounds"in e,u=typeof e=="string"||e!==null&&typeof e=="object"&&("kind"in e||"src"in e||"inputHandleId"in e);if(u&&n&&typeof n=="object"&&"bounds"in n?(i=e,o=n,a=r??{}):u&&n?(i=e,a=n):s?(o=e,a=n??{},i=a.source??o.source):e&&typeof e=="object"&&(a=e,i=a.source),!i){let c=this.children.find(m=>m.kind==="media"&&(m.dataType==="Video"||m.dataType==="Image"));c&&(i=c)}return L.section(i??"",o??a,{compositionWidth:this.width,compositionHeight:this.height,...a})}addSection(e,n,r){let i=this.section(e,n,r);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let e=0,n=[];for(let r of[...this.children,...this.audioTracks]){if(r.kind==="media"){let i=r.inputHandleId;typeof i=="string"&&(r.dataType==="Video"||r.dataType==="Audio")&&n.push(i)}if(typeof r.durationFrames=="number"){let o=((typeof r.startFrame=="number"?r.startFrame:0)+r.durationFrames)/this.fps*1e3;o>e&&(e=o)}}for(let r of n)try{let o=await(await Ei.acquire(r)).computeDuration();if(Number.isFinite(o)&&o>0){let a=Math.round(o*1e3);a>e&&(e=a)}}catch{}return e>0?e:5e3}async registerFont(e,n){let r=await Ie.register(e,n);return r.filePath&&!this.fonts.includes(r.filePath)&&this.fonts.push(r.filePath),this}async registerEmojiFont(e){return await Ie.registerEmojiFont(e),this}toSpec(){let e=[...this.children,...this.audioTracks],n=Ie.getRegisteredFontPaths(),r=Array.from(new Set([...this.fonts,...n]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:e,fonts:r,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this.hasFrameHooks()&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(e={}){return Tr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:e.durationMs??this.durationMs,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async toVirtualMediaAsync(e={}){let n=e.durationMs??this.durationMs??await this.computeDuration();return this.durationMs=n,Tr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:n,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async renderFrame(e={}){if(this.hasFrameHooks()){let r=e.frame??(e.atMs!==void 0?Math.round(e.atMs/1e3*this.fps):0);await this.notifyFrame({frame:r,fps:this.fps,time:this.fps>0?r/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,r/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.toVirtualMedia(),{fps:this.fps,...e})}async renderFrameGrid(e={}){return cr(this,e)}async renderVideo(e={},n={}){let r=typeof e=="string"?{...n,outputPath:e}:e,o=await(r.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),r);if(o.qa){let a=this.lint(),s=[...o.qa.issues,...a.map(u=>({severity:u.severity,code:u.code,message:u.message,...u.layerId!==void 0&&{layerId:u.layerId}}))];o.qa={...o.qa,issues:s,passed:o.qa.passed&&!a.some(u=>u.severity==="error")}}return Zd(o,r.outputPath)}lint(){return Vo(this.toSpec(),{emojiFont:Ie.hasEmojiFont()})}};function we(t){let e=t;Object.defineProperty(e,"animate",{value:(...r)=>{let i=r.flat().flatMap(u=>u instanceof ne?u.tracks:u.tracks??[]),o=e.animation,a=o?.tracks??[],s=r.flat().map(u=>u.frameStep).filter(u=>u!==void 0).at(-1)??o?.frameStep;return e.animation={tracks:Fn([...a,...i]),...s!==void 0&&s>1&&{frameStep:s}},e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToLandmark",{value:(r,i)=>(Hi(e,r,i),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToObject",{value:(r,i)=>(Yi(e,r,i),e),enumerable:!1,writable:!0,configurable:!0});let n=(r,i)=>(e.matte={node:r,...i&&{mode:i}},e);for(let r of["withMatte","withMask"])Object.defineProperty(e,r,{value:n,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(e,"withPbrGlass",{value:r=>(e.glass=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"deformWithAudio",{value:r=>(e.audioDeform=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withCrop",{value:r=>(e.crop=r instanceof Rn?r:new Rn(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withVision",{value:r=>(e.vision=r instanceof mt?r:new mt(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withRelighting",{value:r=>(e.relighting=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"relight",{value:r=>(e.relighting=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withDeflicker",{value:r=>(e.deflicker=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"apply",{value:r=>(e.effects||(e.effects=[]),e.effects.push(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffect",{value:r=>(e.effects||(e.effects=[]),e.effects.push(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffects",{value:r=>(e.effects||(e.effects=[]),e.effects.push(...r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"section",{value:(r={},i)=>r!==null&&typeof r=="object"&&"bounds"in r?L.section(e,r,i):L.section(e,r),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"blurRegion",{value:(r,i)=>{let o=new Pt({track:r,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return e.effects||(e.effects=[]),e.effects.push(o),e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withBlurRegion",{value:(r,i)=>e.blurRegion(r,i),enumerable:!1,writable:!0,configurable:!0}),e}var L={video:(t,e={})=>we({id:e.id??Q("video"),kind:"media",inputHandleId:t,dataType:"Video",fit:e.fit??"cover",...e}),image:(t,e={})=>(typeof t=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(t)||t.startsWith("data:application/json")?console.warn(`[Layer.image] '${t}' is a Lottie vector animation, not a static image. Use Layer.lottie('${t}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(t)?console.warn(`[Layer.image] '${t}' is a video file, not a static image. Use Layer.video('${t}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(t)&&console.warn(`[Layer.image] '${t}' is an audio file, not a static image. Use Layer.audio('${t}', options) instead.`)),we({id:e.id??Q("img"),kind:"media",inputHandleId:t,dataType:"Image",fit:e.fit??"cover",...e})),svg:(t,e={})=>we({id:e.id??Q("svg"),kind:"media",inputHandleId:t,dataType:"SVG",fit:e.fit??"contain",...e}),lottie:(t,e={})=>we({id:e.id??Q("lottie"),kind:"media",inputHandleId:t,dataType:"Lottie",fit:e.fit??"contain",...e}),audio:(t,e={})=>we({id:e.id??Q("audio"),kind:"media",inputHandleId:t,dataType:"Audio",volume:e.volume??1,...e}),text:(t,e={})=>{let n=Array.isArray(t),r=!n&&typeof t=="object"&&t!==null,i=r?t:e,o="",a=i.spans;if(n){let s=Yr(t);o=s.text,a=s.spans}else r?i.spans&&!i.text?o=Yr(i.spans).text:o=i.text??"":o=typeof t=="string"?t:String(t??"");return we({id:i.id??Q("text"),kind:"text",fontFamily:i.fontFamily??Ie.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??o,spans:i.spans??a})},caption:(t,e={})=>we({id:e.id??Q("caption"),kind:"media",inputHandleId:t,dataType:e.dataType??"Caption",fontFamily:e.fontFamily??Ie.getAll()[0]?.family??"Inter",fontSize:e.fontSize??48,fill:e.fill??"#ffffff",...e}),shape:(t="rect",e={})=>{let{fill:n,...r}=e;return we({id:r.id??Q("shape"),kind:"shape",shapeType:r.shapeType??t,...r,fillColor:r.fillColor??n??"#3b82f6"})},flex:(t={})=>we({id:t.id??Q("flex"),kind:"flex",dir:t.dir??"column",children:t.children??[],...t}),box:(t={})=>we({id:t.id??Q("box"),kind:"box",background:t.background??"transparent",children:t.children??[],...t}),particles:t=>{let e=new lr(t),n={metadata:{width:t.width,height:t.height},operation:{...e.toOperation(),effect:e,dataType:"Video"},children:[]};return we({id:t.id??Q("particles"),kind:"media",dataType:"Video",src:n,position:"absolute",x:t.x??0,y:t.y??0,width:t.width,height:t.height,...t.startFrame!==void 0&&{startFrame:t.startFrame},...t.durationFrames!==void 0&&{durationFrames:t.durationFrames},...t.zIndex!==void 0&&{zIndex:t.zIndex}})},vfx:t=>{let{x:e,y:n,id:r,startFrame:i,durationFrames:o,zIndex:a,...s}=t,u=new oo({outputType:"Video",...s}),c={metadata:{width:t.width,height:t.height},operation:{...u.toOperation(),effect:u,dataType:"Video"},children:[]};return we({id:r??Q("vfx"),kind:"media",dataType:"Video",src:c,position:"absolute",x:e??0,y:n??0,width:t.width,height:t.height,...i!==void 0&&{startFrame:i},...o!==void 0&&{durationFrames:o},...a!==void 0&&{zIndex:a}})},section:(t,e={},n={})=>{let r=t;if(t&&typeof t=="object"&&"toSpec"in t&&"children"in t){let v=(t.children||[]).find(O=>O.kind==="media"&&(O.dataType==="Video"||O.dataType==="Image"));v&&(r=v)}let i=e!==null&&typeof e=="object"&&"bounds"in e,o=i?n:e,a=i?e:void 0,s=o.padding??0,u=typeof r=="string"?r:r?.inputHandleId??r?.src??"",c=typeof r=="object"&&r?.dataType?r.dataType:"Video",m=o.compositionWidth??o.compWidth??(i?o.width:void 0)??1920,d=o.compositionHeight??o.compHeight??(i?o.height:void 0)??1080,p=Array.isArray(o.effects)?[...o.effects]:o.effects?[o.effects]:[],f=a?a.bounds.screenX.multiply(-1).add(s):typeof o.x=="number"?-o.x:o.x&&typeof o.x.multiply=="function"?o.x.multiply(-1):0,b=a?a.bounds.screenY.multiply(-1).add(s):typeof o.y=="number"?-o.y:o.y&&typeof o.y.multiply=="function"?o.y.multiply(-1):0,g=(c==="Image"?L.image(u,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b}):L.video(u,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b})).withEffects(p),y=a?a.bounds.screenWidth.add(s*2):o.width!==void 0?o.width:m,k=a?a.bounds.screenHeight.add(s*2):o.height!==void 0?o.height:d,S=[g,...o.children??[]],P=o.id??(a?Q(`section-track-${a.trackId}`):Q("section")),w=L.box({id:P,position:o.position??"absolute",width:y,height:k,x:a?void 0:o.x,y:a?void 0:o.y,borderRadius:o.borderRadius??0,borderColor:o.borderColor,borderWidth:o.borderWidth,opacity:o.opacity??1,overflow:"hidden",children:S});a&&(w=w.pinToObject(a,{anchor:"topLeft",offsetX:-s,offsetY:-s,hideWhenLost:o.hideWhenLost??!0,smoothFrames:o.smoothFrames}));let A=w;return Object.defineProperty(A,"innerMedia",{value:g,enumerable:!0,writable:!1}),Object.defineProperty(A,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(A,"addEffect",{value:v=>(p.push(v),g.effects=p,A),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffect",{value:v=>A.addEffect(v),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffects",{value:v=>{for(let O of v)A.addEffect(O);return A},enumerable:!0,writable:!1}),A},trackedRegion:(t,e,n={})=>L.section(t,e,n),blurTrackedRegion:(t,e,n={})=>{let{padding:r,borderRadius:i,borderColor:o,borderWidth:a,...s}=n;return L.section(t,e,{padding:r??8,borderRadius:i??12,borderColor:o,borderWidth:a,effects:[new Pt({strength:s.strength??25,blurType:s.blurType??"Gaussian",...s})]})},chart:(t,e={})=>pd(t,e,Ie.getAll()[0]?.family??"Inter"),camera:(t={})=>we({id:t.id??Q("camera"),kind:"camera",mode:t.mode??"lookAt",pitch:t.pitch??0,yaw:t.yaw??0,roll:t.roll??0,...t}),light:(t={})=>we({id:t.id??Q("light"),kind:"light",lightType:t.lightType??"point",color:t.color??"#ffffff",intensity:t.intensity??1,...t}),ambientLight:(t="#ffffff",e=.5,n={})=>st.ambient(t,e,n),sequence:(t,e)=>xd(t,e),environment:(t="studio",e={})=>st.environment(t,e),directionalLight:(t={})=>st.directional(t),pointLight:(t={})=>st.point(t),spotLight:(t={})=>st.spot(t),cube:t=>ot.cube(t),carousel3d:t=>ot.carousel(t),plane3d:t=>ot.plane(t),prism3d:t=>ot.prism(t),model:(t={})=>we({id:t.id??Q("model3d"),kind:"model3d",is3D:t.is3D??!0,modelFormat:t.modelFormat??"auto",loop:t.loop??!0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,...t}),obj:(t,e={})=>L.model({src:t,modelFormat:"obj",...e}),fbx:(t,e={})=>L.model({src:t,modelFormat:"fbx",...e}),gltf:(t,e={})=>L.model({src:t,modelFormat:"gltf",...e}),glb:(t,e={})=>L.model({src:t,modelFormat:"glb",...e}),stl:(t,e={})=>L.model({src:t,modelFormat:"stl",...e}),ply:(t,e={})=>L.model({src:t,modelFormat:"ply",...e}),vox:(t,e={})=>L.model({src:t,modelFormat:"vox",...e}),threeDS:(t,e={})=>L.model({src:t,modelFormat:"3ds",...e}),off:(t,e={})=>L.model({src:t,modelFormat:"off",...e})},st={environment:(t="studio",e={})=>{let n=typeof t=="string"?{preset:t,...e}:{...t,...e};return we({kind:"light",lightType:"environment",preset:"studio",intensity:1,...n,id:n.id??Q("environment")})},ambient:(t="#ffffff",e=.5,n={})=>we({id:n.id??Q("light-ambient"),kind:"light",lightType:"ambient",color:t,intensity:e,...n}),directional:(t={})=>we({id:t.id??Q("light-directional"),kind:"light",lightType:"directional",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-1e3,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,...t}),point:(t={})=>we({id:t.id??Q("light-point"),kind:"light",lightType:"point",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??0,z:t.z??-500,radius:t.radius??1e3,decay:t.decay??1,...t}),spot:(t={})=>we({id:t.id??Q("light-spot"),kind:"light",lightType:"spot",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-500,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,angle:t.angle??45,penumbra:t.penumbra??.2,radius:t.radius??2e3,decay:t.decay??1,...t})};function IC(t,e={},n={}){return L.section(t,e,n)}function VC(t,e,n={}){return typeof t=="object"&&"blurRegion"in t?t.blurRegion(e,n):L.blurTrackedRegion(t,e,n)}function zC(t,e,n={}){return L.section(t,e,n)}var Pb=Object.assign(Yt,ao,{blur:t=>new Pt(t),vignette:t=>new Zt(t),colorBalance:t=>new Zi(t),colorKey:t=>new Ki(t),levels:t=>new so(t),filmGrain:t=>new Je(t),curves:t=>new lo(t),selectiveColor:t=>new co(t),gradientMap:t=>new Mt(t),shadowsHighlights:t=>new mo(t),applyLut:t=>new po(t),unsharpMask:t=>new fo(t),highPass:t=>new ho(t),halftoneScreen:t=>new On(t),tileOffset:t=>new go(t),motionBlur:t=>new bo(t),ssao:t=>new yo(t),pbrGlass:t=>new xo(t),depthOfField:t=>new wo(t),crop:t=>new Rn(t),vision:t=>new mt(t),relight3d:t=>new vo(t),modulate:t=>new ko(t),deflicker:t=>new So(t),custom:(t,e={})=>new uo(t,e)});var Mb=/\.(png|jpe?g|webp|gif|avif|tiff?|bmp)(\?.*)?$/i,Tb=/\.svg(\?.*)?$/i;function Cb(t){let e=n=>n?{...n,enabled:!0}:void 0;return new no({...t.dropShadow&&{dropShadow:e(t.dropShadow)},...t.outerGlow&&{outerGlow:e(t.outerGlow)},...t.innerShadow&&{innerShadow:e(t.innerShadow)},...t.stroke&&{stroke:e(t.stroke)}})}function Ab(t,e){let n=Math.max(16,Math.round(t)),r=Math.max(16,Math.round(e));return`data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${r}"><rect width="${n}" height="${r}" fill="#808080"/></svg>`)}`}var Kd={box:t=>L.box(t),flex:t=>L.flex(t),text:(t,e)=>L.text(t,e),shape:(t,e)=>L.shape(t,e),measure:(t,e)=>Ie.measure(t,e),fonts:()=>Ie.getAll().map(t=>t.family),autoId:Q,media:(t,e)=>Tb.test(t)?L.svg(t,e):Mb.test(t)?L.image(t,e):L.video(t,{muted:!0,...e}),style:(t,e)=>(t.withEffect(Cb(e)),t),cutout:(t,{mode:e="person",...n})=>L.video(t,{muted:!0,volume:0,fit:"cover",...n}).withVision({mode:"matte",enableSegmentation:!0,variant:e==="subject"?"m":"s",confidence:.25,featherRadius:.04,keyBackground:!0}),particles:t=>L.particles(t),signal:(t,e)=>ks([...t],e),grain:({id:t,x:e,y:n,width:r,height:i,strength:o,size:a})=>L.svg(Ab(r,i),{id:t,position:"absolute",x:e,y:n,width:r,height:i,fit:"fill",blendMode:"soft-light"}).withEffect(new Je({strength:o,...a!==void 0&&{size:a},shadows:1,midtones:1,highlights:1})),extrudedText:({fontWeight:t,...e})=>ot.extrudedText({...e,...t!==void 0&&{fontWeight:String(t)},align:"center",verticalAlign:"middle"}),matte:(t,e,n="alpha")=>(t.withMatte(e,n),t)};h();async function qd(t,e={}){let n=await Ls(t);if(!n||n.channels.length===0)throw new Error(`analyzeAudio: could not decode audio from ${t}`);return qu(n.channels,n.sampleRate,e)}function Sb(t){return ul(Kd,t)}export{To as a,Co as b,zs as c,js as d,_s as e,sm as f,um as g,$s as h,Ao as i,lm as j,Us as k,cm as l,Gs as m,Do as n,Ws as o,Hs as p,Ys as q,Xs as r,qs as s,Zs as t,No as u,Bn as v,Ks as w,Qs as x,Kt as y,Js as z,eu as A,tu as B,nu as C,Or as D,Rr as E,ru as F,iu as G,Fr as H,ou as I,au as J,su as K,uu as L,lu as M,cu as N,du as O,Qt as P,dm as Q,Oo as R,Ro as S,Fo as T,Bo as U,Lo as V,Eo as W,ew as X,tw as Y,iw as Z,Fn as _,ne as $,Mo as aa,Vo as ba,zo as ca,Su as da,Pu as ea,Am as fa,Mu as ga,Tu as ha,Cu as ia,Au as ja,Du as ka,Nu as la,Ou as ma,Ru as na,Fu as oa,Bu as pa,Lu as qa,Eu as ra,Iu as sa,Vu as ta,Lm as ua,zu as va,$o as wa,Em as xa,ju as ya,_u as za,Im as Aa,Vm as Ba,$u as Ca,Ln as Da,Uo as Ea,$n as Fa,Un as Ga,Gn as Ha,Jt as Ia,je as Ja,Hn as Ka,ta as La,jp as Ma,_p as Na,$p as Oa,Up as Pa,Gp as Qa,Wp as Ra,Hp as Sa,Yp as Ta,Xp as Ua,qp as Va,Zp as Wa,Kp as Xa,Yr as Ya,Qp as Za,md as _a,ur as $a,wi as ab,lr as bb,Ja as cb,es as db,cr as eb,ve as fb,ot as gb,yd as hb,Eg as ib,mr as jb,wn as kb,pr as lb,vn as mb,Kg as nb,Qg as ob,db as pb,_m as qb,Er as rb,En as sb,Go as tb,$m as ub,Um as vb,Ny as wb,Gu as xb,Wu as yb,Xm as zb,qu as Ab,Ly as Bb,Ey as Cb,Iy as Db,Zu as Eb,jy as Fb,Vr as Gb,Zm as Hb,_y as Ib,$y as Jb,In as Kb,Wy as Lb,Hy as Mb,Ku as Nb,Wo as Ob,zr as Pb,Qu as Qb,Yy as Rb,Yo as Sb,Qm as Tb,Vn as Ub,Jy as Vb,e0 as Wb,t0 as Xb,n0 as Yb,jr as Zb,r0 as _b,Jm as $b,ep as ac,i0 as bc,o0 as cc,a0 as dc,zn as ec,qo as fc,tl as gc,nl as hc,il as ic,jn as jc,h0 as kc,np as lc,rp as mc,op as nc,S0 as oc,sp as pc,up as qc,ul as rc,ea as sc,ll as tc,cl as uc,dl as vc,M0 as wc,tt as xc,T0 as yc,O0 as zc,_n as Ac,R0 as Bc,F0 as Cc,B0 as Dc,L0 as Ec,E0 as Fc,I0 as Gc,$r as Hc,_0 as Ic,$0 as Jc,U0 as Kc,G0 as Lc,W0 as Mc,H0 as Nc,Y0 as Oc,hp as Pc,Z0 as Qc,J0 as Rc,rx as Sc,gp as Tc,sx as Uc,ux as Vc,dx as Wc,pl as Xc,bp as Yc,fl as Zc,hx as _c,wp as $c,kp as ad,gl as bd,gx as cd,xx as dd,qd as ed,Sb as fd,Yd as gd,Xd as hd,L as id,st as jd,IC as kd,VC as ld,zC as md,Pb as nd};
|
|
1973
|
+
`),s.add(j),clearTimeout(c),g||(g=!0,f(u===!1?"page opened":`page opened; the server stops ${Number((u/1e3).toFixed(1))} s after its last tab closes`)),$?.(),E.on("close",()=>{s.delete(j),s.size===0&&u!==!1&&!M&&(c=setTimeout(()=>{s.size===0&&H("idle")},u))});return}if(E.method==="POST"&&W.pathname==="/takeover"&&E.headers[Xd]==="1"){ut(j,200,{ok:!0}),setImmediate(()=>{H("replaced")});return}if(E.method==="POST"&&W.pathname==="/@framefields/log"&&E.headers["content-type"]==="application/json"){let X=await Hd(E,16384),{message:te,level:R}=JSON.parse(X),I=String(te??"").trim();I&&!b.has(I)&&b.size<200&&(b.add(I),f(`${R==="warning"?"warning":"error"} in the page: ${I}`)),j.writeHead(204).end();return}if(y&&W.pathname==="/@framefields/notes"){if(E.method==="GET"){ut(j,200,await y.list());return}if(E.method==="POST"&&E.headers["content-type"]==="application/json"){let X=JSON.parse(await Hd(E,16777216)),te=k.then(()=>bb(y,X,P.fps,f));k=te.catch(()=>{});let R=await te;B("notes",await y.list()),ut(j,R?200:404,R??{error:"no such note"});return}}if(E.method==="GET"&&W.pathname==="/audio"){if(O.state!=="ready"||!C){ut(j,404,{error:`audio is ${O.state}`});return}j.writeHead(200,{"content-type":"audio/wav","content-length":C.length,"cache-control":"no-store"}),j.end(C);return}let K=/^\/assets\/fonts\/([^/]+)$/.exec(W.pathname);if(K&&(E.method==="GET"||E.method==="HEAD")){let X=G.join(x.cwd(),"assets","fonts",decodeURIComponent(K[1]));if(await ls(X)){await cs(E,j,X);return}}if(E.method==="GET"||E.method==="HEAD"){let X=G.resolve(decodeURIComponent(W.pathname.replace(/^\/@fs(?=\/)/,"")));if(a.some(te=>us(te,X))&&await ls(X)){await cs(E,j,X);return}}ut(j,404,{error:"not found"})}catch(K){j.headersSent?j.end():ut(j,500,{error:K instanceof Error?K.message:String(K)})}}),$,V=e.host??"127.0.0.1",ee=e.port??vb(),oe=E=>new Promise((j,W)=>{let K=te=>{Y.off("listening",X),W(te)},X=()=>{Y.off("error",K),j()};Y.once("error",K),Y.once("listening",X),Y.listen(E,V)});try{await oe(ee)}catch(E){if(E.code!=="EADDRINUSE")throw E;if(await Sb(V,ee))await oe(ee).catch(()=>oe(0));else if(e.port===void 0)await oe(0);else throw E}let{port:ge}=Y.address(),le=`http://${V.includes(":")?`[${V}]`:V}:${ge}/`;if(A().catch(()=>{}),z(),e.open===!0){let E=await new Promise(j=>{let W=setTimeout(()=>j(!1),2e3);$=()=>{clearTimeout(W),j(!0)},s.size>0&&$()});$=void 0,E||Pb(le)}return{url:le,closed:T,close:()=>H()}}async function hb(t,e){let r=(await import(Pr(t).href))[e];if(r===void 0)throw new Error(`[framefields] ${t} has no export named "${e}" to preview.`);return typeof r=="function"?await r():r}function gb(t){let e;for(let n=t;;n=G.dirname(n)){if(be.existsSync(G.join(n,".git")))return n;if(!e&&be.existsSync(G.join(n,"package.json"))&&(e=n),G.dirname(n)===n)return e??t}}async function bb(t,e,n,r){if(e.op==="add"&&e.note&&String(e.note.text).trim()){let o=await t.add(e.note),a=[o.image&&`frame with the spot marked: ${o.image}`,`all notes: ${t.file}`];return r(`${Gd(o,n)}
|
|
1974
|
+
${a.filter(Boolean).join(" \xB7 ")}`),o}let i=Number(e.id);if(e.op==="update"){let o=await t.update(i,e);return o&&typeof e.done=="boolean"&&r(`note ${i} marked ${o.done?"done":"open"}`),o}if(e.op==="remove"){let o=await t.remove(i);return o&&r(`note ${i} deleted`),o}}function yb(t){return t instanceof Error?t.message:String(t)}function Hd(t,e){return new Promise((n,r)=>{let i="";t.setEncoding("utf8"),t.on("data",o=>{i+=o,i.length>e&&(r(new Error("request body too large")),t.destroy())}),t.on("end",()=>n(i)),t.on("error",r)})}function us(t,e){let n=G.relative(t,e);return!!n&&!n.startsWith("..")&&!G.isAbsolute(n)}async function ls(t){try{return(await be.promises.stat(t)).isFile()}catch{return!1}}var xb={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function cs(t,e,n){let{size:r}=await be.promises.stat(n),i=xb[G.extname(n).toLowerCase()]??"application/octet-stream",o=/^bytes=(\d*)-(\d*)$/.exec(t.headers.range??""),a=0,s=r-1;if(o&&(o[1]||o[2])&&(o[1]?(a=Number(o[1]),o[2]&&(s=Math.min(s,Number(o[2])))):a=Math.max(0,r-Number(o[2])),a>s||a>=r)){e.writeHead(416,{"content-range":`bytes */${r}`}),e.end();return}if(e.writeHead(o?206:200,{"content-type":i,"content-length":s-a+1,"accept-ranges":"bytes","cache-control":"no-cache",...o&&{"content-range":`bytes ${a}-${s}/${r}`}}),t.method==="HEAD"){e.end();return}be.createReadStream(n,{start:a,end:s}).pipe(e)}async function wb(t,e,n,r){let i=t.fps??24,o=t.durationMs??await t.computeDuration?.()??5e3;return{session:n,notesDir:r,title:e,fps:i,frameCount:Math.max(1,Math.round(o/1e3*i)),width:t.width??1920,height:t.height??1080}}function vb(){return 41e3+(0,Ri.createHash)("sha1").update(x.cwd()).digest().readUInt16BE(0)%900}async function Sb(t,e){let n=await new Promise(r=>{let i=ds.default.request({host:t,port:e,method:"POST",path:"/takeover",agent:!1,headers:{[Xd]:"1"},timeout:1500},o=>{o.resume(),r(o.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>r(!1)),i.end()});return n&&await new Promise(r=>setTimeout(r,150)),n}function kb(t,e,n){let r=new Array(n).fill(0);if(t.length===0)return r;let i=t.length/n;for(let o=0;o<n;o++){let a=Math.floor(o*i),s=Math.min(t.length,Math.floor((o+1)*i)),u=0;for(let c=a;c<s;c++){let m=Math.max(Math.abs(t[c]??0),Math.abs(e[c]??0));m>u&&(u=m)}r[o]=Math.min(1,u)}return r}function ut(t,e,n){t.writeHead(e,{"content-type":"application/json","cache-control":"no-store"}),t.end(JSON.stringify(n))}function Pb(t){let[e,n]=x.platform==="darwin"?["open",[t]]:x.platform==="win32"?["cmd",["/c","start","",t]]:["xdg-open",[t]];try{(0,Yd.spawn)(e,n,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function ms(t,e){return t&&(e&&!t.source&&Object.defineProperty(t,"source",{value:e,enumerable:!0,writable:!0,configurable:!0}),typeof t.section!="function"&&Object.defineProperty(t,"section",{value:(n,r)=>{if(typeof n=="object"&&n!==null&&!("kind"in n)&&!("inputHandleId"in n)&&!("src"in n)){let o=n.source??t.source??e;return L.section(o,t,n)}let i=n??t.source??e;return L.section(i,t,r)},enumerable:!1,writable:!0,configurable:!0}),typeof t.blurEffect!="function"&&Object.defineProperty(t,"blurEffect",{value:n=>new Pt({track:t,...n}),enumerable:!1,writable:!0,configurable:!0}),typeof t.isolate!="function"&&Object.defineProperty(t,"isolate",{value:(n,r)=>L.section(n,t,r),enumerable:!1,writable:!0,configurable:!0}),t)}var Tb=Dn.attach;Dn.attach=function(t,e,n){let r=Tb.call(this,t,e,n);if(r?.objects){let i=t,o=r.objects.get.bind(r.objects);r.objects.get=s=>ms(o(s),i);let a=r.objects.byCategory.bind(r.objects);r.objects.byCategory=(s,u)=>ms(a(s,u),i),r.objects.primary&&ms(r.objects.primary,i)}return r};var qd=class t{virtualMedia;constructor(e,n="Video"){this.virtualMedia=Ps(e,n)}static video(e,n){let r=new t(e,"Video");return n&&Object.assign(r.virtualMedia.metadata,n),r}static image(e,n){let r=new t(e,"Image");return n&&Object.assign(r.virtualMedia.metadata,n),r}static lottie(e,n){let r=new t(e,"Lottie");return n&&Object.assign(r.virtualMedia.metadata,n),r}static audio(e,n){let r=new t(e,"Audio");return n&&Object.assign(r.virtualMedia.metadata,n),r}apply(e,n={}){let r;e instanceof Cb||typeof e=="object"&&e!==null&&"op"in e?r=e.toOperation():r={op:e,...n};let i=Ms(this.virtualMedia,{...r,dataType:this.virtualMedia.operation.dataType});return new t(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(e={}){return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.virtualMedia,e)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(e={}){return cr(this,e)}async renderVideo(e={},n={}){let r=typeof e=="string"?{...n,outputPath:e}:e,o=await(r.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.virtualMedia,r);return Qd(o,r.outputPath)}};async function Qd(t,e){if(!e)return t;let n=G.resolve(e);return await Cn.mkdir(G.dirname(n),{recursive:!0}),await Cn.copyFile(t.filePath,n),await t.cleanup(),{...t,filePath:n,cleanup:async()=>{}}}var Zd=class t{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_prepareHooks=[];_clipVision=new Map;_visionConfig;_visionBundle;_effects=[];apply(e){return e instanceof mt?(this.withVision(e),this):(this._effects.push(e),this)}withVision(e={}){this._visionBundle??=new Wi({width:this.width,height:this.height,fps:this.fps});let n=e instanceof mt?e.config:e;return this._visionConfig={...n,visionBundle:this._visionBundle},this._visionBundle}vision(e,n={}){let r=`${e}\0${JSON.stringify(n)}`,i=this._clipVision.get(r);return i||(i=new ur(e,this.fps,n),this._clipVision.set(r,i)),i}async prepareVision(e){this.linkClipMattes(),await Promise.all([...this._clipVision.values()].map(n=>n.ready(0,e)))}linkClipMattes(){if(this._clipVision.size===0)return;let e=n=>{if(!n||typeof n!="object")return;let r=n;if(r.kind==="media"&&r.dataType==="Video"&&typeof r.inputHandleId=="string"&&r.vision instanceof mt&&!(Gi in r.vision)){let i=this.clipForMatte(r.inputHandleId,r.vision);i&&(i.keepSubjects(),Object.defineProperty(r.vision,Gi,{value:i,enumerable:!1,configurable:!0}))}if(Array.isArray(r.children))for(let i of r.children)e(i)};for(let n of this.children)e(n)}clipForMatte(e,n){let r=n.mode??"passthrough";if(!(r!=="matte"&&r!=="mask"&&r!=="crop")&&!(n.matteSource==="selfie"||n.keyBackground===!0||n.classes!==void 0||n.enablePose===!0||n.enableMatte===!0||n.visionBundle!==void 0||(n.maskThreshold??.5)!==.5||n.featherRadius!==void 0))for(let i of this._clipVision.values()){let o=i.options;if(i.source===e&&(o.variant??"s")===(n.variant??"s")&&(o.confidence??.3)===(n.confidence??.3))return i}}async analyzeVisionSequence(e,n={}){let r=n.fps??this.fps,i=this.durationMs??await this.computeDuration(),o=n.totalFrames??Math.max(1,Math.round(i/1e3*r)),a=An.create({modelsDir:n.modelsDir,baseUrl:n.baseUrl,...n.confidence!==void 0?{confidence:n.confidence}:{},...n.variant!==void 0?{variant:n.variant}:{}}),s=Mr.getVideo(e,!0);async function*u(){for(let c=0;c<o;c++){let m=await s.getFrame(c/r);m?.buffer&&m.width>0&&m.height>0&&(yield{data:m.buffer,width:m.width,height:m.height})}}try{return await Ui(u(),{runner:a,source:e,fps:r,...n.tasks!==void 0?{tasks:n.tasks}:{},...n.categories!==void 0?{categories:n.categories}:{},...n.pathStride!==void 0?{pathStride:n.pathStride}:{},...n.includeMasks!==void 0?{includeMasks:n.includeMasks}:{},...n.iouThreshold!==void 0?{iouThreshold:n.iouThreshold}:{}})}finally{a.close(),s.destroy()}}onRequestFrame(e){return this._frameHooks.push(e),this}onPrepareFrame(e){return this._prepareHooks.push(e),this}notifyFrame(e){for(let n of this._frameHooks)n(e);if(!(this._clipVision.size===0&&this._prepareHooks.length===0))return(async()=>{await this.prepareVision(e.frame);for(let n of this._prepareHooks)await n(e)})()}hasFrameHooks(){return this._frameHooks.length>0||this._prepareHooks.length>0||this._clipVision.size>0}constructor(e){this.width=e.width,this.height=e.height,this.fps=e.fps??60,this.durationMs=e.durationMs??(e.durationFrames!==void 0?e.durationFrames/this.fps*1e3:void 0),this.backgroundColor=e.backgroundColor??"#000000",this.antialias3d=e.antialias3d,this.fonts=e.fonts??[],this.signals=e.signals??{}}static create(e){return new t(e)}addSignal(e,n){return this.signals[e]=n,this}add(e,...n){if(e instanceof Jt)this.children.push(e.toNode());else if(e instanceof Dn)this.children.push(e.toNode());else{if(e&&typeof e=="object"&&"node"in e)return this.add(e.node,...n),this;if(Array.isArray(e))for(let r of e)this.add(r);else{let r=e,i=n[0];if(i&&!(i instanceof Jt)&&!Array.isArray(i)&&(i instanceof ne||"tracks"in i))return r.animation=i instanceof ne?i.toSpec():i,this.children.push(r),this;this.children.push(r)}}for(let r of n)r&&!(r instanceof ne)&&!("tracks"in r)&&this.add(r);return this}addAudio(e){return this.audioTracks.push(e),this}addSubjectSandwich(e){let n=typeof e.source=="string"?e.source:e.source.inputHandleId??"",r=e.fit??"cover",i=e.feather??4,o=i>1?i/100:i,a=e.variant??"s",s=L.video(n,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:r,muted:e.muted??!1,volume:e.muted?0:e.volume??1});this.add(s);for(let c of e.behind)this.add(c);let u=L.video(n,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:r,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:a,confidence:e.confidence??.25,featherRadius:o,keyBackground:e.keyBackground??!0,backgroundKeyThreshold:e.backgroundKeyThreshold});return this.add(u),this}addSmartFraming(e){let n=typeof e.source=="string"?e.source:e.source.inputHandleId??"",r=Math.max(0,Math.min(.99,e.damping??.8)),i=e.leadHeadroom??.18,o=this.width,a=this.height,s=e.sourceAspect??16/9,u=o/a,c=u<s?Math.round(a*s):o,m=u<s?a:Math.round(o/s),d=o-c,p=a-m,f=e.target,b=new Ht(w=>{if(d>=0)return 0;let A=f.center?.x?f.center.x.get(w):f.bounds?.centerX?f.bounds.centerX.get(w)/o:f.center?.screenX?f.center.screenX.get(w)/o:.5,O=Math.max(0,Math.min(1,A))*c,C=o/2-O;return Math.max(d,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_x"}),g=new Ht(w=>{if(p>=0)return 0;let A=f.center?.y?f.center.y.get(w):f.bounds?.centerY?f.bounds.centerY.get(w)/a:f.center?.screenY?f.center.screenY.get(w)/a:.5,O=Math.max(0,Math.min(1,A))*m,C=a*i-O;return Math.max(p,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_y"}),y=new Ht(w=>{let A=w.frame;if(A<=0)return b.get(w);let v=b.get({...w,frame:0,time:0}),O=1-r;for(let C=1;C<=A;C++){let B=b.get({...w,frame:C,time:C/w.fps});v=v+O*(B-v)}return v},{fps:this.fps,label:"smart_framing_smooth_x"}),k=new Ht(w=>{let A=w.frame;if(A<=0)return g.get(w);let v=g.get({...w,frame:0,time:0}),O=1-r;for(let C=1;C<=A;C++){let B=g.get({...w,frame:C,time:C/w.fps});v=v+O*(B-v)}return v},{fps:this.fps,label:"smart_framing_smooth_y"}),S=L.box({width:o,height:a,overflow:"hidden",position:"relative"}),P=L.video(n,{width:c,height:m,position:"absolute",x:y,y:k,fit:e.fit??"cover",muted:e.muted??!1,volume:e.muted?0:e.volume??1});return S.children||(S.children=[]),S.children.push(P),this.add(S),this}addSubjectOutline(e,n={}){let r=n.blur??12,i=this.width,o=this.height,a=n.pulseSignal,s=a?new Ht(m=>Math.max(0,Math.min(1,Number(a.get(m))||0)),{fps:this.fps,label:"outline_pulse"}):1,u=typeof n.source=="string"?n.source:n.source?.inputHandleId??"",c=L.box({width:i,height:o,position:"absolute",x:0,y:0,opacity:s});if(u){let m=L.video(u,{width:i,height:o,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});c.children||(c.children=[]),c.children.push(m)}return c.apply(new Pt({strength:r,blurType:"Gaussian"})),this.add(c),this}section(e,n,r){let i,o,a={},s=e!==null&&typeof e=="object"&&"bounds"in e,u=typeof e=="string"||e!==null&&typeof e=="object"&&("kind"in e||"src"in e||"inputHandleId"in e);if(u&&n&&typeof n=="object"&&"bounds"in n?(i=e,o=n,a=r??{}):u&&n?(i=e,a=n):s?(o=e,a=n??{},i=a.source??o.source):e&&typeof e=="object"&&(a=e,i=a.source),!i){let c=this.children.find(m=>m.kind==="media"&&(m.dataType==="Video"||m.dataType==="Image"));c&&(i=c)}return L.section(i??"",o??a,{compositionWidth:this.width,compositionHeight:this.height,...a})}addSection(e,n,r){let i=this.section(e,n,r);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let e=0,n=[];for(let r of[...this.children,...this.audioTracks]){if(r.kind==="media"){let i=r.inputHandleId;typeof i=="string"&&(r.dataType==="Video"||r.dataType==="Audio")&&n.push(i)}if(typeof r.durationFrames=="number"){let o=((typeof r.startFrame=="number"?r.startFrame:0)+r.durationFrames)/this.fps*1e3;o>e&&(e=o)}}for(let r of n)try{let o=await(await Ei.acquire(r)).computeDuration();if(Number.isFinite(o)&&o>0){let a=Math.round(o*1e3);a>e&&(e=a)}}catch{}return e>0?e:5e3}async registerFont(e,n){let r=await Ie.register(e,n);return r.filePath&&!this.fonts.includes(r.filePath)&&this.fonts.push(r.filePath),this}async registerEmojiFont(e){return await Ie.registerEmojiFont(e),this}toSpec(){let e=[...this.children,...this.audioTracks],n=Ie.getRegisteredFontPaths(),r=Array.from(new Set([...this.fonts,...n]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:e,fonts:r,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this.hasFrameHooks()&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(e={}){return Tr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:e.durationMs??this.durationMs,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async toVirtualMediaAsync(e={}){let n=e.durationMs??this.durationMs??await this.computeDuration();return this.durationMs=n,Tr(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:n,signals:e.signals??this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...e})}async renderFrame(e={}){if(this.hasFrameHooks()){let r=e.frame??(e.atMs!==void 0?Math.round(e.atMs/1e3*this.fps):0);await this.notifyFrame({frame:r,fps:this.fps,time:this.fps>0?r/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,r/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(e.renderer??new ve.HeadlessMediaRenderer).renderFrame(this.toVirtualMedia(),{fps:this.fps,...e})}async renderFrameGrid(e={}){return cr(this,e)}async renderVideo(e={},n={}){let r=typeof e=="string"?{...n,outputPath:e}:e,o=await(r.renderer??new ve.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),r);if(o.qa){let a=this.lint(),s=[...o.qa.issues,...a.map(u=>({severity:u.severity,code:u.code,message:u.message,...u.layerId!==void 0&&{layerId:u.layerId}}))];o.qa={...o.qa,issues:s,passed:o.qa.passed&&!a.some(u=>u.severity==="error")}}return Qd(o,r.outputPath)}lint(){return Vo(this.toSpec(),{emojiFont:Ie.hasEmojiFont()})}};function we(t){let e=t;Object.defineProperty(e,"animate",{value:(...r)=>{let i=r.flat().flatMap(u=>u instanceof ne?u.tracks:u.tracks??[]),o=e.animation,a=o?.tracks??[],s=r.flat().map(u=>u.frameStep).filter(u=>u!==void 0).at(-1)??o?.frameStep;return e.animation={tracks:Fn([...a,...i]),...s!==void 0&&s>1&&{frameStep:s}},e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToLandmark",{value:(r,i)=>(Hi(e,r,i),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"pinToObject",{value:(r,i)=>(Yi(e,r,i),e),enumerable:!1,writable:!0,configurable:!0});let n=(r,i)=>(e.matte={node:r,...i&&{mode:i}},e);for(let r of["withMatte","withMask"])Object.defineProperty(e,r,{value:n,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(e,"withPbrGlass",{value:r=>(e.glass=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"deformWithAudio",{value:r=>(e.audioDeform=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withCrop",{value:r=>(e.crop=r instanceof Rn?r:new Rn(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withVision",{value:r=>(e.vision=r instanceof mt?r:new mt(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withRelighting",{value:r=>(e.relighting=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"relight",{value:r=>(e.relighting=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withDeflicker",{value:r=>(e.deflicker=r??{},e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"apply",{value:r=>(e.effects||(e.effects=[]),e.effects.push(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffect",{value:r=>(e.effects||(e.effects=[]),e.effects.push(r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withEffects",{value:r=>(e.effects||(e.effects=[]),e.effects.push(...r),e),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"section",{value:(r={},i)=>r!==null&&typeof r=="object"&&"bounds"in r?L.section(e,r,i):L.section(e,r),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"blurRegion",{value:(r,i)=>{let o=new Pt({track:r,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return e.effects||(e.effects=[]),e.effects.push(o),e},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(e,"withBlurRegion",{value:(r,i)=>e.blurRegion(r,i),enumerable:!1,writable:!0,configurable:!0}),e}var L={video:(t,e={})=>we({id:e.id??Q("video"),kind:"media",inputHandleId:t,dataType:"Video",fit:e.fit??"cover",...e}),image:(t,e={})=>(typeof t=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(t)||t.startsWith("data:application/json")?console.warn(`[Layer.image] '${t}' is a Lottie vector animation, not a static image. Use Layer.lottie('${t}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(t)?console.warn(`[Layer.image] '${t}' is a video file, not a static image. Use Layer.video('${t}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(t)&&console.warn(`[Layer.image] '${t}' is an audio file, not a static image. Use Layer.audio('${t}', options) instead.`)),we({id:e.id??Q("img"),kind:"media",inputHandleId:t,dataType:"Image",fit:e.fit??"cover",...e})),svg:(t,e={})=>we({id:e.id??Q("svg"),kind:"media",inputHandleId:t,dataType:"SVG",fit:e.fit??"contain",...e}),lottie:(t,e={})=>we({id:e.id??Q("lottie"),kind:"media",inputHandleId:t,dataType:"Lottie",fit:e.fit??"contain",...e}),audio:(t,e={})=>we({id:e.id??Q("audio"),kind:"media",inputHandleId:t,dataType:"Audio",volume:e.volume??1,...e}),text:(t,e={})=>{let n=Array.isArray(t),r=!n&&typeof t=="object"&&t!==null,i=r?t:e,o="",a=i.spans;if(n){let s=Yr(t);o=s.text,a=s.spans}else r?i.spans&&!i.text?o=Yr(i.spans).text:o=i.text??"":o=typeof t=="string"?t:String(t??"");return we({id:i.id??Q("text"),kind:"text",fontFamily:i.fontFamily??Ie.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??o,spans:i.spans??a})},caption:(t,e={})=>we({id:e.id??Q("caption"),kind:"media",inputHandleId:t,dataType:e.dataType??"Caption",fontFamily:e.fontFamily??Ie.getAll()[0]?.family??"Inter",fontSize:e.fontSize??48,fill:e.fill??"#ffffff",...e}),shape:(t="rect",e={})=>{let{fill:n,...r}=e;return we({id:r.id??Q("shape"),kind:"shape",shapeType:r.shapeType??t,...r,fillColor:r.fillColor??n??"#3b82f6"})},flex:(t={})=>we({id:t.id??Q("flex"),kind:"flex",dir:t.dir??"column",children:t.children??[],...t}),box:(t={})=>we({id:t.id??Q("box"),kind:"box",background:t.background??"transparent",children:t.children??[],...t}),particles:t=>{let e=new lr(t),n={metadata:{width:t.width,height:t.height},operation:{...e.toOperation(),effect:e,dataType:"Video"},children:[]};return we({id:t.id??Q("particles"),kind:"media",dataType:"Video",src:n,position:"absolute",x:t.x??0,y:t.y??0,width:t.width,height:t.height,...t.startFrame!==void 0&&{startFrame:t.startFrame},...t.durationFrames!==void 0&&{durationFrames:t.durationFrames},...t.zIndex!==void 0&&{zIndex:t.zIndex}})},vfx:t=>{let{x:e,y:n,id:r,startFrame:i,durationFrames:o,zIndex:a,...s}=t,u=new oo({outputType:"Video",...s}),c={metadata:{width:t.width,height:t.height},operation:{...u.toOperation(),effect:u,dataType:"Video"},children:[]};return we({id:r??Q("vfx"),kind:"media",dataType:"Video",src:c,position:"absolute",x:e??0,y:n??0,width:t.width,height:t.height,...i!==void 0&&{startFrame:i},...o!==void 0&&{durationFrames:o},...a!==void 0&&{zIndex:a}})},section:(t,e={},n={})=>{let r=t;if(t&&typeof t=="object"&&"toSpec"in t&&"children"in t){let v=(t.children||[]).find(O=>O.kind==="media"&&(O.dataType==="Video"||O.dataType==="Image"));v&&(r=v)}let i=e!==null&&typeof e=="object"&&"bounds"in e,o=i?n:e,a=i?e:void 0,s=o.padding??0,u=typeof r=="string"?r:r?.inputHandleId??r?.src??"",c=typeof r=="object"&&r?.dataType?r.dataType:"Video",m=o.compositionWidth??o.compWidth??(i?o.width:void 0)??1920,d=o.compositionHeight??o.compHeight??(i?o.height:void 0)??1080,p=Array.isArray(o.effects)?[...o.effects]:o.effects?[o.effects]:[],f=a?a.bounds.screenX.multiply(-1).add(s):typeof o.x=="number"?-o.x:o.x&&typeof o.x.multiply=="function"?o.x.multiply(-1):0,b=a?a.bounds.screenY.multiply(-1).add(s):typeof o.y=="number"?-o.y:o.y&&typeof o.y.multiply=="function"?o.y.multiply(-1):0,g=(c==="Image"?L.image(u,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b}):L.video(u,{position:"absolute",width:m,height:d,fit:o.fit??"cover",x:f,y:b})).withEffects(p),y=a?a.bounds.screenWidth.add(s*2):o.width!==void 0?o.width:m,k=a?a.bounds.screenHeight.add(s*2):o.height!==void 0?o.height:d,S=[g,...o.children??[]],P=o.id??(a?Q(`section-track-${a.trackId}`):Q("section")),w=L.box({id:P,position:o.position??"absolute",width:y,height:k,x:a?void 0:o.x,y:a?void 0:o.y,borderRadius:o.borderRadius??0,borderColor:o.borderColor,borderWidth:o.borderWidth,opacity:o.opacity??1,overflow:"hidden",children:S});a&&(w=w.pinToObject(a,{anchor:"topLeft",offsetX:-s,offsetY:-s,hideWhenLost:o.hideWhenLost??!0,smoothFrames:o.smoothFrames}));let A=w;return Object.defineProperty(A,"innerMedia",{value:g,enumerable:!0,writable:!1}),Object.defineProperty(A,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(A,"addEffect",{value:v=>(p.push(v),g.effects=p,A),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffect",{value:v=>A.addEffect(v),enumerable:!0,writable:!1}),Object.defineProperty(A,"withEffects",{value:v=>{for(let O of v)A.addEffect(O);return A},enumerable:!0,writable:!1}),A},trackedRegion:(t,e,n={})=>L.section(t,e,n),blurTrackedRegion:(t,e,n={})=>{let{padding:r,borderRadius:i,borderColor:o,borderWidth:a,...s}=n;return L.section(t,e,{padding:r??8,borderRadius:i??12,borderColor:o,borderWidth:a,effects:[new Pt({strength:s.strength??25,blurType:s.blurType??"Gaussian",...s})]})},chart:(t,e={})=>hd(t,e,Ie.getAll()[0]?.family??"Inter"),camera:(t={})=>we({id:t.id??Q("camera"),kind:"camera",mode:t.mode??"lookAt",pitch:t.pitch??0,yaw:t.yaw??0,roll:t.roll??0,...t}),light:(t={})=>we({id:t.id??Q("light"),kind:"light",lightType:t.lightType??"point",color:t.color??"#ffffff",intensity:t.intensity??1,...t}),ambientLight:(t="#ffffff",e=.5,n={})=>st.ambient(t,e,n),sequence:(t,e)=>vd(t,e),environment:(t="studio",e={})=>st.environment(t,e),directionalLight:(t={})=>st.directional(t),pointLight:(t={})=>st.point(t),spotLight:(t={})=>st.spot(t),cube:t=>ot.cube(t),carousel3d:t=>ot.carousel(t),plane3d:t=>ot.plane(t),prism3d:t=>ot.prism(t),model:(t={})=>we({id:t.id??Q("model3d"),kind:"model3d",is3D:t.is3D??!0,modelFormat:t.modelFormat??"auto",loop:t.loop??!0,scale:t.scale??1,scaleX:t.scaleX??1,scaleY:t.scaleY??1,scaleZ:t.scaleZ??1,opacity:t.opacity??1,...t}),obj:(t,e={})=>L.model({src:t,modelFormat:"obj",...e}),fbx:(t,e={})=>L.model({src:t,modelFormat:"fbx",...e}),gltf:(t,e={})=>L.model({src:t,modelFormat:"gltf",...e}),glb:(t,e={})=>L.model({src:t,modelFormat:"glb",...e}),stl:(t,e={})=>L.model({src:t,modelFormat:"stl",...e}),ply:(t,e={})=>L.model({src:t,modelFormat:"ply",...e}),vox:(t,e={})=>L.model({src:t,modelFormat:"vox",...e}),threeDS:(t,e={})=>L.model({src:t,modelFormat:"3ds",...e}),off:(t,e={})=>L.model({src:t,modelFormat:"off",...e})},st={environment:(t="studio",e={})=>{let n=typeof t=="string"?{preset:t,...e}:{...t,...e};return we({kind:"light",lightType:"environment",preset:"studio",intensity:1,...n,id:n.id??Q("environment")})},ambient:(t="#ffffff",e=.5,n={})=>we({id:n.id??Q("light-ambient"),kind:"light",lightType:"ambient",color:t,intensity:e,...n}),directional:(t={})=>we({id:t.id??Q("light-directional"),kind:"light",lightType:"directional",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-1e3,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,...t}),point:(t={})=>we({id:t.id??Q("light-point"),kind:"light",lightType:"point",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??0,z:t.z??-500,radius:t.radius??1e3,decay:t.decay??1,...t}),spot:(t={})=>we({id:t.id??Q("light-spot"),kind:"light",lightType:"spot",color:t.color??"#ffffff",intensity:t.intensity??1,x:t.x??0,y:t.y??-500,z:t.z??-1e3,targetX:t.targetX??0,targetY:t.targetY??0,targetZ:t.targetZ??0,angle:t.angle??45,penumbra:t.penumbra??.2,radius:t.radius??2e3,decay:t.decay??1,...t})};function jC(t,e={},n={}){return L.section(t,e,n)}function _C(t,e,n={}){return typeof t=="object"&&"blurRegion"in t?t.blurRegion(e,n):L.blurTrackedRegion(t,e,n)}function $C(t,e,n={}){return L.section(t,e,n)}var Cb=Object.assign(Yt,ao,{blur:t=>new Pt(t),vignette:t=>new Zt(t),colorBalance:t=>new Zi(t),colorKey:t=>new Ki(t),levels:t=>new so(t),filmGrain:t=>new Je(t),curves:t=>new lo(t),selectiveColor:t=>new co(t),gradientMap:t=>new Mt(t),shadowsHighlights:t=>new mo(t),applyLut:t=>new po(t),unsharpMask:t=>new fo(t),highPass:t=>new ho(t),halftoneScreen:t=>new On(t),tileOffset:t=>new go(t),motionBlur:t=>new bo(t),ssao:t=>new yo(t),pbrGlass:t=>new xo(t),depthOfField:t=>new wo(t),crop:t=>new Rn(t),vision:t=>new mt(t),relight3d:t=>new vo(t),modulate:t=>new ko(t),deflicker:t=>new So(t),custom:(t,e={})=>new uo(t,e)});var Ab=/\.(png|jpe?g|webp|gif|avif|tiff?|bmp)(\?.*)?$/i,Db=/\.svg(\?.*)?$/i;function Nb(t){let e=n=>n?{...n,enabled:!0}:void 0;return new no({...t.dropShadow&&{dropShadow:e(t.dropShadow)},...t.outerGlow&&{outerGlow:e(t.outerGlow)},...t.innerShadow&&{innerShadow:e(t.innerShadow)},...t.stroke&&{stroke:e(t.stroke)}})}function Ob(t,e){let n=Math.max(16,Math.round(t)),r=Math.max(16,Math.round(e));return`data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${r}"><rect width="${n}" height="${r}" fill="#808080"/></svg>`)}`}var Jd={box:t=>L.box(t),flex:t=>L.flex(t),text:(t,e)=>L.text(t,e),shape:(t,e)=>L.shape(t,e),measure:(t,e)=>Ie.measure(t,e),fonts:()=>Ie.getAll().map(t=>t.family),autoId:Q,media:(t,e)=>Db.test(t)?L.svg(t,e):Ab.test(t)?L.image(t,e):L.video(t,{muted:!0,...e}),style:(t,e)=>(t.withEffect(Nb(e)),t),cutout:(t,{mode:e="person",...n})=>L.video(t,{muted:!0,volume:0,fit:"cover",...n}).withVision({mode:"matte",enableSegmentation:!0,variant:e==="subject"?"m":"s",confidence:.25,featherRadius:.04,keyBackground:!0}),particles:t=>L.particles(t),signal:(t,e)=>ks([...t],e),grain:({id:t,x:e,y:n,width:r,height:i,strength:o,size:a})=>L.svg(Ob(r,i),{id:t,position:"absolute",x:e,y:n,width:r,height:i,fit:"fill",blendMode:"soft-light"}).withEffect(new Je({strength:o,...a!==void 0&&{size:a},shadows:1,midtones:1,highlights:1})),extrudedText:({fontWeight:t,...e})=>ot.extrudedText({...e,...t!==void 0&&{fontWeight:String(t)},align:"center",verticalAlign:"middle"}),matte:(t,e,n="alpha")=>(t.withMatte(e,n),t)};h();async function Kd(t,e={}){let n=await Es(t);if(!n||n.channels.length===0)throw new Error(`analyzeAudio: could not decode audio from ${t}`);return Ku(n.channels,n.sampleRate,e)}function Mb(t){return cl(Jd,t)}export{To as a,Co as b,js as c,_s as d,$s as e,lm as f,cm as g,Us as h,Ao as i,dm as j,Gs as k,mm as l,Ws as m,Do as n,Hs as o,Ys as p,Xs as q,qs as r,Zs as s,Ks as t,No as u,Bn as v,Qs as w,Js as x,Kt as y,eu as z,tu as A,nu as B,ru as C,Or as D,Rr as E,iu as F,ou as G,Fr as H,au as I,su as J,uu as K,lu as L,cu as M,du as N,mu as O,Qt as P,pm as Q,Oo as R,Ro as S,Fo as T,Bo as U,Lo as V,Eo as W,rw as X,iw as Y,sw as Z,Fn as _,ne as $,Mo as aa,Vo as ba,zo as ca,Pu as da,Tu as ea,Om as fa,Cu as ga,Au as ha,Du as ia,Nu as ja,Ou as ka,Ru as la,Fu as ma,Bu as na,Lu as oa,Eu as pa,Iu as qa,Vu as ra,zu as sa,ju as ta,Vm as ua,_u as va,$o as wa,zm as xa,$u as ya,Uu as za,jm as Aa,_m as Ba,Gu as Ca,Ln as Da,Uo as Ea,$n as Fa,Un as Ga,Gn as Ha,Jt as Ia,je as Ja,Hn as Ka,ta as La,Up as Ma,Gp as Na,Wp as Oa,Hp as Pa,Yp as Qa,Xp as Ra,qp as Sa,Zp as Ta,Kp as Ua,Qp as Va,Jp as Wa,ef as Xa,Yr as Ya,tf as Za,fd as _a,ur as $a,wi as ab,lr as bb,Ja as cb,es as db,cr as eb,ve as fb,ot as gb,wd as hb,zg as ib,mr as jb,wn as kb,pr as lb,vn as mb,eb as nb,tb as ob,fb as pb,Gm as qb,Er as rb,En as sb,Go as tb,Wm as ub,Hm as vb,Fy as wb,Hu as xb,Yu as yb,Km as zb,Ku as Ab,Vy as Bb,zy as Cb,jy as Db,Qu as Eb,Uy as Fb,Vr as Gb,Jm as Hb,Gy as Ib,Wy as Jb,In as Kb,Xy as Lb,qy as Mb,Ju as Nb,Wo as Ob,zr as Pb,el as Qb,Zy as Rb,Yo as Sb,tp as Tb,Vn as Ub,n0 as Vb,r0 as Wb,i0 as Xb,o0 as Yb,jr as Zb,a0 as _b,np as $b,rp as ac,s0 as bc,u0 as cc,l0 as dc,zn as ec,qo as fc,rl as gc,il as hc,al as ic,jn as jc,y0 as kc,op as lc,ap as mc,up as nc,M0 as oc,cp as pc,dp as qc,cl as rc,ea as sc,dl as tc,ml as uc,pl as vc,A0 as wc,tt as xc,D0 as yc,B0 as zc,_n as Ac,L0 as Bc,E0 as Cc,I0 as Dc,V0 as Ec,z0 as Fc,j0 as Gc,$r as Hc,G0 as Ic,W0 as Jc,H0 as Kc,Y0 as Lc,X0 as Mc,q0 as Nc,Z0 as Oc,yp as Pc,J0 as Qc,nx as Rc,ax as Sc,xp as Tc,cx as Uc,dx as Vc,fx as Wc,hl as Xc,wp as Yc,gl as Zc,yx as _c,kp as $c,Tp as ad,yl as bd,xx as cd,Sx as dd,Kd as ed,Mb as fd,qd as gd,Zd as hd,L as id,st as jd,jC as kd,_C as ld,$C as md,Cb as nd};
|