From c1bff483e68203201054e117a44f2d51d728387b Mon Sep 17 00:00:00 2001 From: YeomaiPC Date: Mon, 7 Sep 2026 21:23:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/assets/index-Acs2Q5qJ.css | 1 + .../{index-DPMVQNnV.js => index-B1oGFzi8.js} | 2 +- .../{index-B-woOuPC.js => index-BUbc0qUx.js} | 2 +- dist/assets/index-CheycJh3.css | 1 - .../{index-CQJ6qUg9.js => index-D08n0lXm.js} | 144 ++++----- .../SpineParticleConnector-macos-arm64.zip | Bin 0 -> 118639 bytes .../SpineParticleConnector-windows-x64.exe | Bin 0 -> 492544 bytes dist/index.html | 28 +- .../SpineParticleConnector-macos-arm64.zip | Bin 0 -> 118639 bytes .../SpineParticleConnector-windows-x64.exe | Bin 0 -> 492544 bytes src/views/HelpDialog.vue | 299 ++++++++++++++++++ src/views/Stage.vue | 112 +------ 12 files changed, 390 insertions(+), 199 deletions(-) create mode 100644 dist/assets/index-Acs2Q5qJ.css rename dist/assets/{index-DPMVQNnV.js => index-B1oGFzi8.js} (99%) rename dist/assets/{index-B-woOuPC.js => index-BUbc0qUx.js} (99%) delete mode 100644 dist/assets/index-CheycJh3.css rename dist/assets/{index-CQJ6qUg9.js => index-D08n0lXm.js} (50%) create mode 100644 dist/downloads/connector/SpineParticleConnector-macos-arm64.zip create mode 100644 dist/downloads/connector/SpineParticleConnector-windows-x64.exe create mode 100644 public/downloads/connector/SpineParticleConnector-macos-arm64.zip create mode 100644 public/downloads/connector/SpineParticleConnector-windows-x64.exe create mode 100644 src/views/HelpDialog.vue diff --git a/dist/assets/index-Acs2Q5qJ.css b/dist/assets/index-Acs2Q5qJ.css new file mode 100644 index 0000000..b22ec30 --- /dev/null +++ b/dist/assets/index-Acs2Q5qJ.css @@ -0,0 +1 @@ +.help-overlay[data-v-ae69ecd7]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-ae69ecd7]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-ae69ecd7]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-ae69ecd7]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-ae69ecd7]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-ae69ecd7]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-ae69ecd7]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-ae69ecd7]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-ae69ecd7]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-ae69ecd7]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-ae69ecd7]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-ae69ecd7]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-ae69ecd7]{color:#dce4f7}.help-grid[data-v-ae69ecd7]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-ae69ecd7]{display:grid;gap:0;margin:0}.help-list>div[data-v-ae69ecd7]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-ae69ecd7]:last-child{border-bottom:0}.help-list dt[data-v-ae69ecd7]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-ae69ecd7]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-ae69ecd7]{display:grid;gap:7px}.shortcut-list>div[data-v-ae69ecd7]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-ae69ecd7]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-ae69ecd7]{color:#65728b;font-size:10px}.shortcut-list em[data-v-ae69ecd7]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-ae69ecd7]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-ae69ecd7]{margin-top:12px}.help-export p[data-v-ae69ecd7]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-ae69ecd7]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-ae69ecd7]{margin-top:12px}.help-module-head[data-v-ae69ecd7]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-ae69ecd7]:hover{color:#fff}.help-module-head .mtitle[data-v-ae69ecd7]{flex:1;min-width:0}.help-module-head .caret[data-v-ae69ecd7]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-ae69ecd7]{color:#fff}.help-module.open .help-module-head .caret[data-v-ae69ecd7]{color:#9fb2ff}.help-module .mnum[data-v-ae69ecd7]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-ae69ecd7]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-ae69ecd7]{color:#b8c2ff}.help-module .connector-intro[data-v-ae69ecd7]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-ae69ecd7]{color:#dce4f7}.help-module .dl-link[data-v-ae69ecd7]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-ae69ecd7]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-ae69ecd7]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-ae69ecd7]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-ae69ecd7]{padding:66px 12px 14px}.help-grid[data-v-ae69ecd7]{grid-template-columns:1fr}}.stage-wrap[data-v-373478e7]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-373478e7]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-373478e7]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-373478e7]:active{cursor:grabbing}.topbar[data-v-373478e7]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-373478e7]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-373478e7]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-373478e7]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-373478e7]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-373478e7]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-373478e7]{position:relative;flex:0 0 auto}.background-btn[data-v-373478e7]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-373478e7]:hover,.background-btn.on[data-v-373478e7]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-373478e7]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-373478e7]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-373478e7]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-373478e7]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-373478e7]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-373478e7]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-373478e7]{display:none}.background-file-name[data-v-373478e7]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-373478e7]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-373478e7]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-373478e7]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-373478e7]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-373478e7]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-373478e7]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-373478e7]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-373478e7]:hover,.help-btn.on[data-v-373478e7]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-373478e7]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.hud[data-v-373478e7]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-373478e7]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-373478e7]{width:3ch}.hud-particle-count[data-v-373478e7]{width:7ch;text-align:left}.hud-tip[data-v-373478e7]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-373478e7]{color:#fc3}.settings-btn[data-v-373478e7]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-373478e7]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-373478e7]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-373478e7]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-373478e7]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-373478e7]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-373478e7]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-373478e7]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-373478e7]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-373478e7]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-373478e7]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-373478e7]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-373478e7]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-373478e7]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-373478e7]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-373478e7]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-373478e7]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-373478e7]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-373478e7]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-373478e7]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-373478e7]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-373478e7]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-373478e7]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-373478e7]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-373478e7]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-373478e7]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-373478e7]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-373478e7]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.sp-chk.disabled[data-v-373478e7]{color:#5f687d;cursor:not-allowed}.sp-chk.disabled input[data-v-373478e7]{cursor:not-allowed;opacity:.55}.ns[data-v-45669c72]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-45669c72]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-45669c72]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-45669c72]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-45669c72]{opacity:.55}.ns.disabled .ns-range[data-v-45669c72],.ns.disabled .ns-num[data-v-45669c72]{cursor:not-allowed}.ce[data-v-3c8d1b94]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-3c8d1b94]{flex:1;min-width:0}.ce-reset[data-v-3c8d1b94]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-3c8d1b94]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-3c8d1b94]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-3c8d1b94]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-3c8d1b94]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-3c8d1b94]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-3c8d1b94]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-3c8d1b94]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-3c8d1b94]:active{cursor:grabbing}.ce-node[data-v-3c8d1b94]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-3c8d1b94]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-3c8d1b94]:active{cursor:grabbing}.ce-nav[data-v-3c8d1b94]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-3c8d1b94]{color:#566;font-size:10px}.pac[data-v-7a931847]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-7a931847]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-7a931847]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-7a931847]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-7a931847]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-7a931847]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-7a931847]{margin-top:8px}.pac-axis[data-v-7a931847]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-7a931847] .ns-label{width:58px}.pac[data-v-7a931847] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-7a931847] .ce-tip{color:#657188}.gradient-editor[data-v-8816e4a4]{margin:8px 0 11px 68px}.gradient-bar[data-v-8816e4a4]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-8816e4a4]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-8816e4a4]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-8816e4a4]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-8816e4a4]:active{cursor:grabbing}.gradient-controls[data-v-8816e4a4]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-8816e4a4]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-8816e4a4]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-8816e4a4]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-8816e4a4]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-8816e4a4]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-8816e4a4]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-8816e4a4]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-8816e4a4]{color:#e3a5aa}.gradient-action[data-v-8816e4a4]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-8816e4a4]{margin-top:5px;color:#59667b;font-size:9px}.image-card[data-v-7a2d016a]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-7a2d016a]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-7a2d016a]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-7a2d016a]:hover{border-color:#7774ff}.img-thumb img[data-v-7a2d016a]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-7a2d016a]{flex:1;min-width:0}.img-actions[data-v-7a2d016a]{display:flex;flex-direction:column;gap:4px}.row[data-v-7a2d016a]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-7a2d016a]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-7a2d016a]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-7a2d016a]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-7a2d016a]:hover{background:#2b3a5c}.mini-btn2[data-v-7a2d016a]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-7a2d016a]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-7a2d016a]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-7a2d016a]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-7a2d016a]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-7a2d016a]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-7a2d016a]{width:100%;min-width:0}.resource-weight-control[data-v-7a2d016a] .ns-range{min-width:0}.resource-weight-control[data-v-7a2d016a] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-7a2d016a]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-7a2d016a]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-7a2d016a]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-7a2d016a]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-7a2d016a]:disabled{opacity:.35;cursor:not-allowed}.spine-editor[data-v-3af7b738]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-3af7b738],.section-title[data-v-3af7b738]{color:#dce2f5;font-weight:700}.editor-title[data-v-3af7b738]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-3af7b738]{display:grid;gap:8px}.grid.three[data-v-3af7b738]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-3af7b738]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-3af7b738],.field select[data-v-3af7b738],.asset-name[data-v-3af7b738]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-3af7b738]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-3af7b738]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-3af7b738]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-3af7b738]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-3af7b738]:hover{filter:brightness(1.13)}button[data-v-3af7b738]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-3af7b738]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-3af7b738]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-3af7b738]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-3af7b738]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-3af7b738]{background:#702b34;border-color:#803842}.runtime-note[data-v-3af7b738]{color:#69758e;font-size:11px;text-align:center}.error[data-v-3af7b738]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-3af7b738]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-3af7b738]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-3af7b738]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-3af7b738]{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-bone[data-v-3af7b738]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-3af7b738]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-3af7b738]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-3af7b738]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-3af7b738]{color:#c5cde3;font-weight:600}.tree-action[data-v-3af7b738]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-3af7b738]{position:relative}.bone-search input[data-v-3af7b738]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-3af7b738]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-3af7b738]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-3af7b738]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-3af7b738]:hover{background:#45567e38}.bone.selected[data-v-3af7b738]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-3af7b738]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-3af7b738]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-3af7b738]:hover{background:#26324a}.bone-leaf[data-v-3af7b738]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-3af7b738]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media(max-width:430px){.grid.three[data-v-3af7b738]{grid-template-columns:1fr}}.panel[data-v-a377e4d4]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-a377e4d4]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-a377e4d4]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-a377e4d4]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-a377e4d4]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-a377e4d4]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-a377e4d4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.config-management-body[data-v-a377e4d4]{padding-bottom:2px}.config-toolbar[data-v-a377e4d4]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-a377e4d4],.config-toolbar select[data-v-a377e4d4]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-a377e4d4]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-a377e4d4]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-a377e4d4]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-a377e4d4]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-a377e4d4]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-a377e4d4]{color:#e8959e}.empty[data-v-a377e4d4],.panel-hint[data-v-a377e4d4]{color:#667;font-size:12px;padding:8px 0}.group[data-v-a377e4d4]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-a377e4d4]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-a377e4d4]:hover{background:#20202e}.group-reset[data-v-a377e4d4]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-a377e4d4]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-head[data-v-a377e4d4]{padding-right:6px}.scene-actions[data-v-a377e4d4]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-a377e4d4]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-a377e4d4]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-a377e4d4]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-a377e4d4]{padding:8px 10px 12px}.caret[data-v-a377e4d4]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-a377e4d4]{height:1px;background:#2a2a3c;margin:8px 0}.tree[data-v-a377e4d4]{margin-bottom:8px}.tree-item[data-v-a377e4d4]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-a377e4d4]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-a377e4d4]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-a377e4d4]{color:#556}.tree-item .tdot.collision-dot[data-v-a377e4d4]{color:#ff7070}.tree-item .tdot.path-dot[data-v-a377e4d4]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-a377e4d4]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-a377e4d4]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-a377e4d4]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-a377e4d4]{min-height:28px;cursor:pointer}.scene-object-item[data-v-a377e4d4]:hover{background:#202b40}.scene-object-kind[data-v-a377e4d4]{color:#75829c;font-size:10px}.scene-object-eye[data-v-a377e4d4]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-a377e4d4]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-a377e4d4]{color:#59647a}.scene-object-eye svg[data-v-a377e4d4]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-a377e4d4]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-a377e4d4]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-a377e4d4]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-a377e4d4]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-a377e4d4]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-a377e4d4]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-a377e4d4]{color:#5f6d86;line-height:1.5}.field-grid[data-v-a377e4d4]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-a377e4d4]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-a377e4d4]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-a377e4d4]{align-items:flex-start}.check-field input[data-v-a377e4d4]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-a377e4d4],.setting-line[data-v-a377e4d4]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-a377e4d4]{justify-content:space-between}.follow-path input[data-v-a377e4d4],.setting-line input[type=checkbox][data-v-a377e4d4]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-a377e4d4]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-a377e4d4]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-a377e4d4]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-a377e4d4]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-a377e4d4]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-a377e4d4]{color:#aeb8cf}.path-help ul[data-v-a377e4d4]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-a377e4d4]{margin:3px 0}.path-action[data-v-a377e4d4]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-a377e4d4]:hover{filter:brightness(1.12)}.path-action.primary[data-v-a377e4d4]{background:#f05408;color:#fff}.tag[data-v-a377e4d4]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-a377e4d4]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-a377e4d4]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-a377e4d4]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.pair[data-v-a377e4d4]{display:flex;flex-direction:column;gap:2px;flex:1}.colr[data-v-a377e4d4]{width:28px;height:22px;border:none;background:none;cursor:pointer}.segs[data-v-a377e4d4]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-a377e4d4]{margin-top:10px}.stream-loop-options[data-v-a377e4d4]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-a377e4d4]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-a377e4d4]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-a377e4d4]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-a377e4d4]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-a377e4d4]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-a377e4d4]:after{transform:translate(12px)}.loop-section-duration[data-v-a377e4d4]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-a377e4d4]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-a377e4d4]:focus{border-color:#716eff}.loop-auto-duration[data-v-a377e4d4]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-a377e4d4]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-a377e4d4]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.mini-btn[data-v-a377e4d4]{background:#2e3a55;border:1px solid #3a4a6a;color:#cdf;border-radius:5px;padding:3px 8px;font-size:11px;cursor:pointer}.mini-btn.danger[data-v-a377e4d4]{background:#4a2a2e;color:#fbb}.placeholder[data-v-a377e4d4]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-a377e4d4]{padding-top:3px}.export-field[data-v-a377e4d4]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-a377e4d4]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-a377e4d4]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-a377e4d4]{margin-bottom:5px}.export-checkbox[data-v-a377e4d4]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-a377e4d4]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-a377e4d4]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-a377e4d4]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-a377e4d4]{font-weight:600}.export-switch-last[data-v-a377e4d4]{margin-top:13px}.spine-export-actions[data-v-a377e4d4]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-a377e4d4]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-a377e4d4]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-a377e4d4]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-a377e4d4]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-a377e4d4]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-a377e4d4]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-a377e4d4]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-a377e4d4]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-a377e4d4]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-a377e4d4]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-a377e4d4]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-a377e4d4]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-a377e4d4]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-a377e4d4]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-a377e4d4]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-a377e4d4]{background:#d4aa67}.connector-status button[data-v-a377e4d4]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-a377e4d4]:hover{color:#c5caff}.connector-status a[data-v-a377e4d4]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-a377e4d4]:hover{color:#d8dcff}.export-message[data-v-a377e4d4]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-a377e4d4]{color:#ff858f}.export-message a[data-v-a377e4d4]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.look-title[data-v-a377e4d4]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-a377e4d4]:first-child{margin-top:2px}.seg[data-v-a377e4d4]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-a377e4d4]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-a377e4d4]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-hint[data-v-a377e4d4]{min-height:54px;border:1px dashed #2e2e44;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#556;font-size:11px;margin:6px 0}.curve-wrap[data-v-a377e4d4]{margin:6px 0}.curve-labels[data-v-a377e4d4]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-a377e4d4]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-a377e4d4]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-a377e4d4]:hover{background:#4542a8;color:#fff}.image-card[data-v-a377e4d4]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-a377e4d4]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-a377e4d4]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-a377e4d4]:hover{border-color:#7774ff}.img-thumb img[data-v-a377e4d4]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-a377e4d4]{flex:1;min-width:0}.img-actions[data-v-a377e4d4]{display:flex;flex-direction:column;gap:4px}.mini-btn2[data-v-a377e4d4]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-a377e4d4]:hover{background:#2b3a5c}.mini-btn2[data-v-a377e4d4]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-a377e4d4]{color:#667;font-size:11px;margin:4px 0 2px}.resource-divider[data-v-a377e4d4]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-a377e4d4]{max-width:88px}.resource-color-picker .hex[data-v-a377e4d4]{margin-left:0}.random-color-hint[data-v-a377e4d4]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-a377e4d4]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-a377e4d4]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-a377e4d4]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-a377e4d4]{display:flex;gap:3px}.alpha-modes button[data-v-a377e4d4]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-a377e4d4]:hover{background:#273246}.alpha-modes button.on[data-v-a377e4d4]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-a377e4d4]{margin-top:7px}.resource-weight-row[data-v-a377e4d4]{display:flex;align-items:center;gap:5px}.resource-weight-control[data-v-a377e4d4]{flex:1;min-width:0}.weight-lock[data-v-a377e4d4]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-a377e4d4]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-a377e4d4]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-a377e4d4]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-a377e4d4]:disabled{opacity:.35;cursor:not-allowed}.file-input[data-v-a377e4d4]{display:none}.hex[data-v-a377e4d4]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-a377e4d4]{width:46px;flex:0 0 46px;text-align:center}.attr-body[data-v-a377e4d4]{padding:10px;background:#151b27}.attr-section-title[data-v-a377e4d4]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-a377e4d4]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-a377e4d4]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-a377e4d4]{display:flex;gap:4px}.axis-mode[data-v-a377e4d4]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-a377e4d4]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-a377e4d4]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-a377e4d4]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-a377e4d4]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-a377e4d4]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-a377e4d4]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-a377e4d4]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-a377e4d4]:after{transform:translate(14px)}.life-axis[data-v-a377e4d4]{margin:9px 0 2px 42px}.seed-row[data-v-a377e4d4]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-a377e4d4]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-a377e4d4]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-a377e4d4]:focus{border-color:#625ff1}.seed-random[data-v-a377e4d4]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-a377e4d4]:hover{background:#394964}.scene-seed[data-v-a377e4d4]{margin-top:10px}.seed-hint[data-v-a377e4d4]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.modifier-item[data-v-a377e4d4]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-a377e4d4]{font-weight:600}.modifier-params[data-v-a377e4d4]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-a377e4d4]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-a377e4d4]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-a377e4d4]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-a377e4d4]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-a377e4d4]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-a377e4d4]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-a377e4d4]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-a377e4d4]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-a377e4d4]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-a377e4d4]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-a377e4d4]:hover,.collision-filter-add.active[data-v-a377e4d4]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-a377e4d4]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-a377e4d4]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-a377e4d4]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-a377e4d4]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-a377e4d4]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-a377e4d4]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-a377e4d4]{flex:none;color:#68758d;font-size:9px}.stream-loop-hint[data-v-a377e4d4]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-a377e4d4]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-a377e4d4]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-a377e4d4]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-a377e4d4]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-a377e4d4]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-a377e4d4]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-a377e4d4]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-a377e4d4]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-a377e4d4]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-a377e4d4]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-a377e4d4]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-a377e4d4] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-a377e4d4]{padding-right:2px}.trail-section-title[data-v-a377e4d4]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-resource-row[data-v-a377e4d4]{display:flex;align-items:stretch;gap:8px;margin-bottom:10px;padding:8px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.trail-thumb[data-v-a377e4d4]{width:58px;min-height:58px;padding:3px;flex:0 0 58px;border:1px solid #3a4963;border-radius:6px;background:#101725;cursor:pointer;overflow:hidden}.trail-thumb[data-v-a377e4d4]:hover{border-color:#7774ff}.trail-thumb img[data-v-a377e4d4]{display:block;width:100%;height:100%;object-fit:contain}.trail-resource-fields[data-v-a377e4d4]{display:flex;min-width:0;flex:1;flex-direction:column;gap:7px}.trail-color-row[data-v-a377e4d4]{display:flex;align-items:center;gap:5px;color:#8a93bb;font-size:11px}.trail-color-row>span[data-v-a377e4d4]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trail-color-row .hex-input[data-v-a377e4d4],.trail-fixed-color .hex-input[data-v-a377e4d4]{min-width:0;flex:1}.trail-mode-head[data-v-a377e4d4]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-a377e4d4]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-a377e4d4]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-a377e4d4] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-a377e4d4] .ns-label{width:100%}.trail-grid-row[data-v-a377e4d4] .ns-range{min-width:0}.trail-grid-row[data-v-a377e4d4] .ns-num{width:42px}.trail-params[data-v-a377e4d4] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.timeline[data-v-e305dee7]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-e305dee7]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-e305dee7]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-e305dee7]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-e305dee7]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-e305dee7]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-e305dee7]:focus{border-color:#716eff}.tl-loop-range[data-v-e305dee7]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-e305dee7]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-e305dee7]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-e305dee7]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-e305dee7]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-e305dee7]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-e305dee7]{margin-left:4px;background:#2f8b62}.legend-life[data-v-e305dee7]{margin-left:5px;background:#a54551}.legend-spine[data-v-e305dee7]{margin-left:5px;background:#7448b8}.tl-anim[data-v-e305dee7]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-e305dee7]{position:relative}.tl-animation-trigger[data-v-e305dee7]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-e305dee7]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-e305dee7]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-e305dee7]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-e305dee7]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-e305dee7]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-e305dee7]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-e305dee7]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-e305dee7]:hover{background:#252e42}.tl-animation-option.on[data-v-e305dee7]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-e305dee7]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-e305dee7]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-e305dee7]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-e305dee7]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-e305dee7],.tl-animation-actions button[data-v-e305dee7]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-e305dee7]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-e305dee7]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-e305dee7]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-e305dee7]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-e305dee7]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-e305dee7]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-e305dee7]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-e305dee7]{max-width:190px}.tl-zoom[data-v-e305dee7]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-e305dee7]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-e305dee7]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-e305dee7]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-e305dee7]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-e305dee7]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-e305dee7]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-e305dee7]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-e305dee7]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-e305dee7]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-e305dee7]:active{cursor:grabbing}.lane-name[data-v-e305dee7]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-e305dee7]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-e305dee7]{border-color:#667085;background:#242b39}.bar-emission[data-v-e305dee7]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-e305dee7]{border-radius:0}.bar-loop-transition[data-v-e305dee7]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-e305dee7]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-e305dee7]{border-radius:0 5px 5px 0}.bar-handle[data-v-e305dee7]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-e305dee7]:hover{background:#ffffff59}.spine-ico[data-v-e305dee7]{color:#c08cff}.spine-bar[data-v-e305dee7]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-e305dee7]:active{cursor:grabbing}.tl-empty[data-v-e305dee7]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-016b4c9d]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-016b4c9d]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-016b4c9d]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-016b4c9d]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-016b4c9d]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-016b4c9d]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-016b4c9d]{width:42%;animation:transfer-slide-016b4c9d 1s ease-in-out infinite}.transfer-detail[data-v-016b4c9d]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-016b4c9d]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-016b4c9d],.transfer-dialog.failed .transfer-detail[data-v-016b4c9d]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-016b4c9d]{background:#c85d70}.transfer-fade-enter-active[data-v-016b4c9d],.transfer-fade-leave-active[data-v-016b4c9d]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-016b4c9d],.transfer-fade-leave-to[data-v-016b4c9d]{opacity:0}@keyframes transfer-slide-016b4c9d{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-d7e0e59a]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-d7e0e59a]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-d7e0e59a]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-d7e0e59a]:hover{background:#3a5a8c}.right[data-v-d7e0e59a]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-d7e0e59a]{order:1}.panel-right .resizer-col[data-v-d7e0e59a]{order:2}.panel-right .parameter-panel[data-v-d7e0e59a]{order:3}.stage-area[data-v-d7e0e59a]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-d7e0e59a]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-d7e0e59a]:hover{background:#3a5a8c}.timeline-area[data-v-d7e0e59a]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} diff --git a/dist/assets/index-DPMVQNnV.js b/dist/assets/index-B1oGFzi8.js similarity index 99% rename from dist/assets/index-DPMVQNnV.js rename to dist/assets/index-B1oGFzi8.js index 7a4482b..245db5e 100644 --- a/dist/assets/index-DPMVQNnV.js +++ b/dist/assets/index-B1oGFzi8.js @@ -1,4 +1,4 @@ -var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-CQJ6qUg9.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-CQJ6qUg9.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-B-woOuPC.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-B-woOuPC.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` +var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-D08n0lXm.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-D08n0lXm.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-BUbc0qUx.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-BUbc0qUx.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; diff --git a/dist/assets/index-B-woOuPC.js b/dist/assets/index-BUbc0qUx.js similarity index 99% rename from dist/assets/index-B-woOuPC.js rename to dist/assets/index-BUbc0qUx.js index 2fcf062..8c1c9d5 100644 --- a/dist/assets/index-B-woOuPC.js +++ b/dist/assets/index-BUbc0qUx.js @@ -1,2 +1,2 @@ -var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-CQJ6qUg9.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-CQJ6qUg9.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` +var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-D08n0lXm.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-D08n0lXm.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` ${n}`:""}`)}remove(t){t=this.pathPrefix+t;const e=this.cache.assets[t];return e.dispose&&e.dispose(),delete this.cache.assets[t],delete this.cache.assetsRefCount[t],delete this.cache.assetsLoaded[t],e}removeAll(){for(const t in this.cache.assets){const e=this.cache.assets[t];e.dispose&&e.dispose()}this.cache.assets={},this.cache.assetsLoaded={},this.cache.assetsRefCount={}}isLoadingComplete(){return this.toLoad===0}getToLoad(){return this.toLoad}getLoaded(){return this.loaded}dispose(){this.removeAll()}disposeAsset(t){const e=this.cache.assets[t];if(e instanceof ht){e.dispose();return}this.disposeAssetInternal(t)}hasErrors(){return Object.keys(this.errors).length>0}getErrors(){return this.errors}disposeAssetInternal(t){if(this.cache.assetsRefCount[t]>0&&--this.cache.assetsRefCount[t]===0)return this.remove(t)}createTextureAtlas(t,e,n,s){const i=new ht(t);i.dispose=()=>{var o;if(!(this.cache.assetsRefCount[n]<=0)){this.disposeAssetInternal(n);for(const r of i.pages)(o=r.texture)==null||o.dispose()}};for(const o of i.pages){const r=this.texturePath(e,o.name,s);this.texturePmaInfo[this.pathPrefix+r]=o.pma}return i}createTexture(t,e,n){const s=this.textureLoader(n,e),i=s.dispose.bind(s);return s.dispose=()=>{this.disposeAssetInternal(t)&&i()},s}texturePath(t,e,n){return n?n[e]:t+e}}const nt=class nt{constructor(){T(this,"assets",{});T(this,"assetsRefCount",{});T(this,"assetsLoaded",{})}static getCache(t){const e=nt.AVAILABLE_CACHES.get(t);if(e)return e;const n=new nt;return nt.AVAILABLE_CACHES.set(t,n),n}async addAsset(t,e){return this.assetsLoaded[t]=Promise.resolve(e),this.assets[t]=e,e}getAsset(t){return this.assetsLoaded[t]}};T(nt,"AVAILABLE_CACHES",new Map);let lt=nt;class bt{constructor(){T(this,"callbacks",{});T(this,"rawDataUris",{})}dataUriToString(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");return e!==-1?(e+=7,atob(t.substr(e))):t.substr(t.indexOf(",")+1)}base64ToUint8Array(t){var e=window.atob(t),n=e.length,s=new Uint8Array(n);for(let i=0;i{this.finish(t,i.status,i.responseText)};i.onload=o,i.onerror=o,i.send()}downloadJson(t,e,n){this.downloadText(t,s=>{e(JSON.parse(s))},n)}downloadBinary(t,e,n){if(this.start(t,e,n))return;const s=this.rawDataUris[t];if(s&&!s.includes(".")){try{this.finish(t,200,this.dataUriToUint8Array(s))}catch(r){this.finish(t,400,JSON.stringify(r))}return}const i=new XMLHttpRequest;i.open("GET",s||t,!0),i.responseType="arraybuffer";const o=()=>{this.finish(t,i.status,i.response)};i.onload=()=>{i.status===200||i.status===0?this.finish(t,200,new Uint8Array(i.response)):o()},i.onerror=o,i.send()}start(t,e,n){let s=this.callbacks[t];try{if(s)return!0;this.callbacks[t]=s=[]}finally{s.push(e,n)}}finish(t,e,n){const s=this.callbacks[t];if(delete this.callbacks[t],e===200||e===0)for(let i=0,o=s.length;iD.newFloatArray(16)))}update(t,e){if(!t)throw new Error("skeleton cannot be null.");const n=this.boundingBoxes,s=this.polygons,i=this.polygonPool,o=t.slots,r=o.length;n.length=0,i.freeAll(s),s.length=0;for(let l=0;l=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY}aabbIntersectsSegment(t,e,n,s){const i=this.minX,o=this.minY,r=this.maxX,l=this.maxY;if(t<=i&&n<=i||e<=o&&s<=o||t>=r&&n>=r||e>=l&&s>=l)return!1;const c=(s-e)/(n-t);let a=c*(i-t)+e;if(a>o&&ao&&ai&&hi&&ht.minX&&this.minYt.minY}containsPoint(t,e){const n=this.polygons;for(let s=0,i=n.length;s=n||a=n){const h=s[l];h+(n-c)/(a-c)*(s[o]-h)=h&&f<=A||f>=A&&f<=h)&&(f>=e&&f<=s||f>=s&&f<=e)){const x=(a*L-c*g)/C;if((x>=m&&x<=u||x>=u&&x<=m)&&(x>=n&&x<=i||x>=i&&x<=n))return!0}h=A,m=u}return!1}getPolygon(t){if(!t)throw new Error("boundingBox cannot be null.");const e=this.boundingBoxes.indexOf(t);return e===-1?null:this.polygons[e]}getWidth(){return this.maxX-this.minX}getHeight(){return this.maxY-this.minY}}class z{constructor(){T(this,"convexPolygons",[]);T(this,"convexPolygonsIndices",[]);T(this,"indicesArray",[]);T(this,"isConcaveArray",[]);T(this,"triangles",[]);T(this,"polygonPool",new at(()=>[]));T(this,"polygonIndicesPool",new at(()=>[]))}triangulate(t){const e=t;let n=t.length>>1;const s=this.indicesArray;s.length=0;for(let r=0;r3;){let r=n-1,l=0,c=1;for(;;){t:if(!i[l]){const m=s[r]<<1,y=s[l]<<1,A=s[c]<<1,u=e[m],g=e[m+1],b=e[y],L=e[y+1],C=e[A],f=e[A+1];for(let x=c+10);r=l>0?l-1:n-1,c=l+10?l-1:n-1,h=l0&&(s.push(r),i.push(o),r=this.polygonPool.obtain(),o=this.polygonIndicesPool.obtain()),r.length=0,r.push(u,g,b,L),r.push(C,f),o.length=0,o.push(m,y,A),c=z.winding(u,g,b,L,C,f),l=m}r.length>0&&(s.push(r),i.push(o));for(let a=0,h=s.length;a=0;a--)r=s[a],r.length===0?(s.splice(a,1),this.polygonPool.free(r),o=i[a],i.splice(a,1),this.polygonIndicesPool.free(o)):r.push(r[0],r[1]);return s}static isConcave(t,e,n,s){const i=s[t>0?t-1:e-1]<<1,o=s[t]<<1,r=s[t+1=0}static winding(t,e,n,s,i,o){return t*(o-s)+n*(e-o)+i*(s-e)>=0?1:-1}}class wt{constructor(){T(this,"triangulator",null);T(this,"clippingPolygon",[]);T(this,"clippingPolygons",[]);T(this,"clipOutput",[]);T(this,"clippedVertices",[]);T(this,"clippedUVs",[]);T(this,"clippedTriangles",[]);T(this,"inverseVertices",[]);T(this,"_clippedVerticesTyped",new Float32Array(1024));T(this,"_clippedUVsTyped",new Float32Array(1024));T(this,"_clippedTrianglesTyped",new Uint16Array(1024));T(this,"clippedVerticesTyped",new Float32Array(0));T(this,"clippedUVsTyped",new Float32Array(0));T(this,"clippedTrianglesTyped",new Uint16Array(0));T(this,"clippedVerticesLength",0);T(this,"clippedUVsLength",0);T(this,"clippedTrianglesLength",0);T(this,"scratch",[]);T(this,"inverse",!1);T(this,"clipAttachment",null)}clipStart(t,e,n){if(this.clipAttachment)return;const s=n.worldVerticesLength;this.clipAttachment=n,this.inverse=n.inverse;const i=D.setArraySize(this.clippingPolygon,s);n.computeWorldVertices(t,e,0,s,i,0,2);const o=this.clippingPolygon,r=this.makeClockwise(o);r||this.inverse||n.convex?(r||this.makeConvex(o),this.clippingPolygon.push(o[0],o[1]),this.clippingPolygons.push(o)):(this.triangulator===null&&(this.triangulator=new z),this.clippingPolygons.push(...this.triangulator.decompose(o,this.triangulator.triangulate(o))))}clipEnd(t){this.clipAttachment&&(t&&this.clipAttachment.endSlot!==t.data||(this.clipAttachment=null,this.clippingPolygons.length=0))}isClipping(){return this.clipAttachment!=null}clipTriangles(t,e,n,s,i,o,r,l){return s&&i&&o&&typeof r=="boolean"&&typeof l=="number"?this.clipTrianglesRender(t,e,n,s,i,o,r,l):this.clipTrianglesNoRender(t,e,n)}clipTrianglesNoRender(t,e,n){const s=this.clippedVertices;s.length=0;const i=this.clippedTriangles;i.length=0;let o=0;if(this.inverse){const h=this.clippingPolygons[0];for(let m=0;m>1,I=s.length;const R=D.setArraySize(s,I+P);D.arrayCopy(f,x,R,I,P),I=i.length;const v=D.setArraySize(i,I+3*(M-2));for(let V=1;V>1;const P=D.setArraySize(s,f+x);D.arrayCopy(a,0,P,f,x),f=i.length;const M=D.setArraySize(i,f+3*(S-2));S--;for(let I=1;I>1;let F=c.length;const N=D.setArraySize(c,F+G*l);for(let X=0;X>1;q===0&&(U=P-v,O=R-S,B=L-R,K=v-C,q=1/(U*B-O*K));const E=D.setArraySize(c,d+_*l);for(let Y=0;Y>1;let Y=this.clippedVerticesLength;const G=Y+k*o,F=this.clippedUVsLength+k*2;r.length>1;J===0&&(O=M-V,B=v-P,K=L-v,q=V-C,J=1/(O*K-B*q));const k=p+E*o;r.length=2?(a=this.clipOutput,h=this.scratch):(a=this.scratch,h=this.clipOutput);const m=r;a.length=8;const y=a;y[0]=t,y[1]=e,y[2]=n,y[3]=s,y[4]=i,y[5]=o,y[6]=t,y[7]=e,h.length=0;const A=r.length-4;for(let u=0;;u+=2){const g=m[u],b=m[u+1],L=g-m[u+2],C=b-m[u+3],f=h.length,x=a;t=x[0],e=x[1];let S=C*(g-t)-L*(b-e);for(let M=2,I=a.length-2;M<=I;M+=2){n=x[M],s=x[M+1];const R=C*(g-n)-L*(b-s);if(S>0)if(R>0)h.push(n,s);else{const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w),c=!0):h.push(n,s)}else if(R>0){const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w,n,s),c=!0):h.push(n,s)}else c=!0;t=n,e=s,S=R}if(f===h.length)return l.length=0,!0;if(h.push(h[0],h[1]),u===A)break;const P=h;h=a,h.length=0,a=P}if(l!==h){l.length=0;for(let u=0,g=h.length-2;u=2?(c=this.clipOutput,a=this.scratch):(c=this.scratch,a=this.clipOutput),c.length=8;let h=r,m=c;m[0]=t,m[1]=e,m[2]=n,m[3]=s,m[4]=i,m[5]=o,m[6]=t,m[7]=e,a.length=0;for(let y=0;;y+=2){const A=h[y],u=h[y+1],g=A-h[y+2],b=u-h[y+3],L=a.length,C=this.inverseVertices.length;this.inverseVertices.push(0),m=c,t=m[0],e=m[1];let f=b*(A-t)-g*(u-e);for(let P=2,M=c.length-2;P<=M;P+=2){n=m[P],s=m[P+1];const I=b*(A-n)-g*(u-s);if(f>0)if(I>0)a.push(n,s);else{const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;a.push(w,U),this.inverseVertices.push(w,U,n,s)}else a.push(n,s)}else if(I>0){const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;this.inverseVertices.push(w,U),a.push(w,U,n,s)}else a.push(n,s)}else this.inverseVertices.push(n,s);t=n,e=s,f=I}const x=this.inverseVertices.length-C-1;if(x>=6?this.inverseVertices[C]=x:this.inverseVertices.length=C,L===a.length||(a.push(a[0],a[1]),y===l))break;const S=a;a=c,a.length=0,c=S}}makeClockwise(t){const e=t,n=t.length;let s=!0,i=!0,o=0,r=e[n-2],l=e[n-1],c=e[0],a=e[1];for(let m=2;m=0,r=c,l=a,c=y,a=A}o+=c*e[1]-e[0]*a;const h=(c-r)*(e[1]-a)-(a-l)*(e[0]-c);if(i=i&&h<=0,s=s&&h>=0,o>=0){for(let m=0,y=n-2,A=n>>1;m=0&&(s[a]>l||s[a]===l&&s[a+1]>c);a-=2)s[a+2]=s[a],s[a+3]=s[a+1];s[a+2]=l,s[a+3]=c}n[0]=s[0],n[1]=s[1],n[2]=s[2],n[3]=s[3];let i=4;for(let r=4;r=0&&(i-=2,i!==2););n[i]=l,n[i+1]=c}n[i]=s[e-4],n[i+1]=s[e-3];const o=i;i+=2;for(let r=e-6;r>=0;r-=2,i+=2){const l=s[r],c=s[r+1];for(;(n[i-2]-n[i-4])*(c-n[i-3])-(n[i-1]-n[i-3])*(l-n[i-4])>=0&&(i-=2,i!==o););n[i]=l,n[i+1]=c}t.length=i-2}}class St{constructor(t,e,n={}){T(this,"skeleton");T(this,"adapter");T(this,"positionInheritanceFactorX",0);T(this,"positionInheritanceFactorY",0);T(this,"rotationInheritanceFactor",0);T(this,"hasLastTransform",!1);T(this,"lastX",0);T(this,"lastY",0);T(this,"lastZ",0);T(this,"lastRotation",0);T(this,"currentTransform",{x:0,y:0,z:0,rotation:0});T(this,"currentPosition",{x:0,y:0,z:0});T(this,"lastPosition",{x:0,y:0,z:0});this.skeleton=t,this.adapter=e,this.positionInheritanceFactorX=n.positionInheritanceX??0,this.positionInheritanceFactorY=n.positionInheritanceY??0,this.rotationInheritanceFactor=n.rotationInheritance??0}get positionInheritanceX(){return this.positionInheritanceFactorX}get positionInheritanceY(){return this.positionInheritanceFactorY}setPositionInheritance(t,e){const n=this.positionInheritanceFactorX===0&&this.positionInheritanceFactorY===0,s=t!==0||e!==0;this.positionInheritanceFactorX=t,this.positionInheritanceFactorY=e,n&&s&&this.resetPosition()}get rotationInheritance(){return this.rotationInheritanceFactor}set rotationInheritance(t){const e=this.rotationInheritanceFactor===0;this.rotationInheritanceFactor=t,e&&t!==0&&this.resetRotation()}resetPosition(){const t=this.currentTransform,e=!this.hasLastTransform&&this.rotationInheritanceFactor!==0;this.adapter.readTransform(t,e),this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z,e&&(this.lastRotation=t.rotation),this.hasLastTransform=!0}resetRotation(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.lastRotation=t.rotation,this.hasLastTransform||(this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z),this.hasLastTransform=!0}resetTransform(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.setLastTransform(t.x,t.y,t.z,t.rotation)}applyTransformMovement(){const t=this.positionInheritanceFactorX!==0||this.positionInheritanceFactorY!==0,e=this.rotationInheritanceFactor!==0;if(!t&&!e)return;const n=this.currentTransform;this.adapter.readTransform(n,e);const{x:s,y:i,z:o}=n,r=e?n.rotation:this.lastRotation,l=s!==this.lastX||i!==this.lastY||o!==this.lastZ;if(this.hasLastTransform){if(!l&&r===this.lastRotation)return;t&&l&&this.applyPositionMovement(s,i,o),e&&r!==this.lastRotation&&this.applyRotationMovement(r)}this.setLastTransform(s,i,o,r)}applyPositionMovement(t,e,n){const s=this.currentPosition;s.x=t,s.y=e,s.z=n,this.adapter.worldToSkeleton(s);const i=this.lastPosition;i.x=this.lastX,i.y=this.lastY,i.z=this.lastZ,this.adapter.worldToSkeleton(i),this.skeleton.physicsTranslate((s.x-i.x)*this.positionInheritanceFactorX,(s.y-i.y)*this.positionInheritanceFactorY)}applyRotationMovement(t){const e=this.rotationInheritanceFactor;e!==0&&this.skeleton.physicsRotate(0,0,this.getRotationDelta(t,this.lastRotation)*e)}setLastTransform(t,e,n,s){this.lastX=t,this.lastY=e,this.lastZ=n,this.lastRotation=s,this.hasLastTransform=!0}getRotationDelta(t,e){let n=t-e;return n=(n+180)%360-180,n<-180?n+360:n}}class Mt{constructor(){T(this,"commandPool",new xt);T(this,"worldVertices",new Float32Array(12*1024));T(this,"quadIndices",new Uint16Array([0,1,2,2,3,0]));T(this,"clipping",new wt);T(this,"renderCommands",[])}render(t,e=!1,n,s=2,i=0){var c,a;this.commandPool.reset(),this.renderCommands.length=0;const o=this.clipping;let r=0;const l=t.drawOrder.appliedPose;for(let h=0,m=l.length;h>1;const w=u.sequence,U=w.resolveIndex(A);f=w.getUVs(U),x=u.triangles,S=x.length,M=(a=w.regions[U])==null?void 0:a.texture}else if(u instanceof rt){o.clipEnd(y),o.clipStart(t,y,u);continue}else{o.clipEnd(y);continue}if(!M){o.clipEnd(y);continue}const I=t.color;let R,v;if(e){let w;if(n){w=Math.floor(n[3]*I.a*g.a*P.a*255);const U=Math.floor(w*n[0]*I.r*g.r*P.r),O=Math.floor(w*n[1]*I.g*g.g*P.g),B=Math.floor(w*n[2]*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}else{w=Math.floor(I.a*g.a*P.a*255);const U=Math.floor(w*I.r*g.r*P.r),O=Math.floor(w*I.g*g.g*P.g),B=Math.floor(w*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}if(v=4278190080,A.darkColor){const{r:U,g:O,b:B}=A.darkColor;v=4278190080|Math.floor(U*w)<<16|Math.floor(O*w)<<8|Math.floor(B*w)}}else{if(n){const w=Math.floor(n[3]*I.a*g.a*P.a*255),U=Math.floor(n[0]*I.r*g.r*P.r*255),O=Math.floor(n[1]*I.g*g.g*P.g*255),B=Math.floor(n[2]*I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}else{const w=Math.floor(I.a*g.a*P.a*255),U=Math.floor(I.r*g.r*P.r*255),O=Math.floor(I.g*g.g*P.g*255),B=Math.floor(I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}if(v=0,A.darkColor){const{r:w,g:U,b:O}=A.darkColor;v=Math.floor(w*255)<<16|Math.floor(U*255)<<8|Math.floor(O*255)}}o.isClipping()&&(o.clipTrianglesUnpacked(L,0,x,S,f,s),L=o.clippedVerticesTyped,C=o.clippedVerticesLength/s,f=o.clippedUVsTyped,x=o.clippedTrianglesTyped,S=o.clippedTrianglesLength);const V=this.commandPool.getCommand(C,S,s);if(V.blendMode=y.data.blendMode,V.texture=M,V.positions.set(L.subarray(0,C*s)),s>=3)for(let w=2,U=C*s;w=t*n&&i._indices.length>=e){s=i;break}if(s)this.pool.splice(this.pool.indexOf(s),1),s.next=void 0,s.numVertices=t,s.numIndices=e,s.positions=s._positions.subarray(0,t*n),s.uvs=s._uvs.subarray(0,t<<1),s.colors=s._colors.subarray(0,t),s.darkColors=s._darkColors.subarray(0,t),s.indices=s._indices.subarray(0,e);else{const i=new Float32Array(t*n),o=new Float32Array(t<<1),r=new Uint32Array(t),l=new Uint32Array(t),c=new Uint16Array(e);s={positions:i,uvs:o,colors:r,darkColors:l,indices:c,_positions:i,_uvs:o,_colors:r,_darkColors:l,_indices:c,numVertices:t,numIndices:e,blendMode:Tt.Normal,texture:null}}return this.inUse.push(s),s}reset(){this.pool.push(...this.inUse),this.inUse.length=0}}export{Rt as ATTACH_RETAIN,Yt as ATTACH_SETUP,Ft as AlphaTimeline,Et as Animation,_t as AnimationState,Ot as AnimationStateAdapter,It as AnimationStateData,lt as AssetCache,Ct as AssetManagerBase,Vt as AtlasAttachmentLoader,kt as Attachment,Xt as AttachmentTimeline,Bt as BinaryInput,Tt as BlendMode,Nt as Bone,Dt as BoneData,$t as BonePose,zt as BoneTimeline1,Wt as BoneTimeline2,ut as BoundingBoxAttachment,qt as CURRENT,rt as ClippingAttachment,Gt as Color,Jt as Constraint,Ht as ConstraintData,Zt as ConstraintTimeline1,Kt as CurveTimeline,Qt as CurveTimeline1,jt as DebugUtils,te as DeformTimeline,bt as Downloader,ee as DrawOrder,se as DrawOrderFolderTimeline,ne as DrawOrderTimeline,ie as Event,oe as EventData,re as EventQueue,ae as EventTimeline,le as EventType,ce as FIRST,he as FakeTexture,pe as FromProperty,de as FromRotate,ue as FromScaleX,fe as FromScaleY,ge as FromShearY,me as FromX,ye as FromY,Te as HOLD,be as IkConstraint,we as IkConstraintData,xe as IkConstraintPose,Ae as IkConstraintTimeline,Pe as Inherit,Ie as InheritTimeline,Ce as IntSet,Ve as Interpolation,Le as MODE,Se as MathUtils,dt as MeshAttachment,Me as MixFrom,mt as PathAttachment,ve as PathConstraint,Ue as PathConstraintData,Re as PathConstraintMixTimeline,Ye as PathConstraintPose,Fe as PathConstraintPositionTimeline,Ee as PathConstraintSpacingTimeline,_e as Physics,Oe as PhysicsConstraint,ke as PhysicsConstraintDampingTimeline,Xe as PhysicsConstraintData,Be as PhysicsConstraintGravityTimeline,Ne as PhysicsConstraintInertiaTimeline,De as PhysicsConstraintMassTimeline,$e as PhysicsConstraintMixTimeline,ze as PhysicsConstraintPose,We as PhysicsConstraintResetTimeline,qe as PhysicsConstraintStrengthTimeline,Ge as PhysicsConstraintTimeline,Je as PhysicsConstraintWindTimeline,yt as PointAttachment,at as Pool,He as Posed,Ze as PosedActive,Ke as PosedData,Qe as PositionMode,je as Pow,ts as PowOut,es as Property,ss as RGB2Timeline,ns as RGBA2Timeline,is as RGBATimeline,os as RGBTimeline,pt as RegionAttachment,rs as RotateMode,as as RotateTimeline,ls as SETUP,cs as ScaleTimeline,hs as ScaleXTimeline,ps as ScaleYMode,ds as ScaleYTimeline,us as Sequence,fs as SequenceMode,gs as SequenceModeValues,ms as SequenceTimeline,ys as ShearTimeline,Ts as ShearXTimeline,bs as ShearYTimeline,ws as Skeleton,xs as SkeletonBinary,Lt as SkeletonBounds,wt as SkeletonClipping,As as SkeletonData,Ps as SkeletonJson,St as SkeletonPhysicsMovement,Mt as SkeletonRendererCore,Is as Skin,Cs as SkinEntry,Vs as Slider,Ls as SliderData,Ss as SliderMixTimeline,Ms as SliderPose,vs as SliderTimeline,Us as Slot,Rs as SlotCurveTimeline,Ys as SlotData,Fs as SlotPose,Es as SpacingMode,_s as StringSet,Os as Texture,ht as TextureAtlas,ks as TextureAtlasPage,Xs as TextureAtlasRegion,Bs as TextureFilter,Ns as TextureRegion,Ds as TextureWrap,$s as TimeKeeper,zs as Timeline,Ws as ToProperty,qs as ToRotate,Gs as ToScaleX,Js as ToScaleY,Hs as ToShearY,Zs as ToX,Ks as ToY,Qs as TrackEntry,js as TransformConstraint,tn as TransformConstraintData,en as TransformConstraintPose,sn as TransformConstraintTimeline,nn as TranslateTimeline,on as TranslateXTimeline,rn as TranslateYTimeline,z as Triangulator,D as Utils,an as Vector2,ln as VertexAttachment,cn as WindowedMean,hn as isBoneTimeline,pn as isConstraintTimeline,dn as isSlotTimeline}; diff --git a/dist/assets/index-CheycJh3.css b/dist/assets/index-CheycJh3.css deleted file mode 100644 index 3adb8a9..0000000 --- a/dist/assets/index-CheycJh3.css +++ /dev/null @@ -1 +0,0 @@ -.stage-wrap[data-v-94c32e62]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-94c32e62]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-94c32e62]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-94c32e62]:active{cursor:grabbing}.topbar[data-v-94c32e62]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-94c32e62]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-94c32e62]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-94c32e62]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-94c32e62]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-94c32e62]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-94c32e62]{position:relative;flex:0 0 auto}.background-btn[data-v-94c32e62]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-94c32e62]:hover,.background-btn.on[data-v-94c32e62]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-94c32e62]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-94c32e62]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-94c32e62]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-94c32e62]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-94c32e62]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-94c32e62]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-94c32e62]{display:none}.background-file-name[data-v-94c32e62]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-94c32e62]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-94c32e62]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-94c32e62]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-94c32e62]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-94c32e62]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-94c32e62]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-94c32e62]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-94c32e62]:hover,.help-btn.on[data-v-94c32e62]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-94c32e62]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.help-overlay[data-v-94c32e62]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-94c32e62]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-94c32e62]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-94c32e62]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-94c32e62]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-94c32e62]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-94c32e62]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-94c32e62]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-94c32e62]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-94c32e62]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-94c32e62]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-94c32e62]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-94c32e62]{color:#dce4f7}.help-grid[data-v-94c32e62]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-94c32e62]{display:grid;gap:0;margin:0}.help-list>div[data-v-94c32e62]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-94c32e62]:last-child{border-bottom:0}.help-list dt[data-v-94c32e62]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-94c32e62]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-94c32e62]{display:grid;gap:7px}.shortcut-list>div[data-v-94c32e62]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-94c32e62]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-94c32e62]{color:#65728b;font-size:10px}.shortcut-list em[data-v-94c32e62]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-94c32e62]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-94c32e62]{margin-top:12px}.help-export p[data-v-94c32e62]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}@media(max-width:760px){.help-overlay[data-v-94c32e62]{padding:66px 12px 14px}.help-grid[data-v-94c32e62]{grid-template-columns:1fr}}.hud[data-v-94c32e62]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-94c32e62]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-94c32e62]{width:3ch}.hud-particle-count[data-v-94c32e62]{width:7ch;text-align:left}.hud-tip[data-v-94c32e62]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-94c32e62]{color:#fc3}.settings-btn[data-v-94c32e62]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-94c32e62]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-94c32e62]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-94c32e62]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-94c32e62]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-94c32e62]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-94c32e62]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-94c32e62]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-94c32e62]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-94c32e62]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-94c32e62]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-94c32e62]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-94c32e62]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-94c32e62]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-94c32e62]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-94c32e62]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-94c32e62]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-94c32e62]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-94c32e62]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-94c32e62]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-94c32e62]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-94c32e62]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-94c32e62]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-94c32e62]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-94c32e62]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-94c32e62]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-94c32e62]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-94c32e62]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.sp-chk.disabled[data-v-94c32e62]{color:#5f687d;cursor:not-allowed}.sp-chk.disabled input[data-v-94c32e62]{cursor:not-allowed;opacity:.55}.ns[data-v-7c2fbed0]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-7c2fbed0]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-7c2fbed0]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-7c2fbed0]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-7c2fbed0]{opacity:.55}.ns.disabled .ns-range[data-v-7c2fbed0],.ns.disabled .ns-num[data-v-7c2fbed0]{cursor:not-allowed}.ce[data-v-9bfb7b31]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-9bfb7b31]{flex:1;min-width:0}.ce-reset[data-v-9bfb7b31]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-9bfb7b31]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-9bfb7b31]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-9bfb7b31]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-9bfb7b31]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-9bfb7b31]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-9bfb7b31]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-9bfb7b31]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-9bfb7b31]:active{cursor:grabbing}.ce-node[data-v-9bfb7b31]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-9bfb7b31]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-9bfb7b31]:active{cursor:grabbing}.ce-nav[data-v-9bfb7b31]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-9bfb7b31]{color:#566;font-size:10px}.pac[data-v-238f838c]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-238f838c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-238f838c]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-238f838c]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-238f838c]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-238f838c]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-238f838c]{margin-top:8px}.pac-axis[data-v-238f838c]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-238f838c] .ns-label{width:58px}.pac[data-v-238f838c] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-238f838c] .ce-tip{color:#657188}.gradient-editor[data-v-f6ab10bf]{margin:8px 0 11px 68px}.gradient-bar[data-v-f6ab10bf]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-f6ab10bf]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-f6ab10bf]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-f6ab10bf]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-f6ab10bf]:active{cursor:grabbing}.gradient-controls[data-v-f6ab10bf]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-f6ab10bf]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-f6ab10bf]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-f6ab10bf]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-f6ab10bf]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-f6ab10bf]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-f6ab10bf]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-f6ab10bf]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-f6ab10bf]{color:#e3a5aa}.gradient-action[data-v-f6ab10bf]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-f6ab10bf]{margin-top:5px;color:#59667b;font-size:9px}.image-card[data-v-68ff5314]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-68ff5314]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-68ff5314]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-68ff5314]:hover{border-color:#7774ff}.img-thumb img[data-v-68ff5314]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-68ff5314]{flex:1;min-width:0}.img-actions[data-v-68ff5314]{display:flex;flex-direction:column;gap:4px}.row[data-v-68ff5314]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-68ff5314]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-68ff5314]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-68ff5314]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-68ff5314]:hover{background:#2b3a5c}.mini-btn2[data-v-68ff5314]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-68ff5314]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-68ff5314]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-68ff5314]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-68ff5314]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-68ff5314]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-68ff5314]{width:100%;min-width:0}.resource-weight-control[data-v-68ff5314] .ns-range{min-width:0}.resource-weight-control[data-v-68ff5314] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-68ff5314]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-68ff5314]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-68ff5314]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-68ff5314]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-68ff5314]:disabled{opacity:.35;cursor:not-allowed}.spine-editor[data-v-9257fb45]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-9257fb45],.section-title[data-v-9257fb45]{color:#dce2f5;font-weight:700}.editor-title[data-v-9257fb45]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-9257fb45]{display:grid;gap:8px}.grid.three[data-v-9257fb45]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-9257fb45]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-9257fb45],.field select[data-v-9257fb45],.asset-name[data-v-9257fb45]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-9257fb45]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-9257fb45]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-9257fb45]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-9257fb45]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-9257fb45]:hover{filter:brightness(1.13)}button[data-v-9257fb45]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-9257fb45]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-9257fb45]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-9257fb45]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-9257fb45]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-9257fb45]{background:#702b34;border-color:#803842}.runtime-note[data-v-9257fb45]{color:#69758e;font-size:11px;text-align:center}.error[data-v-9257fb45]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-9257fb45]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-9257fb45]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-9257fb45]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-9257fb45]{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-bone[data-v-9257fb45]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-9257fb45]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-9257fb45]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-9257fb45]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-9257fb45]{color:#c5cde3;font-weight:600}.tree-action[data-v-9257fb45]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-9257fb45]{position:relative}.bone-search input[data-v-9257fb45]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-9257fb45]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-9257fb45]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-9257fb45]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-9257fb45]:hover{background:#45567e38}.bone.selected[data-v-9257fb45]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-9257fb45]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-9257fb45]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-9257fb45]:hover{background:#26324a}.bone-leaf[data-v-9257fb45]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-9257fb45]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media(max-width:430px){.grid.three[data-v-9257fb45]{grid-template-columns:1fr}}.panel[data-v-1ace5c57]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-1ace5c57]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-1ace5c57]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-1ace5c57]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-1ace5c57]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-1ace5c57]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-1ace5c57]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.config-management-body[data-v-1ace5c57]{padding-bottom:2px}.config-toolbar[data-v-1ace5c57]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-1ace5c57],.config-toolbar select[data-v-1ace5c57]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-1ace5c57]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-1ace5c57]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-1ace5c57]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-1ace5c57]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-1ace5c57]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-1ace5c57]{color:#e8959e}.empty[data-v-1ace5c57],.panel-hint[data-v-1ace5c57]{color:#667;font-size:12px;padding:8px 0}.group[data-v-1ace5c57]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-1ace5c57]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-1ace5c57]:hover{background:#20202e}.group-reset[data-v-1ace5c57]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-1ace5c57]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-head[data-v-1ace5c57]{padding-right:6px}.scene-actions[data-v-1ace5c57]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-1ace5c57]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-1ace5c57]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-1ace5c57]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-1ace5c57]{padding:8px 10px 12px}.caret[data-v-1ace5c57]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-1ace5c57]{height:1px;background:#2a2a3c;margin:8px 0}.tree[data-v-1ace5c57]{margin-bottom:8px}.tree-item[data-v-1ace5c57]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-1ace5c57]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-1ace5c57]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-1ace5c57]{color:#556}.tree-item .tdot.collision-dot[data-v-1ace5c57]{color:#ff7070}.tree-item .tdot.path-dot[data-v-1ace5c57]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-1ace5c57]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-1ace5c57]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-1ace5c57]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-1ace5c57]{min-height:28px;cursor:pointer}.scene-object-item[data-v-1ace5c57]:hover{background:#202b40}.scene-object-kind[data-v-1ace5c57]{color:#75829c;font-size:10px}.scene-object-eye[data-v-1ace5c57]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-1ace5c57]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-1ace5c57]{color:#59647a}.scene-object-eye svg[data-v-1ace5c57]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-1ace5c57]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-1ace5c57]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-1ace5c57]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-1ace5c57]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-1ace5c57]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-1ace5c57]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-1ace5c57]{color:#5f6d86;line-height:1.5}.field-grid[data-v-1ace5c57]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-1ace5c57]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-1ace5c57]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-1ace5c57]{align-items:flex-start}.check-field input[data-v-1ace5c57]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-1ace5c57],.setting-line[data-v-1ace5c57]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-1ace5c57]{justify-content:space-between}.follow-path input[data-v-1ace5c57],.setting-line input[type=checkbox][data-v-1ace5c57]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-1ace5c57]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-1ace5c57]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-1ace5c57]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-1ace5c57]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-1ace5c57]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-1ace5c57]{color:#aeb8cf}.path-help ul[data-v-1ace5c57]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-1ace5c57]{margin:3px 0}.path-action[data-v-1ace5c57]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-1ace5c57]:hover{filter:brightness(1.12)}.path-action.primary[data-v-1ace5c57]{background:#f05408;color:#fff}.tag[data-v-1ace5c57]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-1ace5c57]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-1ace5c57]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-1ace5c57]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.pair[data-v-1ace5c57]{display:flex;flex-direction:column;gap:2px;flex:1}.colr[data-v-1ace5c57]{width:28px;height:22px;border:none;background:none;cursor:pointer}.segs[data-v-1ace5c57]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-1ace5c57]{margin-top:10px}.stream-loop-options[data-v-1ace5c57]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-1ace5c57]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-1ace5c57]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-1ace5c57]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-1ace5c57]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-1ace5c57]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-1ace5c57]:after{transform:translate(12px)}.loop-section-duration[data-v-1ace5c57]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-1ace5c57]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-1ace5c57]:focus{border-color:#716eff}.loop-auto-duration[data-v-1ace5c57]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-1ace5c57]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-1ace5c57]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.mini-btn[data-v-1ace5c57]{background:#2e3a55;border:1px solid #3a4a6a;color:#cdf;border-radius:5px;padding:3px 8px;font-size:11px;cursor:pointer}.mini-btn.danger[data-v-1ace5c57]{background:#4a2a2e;color:#fbb}.placeholder[data-v-1ace5c57]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-1ace5c57]{padding-top:3px}.export-field[data-v-1ace5c57]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-1ace5c57]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-1ace5c57]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-1ace5c57]{margin-bottom:5px}.export-checkbox[data-v-1ace5c57]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-1ace5c57]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-1ace5c57]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-1ace5c57]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-1ace5c57]{font-weight:600}.export-switch-last[data-v-1ace5c57]{margin-top:13px}.spine-export-actions[data-v-1ace5c57]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-1ace5c57]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-1ace5c57]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-1ace5c57]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-1ace5c57]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-1ace5c57]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-1ace5c57]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-1ace5c57]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-1ace5c57]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-1ace5c57]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-1ace5c57]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-1ace5c57]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-1ace5c57]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-1ace5c57]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-1ace5c57]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-1ace5c57]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-1ace5c57]{background:#d4aa67}.connector-status button[data-v-1ace5c57]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-1ace5c57]:hover{color:#c5caff}.connector-status a[data-v-1ace5c57]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-1ace5c57]:hover{color:#d8dcff}.export-message[data-v-1ace5c57]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-1ace5c57]{color:#ff858f}.export-message a[data-v-1ace5c57]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.look-title[data-v-1ace5c57]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-1ace5c57]:first-child{margin-top:2px}.seg[data-v-1ace5c57]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-1ace5c57]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-1ace5c57]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-hint[data-v-1ace5c57]{min-height:54px;border:1px dashed #2e2e44;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#556;font-size:11px;margin:6px 0}.curve-wrap[data-v-1ace5c57]{margin:6px 0}.curve-labels[data-v-1ace5c57]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-1ace5c57]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-1ace5c57]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-1ace5c57]:hover{background:#4542a8;color:#fff}.image-card[data-v-1ace5c57]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-1ace5c57]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-1ace5c57]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-1ace5c57]:hover{border-color:#7774ff}.img-thumb img[data-v-1ace5c57]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-1ace5c57]{flex:1;min-width:0}.img-actions[data-v-1ace5c57]{display:flex;flex-direction:column;gap:4px}.mini-btn2[data-v-1ace5c57]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-1ace5c57]:hover{background:#2b3a5c}.mini-btn2[data-v-1ace5c57]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-1ace5c57]{color:#667;font-size:11px;margin:4px 0 2px}.resource-divider[data-v-1ace5c57]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-1ace5c57]{max-width:88px}.resource-color-picker .hex[data-v-1ace5c57]{margin-left:0}.random-color-hint[data-v-1ace5c57]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-1ace5c57]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-1ace5c57]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-1ace5c57]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-1ace5c57]{display:flex;gap:3px}.alpha-modes button[data-v-1ace5c57]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-1ace5c57]:hover{background:#273246}.alpha-modes button.on[data-v-1ace5c57]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-1ace5c57]{margin-top:7px}.resource-weight-row[data-v-1ace5c57]{display:flex;align-items:center;gap:5px}.resource-weight-control[data-v-1ace5c57]{flex:1;min-width:0}.weight-lock[data-v-1ace5c57]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-1ace5c57]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-1ace5c57]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-1ace5c57]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-1ace5c57]:disabled{opacity:.35;cursor:not-allowed}.file-input[data-v-1ace5c57]{display:none}.hex[data-v-1ace5c57]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-1ace5c57]{width:46px;flex:0 0 46px;text-align:center}.attr-body[data-v-1ace5c57]{padding:10px;background:#151b27}.attr-section-title[data-v-1ace5c57]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-1ace5c57]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-1ace5c57]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-1ace5c57]{display:flex;gap:4px}.axis-mode[data-v-1ace5c57]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-1ace5c57]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-1ace5c57]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-1ace5c57]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-1ace5c57]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-1ace5c57]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-1ace5c57]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-1ace5c57]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-1ace5c57]:after{transform:translate(14px)}.life-axis[data-v-1ace5c57]{margin:9px 0 2px 42px}.seed-row[data-v-1ace5c57]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-1ace5c57]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-1ace5c57]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-1ace5c57]:focus{border-color:#625ff1}.seed-random[data-v-1ace5c57]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-1ace5c57]:hover{background:#394964}.scene-seed[data-v-1ace5c57]{margin-top:10px}.seed-hint[data-v-1ace5c57]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.modifier-item[data-v-1ace5c57]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-1ace5c57]{font-weight:600}.modifier-params[data-v-1ace5c57]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-1ace5c57]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-1ace5c57]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-1ace5c57]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-1ace5c57]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-1ace5c57]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-1ace5c57]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-1ace5c57]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-1ace5c57]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-1ace5c57]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-1ace5c57]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-1ace5c57]:hover,.collision-filter-add.active[data-v-1ace5c57]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-1ace5c57]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-1ace5c57]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-1ace5c57]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-1ace5c57]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-1ace5c57]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-1ace5c57]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-1ace5c57]{flex:none;color:#68758d;font-size:9px}.stream-loop-hint[data-v-1ace5c57]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-1ace5c57]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-1ace5c57]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-1ace5c57]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-1ace5c57]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-1ace5c57]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-1ace5c57]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-1ace5c57]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-1ace5c57]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-1ace5c57]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-1ace5c57]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-1ace5c57]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-1ace5c57] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-1ace5c57]{padding-right:2px}.trail-section-title[data-v-1ace5c57]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-resource-row[data-v-1ace5c57]{display:flex;align-items:stretch;gap:8px;margin-bottom:10px;padding:8px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.trail-thumb[data-v-1ace5c57]{width:58px;min-height:58px;padding:3px;flex:0 0 58px;border:1px solid #3a4963;border-radius:6px;background:#101725;cursor:pointer;overflow:hidden}.trail-thumb[data-v-1ace5c57]:hover{border-color:#7774ff}.trail-thumb img[data-v-1ace5c57]{display:block;width:100%;height:100%;object-fit:contain}.trail-resource-fields[data-v-1ace5c57]{display:flex;min-width:0;flex:1;flex-direction:column;gap:7px}.trail-color-row[data-v-1ace5c57]{display:flex;align-items:center;gap:5px;color:#8a93bb;font-size:11px}.trail-color-row>span[data-v-1ace5c57]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trail-color-row .hex-input[data-v-1ace5c57],.trail-fixed-color .hex-input[data-v-1ace5c57]{min-width:0;flex:1}.trail-mode-head[data-v-1ace5c57]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-1ace5c57]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-1ace5c57]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-1ace5c57] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-1ace5c57] .ns-label{width:100%}.trail-grid-row[data-v-1ace5c57] .ns-range{min-width:0}.trail-grid-row[data-v-1ace5c57] .ns-num{width:42px}.trail-params[data-v-1ace5c57] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.timeline[data-v-8d9981a9]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-8d9981a9]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-8d9981a9]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-8d9981a9]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-8d9981a9]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-8d9981a9]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-8d9981a9]:focus{border-color:#716eff}.tl-loop-range[data-v-8d9981a9]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-8d9981a9]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-8d9981a9]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-8d9981a9]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-8d9981a9]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-8d9981a9]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-8d9981a9]{margin-left:4px;background:#2f8b62}.legend-life[data-v-8d9981a9]{margin-left:5px;background:#a54551}.legend-spine[data-v-8d9981a9]{margin-left:5px;background:#7448b8}.tl-anim[data-v-8d9981a9]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-8d9981a9]{position:relative}.tl-animation-trigger[data-v-8d9981a9]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-8d9981a9]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-8d9981a9]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-8d9981a9]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-8d9981a9]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-8d9981a9]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-8d9981a9]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-8d9981a9]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-8d9981a9]:hover{background:#252e42}.tl-animation-option.on[data-v-8d9981a9]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-8d9981a9]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-8d9981a9]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-8d9981a9]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-8d9981a9]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-8d9981a9],.tl-animation-actions button[data-v-8d9981a9]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-8d9981a9]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-8d9981a9]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-8d9981a9]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-8d9981a9]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-8d9981a9]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-8d9981a9]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-8d9981a9]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-8d9981a9]{max-width:190px}.tl-zoom[data-v-8d9981a9]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-8d9981a9]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-8d9981a9]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-8d9981a9]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-8d9981a9]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-8d9981a9]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-8d9981a9]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-8d9981a9]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-8d9981a9]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-8d9981a9]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-8d9981a9]:active{cursor:grabbing}.lane-name[data-v-8d9981a9]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-8d9981a9]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-8d9981a9]{border-color:#667085;background:#242b39}.bar-emission[data-v-8d9981a9]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-8d9981a9]{border-radius:0}.bar-loop-transition[data-v-8d9981a9]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-8d9981a9]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-8d9981a9]{border-radius:0 5px 5px 0}.bar-handle[data-v-8d9981a9]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-8d9981a9]:hover{background:#ffffff59}.spine-ico[data-v-8d9981a9]{color:#c08cff}.spine-bar[data-v-8d9981a9]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-8d9981a9]:active{cursor:grabbing}.tl-empty[data-v-8d9981a9]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-592b922e]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-592b922e]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-592b922e]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-592b922e]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-592b922e]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-592b922e]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-592b922e]{width:42%;animation:transfer-slide-592b922e 1s ease-in-out infinite}.transfer-detail[data-v-592b922e]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-592b922e]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-592b922e],.transfer-dialog.failed .transfer-detail[data-v-592b922e]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-592b922e]{background:#c85d70}.transfer-fade-enter-active[data-v-592b922e],.transfer-fade-leave-active[data-v-592b922e]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-592b922e],.transfer-fade-leave-to[data-v-592b922e]{opacity:0}@keyframes transfer-slide-592b922e{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-42c4fa00]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-42c4fa00]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-42c4fa00]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-42c4fa00]:hover{background:#3a5a8c}.right[data-v-42c4fa00]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-42c4fa00]{order:1}.panel-right .resizer-col[data-v-42c4fa00]{order:2}.panel-right .parameter-panel[data-v-42c4fa00]{order:3}.stage-area[data-v-42c4fa00]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-42c4fa00]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-42c4fa00]:hover{background:#3a5a8c}.timeline-area[data-v-42c4fa00]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} diff --git a/dist/assets/index-CQJ6qUg9.js b/dist/assets/index-D08n0lXm.js similarity index 50% rename from dist/assets/index-CQJ6qUg9.js rename to dist/assets/index-D08n0lXm.js index df89f26..d66a5d2 100644 --- a/dist/assets/index-CQJ6qUg9.js +++ b/dist/assets/index-D08n0lXm.js @@ -1,43 +1,43 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DPMVQNnV.js","assets/index-B-woOuPC.js"])))=>i.map(i=>d[i]); -var CS=Object.defineProperty;var IS=(s,e,t)=>e in s?CS(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var x=(s,e,t)=>IS(s,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B1oGFzi8.js","assets/index-BUbc0qUx.js"])))=>i.map(i=>d[i]); +var ES=Object.defineProperty;var CS=(s,e,t)=>e in s?ES(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var x=(s,e,t)=>CS(s,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();/** * @vue/shared v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Km(s){const e=Object.create(null);for(const t of s.split(","))e[t]=1;return t=>t in e}const ti={},mo=[],Fn=()=>{},by=()=>!1,Qh=s=>s.charCodeAt(0)===111&&s.charCodeAt(1)===110&&(s.charCodeAt(2)>122||s.charCodeAt(2)<97),eu=s=>s.startsWith("onUpdate:"),ki=Object.assign,Zm=(s,e)=>{const t=s.indexOf(e);t>-1&&s.splice(t,1)},RS=Object.prototype.hasOwnProperty,qt=(s,e)=>RS.call(s,e),ft=Array.isArray,po=s=>Yl(s)==="[object Map]",Bo=s=>Yl(s)==="[object Set]",$p=s=>Yl(s)==="[object Date]",_t=s=>typeof s=="function",gi=s=>typeof s=="string",As=s=>typeof s=="symbol",Kt=s=>s!==null&&typeof s=="object",wy=s=>(Kt(s)||_t(s))&&_t(s.then)&&_t(s.catch),Sy=Object.prototype.toString,Yl=s=>Sy.call(s),PS=s=>Yl(s).slice(8,-1),_y=s=>Yl(s)==="[object Object]",tu=s=>gi(s)&&s!=="NaN"&&s[0]!=="-"&&""+parseInt(s,10)===s,hl=Km(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),iu=s=>{const e=Object.create(null);return(t=>e[t]||(e[t]=s(t)))},kS=/-\w/g,Ks=iu(s=>s.replace(kS,e=>e.slice(1).toUpperCase())),FS=/\B([A-Z])/g,Kr=iu(s=>s.replace(FS,"-$1").toLowerCase()),My=iu(s=>s.charAt(0).toUpperCase()+s.slice(1)),Bu=iu(s=>s?`on${My(s)}`:""),Cn=(s,e)=>!Object.is(s,e),Uc=(s,...e)=>{for(let t=0;t{Object.defineProperty(s,e,{configurable:!0,enumerable:!1,writable:i,value:t})},su=s=>{const e=parseFloat(s);return isNaN(e)?s:e},OS=s=>{const e=gi(s)?Number(s):NaN;return isNaN(e)?s:e};let Gp;const nu=()=>Gp||(Gp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Li(s){if(ft(s)){const e={};for(let t=0;t{if(t){const i=t.split(LS);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function ot(s){let e="";if(gi(s))e=s;else if(ft(s))for(let t=0;tLo(t,e))}const Ey=s=>!!(s&&s.__v_isRef===!0),je=s=>gi(s)?s:s==null?"":ft(s)||Kt(s)&&(s.toString===Sy||!_t(s.toString))?Ey(s)?je(s.value):JSON.stringify(s,Cy,2):String(s),Cy=(s,e)=>Ey(e)?Cy(s,e.value):po(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[i,n],r)=>(t[Lu(i,r)+" =>"]=n,t),{})}:Bo(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>Lu(t))}:As(e)?Lu(e):Kt(e)&&!ft(e)&&!_y(e)?String(e):e,Lu=(s,e="")=>{var t;return As(s)?`Symbol(${(t=s.description)!=null?t:e})`:s};/** +**/function qm(s){const e=Object.create(null);for(const t of s.split(","))e[t]=1;return t=>t in e}const ti={},fo=[],On=()=>{},xy=()=>!1,Qh=s=>s.charCodeAt(0)===111&&s.charCodeAt(1)===110&&(s.charCodeAt(2)>122||s.charCodeAt(2)<97),eu=s=>s.startsWith("onUpdate:"),Oi=Object.assign,Km=(s,e)=>{const t=s.indexOf(e);t>-1&&s.splice(t,1)},IS=Object.prototype.hasOwnProperty,zt=(s,e)=>IS.call(s,e),ft=Array.isArray,mo=s=>Vl(s)==="[object Map]",Oo=s=>Vl(s)==="[object Set]",Yp=s=>Vl(s)==="[object Date]",Mt=s=>typeof s=="function",vi=s=>typeof s=="string",Cs=s=>typeof s=="symbol",qt=s=>s!==null&&typeof s=="object",by=s=>(qt(s)||Mt(s))&&Mt(s.then)&&Mt(s.catch),wy=Object.prototype.toString,Vl=s=>wy.call(s),RS=s=>Vl(s).slice(8,-1),Sy=s=>Vl(s)==="[object Object]",tu=s=>vi(s)&&s!=="NaN"&&s[0]!=="-"&&""+parseInt(s,10)===s,cl=qm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),iu=s=>{const e=Object.create(null);return(t=>e[t]||(e[t]=s(t)))},PS=/-\w/g,nn=iu(s=>s.replace(PS,e=>e.slice(1).toUpperCase())),kS=/\B([A-Z])/g,qr=iu(s=>s.replace(kS,"-$1").toLowerCase()),My=iu(s=>s.charAt(0).toUpperCase()+s.slice(1)),Ou=iu(s=>s?`on${My(s)}`:""),In=(s,e)=>!Object.is(s,e),Uc=(s,...e)=>{for(let t=0;t{Object.defineProperty(s,e,{configurable:!0,enumerable:!1,writable:i,value:t})},su=s=>{const e=parseFloat(s);return isNaN(e)?s:e},FS=s=>{const e=vi(s)?Number(s):NaN;return isNaN(e)?s:e};let $p;const nu=()=>$p||($p=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Li(s){if(ft(s)){const e={};for(let t=0;t{if(t){const i=t.split(BS);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function Ze(s){let e="";if(vi(s))e=s;else if(ft(s))for(let t=0;tBo(t,e))}const Ay=s=>!!(s&&s.__v_isRef===!0),Xe=s=>vi(s)?s:s==null?"":ft(s)||qt(s)&&(s.toString===wy||!Mt(s.toString))?Ay(s)?Xe(s.value):JSON.stringify(s,Ey,2):String(s),Ey=(s,e)=>Ay(e)?Ey(s,e.value):mo(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[i,n],r)=>(t[Bu(i,r)+" =>"]=n,t),{})}:Oo(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>Bu(t))}:Cs(e)?Bu(e):qt(e)&&!ft(e)&&!Sy(e)?String(e):e,Bu=(s,e="")=>{var t;return Cs(s)?`Symbol(${(t=s.description)!=null?t:e})`:s};/** * @vue/reactivity v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Ii;class Iy{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&Ii&&(Ii.active?(this.parent=Ii,this.index=(Ii.scopes||(Ii.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){const i=this.scopes.slice();for(e=0,t=i.length;e0&&--this._on===0){if(Ii===this)Ii=this.prevScope;else{let e=Ii;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,i;for(t=0,i=this.effects.length;t0)return;if(dl){let e=dl;for(dl=void 0;e;){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let s;for(;ul;){let e=ul;for(ul=void 0;e;){const t=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(i){s||(s=i)}e=t}}if(s)throw s}function By(s){for(let e=s.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Ly(s){let e,t=s.depsTail,i=t;for(;i;){const n=i.prevDep;i.version===-1?(i===t&&(t=n),tp(i),$S(i)):e=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}s.deps=e,s.depsTail=t}function Rf(s){for(let e=s.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Dy(e.dep.computed)||e.dep.version!==e.version))return!0;return!!s._dirty}function Dy(s){if(s.flags&4&&!(s.flags&16)||(s.flags&=-17,s.globalVersion===Tl)||(s.globalVersion=Tl,!s.isSSR&&s.flags&128&&(!s.deps&&!s._dirty||!Rf(s))))return;s.flags|=2;const e=s.dep,t=ni,i=Zs;ni=s,Zs=!0;try{By(s);const n=s.fn(s._value);(e.version===0||Cn(n,s._value))&&(s.flags|=128,s._value=n,e.version++)}catch(n){throw e.version++,n}finally{ni=t,Zs=i,Ly(s),s.flags&=-3}}function tp(s,e=!1){const{dep:t,prevSub:i,nextSub:n}=s;if(i&&(i.nextSub=n,s.prevSub=void 0),n&&(n.prevSub=i,s.nextSub=void 0),t.subs===s&&(t.subs=i,!i&&t.computed)){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)tp(r,!0)}!e&&!--t.sc&&t.map&&t.map.delete(t.key)}function $S(s){const{prevDep:e,nextDep:t}=s;e&&(e.nextDep=t,s.prevDep=void 0),t&&(t.prevDep=e,s.nextDep=void 0)}let Zs=!0;const Ny=[];function ur(){Ny.push(Zs),Zs=!1}function dr(){const s=Ny.pop();Zs=s===void 0?!0:s}function Hp(s){const{cleanup:e}=s;if(s.cleanup=void 0,e){const t=ni;ni=void 0;try{e()}finally{ni=t}}}let Tl=0;class GS{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ip{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!ni||!Zs||ni===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==ni)t=this.activeLink=new GS(ni,this),ni.deps?(t.prevDep=ni.depsTail,ni.depsTail.nextDep=t,ni.depsTail=t):ni.deps=ni.depsTail=t,Uy(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){const i=t.nextDep;i.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=i),t.prevDep=ni.depsTail,t.nextDep=void 0,ni.depsTail.nextDep=t,ni.depsTail=t,ni.deps===t&&(ni.deps=i)}return t}trigger(e){this.version++,Tl++,this.notify(e)}notify(e){Qm();try{for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&t.sub.dep.notify()}finally{ep()}}}function Uy(s){if(s.dep.sc++,s.sub.flags&4){const e=s.dep.computed;if(e&&!s.dep.subs){e.flags|=20;for(let i=e.deps;i;i=i.nextDep)Uy(i)}const t=s.dep.subs;t!==s&&(s.prevSub=t,t&&(t.nextSub=s)),s.dep.subs=s}}const ih=new WeakMap,_a=Symbol(""),Pf=Symbol(""),Al=Symbol("");function es(s,e,t){if(Zs&&ni){let i=ih.get(s);i||ih.set(s,i=new Map);let n=i.get(t);n||(i.set(t,n=new ip),n.map=i,n.key=t),n.track()}}function Jn(s,e,t,i,n,r){const a=ih.get(s);if(!a){Tl++;return}const o=h=>{h&&h.trigger()};if(Qm(),e==="clear")a.forEach(o);else{const h=ft(s),l=h&&tu(t);if(h&&t==="length"){const c=Number(i);a.forEach((u,d)=>{(d==="length"||d===Al||!As(d)&&d>=c)&&o(u)})}else switch((t!==void 0||a.has(void 0))&&o(a.get(t)),l&&o(a.get(Al)),e){case"add":h?l&&o(a.get("length")):(o(a.get(_a)),po(s)&&o(a.get(Pf)));break;case"delete":h||(o(a.get(_a)),po(s)&&o(a.get(Pf)));break;case"set":po(s)&&o(a.get(_a));break}}ep()}function HS(s,e){const t=ih.get(s);return t&&t.get(e)}function ja(s){const e=$t(s);return e===s?e:(es(e,"iterate",Al),Ts(s)?e:e.map(sn))}function ru(s){return es(s=$t(s),"iterate",Al),s}function Tn(s,e){return fr(s)?Eo(lr(s)?sn(e):e):sn(e)}const jS={__proto__:null,[Symbol.iterator](){return Nu(this,Symbol.iterator,s=>Tn(this,s))},concat(...s){return ja(this).concat(...s.map(e=>ft(e)?ja(e):e))},entries(){return Nu(this,"entries",s=>(s[1]=Tn(this,s[1]),s))},every(s,e){return Vn(this,"every",s,e,void 0,arguments)},filter(s,e){return Vn(this,"filter",s,e,t=>t.map(i=>Tn(this,i)),arguments)},find(s,e){return Vn(this,"find",s,e,t=>Tn(this,t),arguments)},findIndex(s,e){return Vn(this,"findIndex",s,e,void 0,arguments)},findLast(s,e){return Vn(this,"findLast",s,e,t=>Tn(this,t),arguments)},findLastIndex(s,e){return Vn(this,"findLastIndex",s,e,void 0,arguments)},forEach(s,e){return Vn(this,"forEach",s,e,void 0,arguments)},includes(...s){return Uu(this,"includes",s)},indexOf(...s){return Uu(this,"indexOf",s)},join(s){return ja(this).join(s)},lastIndexOf(...s){return Uu(this,"lastIndexOf",s)},map(s,e){return Vn(this,"map",s,e,void 0,arguments)},pop(){return $o(this,"pop")},push(...s){return $o(this,"push",s)},reduce(s,...e){return jp(this,"reduce",s,e)},reduceRight(s,...e){return jp(this,"reduceRight",s,e)},shift(){return $o(this,"shift")},some(s,e){return Vn(this,"some",s,e,void 0,arguments)},splice(...s){return $o(this,"splice",s)},toReversed(){return ja(this).toReversed()},toSorted(s){return ja(this).toSorted(s)},toSpliced(...s){return ja(this).toSpliced(...s)},unshift(...s){return $o(this,"unshift",s)},values(){return Nu(this,"values",s=>Tn(this,s))}};function Nu(s,e,t){const i=ru(s),n=i[e]();return i!==s&&!Ts(s)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=t(r.value)),r}),n}const WS=Array.prototype;function Vn(s,e,t,i,n,r){const a=ru(s),o=a!==s&&!Ts(s),h=a[e];if(h!==WS[e]){const u=h.apply(s,r);return o?sn(u):u}let l=t;a!==s&&(o?l=function(u,d){return t.call(this,Tn(s,u),d,s)}:t.length>2&&(l=function(u,d){return t.call(this,u,d,s)}));const c=h.call(a,l,i);return o&&n?n(c):c}function jp(s,e,t,i){const n=ru(s),r=n!==s&&!Ts(s);let a=t,o=!1;n!==s&&(r?(o=i.length===0,a=function(l,c,u){return o&&(o=!1,l=Tn(s,l)),t.call(this,l,Tn(s,c),u,s)}):t.length>3&&(a=function(l,c,u){return t.call(this,l,c,u,s)}));const h=n[e](a,...i);return o?Tn(s,h):h}function Uu(s,e,t){const i=$t(s);es(i,"iterate",Al);const n=i[e](...t);return(n===-1||n===!1)&&au(t[0])?(t[0]=$t(t[0]),i[e](...t)):n}function $o(s,e,t=[]){ur(),Qm();const i=$t(s)[e].apply(s,t);return ep(),dr(),i}const zS=Km("__proto__,__v_isRef,__isVue"),Xy=new Set(Object.getOwnPropertyNames(Symbol).filter(s=>s!=="arguments"&&s!=="caller").map(s=>Symbol[s]).filter(As));function qS(s){As(s)||(s=String(s));const e=$t(this);return es(e,"has",s),e.hasOwnProperty(s)}class Vy{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,i){if(t==="__v_skip")return e.__v_skip;const n=this._isReadonly,r=this._isShallow;if(t==="__v_isReactive")return!n;if(t==="__v_isReadonly")return n;if(t==="__v_isShallow")return r;if(t==="__v_raw")return i===(n?r?r_:Hy:r?Gy:$y).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;const a=ft(e);if(!n){let h;if(a&&(h=jS[t]))return h;if(t==="hasOwnProperty")return qS}const o=Reflect.get(e,t,Si(e)?e:i);if((As(t)?Xy.has(t):zS(t))||(n||es(e,"get",t),r))return o;if(Si(o)){const h=a&&tu(t)?o:o.value;return n&&Kt(h)?Ff(h):h}return Kt(o)?n?Ff(o):Ba(o):o}}class Yy extends Vy{constructor(e=!1){super(!1,e)}set(e,t,i,n){let r=e[t];const a=ft(e)&&tu(t);if(!this._isShallow){const l=fr(r);if(!Ts(i)&&!fr(i)&&(r=$t(r),i=$t(i)),!a&&Si(r)&&!Si(i))return l||(r.value=i),!0}const o=a?Number(t)s,ic=s=>Reflect.getPrototypeOf(s);function e_(s,e,t){return function(...i){const n=this.__v_raw,r=$t(n),a=po(r),o=s==="entries"||s===Symbol.iterator&&a,h=s==="keys"&&a,l=n[s](...i),c=t?kf:e?Eo:sn;return!e&&es(r,"iterate",h?Pf:_a),ki(Object.create(l),{next(){const{value:u,done:d}=l.next();return d?{value:u,done:d}:{value:o?[c(u[0]),c(u[1])]:c(u),done:d}}})}}function sc(s){return function(...e){return s==="delete"?!1:s==="clear"?void 0:this}}function t_(s,e){const t={get(n){const r=this.__v_raw,a=$t(r),o=$t(n);s||(Cn(n,o)&&es(a,"get",n),es(a,"get",o));const{has:h}=ic(a),l=e?kf:s?Eo:sn;if(h.call(a,n))return l(r.get(n));if(h.call(a,o))return l(r.get(o));r!==a&&r.get(n)},get size(){const n=this.__v_raw;return!s&&es($t(n),"iterate",_a),n.size},has(n){const r=this.__v_raw,a=$t(r),o=$t(n);return s||(Cn(n,o)&&es(a,"has",n),es(a,"has",o)),n===o?r.has(n):r.has(n)||r.has(o)},forEach(n,r){const a=this,o=a.__v_raw,h=$t(o),l=e?kf:s?Eo:sn;return!s&&es(h,"iterate",_a),o.forEach((c,u)=>n.call(r,l(c),l(u),a))}};return ki(t,s?{add:sc("add"),set:sc("set"),delete:sc("delete"),clear:sc("clear")}:{add(n){const r=$t(this),a=ic(r),o=$t(n),h=!e&&!Ts(n)&&!fr(n)?o:n;return a.has.call(r,h)||Cn(n,h)&&a.has.call(r,n)||Cn(o,h)&&a.has.call(r,o)||(r.add(h),Jn(r,"add",h,h)),this},set(n,r){!e&&!Ts(r)&&!fr(r)&&(r=$t(r));const a=$t(this),{has:o,get:h}=ic(a);let l=o.call(a,n);l||(n=$t(n),l=o.call(a,n));const c=h.call(a,n);return a.set(n,r),l?Cn(r,c)&&Jn(a,"set",n,r):Jn(a,"add",n,r),this},delete(n){const r=$t(this),{has:a,get:o}=ic(r);let h=a.call(r,n);h||(n=$t(n),h=a.call(r,n)),o&&o.call(r,n);const l=r.delete(n);return h&&Jn(r,"delete",n,void 0),l},clear(){const n=$t(this),r=n.size!==0,a=n.clear();return r&&Jn(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{t[n]=e_(n,s,e)}),t}function sp(s,e){const t=t_(s,e);return(i,n,r)=>n==="__v_isReactive"?!s:n==="__v_isReadonly"?s:n==="__v_raw"?i:Reflect.get(qt(t,n)&&n in i?t:i,n,r)}const i_={get:sp(!1,!1)},s_={get:sp(!1,!0)},n_={get:sp(!0,!1)};const $y=new WeakMap,Gy=new WeakMap,Hy=new WeakMap,r_=new WeakMap;function a_(s){switch(s){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ba(s){return fr(s)?s:np(s,!1,ZS,i_,$y)}function o_(s){return np(s,!1,QS,s_,Gy)}function Ff(s){return np(s,!0,JS,n_,Hy)}function np(s,e,t,i,n){if(!Kt(s)||s.__v_raw&&!(e&&s.__v_isReactive)||s.__v_skip||!Object.isExtensible(s))return s;const r=n.get(s);if(r)return r;const a=a_(PS(s));if(a===0)return s;const o=new Proxy(s,a===2?i:t);return n.set(s,o),o}function lr(s){return fr(s)?lr(s.__v_raw):!!(s&&s.__v_isReactive)}function fr(s){return!!(s&&s.__v_isReadonly)}function Ts(s){return!!(s&&s.__v_isShallow)}function au(s){return s?!!s.__v_raw:!1}function $t(s){const e=s&&s.__v_raw;return e?$t(e):s}function Nr(s){return!qt(s,"__v_skip")&&Object.isExtensible(s)&&Ty(s,"__v_skip",!0),s}const sn=s=>Kt(s)?Ba(s):s,Eo=s=>Kt(s)?Ff(s):s;function Si(s){return s?s.__v_isRef===!0:!1}function ht(s){return l_(s,!1)}function l_(s,e){return Si(s)?s:new c_(s,e)}class c_{constructor(e,t){this.dep=new ip,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:$t(e),this._value=t?e:sn(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,i=this.__v_isShallow||Ts(e)||fr(e);e=i?e:$t(e),Cn(e,t)&&(this._rawValue=e,this._value=i?e:sn(e),this.dep.trigger())}}function ke(s){return Si(s)?s.value:s}const h_={get:(s,e,t)=>e==="__v_raw"?s:ke(Reflect.get(s,e,t)),set:(s,e,t,i)=>{const n=s[e];return Si(n)&&!Si(t)?(n.value=t,!0):Reflect.set(s,e,t,i)}};function jy(s){return lr(s)?s:new Proxy(s,h_)}function u_(s){const e=ft(s)?new Array(s.length):{};for(const t in s)e[t]=f_(s,t);return e}class d_{constructor(e,t,i){this._object=e,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0,this._key=As(t)?t:String(t),this._raw=$t(e);let n=!0,r=e;if(!ft(e)||As(this._key)||!tu(this._key))do n=!au(r)||Ts(r);while(n&&(r=r.__v_raw));this._shallow=n}get value(){let e=this._object[this._key];return this._shallow&&(e=ke(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&Si(this._raw[this._key])){const t=this._object[this._key];if(Si(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return HS(this._raw,this._key)}}function f_(s,e,t){return new d_(s,e,t)}class m_{constructor(e,t,i){this.fn=e,this.setter=t,this._value=void 0,this.dep=new ip(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Tl-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&ni!==this)return Oy(this,!0),!0}get value(){const e=this.dep.track();return Dy(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function p_(s,e,t=!1){let i,n;return _t(s)?i=s:(i=s.get,n=s.set),new m_(i,n,t)}const nc={},sh=new WeakMap;let la;function g_(s,e=!1,t=la){if(t){let i=sh.get(t);i||sh.set(t,i=[]),i.push(s)}}function v_(s,e,t=ti){const{immediate:i,deep:n,once:r,scheduler:a,augmentJob:o,call:h}=t,l=w=>n?w:Ts(w)||n===!1||n===0?Qn(w,1):Qn(w);let c,u,d,f,p=!1,m=!1;if(Si(s)?(u=()=>s.value,p=Ts(s)):lr(s)?(u=()=>l(s),p=!0):ft(s)?(m=!0,p=s.some(w=>lr(w)||Ts(w)),u=()=>s.map(w=>{if(Si(w))return w.value;if(lr(w))return l(w);if(_t(w))return h?h(w,2):w()})):_t(s)?e?u=h?()=>h(s,2):s:u=()=>{if(d){ur();try{d()}finally{dr()}}const w=la;la=c;try{return h?h(s,3,[f]):s(f)}finally{la=w}}:u=Fn,e&&n){const w=u,A=n===!0?1/0:n;u=()=>Qn(w(),A)}const g=Py(),v=()=>{c.stop(),g&&g.active&&Zm(g.effects,c)};if(r&&e){const w=e;e=(...A)=>{const M=w(...A);return v(),M}}let b=m?new Array(s.length).fill(nc):nc;const y=w=>{if(!(!(c.flags&1)||!c.dirty&&!w))if(e){const A=c.run();if(w||n||p||(m?A.some((M,_)=>Cn(M,b[_])):Cn(A,b))){d&&d();const M=la;la=c;try{const _=[A,b===nc?void 0:m&&b[0]===nc?[]:b,f];b=A,h?h(e,3,_):e(..._)}finally{la=M}}}else c.run()};return o&&o(y),c=new ky(u),c.scheduler=a?()=>a(y,!1):y,f=w=>g_(w,!1,c),d=c.onStop=()=>{const w=sh.get(c);if(w){if(h)h(w,4);else for(const A of w)A();sh.delete(c)}},e?i?y(!0):b=c.run():a?a(y.bind(null,!0),!0):c.run(),v.pause=c.pause.bind(c),v.resume=c.resume.bind(c),v.stop=v,v}function Qn(s,e=1/0,t){if(e<=0||!Kt(s)||s.__v_skip||(t=t||new Map,(t.get(s)||0)>=e))return s;if(t.set(s,e),e--,Si(s))Qn(s.value,e,t);else if(ft(s))for(let i=0;i{Qn(i,e,t)});else if(_y(s)){for(const i in s)Qn(s[i],e,t);for(const i of Object.getOwnPropertySymbols(s))Object.prototype.propertyIsEnumerable.call(s,i)&&Qn(s[i],e,t)}return s}/** +**/let Pi;class Cy{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&Pi&&(Pi.active?(this.parent=Pi,this.index=(Pi.scopes||(Pi.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){const i=this.scopes.slice();for(e=0,t=i.length;e0&&--this._on===0){if(Pi===this)Pi=this.prevScope;else{let e=Pi;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,i;for(t=0,i=this.effects.length;t0)return;if(ul){let e=ul;for(ul=void 0;e;){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let s;for(;hl;){let e=hl;for(hl=void 0;e;){const t=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(i){s||(s=i)}e=t}}if(s)throw s}function Oy(s){for(let e=s.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function By(s){let e,t=s.depsTail,i=t;for(;i;){const n=i.prevDep;i.version===-1?(i===t&&(t=n),ep(i),YS(i)):e=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}s.deps=e,s.depsTail=t}function If(s){for(let e=s.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Ly(e.dep.computed)||e.dep.version!==e.version))return!0;return!!s._dirty}function Ly(s){if(s.flags&4&&!(s.flags&16)||(s.flags&=-17,s.globalVersion===_l)||(s.globalVersion=_l,!s.isSSR&&s.flags&128&&(!s.deps&&!s._dirty||!If(s))))return;s.flags|=2;const e=s.dep,t=ai,i=rn;ai=s,rn=!0;try{Oy(s);const n=s.fn(s._value);(e.version===0||In(n,s._value))&&(s.flags|=128,s._value=n,e.version++)}catch(n){throw e.version++,n}finally{ai=t,rn=i,By(s),s.flags&=-3}}function ep(s,e=!1){const{dep:t,prevSub:i,nextSub:n}=s;if(i&&(i.nextSub=n,s.prevSub=void 0),n&&(n.prevSub=i,s.nextSub=void 0),t.subs===s&&(t.subs=i,!i&&t.computed)){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)ep(r,!0)}!e&&!--t.sc&&t.map&&t.map.delete(t.key)}function YS(s){const{prevDep:e,nextDep:t}=s;e&&(e.nextDep=t,s.prevDep=void 0),t&&(t.prevDep=e,s.nextDep=void 0)}let rn=!0;const Dy=[];function dr(){Dy.push(rn),rn=!1}function fr(){const s=Dy.pop();rn=s===void 0?!0:s}function Gp(s){const{cleanup:e}=s;if(s.cleanup=void 0,e){const t=ai;ai=void 0;try{e()}finally{ai=t}}}let _l=0;class $S{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class tp{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!ai||!rn||ai===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==ai)t=this.activeLink=new $S(ai,this),ai.deps?(t.prevDep=ai.depsTail,ai.depsTail.nextDep=t,ai.depsTail=t):ai.deps=ai.depsTail=t,Ny(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){const i=t.nextDep;i.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=i),t.prevDep=ai.depsTail,t.nextDep=void 0,ai.depsTail.nextDep=t,ai.depsTail=t,ai.deps===t&&(ai.deps=i)}return t}trigger(e){this.version++,_l++,this.notify(e)}notify(e){Jm();try{for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&t.sub.dep.notify()}finally{Qm()}}}function Ny(s){if(s.dep.sc++,s.sub.flags&4){const e=s.dep.computed;if(e&&!s.dep.subs){e.flags|=20;for(let i=e.deps;i;i=i.nextDep)Ny(i)}const t=s.dep.subs;t!==s&&(s.prevSub=t,t&&(t.nextSub=s)),s.dep.subs=s}}const ih=new WeakMap,Ta=Symbol(""),Rf=Symbol(""),Tl=Symbol("");function Qi(s,e,t){if(rn&&ai){let i=ih.get(s);i||ih.set(s,i=new Map);let n=i.get(t);n||(i.set(t,n=new tp),n.map=i,n.key=t),n.track()}}function Qn(s,e,t,i,n,r){const a=ih.get(s);if(!a){_l++;return}const o=h=>{h&&h.trigger()};if(Jm(),e==="clear")a.forEach(o);else{const h=ft(s),l=h&&tu(t);if(h&&t==="length"){const c=Number(i);a.forEach((u,d)=>{(d==="length"||d===Tl||!Cs(d)&&d>=c)&&o(u)})}else switch((t!==void 0||a.has(void 0))&&o(a.get(t)),l&&o(a.get(Tl)),e){case"add":h?l&&o(a.get("length")):(o(a.get(Ta)),mo(s)&&o(a.get(Rf)));break;case"delete":h||(o(a.get(Ta)),mo(s)&&o(a.get(Rf)));break;case"set":mo(s)&&o(a.get(Ta));break}}Qm()}function GS(s,e){const t=ih.get(s);return t&&t.get(e)}function ja(s){const e=$t(s);return e===s?e:(Qi(e,"iterate",Tl),Es(s)?e:e.map(hn))}function ru(s){return Qi(s=$t(s),"iterate",Tl),s}function An(s,e){return mr(s)?Ao(cr(s)?hn(e):e):hn(e)}const HS={__proto__:null,[Symbol.iterator](){return Du(this,Symbol.iterator,s=>An(this,s))},concat(...s){return ja(this).concat(...s.map(e=>ft(e)?ja(e):e))},entries(){return Du(this,"entries",s=>(s[1]=An(this,s[1]),s))},every(s,e){return Yn(this,"every",s,e,void 0,arguments)},filter(s,e){return Yn(this,"filter",s,e,t=>t.map(i=>An(this,i)),arguments)},find(s,e){return Yn(this,"find",s,e,t=>An(this,t),arguments)},findIndex(s,e){return Yn(this,"findIndex",s,e,void 0,arguments)},findLast(s,e){return Yn(this,"findLast",s,e,t=>An(this,t),arguments)},findLastIndex(s,e){return Yn(this,"findLastIndex",s,e,void 0,arguments)},forEach(s,e){return Yn(this,"forEach",s,e,void 0,arguments)},includes(...s){return Nu(this,"includes",s)},indexOf(...s){return Nu(this,"indexOf",s)},join(s){return ja(this).join(s)},lastIndexOf(...s){return Nu(this,"lastIndexOf",s)},map(s,e){return Yn(this,"map",s,e,void 0,arguments)},pop(){return Yo(this,"pop")},push(...s){return Yo(this,"push",s)},reduce(s,...e){return Hp(this,"reduce",s,e)},reduceRight(s,...e){return Hp(this,"reduceRight",s,e)},shift(){return Yo(this,"shift")},some(s,e){return Yn(this,"some",s,e,void 0,arguments)},splice(...s){return Yo(this,"splice",s)},toReversed(){return ja(this).toReversed()},toSorted(s){return ja(this).toSorted(s)},toSpliced(...s){return ja(this).toSpliced(...s)},unshift(...s){return Yo(this,"unshift",s)},values(){return Du(this,"values",s=>An(this,s))}};function Du(s,e,t){const i=ru(s),n=i[e]();return i!==s&&!Es(s)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=t(r.value)),r}),n}const jS=Array.prototype;function Yn(s,e,t,i,n,r){const a=ru(s),o=a!==s&&!Es(s),h=a[e];if(h!==jS[e]){const u=h.apply(s,r);return o?hn(u):u}let l=t;a!==s&&(o?l=function(u,d){return t.call(this,An(s,u),d,s)}:t.length>2&&(l=function(u,d){return t.call(this,u,d,s)}));const c=h.call(a,l,i);return o&&n?n(c):c}function Hp(s,e,t,i){const n=ru(s),r=n!==s&&!Es(s);let a=t,o=!1;n!==s&&(r?(o=i.length===0,a=function(l,c,u){return o&&(o=!1,l=An(s,l)),t.call(this,l,An(s,c),u,s)}):t.length>3&&(a=function(l,c,u){return t.call(this,l,c,u,s)}));const h=n[e](a,...i);return o?An(s,h):h}function Nu(s,e,t){const i=$t(s);Qi(i,"iterate",Tl);const n=i[e](...t);return(n===-1||n===!1)&&au(t[0])?(t[0]=$t(t[0]),i[e](...t)):n}function Yo(s,e,t=[]){dr(),Jm();const i=$t(s)[e].apply(s,t);return Qm(),fr(),i}const WS=qm("__proto__,__v_isRef,__isVue"),Uy=new Set(Object.getOwnPropertyNames(Symbol).filter(s=>s!=="arguments"&&s!=="caller").map(s=>Symbol[s]).filter(Cs));function zS(s){Cs(s)||(s=String(s));const e=$t(this);return Qi(e,"has",s),e.hasOwnProperty(s)}class Xy{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,i){if(t==="__v_skip")return e.__v_skip;const n=this._isReadonly,r=this._isShallow;if(t==="__v_isReactive")return!n;if(t==="__v_isReadonly")return n;if(t==="__v_isShallow")return r;if(t==="__v_raw")return i===(n?r?nM:Gy:r?$y:Yy).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;const a=ft(e);if(!n){let h;if(a&&(h=HS[t]))return h;if(t==="hasOwnProperty")return zS}const o=Reflect.get(e,t,Si(e)?e:i);if((Cs(t)?Uy.has(t):WS(t))||(n||Qi(e,"get",t),r))return o;if(Si(o)){const h=a&&tu(t)?o:o.value;return n&&qt(h)?kf(h):h}return qt(o)?n?kf(o):Da(o):o}}class Vy extends Xy{constructor(e=!1){super(!1,e)}set(e,t,i,n){let r=e[t];const a=ft(e)&&tu(t);if(!this._isShallow){const l=mr(r);if(!Es(i)&&!mr(i)&&(r=$t(r),i=$t(i)),!a&&Si(r)&&!Si(i))return l||(r.value=i),!0}const o=a?Number(t)s,ic=s=>Reflect.getPrototypeOf(s);function QS(s,e,t){return function(...i){const n=this.__v_raw,r=$t(n),a=mo(r),o=s==="entries"||s===Symbol.iterator&&a,h=s==="keys"&&a,l=n[s](...i),c=t?Pf:e?Ao:hn;return!e&&Qi(r,"iterate",h?Rf:Ta),Oi(Object.create(l),{next(){const{value:u,done:d}=l.next();return d?{value:u,done:d}:{value:o?[c(u[0]),c(u[1])]:c(u),done:d}}})}}function sc(s){return function(...e){return s==="delete"?!1:s==="clear"?void 0:this}}function eM(s,e){const t={get(n){const r=this.__v_raw,a=$t(r),o=$t(n);s||(In(n,o)&&Qi(a,"get",n),Qi(a,"get",o));const{has:h}=ic(a),l=e?Pf:s?Ao:hn;if(h.call(a,n))return l(r.get(n));if(h.call(a,o))return l(r.get(o));r!==a&&r.get(n)},get size(){const n=this.__v_raw;return!s&&Qi($t(n),"iterate",Ta),n.size},has(n){const r=this.__v_raw,a=$t(r),o=$t(n);return s||(In(n,o)&&Qi(a,"has",n),Qi(a,"has",o)),n===o?r.has(n):r.has(n)||r.has(o)},forEach(n,r){const a=this,o=a.__v_raw,h=$t(o),l=e?Pf:s?Ao:hn;return!s&&Qi(h,"iterate",Ta),o.forEach((c,u)=>n.call(r,l(c),l(u),a))}};return Oi(t,s?{add:sc("add"),set:sc("set"),delete:sc("delete"),clear:sc("clear")}:{add(n){const r=$t(this),a=ic(r),o=$t(n),h=!e&&!Es(n)&&!mr(n)?o:n;return a.has.call(r,h)||In(n,h)&&a.has.call(r,n)||In(o,h)&&a.has.call(r,o)||(r.add(h),Qn(r,"add",h,h)),this},set(n,r){!e&&!Es(r)&&!mr(r)&&(r=$t(r));const a=$t(this),{has:o,get:h}=ic(a);let l=o.call(a,n);l||(n=$t(n),l=o.call(a,n));const c=h.call(a,n);return a.set(n,r),l?In(r,c)&&Qn(a,"set",n,r):Qn(a,"add",n,r),this},delete(n){const r=$t(this),{has:a,get:o}=ic(r);let h=a.call(r,n);h||(n=$t(n),h=a.call(r,n)),o&&o.call(r,n);const l=r.delete(n);return h&&Qn(r,"delete",n,void 0),l},clear(){const n=$t(this),r=n.size!==0,a=n.clear();return r&&Qn(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{t[n]=QS(n,s,e)}),t}function ip(s,e){const t=eM(s,e);return(i,n,r)=>n==="__v_isReactive"?!s:n==="__v_isReadonly"?s:n==="__v_raw"?i:Reflect.get(zt(t,n)&&n in i?t:i,n,r)}const tM={get:ip(!1,!1)},iM={get:ip(!1,!0)},sM={get:ip(!0,!1)};const Yy=new WeakMap,$y=new WeakMap,Gy=new WeakMap,nM=new WeakMap;function rM(s){switch(s){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Da(s){return mr(s)?s:sp(s,!1,KS,tM,Yy)}function aM(s){return sp(s,!1,JS,iM,$y)}function kf(s){return sp(s,!0,ZS,sM,Gy)}function sp(s,e,t,i,n){if(!qt(s)||s.__v_raw&&!(e&&s.__v_isReactive)||s.__v_skip||!Object.isExtensible(s))return s;const r=n.get(s);if(r)return r;const a=rM(RS(s));if(a===0)return s;const o=new Proxy(s,a===2?i:t);return n.set(s,o),o}function cr(s){return mr(s)?cr(s.__v_raw):!!(s&&s.__v_isReactive)}function mr(s){return!!(s&&s.__v_isReadonly)}function Es(s){return!!(s&&s.__v_isShallow)}function au(s){return s?!!s.__v_raw:!1}function $t(s){const e=s&&s.__v_raw;return e?$t(e):s}function Dr(s){return!zt(s,"__v_skip")&&Object.isExtensible(s)&&_y(s,"__v_skip",!0),s}const hn=s=>qt(s)?Da(s):s,Ao=s=>qt(s)?kf(s):s;function Si(s){return s?s.__v_isRef===!0:!1}function lt(s){return oM(s,!1)}function oM(s,e){return Si(s)?s:new lM(s,e)}class lM{constructor(e,t){this.dep=new tp,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:$t(e),this._value=t?e:hn(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,i=this.__v_isShallow||Es(e)||mr(e);e=i?e:$t(e),In(e,t)&&(this._rawValue=e,this._value=i?e:hn(e),this.dep.trigger())}}function ke(s){return Si(s)?s.value:s}const cM={get:(s,e,t)=>e==="__v_raw"?s:ke(Reflect.get(s,e,t)),set:(s,e,t,i)=>{const n=s[e];return Si(n)&&!Si(t)?(n.value=t,!0):Reflect.set(s,e,t,i)}};function Hy(s){return cr(s)?s:new Proxy(s,cM)}function hM(s){const e=ft(s)?new Array(s.length):{};for(const t in s)e[t]=dM(s,t);return e}class uM{constructor(e,t,i){this._object=e,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0,this._key=Cs(t)?t:String(t),this._raw=$t(e);let n=!0,r=e;if(!ft(e)||Cs(this._key)||!tu(this._key))do n=!au(r)||Es(r);while(n&&(r=r.__v_raw));this._shallow=n}get value(){let e=this._object[this._key];return this._shallow&&(e=ke(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&Si(this._raw[this._key])){const t=this._object[this._key];if(Si(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return GS(this._raw,this._key)}}function dM(s,e,t){return new uM(s,e,t)}class fM{constructor(e,t,i){this.fn=e,this.setter=t,this._value=void 0,this.dep=new tp(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=_l-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&ai!==this)return Fy(this,!0),!0}get value(){const e=this.dep.track();return Ly(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function mM(s,e,t=!1){let i,n;return Mt(s)?i=s:(i=s.get,n=s.set),new fM(i,n,t)}const nc={},sh=new WeakMap;let ha;function pM(s,e=!1,t=ha){if(t){let i=sh.get(t);i||sh.set(t,i=[]),i.push(s)}}function gM(s,e,t=ti){const{immediate:i,deep:n,once:r,scheduler:a,augmentJob:o,call:h}=t,l=w=>n?w:Es(w)||n===!1||n===0?er(w,1):er(w);let c,u,d,f,p=!1,m=!1;if(Si(s)?(u=()=>s.value,p=Es(s)):cr(s)?(u=()=>l(s),p=!0):ft(s)?(m=!0,p=s.some(w=>cr(w)||Es(w)),u=()=>s.map(w=>{if(Si(w))return w.value;if(cr(w))return l(w);if(Mt(w))return h?h(w,2):w()})):Mt(s)?e?u=h?()=>h(s,2):s:u=()=>{if(d){dr();try{d()}finally{fr()}}const w=ha;ha=c;try{return h?h(s,3,[f]):s(f)}finally{ha=w}}:u=On,e&&n){const w=u,A=n===!0?1/0:n;u=()=>er(w(),A)}const g=Ry(),v=()=>{c.stop(),g&&g.active&&Km(g.effects,c)};if(r&&e){const w=e;e=(...A)=>{const T=w(...A);return v(),T}}let b=m?new Array(s.length).fill(nc):nc;const y=w=>{if(!(!(c.flags&1)||!c.dirty&&!w))if(e){const A=c.run();if(w||n||p||(m?A.some((T,_)=>In(T,b[_])):In(A,b))){d&&d();const T=ha;ha=c;try{const _=[A,b===nc?void 0:m&&b[0]===nc?[]:b,f];b=A,h?h(e,3,_):e(..._)}finally{ha=T}}}else c.run()};return o&&o(y),c=new Py(u),c.scheduler=a?()=>a(y,!1):y,f=w=>pM(w,!1,c),d=c.onStop=()=>{const w=sh.get(c);if(w){if(h)h(w,4);else for(const A of w)A();sh.delete(c)}},e?i?y(!0):b=c.run():a?a(y.bind(null,!0),!0):c.run(),v.pause=c.pause.bind(c),v.resume=c.resume.bind(c),v.stop=v,v}function er(s,e=1/0,t){if(e<=0||!qt(s)||s.__v_skip||(t=t||new Map,(t.get(s)||0)>=e))return s;if(t.set(s,e),e--,Si(s))er(s.value,e,t);else if(ft(s))for(let i=0;i{er(i,e,t)});else if(Sy(s)){for(const i in s)er(s[i],e,t);for(const i of Object.getOwnPropertySymbols(s))Object.prototype.propertyIsEnumerable.call(s,i)&&er(s[i],e,t)}return s}/** * @vue/runtime-core v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function $l(s,e,t,i){try{return i?s(...i):s()}catch(n){ou(n,e,t)}}function Ns(s,e,t,i){if(_t(s)){const n=$l(s,e,t,i);return n&&wy(n)&&n.catch(r=>{ou(r,e,t)}),n}if(ft(s)){const n=[];for(let r=0;r>>1,n=os[i],r=El(n);r=El(t)?os.push(s):os.splice(x_(e),0,s),s.flags|=1,zy()}}function zy(){nh||(nh=Wy.then(Ky))}function b_(s){if(!ft(s))Cr&&s.id===-1?Cr.splice(to+1,0,s):s.flags&1||(go.push(s),s.flags|=1);else for(let e=0;eEl(t)-El(i));if(go.length=0,Cr){for(let t=0;ts.id==null?s.flags&2?-1:1/0:s.id;function Ky(s){try{for(xn=0;xn{i._d&&hh(-1);const r=rh(e),a=cr.length;let o;try{o=s(...n)}finally{for(let h=cr.length;h>a;h--)cp();rh(r),i._d&&hh(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function be(s,e){if(ss===null)return s;const t=pu(ss),i=s.dirs||(s.dirs=[]);for(let n=0;n1)return t&&_t(e)?e.call(i&&i.proxy):e}}function S_(){return!!(hp()||Ma)}const __=Symbol.for("v-scx"),M_=()=>fl(__);function Qo(s,e){return ap(s,null,e)}function ds(s,e,t){return ap(s,e,t)}function ap(s,e,t=ti){const{immediate:i,deep:n,flush:r,once:a}=t,o=ki({},t),h=e&&i||!e&&r!=="post";let l;if(kl){if(r==="sync"){const f=M_();l=f.__watcherHandles||(f.__watcherHandles=[])}else if(!h){const f=()=>{};return f.stop=Fn,f.resume=Fn,f.pause=Fn,f}}const c=ls;o.call=(f,p,m)=>Ns(f,c,p,m);let u=!1;r==="post"?o.scheduler=f=>{fs(f,c&&c.suspense)}:r!=="sync"&&(u=!0,o.scheduler=(f,p)=>{p?f():rp(f)}),o.augmentJob=f=>{e&&(f.flags|=4),u&&(f.flags|=2,c&&(f.id=c.uid,f.i=c))};const d=v_(s,e,o);return kl&&(l?l.push(d):h&&d()),d}function T_(s,e,t){const i=this.proxy,n=gi(s)?s.includes(".")?Jy(i,s):()=>i[s]:s.bind(i,i);let r;_t(e)?r=e:(r=e.handler,t=e);const a=Hl(this),o=ap(n,r.bind(i),t);return a(),o}function Jy(s,e){const t=e.split(".");return()=>{let i=s;for(let n=0;ns.__isTeleport,Os=Symbol("_leaveCb"),Go=Symbol("_enterCb");function E_(){const s={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return La(()=>{s.isMounted=!0}),du(()=>{s.isUnmounting=!0}),s}const Rs=[Function,Array],Qy={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Rs,onEnter:Rs,onAfterEnter:Rs,onEnterCancelled:Rs,onBeforeLeave:Rs,onLeave:Rs,onAfterLeave:Rs,onLeaveCancelled:Rs,onBeforeAppear:Rs,onAppear:Rs,onAfterAppear:Rs,onAppearCancelled:Rs},ex=s=>{const e=s.subTree;return e.component?ex(e.component):e},C_={name:"BaseTransition",props:Qy,setup(s,{slots:e}){const t=hp(),i=E_();return()=>{const n=e.default&&sx(e.default(),!0),r=n&&n.length?tx(n):t.subTree?Xe():void 0;if(!r)return;const a=$t(s),{mode:o}=a;if(i.isLeaving)return Xu(r);const h=oh(r);if(!h)return Xu(r);let l=Of(h,a,i,t,u=>l=u);h.type!==is&&Cl(h,l);let c=t.subTree&&oh(t.subTree);if(c&&c.type!==is&&!ma(c,h)&&ex(t).type!==is){let u=Of(c,a,i,t);if(Cl(c,u),o==="out-in"&&h.type!==is)return i.isLeaving=!0,u.afterLeave=()=>{i.isLeaving=!1,t.job.flags&8||t.update(),delete u.afterLeave,c=void 0},Xu(r);o==="in-out"&&h.type!==is?u.delayLeave=(d,f,p)=>{const m=ix(i,c);m[String(c.key)]=c,d[Os]=()=>{f(),d[Os]=void 0,delete l.delayedLeave,c=void 0},l.delayedLeave=()=>{p(),delete l.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return r}}};function tx(s){let e=s[0];if(s.length>1){for(const t of s)if(t.type!==is){e=t;break}}return e}const I_=C_;function ix(s,e){const{leavingVNodes:t}=s;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function Of(s,e,t,i,n){const{appear:r,mode:a,persisted:o=!1,onBeforeEnter:h,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:m,onBeforeAppear:g,onAppear:v,onAfterAppear:b,onAppearCancelled:y}=e,w=String(s.key),A=ix(t,s),M=(P,F)=>{P&&Ns(P,i,9,F)},_=(P,F)=>{const I=F[1];M(P,F),ft(P)?P.every(k=>k.length<=1)&&I():P.length<=1&&I()},R={mode:a,persisted:o,beforeEnter(P){let F=h;if(!t.isMounted)if(r)F=g||h;else return;P[Os]&&P[Os](!0);const I=A[w];I&&ma(s,I)&&I.el[Os]&&I.el[Os](),M(F,[P])},enter(P){if(A[w]===s)return;let F=l,I=c,k=u;if(!t.isMounted)if(r)F=v||l,I=b||c,k=y||u;else return;let B=!1;P[Go]=U=>{B||(B=!0,U?M(k,[P]):M(I,[P]),R.delayedLeave&&R.delayedLeave(),P[Go]=void 0)};const D=P[Go].bind(null,!1);F?_(F,[P,D]):D()},leave(P,F){const I=String(s.key);if(P[Go]&&P[Go](!0),t.isUnmounting)return F();M(d,[P]);let k=!1;P[Os]=D=>{k||(k=!0,F(),D?M(m,[P]):M(p,[P]),P[Os]=void 0,A[I]===s&&delete A[I])};const B=P[Os].bind(null,!1);A[I]=s,f?_(f,[P,B]):B()},clone(P){const F=Of(P,e,t,i,n);return n&&n(F),F}};return R}function Xu(s){if(hu(s))return s=jr(s),s.children=null,s}function oh(s){if(!hu(s))return cu(s.type)&&s.children?tx(s.children):s;if(s.component)return s.component.subTree;const{shapeFlag:e,children:t}=s;if(t){if(e&16)return t[0];if(e&32&&_t(t.default))return t.default()}}function Cl(s,e){if(s.shapeFlag&6&&s.component){s.transition=e;const t=s.component.subTree;Cl(cu(t.type)&&oh(t)||t,e)}else s.shapeFlag&128?(s.ssContent.transition=e.clone(s.ssContent),s.ssFallback.transition=e.clone(s.ssFallback)):s.transition=e}function sx(s,e=!1,t){let i=[],n=0;for(let r=0;r1)for(let r=0;rml(m,e&&(ft(e)?e[g]:e),t,i,n));return}if(vo(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&ml(s,e,t,i.component.subTree);return}const r=i.shapeFlag&4?pu(i.component):i.el,a=n?null:r,{i:o,r:h}=s,l=e&&e.r,c=o.refs===ti?o.refs={}:o.refs,u=o.setupState,d=$t(u),f=u===ti?by:m=>zp(c,m)?!1:qt(d,m),p=(m,g)=>!(g&&zp(c,g));if(l!=null&&l!==h){if(qp(e),gi(l))c[l]=null,f(l)&&(u[l]=null);else if(Si(l)){const m=e;p(l,m.k)&&(l.value=null),m.k&&(c[m.k]=null)}}if(_t(h))$l(h,o,12,[a,c]);else{const m=gi(h),g=Si(h);if(m||g){const v=()=>{if(s.f){const b=m?f(h)?u[h]:c[h]:p()||!s.k?h.value:c[s.k];if(n)ft(b)&&Zm(b,r);else if(ft(b))b.includes(r)||b.push(r);else if(m)c[h]=[r],f(h)&&(u[h]=c[h]);else{const y=[r];p(h,s.k)&&(h.value=y),s.k&&(c[s.k]=y)}}else m?(c[h]=a,f(h)&&(u[h]=a)):g&&(p(h,s.k)&&(h.value=a),s.k&&(c[s.k]=a))};if(a){const b=()=>{v(),lh.delete(s)};b.id=-1,lh.set(s,b),fs(b,t)}else qp(s),v()}}}function qp(s){const e=lh.get(s);e&&(e.flags|=8,lh.delete(s))}nu().requestIdleCallback;nu().cancelIdleCallback;const vo=s=>!!s.type.__asyncLoader,hu=s=>s.type.__isKeepAlive;function R_(s,e){rx(s,"a",e)}function P_(s,e){rx(s,"da",e)}function rx(s,e,t=ls){const i=s.__wdc||(s.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return s()});if(uu(e,i,t),t){let n=t.parent;for(;n&&n.parent;)hu(n.parent.vnode)&&k_(i,e,t,n),n=n.parent}}function k_(s,e,t,i){const n=uu(e,s,i,!0);Gl(()=>{Zm(i[e],n)},t)}function uu(s,e,t=ls,i=!1){if(t){const n=t[s]||(t[s]=[]),r=e.__weh||(e.__weh=(...a)=>{ur();const o=Hl(t),h=Ns(e,t,s,a);return o(),dr(),h});return i?n.unshift(r):n.push(r),r}}const yr=s=>(e,t=ls)=>{(!kl||s==="sp")&&uu(s,(...i)=>e(...i),t)},F_=yr("bm"),La=yr("m"),O_=yr("bu"),B_=yr("u"),du=yr("bum"),Gl=yr("um"),L_=yr("sp"),D_=yr("rtg"),N_=yr("rtc");function U_(s,e=ls){uu("ec",s,e)}const X_=Symbol.for("v-ndc");function li(s,e,t,i){let n;const r=t,a=ft(s);if(a||gi(s)){const o=a&&lr(s);let h=!1,l=!1;o&&(h=!Ts(s),l=fr(s),s=ru(s)),n=new Array(s.length);for(let c=0,u=s.length;ce(o,h,void 0,r));else{const o=Object.keys(s);n=new Array(o.length);for(let h=0,l=o.length;h0;return ie(),Qt(Ke,null,[Ue("slot",l,i)],c?-2:64)}let a=s[e];a&&a._c&&(a._d=!1);const o=cr.length;ie();let h;try{const l=a&&ax(a(t)),c=t.key||r||l&&l.key;h=Qt(Ke,{key:(c&&!As(c)?c:`_${e}`)+(!l&&i?"_fb":"")},l||(i?i():[]),l&&s._===1?64:-2)}catch(l){for(let c=cr.length;c>o;c--)cp();throw l}finally{a&&a._c&&(a._d=!0)}return h}function ax(s){return s.some(e=>Rl(e)?!(e.type===is||e.type===Ke&&!ax(e.children)):!0)?s:null}const Bf=s=>s?Ax(s)?pu(s):Bf(s.parent):null,pl=ki(Object.create(null),{$:s=>s,$el:s=>s.vnode.el,$data:s=>s.data,$props:s=>s.props,$attrs:s=>s.attrs,$slots:s=>s.slots,$refs:s=>s.refs,$parent:s=>Bf(s.parent),$root:s=>Bf(s.root),$host:s=>s.ce,$emit:s=>s.emit,$options:s=>lx(s),$forceUpdate:s=>s.f||(s.f=()=>{rp(s.update)}),$nextTick:s=>s.n||(s.n=lu.bind(s.proxy)),$watch:s=>T_.bind(s)}),Vu=(s,e)=>s!==ti&&!s.__isScriptSetup&&qt(s,e),Y_={get({_:s},e){if(e==="__v_skip")return!0;const{ctx:t,setupState:i,data:n,props:r,accessCache:a,type:o,appContext:h}=s;if(e[0]!=="$"){const d=a[e];if(d!==void 0)switch(d){case 1:return i[e];case 2:return n[e];case 4:return t[e];case 3:return r[e]}else{if(Vu(i,e))return a[e]=1,i[e];if(n!==ti&&qt(n,e))return a[e]=2,n[e];if(qt(r,e))return a[e]=3,r[e];if(t!==ti&&qt(t,e))return a[e]=4,t[e];Lf&&(a[e]=0)}}const l=pl[e];let c,u;if(l)return e==="$attrs"&&es(s.attrs,"get",""),l(s);if((c=o.__cssModules)&&(c=c[e]))return c;if(t!==ti&&qt(t,e))return a[e]=4,t[e];if(u=h.config.globalProperties,qt(u,e))return u[e]},set({_:s},e,t){const{data:i,setupState:n,ctx:r}=s;return Vu(n,e)?(n[e]=t,!0):i!==ti&&qt(i,e)?(i[e]=t,!0):qt(s.props,e)||e[0]==="$"&&e.slice(1)in s?!1:(r[e]=t,!0)},has({_:{data:s,setupState:e,accessCache:t,ctx:i,appContext:n,props:r,type:a}},o){let h;return!!(t[o]||s!==ti&&o[0]!=="$"&&qt(s,o)||Vu(e,o)||qt(r,o)||qt(i,o)||qt(pl,o)||qt(n.config.globalProperties,o)||(h=a.__cssModules)&&h[o])},defineProperty(s,e,t){return t.get!=null?s._.accessCache[e]=0:qt(t,"value")&&this.set(s,e,t.value,null),Reflect.defineProperty(s,e,t)}};function Kp(s){return ft(s)?s.reduce((e,t)=>(e[t]=null,e),{}):s}let Lf=!0;function $_(s){const e=lx(s),t=s.proxy,i=s.ctx;Lf=!1,e.beforeCreate&&Zp(e.beforeCreate,s,"bc");const{data:n,computed:r,methods:a,watch:o,provide:h,inject:l,created:c,beforeMount:u,mounted:d,beforeUpdate:f,updated:p,activated:m,deactivated:g,beforeDestroy:v,beforeUnmount:b,destroyed:y,unmounted:w,render:A,renderTracked:M,renderTriggered:_,errorCaptured:R,serverPrefetch:P,expose:F,inheritAttrs:I,components:k,directives:B,filters:D}=e;if(l&&G_(l,i,null),a)for(const N in a){const O=a[N];_t(O)&&(i[N]=O.bind(t))}if(n){const N=n.call(t,t);Kt(N)&&(s.data=Ba(N))}if(Lf=!0,r)for(const N in r){const O=r[N],X=_t(O)?O.bind(t,t):_t(O.get)?O.get.bind(t,t):Fn,E=!_t(O)&&_t(O.set)?O.set.bind(t):Fn,V=gt({get:X,set:E});Object.defineProperty(i,N,{enumerable:!0,configurable:!0,get:()=>V.value,set:q=>V.value=q})}if(o)for(const N in o)ox(o[N],i,t,N);if(h){const N=_t(h)?h.call(t):h;Reflect.ownKeys(N).forEach(O=>{w_(O,N[O])})}c&&Zp(c,s,"c");function L(N,O){ft(O)?O.forEach(X=>N(X.bind(t))):O&&N(O.bind(t))}if(L(F_,u),L(La,d),L(O_,f),L(B_,p),L(R_,m),L(P_,g),L(U_,R),L(N_,M),L(D_,_),L(du,b),L(Gl,w),L(L_,P),ft(F))if(F.length){const N=s.exposed||(s.exposed={});F.forEach(O=>{Object.defineProperty(N,O,{get:()=>t[O],set:X=>t[O]=X,enumerable:!0})})}else s.exposed||(s.exposed={});A&&s.render===Fn&&(s.render=A),I!=null&&(s.inheritAttrs=I),k&&(s.components=k),B&&(s.directives=B),P&&nx(s)}function G_(s,e,t=Fn){ft(s)&&(s=Df(s));for(const i in s){const n=s[i];let r;Kt(n)?"default"in n?r=fl(n.from||i,n.default,!0):r=fl(n.from||i):r=fl(n),Si(r)?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):e[i]=r}}function Zp(s,e,t){Ns(ft(s)?s.map(i=>i.bind(e.proxy)):s.bind(e.proxy),e,t)}function ox(s,e,t,i){let n=i.includes(".")?Jy(t,i):()=>t[i];if(gi(s)){const r=e[s];_t(r)&&ds(n,r)}else if(_t(s))ds(n,s.bind(t));else if(Kt(s))if(ft(s))s.forEach(r=>ox(r,e,t,i));else{const r=_t(s.handler)?s.handler.bind(t):e[s.handler];_t(r)&&ds(n,r,s)}}function lx(s){const e=s.type,{mixins:t,extends:i}=e,{mixins:n,optionsCache:r,config:{optionMergeStrategies:a}}=s.appContext,o=r.get(e);let h;return o?h=o:!n.length&&!t&&!i?h=e:(h={},n.length&&n.forEach(l=>ch(h,l,a,!0)),ch(h,e,a)),Kt(e)&&r.set(e,h),h}function ch(s,e,t,i=!1){const{mixins:n,extends:r}=e;r&&ch(s,r,t,!0),n&&n.forEach(a=>ch(s,a,t,!0));for(const a in e)if(!(i&&a==="expose")){const o=H_[a]||t&&t[a];s[a]=o?o(s[a],e[a]):e[a]}return s}const H_={data:Jp,props:Qp,emits:Qp,methods:el,computed:el,beforeCreate:rs,created:rs,beforeMount:rs,mounted:rs,beforeUpdate:rs,updated:rs,beforeDestroy:rs,beforeUnmount:rs,destroyed:rs,unmounted:rs,activated:rs,deactivated:rs,errorCaptured:rs,serverPrefetch:rs,components:el,directives:el,watch:W_,provide:Jp,inject:j_};function Jp(s,e){return e?s?function(){return ki(_t(s)?s.call(this,this):s,_t(e)?e.call(this,this):e)}:e:s}function j_(s,e){return el(Df(s),Df(e))}function Df(s){if(ft(s)){const e={};for(let t=0;te==="modelValue"||e==="model-value"?s.modelModifiers:s[`${e}Modifiers`]||s[`${Ks(e)}Modifiers`]||s[`${Kr(e)}Modifiers`];function Z_(s,e,...t){if(s.isUnmounted)return;const i=s.vnode.props||ti;let n=t;const r=e.startsWith("update:"),a=r&&K_(i,e.slice(7));a&&(a.trim&&(n=t.map(c=>gi(c)?c.trim():c)),a.number&&(n=t.map(su)));let o,h=i[o=Bu(e)]||i[o=Bu(Ks(e))];!h&&r&&(h=i[o=Bu(Kr(e))]),h&&Ns(h,s,6,n);const l=i[o+"Once"];if(l){if(!s.emitted)s.emitted={};else if(s.emitted[o])return;s.emitted[o]=!0,Ns(l,s,6,n)}}const J_=new WeakMap;function hx(s,e,t=!1){const i=t?J_:e.emitsCache,n=i.get(s);if(n!==void 0)return n;const r=s.emits;let a={},o=!1;if(!_t(s)){const h=l=>{const c=hx(l,e,!0);c&&(o=!0,ki(a,c))};!t&&e.mixins.length&&e.mixins.forEach(h),s.extends&&h(s.extends),s.mixins&&s.mixins.forEach(h)}return!r&&!o?(Kt(s)&&i.set(s,null),null):(ft(r)?r.forEach(h=>a[h]=null):ki(a,r),Kt(s)&&i.set(s,a),a)}function fu(s,e){return!s||!Qh(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),qt(s,e[0].toLowerCase()+e.slice(1))||qt(s,Kr(e))||qt(s,e))}function eg(s){const{type:e,vnode:t,proxy:i,withProxy:n,propsOptions:[r],slots:a,attrs:o,emit:h,render:l,renderCache:c,props:u,data:d,setupState:f,ctx:p,inheritAttrs:m}=s,g=rh(s);let v,b;try{if(t.shapeFlag&4){const w=n||i,A=w;v=An(l.call(A,w,c,u,f,d,p)),b=o}else{const w=e;v=An(w.length>1?w(u,{attrs:o,slots:a,emit:h}):w(u,null)),b=e.props?o:Q_(o)}}catch(w){cr.length=0,ou(w,s,1),v=Ue(is)}let y=v;if(b&&m!==!1){const w=Object.keys(b),{shapeFlag:A}=y;w.length&&A&7&&(r&&w.some(eu)&&(b=eM(b,r)),y=jr(y,b,!1,!0))}if(t.dirs&&(y=jr(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(t.dirs):t.dirs),t.transition){const w=cu(y.type)&&oh(y)||y;Cl(w,t.transition)}return v=y,rh(g),v}const Q_=s=>{let e;for(const t in s)(t==="class"||t==="style"||Qh(t))&&((e||(e={}))[t]=s[t]);return e},eM=(s,e)=>{const t={};for(const i in s)(!eu(i)||!(i.slice(9)in e))&&(t[i]=s[i]);return t};function tM(s,e,t){const{props:i,children:n,component:r}=s,{props:a,children:o,patchFlag:h}=e,l=r.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&h>=0){if(h&1024)return!0;if(h&16)return i?tg(i,a,l):!!a;if(h&8){const c=e.dynamicProps;for(let u=0;uObject.create(dx),mx=s=>Object.getPrototypeOf(s)===dx;function sM(s,e,t,i=!1){const n={},r=fx();s.propsDefaults=Object.create(null),px(s,e,n,r);for(const a in s.propsOptions[0])a in n||(n[a]=void 0);t?s.props=i?n:o_(n):s.type.props?s.props=n:s.props=r,s.attrs=r}function nM(s,e,t,i){const{props:n,attrs:r,vnode:{patchFlag:a}}=s,o=$t(n),[h]=s.propsOptions;let l=!1;if((i||a>0)&&!(a&16)){if(a&8){const c=s.vnode.dynamicProps;for(let u=0;u{h=!0;const[d,f]=gx(u,e,!0);ki(a,d),f&&o.push(...f)};!t&&e.mixins.length&&e.mixins.forEach(c),s.extends&&c(s.extends),s.mixins&&s.mixins.forEach(c)}if(!r&&!h)return Kt(s)&&i.set(s,mo),mo;if(ft(r))for(let c=0;cs==="_"||s==="_ctx"||s==="$stable",lp=s=>ft(s)?s.map(An):[An(s)],aM=(s,e,t)=>{if(e._n)return e;const i=ah((...n)=>lp(e(...n)),t);return i._c=!1,i},vx=(s,e,t)=>{const i=s._ctx;for(const n in s){if(op(n))continue;const r=s[n];if(_t(r))e[n]=aM(n,r,i);else if(r!=null){const a=lp(r);e[n]=()=>a}}},yx=(s,e)=>{const t=lp(e);s.slots.default=()=>t},xx=(s,e,t)=>{for(const i in e)(t||!op(i))&&(s[i]=e[i])},oM=(s,e,t)=>{const i=s.slots=fx();if(s.vnode.shapeFlag&32){const n=e._;n?(xx(i,e,t),t&&Ty(i,"_",n,!0)):vx(e,i)}else e&&yx(s,e)},lM=(s,e,t)=>{const{vnode:i,slots:n}=s;let r=!0,a=ti;if(i.shapeFlag&32){const o=e._;o?t&&o===1?r=!1:xx(n,e,t):(r=!e.$stable,vx(e,n)),a=e}else e&&(yx(s,e),a={default:1});if(r)for(const o in n)!op(o)&&a[o]==null&&delete n[o]},fs=fM;function cM(s){return hM(s)}function hM(s,e){const t=nu();t.__VUE__=!0;const{insert:i,remove:n,patchProp:r,createElement:a,createText:o,createComment:h,setText:l,setElementText:c,parentNode:u,nextSibling:d,setScopeId:f=Fn,insertStaticContent:p}=s,m=(G,Z,z,j=null,te=null,he=null,ve=void 0,le=null,ye=!!Z.dynamicChildren)=>{if(G===Z)return;G&&!ma(G,Z)&&(j=me(G),q(G,te,he,!0),G=null),Z.patchFlag===-2&&(ye=!1,Z.dynamicChildren=null);const{type:ae,ref:Le,shapeFlag:Re}=Z;switch(ae){case mu:g(G,Z,z,j);break;case is:v(G,Z,z,j);break;case Xc:G==null&&b(Z,z,j,ve);break;case Ke:k(G,Z,z,j,te,he,ve,le,ye);break;default:Re&1?A(G,Z,z,j,te,he,ve,le,ye):Re&6?B(G,Z,z,j,te,he,ve,le,ye):(Re&64||Re&128)&&ae.process(G,Z,z,j,te,he,ve,le,ye,ge)}Le!=null&&te?ml(Le,G&&G.ref,he,Z||G,!Z):Le==null&&G&&G.ref!=null&&ml(G.ref,null,he,G,!0)},g=(G,Z,z,j)=>{if(G==null)i(Z.el=o(Z.children),z,j);else{const te=Z.el=G.el;Z.children!==G.children&&l(te,Z.children)}},v=(G,Z,z,j)=>{G==null?i(Z.el=h(Z.children||""),z,j):Z.el=G.el},b=(G,Z,z,j)=>{[G.el,G.anchor]=p(G.children,Z,z,j,G.el,G.anchor)},y=({el:G,anchor:Z},z,j)=>{let te;for(;G&&G!==Z;)te=d(G),i(G,z,j),G=te;i(Z,z,j)},w=({el:G,anchor:Z})=>{let z;for(;G&&G!==Z;)z=d(G),n(G),G=z;n(Z)},A=(G,Z,z,j,te,he,ve,le,ye)=>{if(Z.type==="svg"?ve="svg":Z.type==="math"&&(ve="mathml"),G==null)M(Z,z,j,te,he,ve,le,ye);else{const ae=G.el&&G.el._isVueCE?G.el:null;try{ae&&ae._beginPatch(),P(G,Z,te,he,ve,le,ye)}finally{ae&&ae._endPatch()}}},M=(G,Z,z,j,te,he,ve,le)=>{let ye,ae;const{props:Le,shapeFlag:Re,transition:Oe,dirs:tt}=G;if(ye=G.el=a(G.type,he,Le&&Le.is,Le),Re&8?c(ye,G.children):Re&16&&R(G.children,ye,null,j,te,Yu(G,he),ve,le),tt&&ea(G,null,j,"created"),_(ye,G,G.scopeId,ve,j),Le){for(const Pt in Le)Pt!=="value"&&!hl(Pt)&&r(ye,Pt,null,Le[Pt],he,j);"value"in Le&&r(ye,"value",null,Le.value,he),(ae=Le.onVnodeBeforeMount)&&dn(ae,j,G)}tt&&ea(G,null,j,"beforeMount");const St=uM(te,Oe);St&&Oe.beforeEnter(ye),i(ye,Z,z),((ae=Le&&Le.onVnodeMounted)||St||tt)&&fs(()=>{try{ae&&dn(ae,j,G),St&&Oe.enter(ye),tt&&ea(G,null,j,"mounted")}finally{}},te)},_=(G,Z,z,j,te)=>{if(z&&f(G,z),j)for(let he=0;he{for(let ae=ye;ae{const le=Z.el=G.el;let{patchFlag:ye,dynamicChildren:ae,dirs:Le}=Z;ye|=G.patchFlag&16;const Re=G.props||ti,Oe=Z.props||ti;let tt;if(z&&ta(z,!1),(tt=Oe.onVnodeBeforeUpdate)&&dn(tt,z,Z,G),Le&&ea(Z,G,z,"beforeUpdate"),z&&ta(z,!0),ae&&(!G.dynamicChildren||G.dynamicChildren.length!==ae.length)&&(ye=0,ve=!1,ae=null),(Re.innerHTML&&Oe.innerHTML==null||Re.textContent&&Oe.textContent==null)&&c(le,""),ae?F(G.dynamicChildren,ae,le,z,j,Yu(Z,te),he):ve||O(G,Z,le,null,z,j,Yu(Z,te),he,!1),ye>0){if(ye&16)I(le,Re,Oe,z,te);else if(ye&2&&Re.class!==Oe.class&&r(le,"class",null,Oe.class,te),ye&4&&r(le,"style",Re.style,Oe.style,te),ye&8){const St=Z.dynamicProps;for(let Pt=0;Pt{tt&&dn(tt,z,Z,G),Le&&ea(Z,G,z,"updated")},j)},F=(G,Z,z,j,te,he,ve)=>{for(let le=0;le{if(Z!==z){if(Z!==ti)for(const he in Z)!hl(he)&&!(he in z)&&r(G,he,Z[he],null,te,j);for(const he in z){if(hl(he))continue;const ve=z[he],le=Z[he];ve!==le&&he!=="value"&&r(G,he,le,ve,te,j)}"value"in z&&r(G,"value",Z.value,z.value,te)}},k=(G,Z,z,j,te,he,ve,le,ye)=>{const ae=Z.el=G?G.el:o(""),Le=Z.anchor=G?G.anchor:o("");let{patchFlag:Re,dynamicChildren:Oe,slotScopeIds:tt}=Z;tt&&(le=le?le.concat(tt):tt),G==null?(i(ae,z,j),i(Le,z,j),R(Z.children||[],z,Le,te,he,ve,le,ye)):Re>0&&Re&64&&Oe&&G.dynamicChildren&&G.dynamicChildren.length===Oe.length?(F(G.dynamicChildren,Oe,z,te,he,ve,le),(Z.key!=null||te&&Z===te.subTree)&&bx(G,Z,!0)):O(G,Z,z,Le,te,he,ve,le,ye)},B=(G,Z,z,j,te,he,ve,le,ye)=>{Z.slotScopeIds=le,G==null?Z.shapeFlag&512?te.ctx.activate(Z,z,j,ve,ye):D(Z,z,j,te,he,ve,ye):U(G,Z,ye)},D=(G,Z,z,j,te,he,ve)=>{const le=G.component=xM(G,j,te);if(hu(G)&&(le.ctx.renderer=ge),bM(le,!1,ve),le.asyncDep){if(te&&te.registerDep(le,L,ve),!G.el){const ye=le.subTree=Ue(is);v(null,ye,Z,z),G.placeholder=ye.el}}else L(le,G,Z,z,te,he,ve)},U=(G,Z,z)=>{const j=Z.component=G.component;if(tM(G,Z,z))if(j.asyncDep&&!j.asyncResolved){N(j,Z,z);return}else j.next=Z,j.update();else Z.el=G.el,j.vnode=Z},L=(G,Z,z,j,te,he,ve)=>{const le=()=>{if(G.isMounted){let{next:Re,bu:Oe,u:tt,parent:St,vnode:Pt}=G;{const Oi=wx(G);if(Oi){Re&&(Re.el=Pt.el,N(G,Re,ve)),Oi.asyncDep.then(()=>{fs(()=>{G.isUnmounted||ae()},te)});return}}let wt=Re,Rt;ta(G,!1),Re?(Re.el=Pt.el,N(G,Re,ve)):Re=Pt,Oe&&Uc(Oe),(Rt=Re.props&&Re.props.onVnodeBeforeUpdate)&&dn(Rt,St,Re,Pt),ta(G,!0);const Zt=eg(G),Fi=G.subTree;G.subTree=Zt,m(Fi,Zt,u(Fi.el),me(Fi),G,te,he),Re.el=Zt.el,wt===null&&iM(G,Zt.el),tt&&fs(tt,te),(Rt=Re.props&&Re.props.onVnodeUpdated)&&fs(()=>dn(Rt,St,Re,Pt),te)}else{let Re;const{el:Oe,props:tt}=Z,{bm:St,m:Pt,parent:wt,root:Rt,type:Zt}=G,Fi=vo(Z);ta(G,!1),St&&Uc(St),!Fi&&(Re=tt&&tt.onVnodeBeforeMount)&&dn(Re,wt,Z),ta(G,!0);{Rt.ce&&Rt.ce._hasShadowRoot()&&Rt.ce._injectChildStyle(Zt,G.parent?G.parent.type:void 0);const Oi=G.subTree=eg(G);m(null,Oi,z,j,G,te,he),Z.el=Oi.el}if(Pt&&fs(Pt,te),!Fi&&(Re=tt&&tt.onVnodeMounted)){const Oi=Z;fs(()=>dn(Re,wt,Oi),te)}(Z.shapeFlag&256||wt&&vo(wt.vnode)&&wt.vnode.shapeFlag&256)&&G.a&&fs(G.a,te),G.isMounted=!0,Z=z=j=null}};G.scope.on();const ye=G.effect=new ky(le);G.scope.off();const ae=G.update=ye.run.bind(ye),Le=G.job=ye.runIfDirty.bind(ye);Le.i=G,Le.id=G.uid,ye.scheduler=()=>rp(Le),ta(G,!0),ae()},N=(G,Z,z)=>{Z.component=G;const j=G.vnode.props;G.vnode=Z,G.next=null,nM(G,Z.props,j,z),lM(G,Z.children,z),ur(),Wp(G),dr()},O=(G,Z,z,j,te,he,ve,le,ye=!1)=>{const ae=G&&G.children,Le=G?G.shapeFlag:0,Re=Z.children,{patchFlag:Oe,shapeFlag:tt}=Z;if(Oe>0){if(Oe&128){E(ae,Re,z,j,te,he,ve,le,ye);return}else if(Oe&256){X(ae,Re,z,j,te,he,ve,le,ye);return}}tt&8?(Le&16&&fe(ae,te,he),Re!==ae&&c(z,Re)):Le&16?tt&16?E(ae,Re,z,j,te,he,ve,le,ye):fe(ae,te,he,!0):(Le&8&&c(z,""),tt&16&&R(Re,z,j,te,he,ve,le,ye))},X=(G,Z,z,j,te,he,ve,le,ye)=>{G=G||mo,Z=Z||mo;const ae=G.length,Le=Z.length,Re=Math.min(ae,Le);let Oe;for(Oe=0;OeLe?fe(G,te,he,!0,!1,Re):R(Z,z,j,te,he,ve,le,ye,Re)},E=(G,Z,z,j,te,he,ve,le,ye)=>{let ae=0;const Le=Z.length;let Re=G.length-1,Oe=Le-1;for(;ae<=Re&&ae<=Oe;){const tt=G[ae],St=Z[ae]=ye?Zn(Z[ae]):An(Z[ae]);if(ma(tt,St))m(tt,St,z,null,te,he,ve,le,ye);else break;ae++}for(;ae<=Re&&ae<=Oe;){const tt=G[Re],St=Z[Oe]=ye?Zn(Z[Oe]):An(Z[Oe]);if(ma(tt,St))m(tt,St,z,null,te,he,ve,le,ye);else break;Re--,Oe--}if(ae>Re){if(ae<=Oe){const tt=Oe+1,St=ttOe)for(;ae<=Re;)q(G[ae],te,he,!0),ae++;else{const tt=ae,St=ae,Pt=new Map;for(ae=St;ae<=Oe;ae++){const yi=Z[ae]=ye?Zn(Z[ae]):An(Z[ae]);yi.key!=null&&Pt.set(yi.key,ae)}let wt,Rt=0;const Zt=Oe-St+1;let Fi=!1,Oi=0;const Wi=new Array(Zt);for(ae=0;ae=Zt){q(yi,te,he,!0);continue}let ce;if(yi.key!=null)ce=Pt.get(yi.key);else for(wt=St;wt<=Oe;wt++)if(Wi[wt-St]===0&&ma(yi,Z[wt])){ce=wt;break}ce===void 0?q(yi,te,he,!0):(Wi[ce-St]=ae+1,ce>=Oi?Oi=ce:Fi=!0,m(yi,Z[ce],z,null,te,he,ve,le,ye),Rt++)}const on=Fi?dM(Wi):mo;for(wt=on.length-1,ae=Zt-1;ae>=0;ae--){const yi=St+ae,ce=Z[yi],de=Z[yi+1],kt=yi+1{const{el:he,type:ve,transition:le,children:ye,shapeFlag:ae}=G;if(ae&6){V(G.component.subTree,Z,z,j);return}if(ae&128){G.suspense.move(Z,z,j);return}if(ae&64){ve.move(G,Z,z,ge);return}if(ve===Ke){i(he,Z,z);for(let Re=0;Rele.enter(he),te));else{const{leave:Re,delayLeave:Oe,afterLeave:tt}=le,St=()=>{G.ctx.isUnmounted?n(he):i(he,Z,z)},Pt=()=>{const wt=he._isLeaving||!!he[Os];he._isLeaving&&he[Os](!0),le.persisted&&!wt?St():Re(he,()=>{St(),tt&&tt()})};Oe?Oe(he,St,Pt):Pt()}else i(he,Z,z)},q=(G,Z,z,j=!1,te=!1)=>{const{type:he,props:ve,ref:le,children:ye,dynamicChildren:ae,shapeFlag:Le,patchFlag:Re,dirs:Oe,cacheIndex:tt,memo:St}=G;if(Re===-2&&(te=!1),le!=null&&(ur(),ml(le,null,z,G,!0),dr()),tt!=null&&(Z.renderCache[tt]=void 0),Le&256){Z.ctx.deactivate(G);return}const Pt=Le&1&&Oe,wt=!vo(G);let Rt;if(wt&&(Rt=ve&&ve.onVnodeBeforeUnmount)&&dn(Rt,Z,G),Le&6)K(G.component,z,j);else{if(Le&128){G.suspense.unmount(z,j);return}Pt&&ea(G,null,Z,"beforeUnmount"),Le&64?G.type.remove(G,Z,z,ge,j):ae&&!ae.hasOnce&&(he!==Ke||Re>0&&Re&64)?fe(ae,Z,z,!1,!0):(he===Ke&&Re&384||!te&&Le&16)&&fe(ye,Z,z),j&&W(G)}const Zt=St!=null&&tt==null;(wt&&(Rt=ve&&ve.onVnodeUnmounted)||Pt||Zt)&&fs(()=>{Rt&&dn(Rt,Z,G),Pt&&ea(G,null,Z,"unmounted"),Zt&&(G.el=null)},z)},W=G=>{const{type:Z,el:z,anchor:j,transition:te}=G;if(Z===Ke){J(z,j);return}if(Z===Xc){w(G);return}const he=()=>{n(z),te&&!te.persisted&&te.afterLeave&&te.afterLeave()};if(G.shapeFlag&1&&te&&!te.persisted){const{leave:ve,delayLeave:le}=te,ye=()=>ve(z,he);le?le(G.el,he,ye):ye()}else he()},J=(G,Z)=>{let z;for(;G!==Z;)z=d(G),n(G),G=z;n(Z)},K=(G,Z,z)=>{const{bum:j,scope:te,job:he,subTree:ve,um:le,m:ye,a:ae}=G;sg(ye),sg(ae),j&&Uc(j),te.stop(),he&&(he.flags|=8,q(ve,G,Z,z)),le&&fs(le,Z),fs(()=>{G.isUnmounted=!0},Z)},fe=(G,Z,z,j=!1,te=!1,he=0)=>{for(let ve=he;ve{if(G.shapeFlag&6)return me(G.component.subTree);if(G.shapeFlag&128)return G.suspense.next();const Z=d(G.anchor||G.el),z=Z&&Z[A_];return z?d(z):Z};let we=!1;const Ee=(G,Z,z)=>{let j;G==null?Z._vnode&&(q(Z._vnode,null,null,!0),j=Z._vnode.component):m(Z._vnode||null,G,Z,null,null,null,z),Z._vnode=G,we||(we=!0,Wp(j),qy(),we=!1)},ge={p:m,um:q,m:V,r:W,mt:D,mc:R,pc:O,pbc:F,n:me,o:s};return{render:Ee,hydrate:void 0,createApp:q_(Ee)}}function Yu({type:s,props:e},t){return t==="svg"&&s==="foreignObject"||t==="mathml"&&s==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:t}function ta({effect:s,job:e},t){t?(s.flags|=32,e.flags|=4):(s.flags&=-33,e.flags&=-5)}function uM(s,e){return(!s||s&&!s.pendingBranch)&&e&&!e.persisted}function bx(s,e,t=!1){const i=s.children,n=e.children;if(ft(i)&&ft(n))for(let r=0;r>1,s[t[o]]0&&(e[i]=t[r-1]),t[r]=i)}}for(r=t.length,a=t[r-1];r-- >0;)t[r]=a,a=e[a];return t}function wx(s){const e=s.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:wx(e)}function sg(s){if(s)for(let e=0;es.__isSuspense;function fM(s,e){e&&e.pendingBranch?ft(s)?e.effects.push(...s):e.effects.push(s):b_(s)}const Ke=Symbol.for("v-fgt"),mu=Symbol.for("v-txt"),is=Symbol.for("v-cmt"),Xc=Symbol.for("v-stc"),cr=[];let Ms=null;function ie(s=!1){cr.push(Ms=s?null:[])}function cp(){cr.pop(),Ms=cr[cr.length-1]||null}let Il=1;function hh(s,e=!1){Il+=s,s<0&&Ms&&e&&(Ms.hasOnce=!0)}function Mx(s){return s.dynamicChildren=Il>0?Ms||mo:null,cp(),Il>0&&Ms&&Ms.push(s),s}function oe(s,e,t,i,n,r){return Mx(T(s,e,t,i,n,r,!0))}function Qt(s,e,t,i,n){return Mx(Ue(s,e,t,i,n,!0))}function Rl(s){return s?s.__v_isVNode===!0:!1}function ma(s,e){return s.type===e.type&&s.key===e.key}const Tx=({key:s})=>s??null,Vc=({ref:s,ref_key:e,ref_for:t})=>(typeof s=="number"&&(s=""+s),s!=null?gi(s)||Si(s)||_t(s)?{i:ss,r:s,k:e,f:!!t}:s:null);function T(s,e=null,t=null,i=0,n=null,r=s===Ke?0:1,a=!1,o=!1){const h={__v_isVNode:!0,__v_skip:!0,type:s,props:e,key:e&&Tx(e),ref:e&&Vc(e),scopeId:Zy,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ss};return o?(uh(h,t),r&128&&s.normalize(h)):t&&(h.shapeFlag|=gi(t)?8:16),Il>0&&!a&&Ms&&(h.patchFlag>0||r&6)&&h.patchFlag!==32&&Ms.push(h),h}const Ue=mM;function mM(s,e=null,t=null,i=0,n=null,r=!1){if((!s||s===X_)&&(s=is),Rl(s)){const o=jr(s,e,!0);return t&&uh(o,t),Il>0&&!r&&Ms&&(o.shapeFlag&6?Ms[Ms.indexOf(s)]=o:Ms.push(o)),o.patchFlag=-2,o}if(MM(s)&&(s=s.__vccOpts),e){e=pM(e);let{class:o,style:h}=e;o&&!gi(o)&&(e.class=ot(o)),Kt(h)&&(au(h)&&!ft(h)&&(h=ki({},h)),e.style=Li(h))}const a=gi(s)?1:_x(s)?128:cu(s)?64:Kt(s)?4:_t(s)?2:0;return T(s,e,t,i,n,a,r,!0)}function pM(s){return s?au(s)||mx(s)?ki({},s):s:null}function jr(s,e,t=!1,i=!1){const{props:n,ref:r,patchFlag:a,children:o,transition:h}=s,l=e?gM(n||{},e):n,c={__v_isVNode:!0,__v_skip:!0,type:s.type,props:l,key:l&&Tx(l),ref:e&&e.ref?t&&r?ft(r)?r.concat(Vc(e)):[r,Vc(e)]:Vc(e):r,scopeId:s.scopeId,slotScopeIds:s.slotScopeIds,children:o,target:s.target,targetStart:s.targetStart,targetAnchor:s.targetAnchor,staticCount:s.staticCount,shapeFlag:s.shapeFlag,patchFlag:e&&s.type!==Ke?a===-1?16:a|16:a,dynamicProps:s.dynamicProps,dynamicChildren:s.dynamicChildren,appContext:s.appContext,dirs:s.dirs,transition:h,component:s.component,suspense:s.suspense,ssContent:s.ssContent&&jr(s.ssContent),ssFallback:s.ssFallback&&jr(s.ssFallback),placeholder:s.placeholder,el:s.el,anchor:s.anchor,ctx:s.ctx,ce:s.ce};return h&&i&&Cl(c,h.clone(c)),c}function ri(s=" ",e=0){return Ue(mu,null,s,e)}function io(s,e){const t=Ue(Xc,null,s);return t.staticCount=e,t}function Xe(s="",e=!1){return e?(ie(),Qt(is,null,s)):Ue(is,null,s)}function An(s){return s==null||typeof s=="boolean"?Ue(is):ft(s)?Ue(Ke,null,s.slice()):Rl(s)?Zn(s):Ue(mu,null,String(s))}function Zn(s){return s.el===null&&s.patchFlag!==-1||s.memo?s:jr(s)}function uh(s,e){let t=0;const{shapeFlag:i}=s;if(e==null)e=null;else if(ft(e))t=16;else if(typeof e=="object")if(i&65){const n=e.default;n&&(n._c&&(n._d=!1),uh(s,n()),n._c&&(n._d=!0));return}else{t=32;const n=e._;!n&&!mx(e)?e._ctx=ss:n===3&&ss&&(ss.slots._===1?e._=1:(e._=2,s.patchFlag|=1024))}else if(_t(e)){if(i&65){uh(s,{default:e});return}e={default:e,_ctx:ss},t=32}else e=String(e),i&64?(t=16,e=[ri(e)]):t=8;s.children=e,s.shapeFlag|=t}function gM(...s){const e={};for(let t=0;tls||ss;let dh,Pl;{const s=nu(),e=(t,i)=>{let n;return(n=s[t])||(n=s[t]=[]),n.push(i),r=>{n.length>1?n.forEach(a=>a(r)):n[0](r)}};dh=e("__VUE_INSTANCE_SETTERS__",t=>ls=t),Pl=e("__VUE_SSR_SETTERS__",t=>kl=t)}const Hl=s=>{const e=ls;return dh(s),s.scope.on(),()=>{s.scope.off(),dh(e)}},ng=()=>{ls&&ls.scope.off(),dh(null)};function Ax(s){return s.vnode.shapeFlag&4}let kl=!1;function bM(s,e=!1,t=!1){e&&Pl(e);const{props:i,children:n}=s.vnode,r=Ax(s);sM(s,i,r,e),oM(s,n,t||e);const a=r?wM(s,e):void 0;return e&&Pl(!1),a}function wM(s,e){const t=s.type;s.accessCache=Object.create(null),s.proxy=new Proxy(s.ctx,Y_);const{setup:i}=t;if(i){ur();const n=s.setupContext=i.length>1?_M(s):null,r=Hl(s),a=$l(i,s,0,[s.props,n]),o=wy(a);if(dr(),r(),(o||s.sp)&&!vo(s)&&nx(s),o){if(a.then(ng,ng),e)return a.then(h=>{Pl(!0);try{rg(s,h,e)}finally{Pl(!1)}}).catch(h=>{ou(h,s,0)});s.asyncDep=a}else rg(s,a)}else Ex(s)}function rg(s,e,t){_t(e)?s.type.__ssrInlineRender?s.ssrRender=e:s.render=e:Kt(e)&&(s.setupState=jy(e)),Ex(s)}function Ex(s,e,t){const i=s.type;s.render||(s.render=i.render||Fn);{const n=Hl(s);ur();try{$_(s)}finally{dr(),n()}}}const SM={get(s,e){return es(s,"get",""),s[e]}};function _M(s){const e=t=>{s.exposed=t||{}};return{attrs:new Proxy(s.attrs,SM),slots:s.slots,emit:s.emit,expose:e}}function pu(s){return s.exposed?s.exposeProxy||(s.exposeProxy=new Proxy(jy(Nr(s.exposed)),{get(e,t){if(t in e)return e[t];if(t in pl)return pl[t](s)},has(e,t){return t in e||t in pl}})):s.proxy}function MM(s){return _t(s)&&"__vccOpts"in s}const gt=(s,e)=>p_(s,e,kl);function TM(s,e,t){try{hh(-1);const i=arguments.length;return i===2?Kt(e)&&!ft(e)?Rl(e)?Ue(s,null,[e]):Ue(s,e):Ue(s,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&Rl(t)&&(t=[t]),Ue(s,e,t))}finally{hh(1)}}const AM="3.5.41";/** +**/function Yl(s,e,t,i){try{return i?s(...i):s()}catch(n){ou(n,e,t)}}function Vs(s,e,t,i){if(Mt(s)){const n=Yl(s,e,t,i);return n&&by(n)&&n.catch(r=>{ou(r,e,t)}),n}if(ft(s)){const n=[];for(let r=0;r>>1,n=ls[i],r=Al(n);r=Al(t)?ls.push(s):ls.splice(yM(e),0,s),s.flags|=1,Wy()}}function Wy(){nh||(nh=jy.then(qy))}function xM(s){if(!ft(s))Er&&s.id===-1?Er.splice(to+1,0,s):s.flags&1||(po.push(s),s.flags|=1);else for(let e=0;eAl(t)-Al(i));if(po.length=0,Er){for(let t=0;ts.id==null?s.flags&2?-1:1/0:s.id;function qy(s){try{for(bn=0;bn{i._d&&hh(-1);const r=rh(e),a=hr.length;let o;try{o=s(...n)}finally{for(let h=hr.length;h>a;h--)lp();rh(r),i._d&&hh(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function ye(s,e){if(is===null)return s;const t=mu(is),i=s.dirs||(s.dirs=[]);for(let n=0;n1)return t&&Mt(e)?e.call(i&&i.proxy):e}}function wM(){return!!(cp()||Aa)}const SM=Symbol.for("v-scx"),MM=()=>dl(SM);function Jo(s,e){return rp(s,null,e)}function fs(s,e,t){return rp(s,e,t)}function rp(s,e,t=ti){const{immediate:i,deep:n,flush:r,once:a}=t,o=Oi({},t),h=e&&i||!e&&r!=="post";let l;if(Pl){if(r==="sync"){const f=MM();l=f.__watcherHandles||(f.__watcherHandles=[])}else if(!h){const f=()=>{};return f.stop=On,f.resume=On,f.pause=On,f}}const c=cs;o.call=(f,p,m)=>Vs(f,c,p,m);let u=!1;r==="post"?o.scheduler=f=>{ms(f,c&&c.suspense)}:r!=="sync"&&(u=!0,o.scheduler=(f,p)=>{p?f():np(f)}),o.augmentJob=f=>{e&&(f.flags|=4),u&&(f.flags|=2,c&&(f.id=c.uid,f.i=c))};const d=gM(s,e,o);return Pl&&(l?l.push(d):h&&d()),d}function _M(s,e,t){const i=this.proxy,n=vi(s)?s.includes(".")?Zy(i,s):()=>i[s]:s.bind(i,i);let r;Mt(e)?r=e:(r=e.handler,t=e);const a=Hl(this),o=rp(n,r.bind(i),t);return a(),o}function Zy(s,e){const t=e.split(".");return()=>{let i=s;for(let n=0;ns.__isTeleport,Ds=Symbol("_leaveCb"),$o=Symbol("_enterCb");function AM(){const s={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Kr(()=>{s.isMounted=!0}),$l(()=>{s.isUnmounting=!0}),s}const Fs=[Function,Array],Jy={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Fs,onEnter:Fs,onAfterEnter:Fs,onEnterCancelled:Fs,onBeforeLeave:Fs,onLeave:Fs,onAfterLeave:Fs,onLeaveCancelled:Fs,onBeforeAppear:Fs,onAppear:Fs,onAfterAppear:Fs,onAppearCancelled:Fs},Qy=s=>{const e=s.subTree;return e.component?Qy(e.component):e},EM={name:"BaseTransition",props:Jy,setup(s,{slots:e}){const t=cp(),i=AM();return()=>{const n=e.default&&ix(e.default(),!0),r=n&&n.length?ex(n):t.subTree?Ve():void 0;if(!r)return;const a=$t(s),{mode:o}=a;if(i.isLeaving)return Uu(r);const h=oh(r);if(!h)return Uu(r);let l=Ff(h,a,i,t,u=>l=u);h.type!==ts&&El(h,l);let c=t.subTree&&oh(t.subTree);if(c&&c.type!==ts&&!ga(c,h)&&Qy(t).type!==ts){let u=Ff(c,a,i,t);if(El(c,u),o==="out-in"&&h.type!==ts)return i.isLeaving=!0,u.afterLeave=()=>{i.isLeaving=!1,t.job.flags&8||t.update(),delete u.afterLeave,c=void 0},Uu(r);o==="in-out"&&h.type!==ts?u.delayLeave=(d,f,p)=>{const m=tx(i,c);m[String(c.key)]=c,d[Ds]=()=>{f(),d[Ds]=void 0,delete l.delayedLeave,c=void 0},l.delayedLeave=()=>{p(),delete l.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return r}}};function ex(s){let e=s[0];if(s.length>1){for(const t of s)if(t.type!==ts){e=t;break}}return e}const CM=EM;function tx(s,e){const{leavingVNodes:t}=s;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function Ff(s,e,t,i,n){const{appear:r,mode:a,persisted:o=!1,onBeforeEnter:h,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:m,onBeforeAppear:g,onAppear:v,onAfterAppear:b,onAppearCancelled:y}=e,w=String(s.key),A=tx(t,s),T=(P,F)=>{P&&Vs(P,i,9,F)},_=(P,F)=>{const I=F[1];T(P,F),ft(P)?P.every(k=>k.length<=1)&&I():P.length<=1&&I()},R={mode:a,persisted:o,beforeEnter(P){let F=h;if(!t.isMounted)if(r)F=g||h;else return;P[Ds]&&P[Ds](!0);const I=A[w];I&&ga(s,I)&&I.el[Ds]&&I.el[Ds](),T(F,[P])},enter(P){if(A[w]===s)return;let F=l,I=c,k=u;if(!t.isMounted)if(r)F=v||l,I=b||c,k=y||u;else return;let B=!1;P[$o]=U=>{B||(B=!0,U?T(k,[P]):T(I,[P]),R.delayedLeave&&R.delayedLeave(),P[$o]=void 0)};const D=P[$o].bind(null,!1);F?_(F,[P,D]):D()},leave(P,F){const I=String(s.key);if(P[$o]&&P[$o](!0),t.isUnmounting)return F();T(d,[P]);let k=!1;P[Ds]=D=>{k||(k=!0,F(),D?T(m,[P]):T(p,[P]),P[Ds]=void 0,A[I]===s&&delete A[I])};const B=P[Ds].bind(null,!1);A[I]=s,f?_(f,[P,B]):B()},clone(P){const F=Ff(P,e,t,i,n);return n&&n(F),F}};return R}function Uu(s){if(hu(s))return s=Hr(s),s.children=null,s}function oh(s){if(!hu(s))return cu(s.type)&&s.children?ex(s.children):s;if(s.component)return s.component.subTree;const{shapeFlag:e,children:t}=s;if(t){if(e&16)return t[0];if(e&32&&Mt(t.default))return t.default()}}function El(s,e){if(s.shapeFlag&6&&s.component){s.transition=e;const t=s.component.subTree;El(cu(t.type)&&oh(t)||t,e)}else s.shapeFlag&128?(s.ssContent.transition=e.clone(s.ssContent),s.ssFallback.transition=e.clone(s.ssFallback)):s.transition=e}function ix(s,e=!1,t){let i=[],n=0;for(let r=0;r1)for(let r=0;rfl(m,e&&(ft(e)?e[g]:e),t,i,n));return}if(go(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&fl(s,e,t,i.component.subTree);return}const r=i.shapeFlag&4?mu(i.component):i.el,a=n?null:r,{i:o,r:h}=s,l=e&&e.r,c=o.refs===ti?o.refs={}:o.refs,u=o.setupState,d=$t(u),f=u===ti?xy:m=>Wp(c,m)?!1:zt(d,m),p=(m,g)=>!(g&&Wp(c,g));if(l!=null&&l!==h){if(zp(e),vi(l))c[l]=null,f(l)&&(u[l]=null);else if(Si(l)){const m=e;p(l,m.k)&&(l.value=null),m.k&&(c[m.k]=null)}}if(Mt(h))Yl(h,o,12,[a,c]);else{const m=vi(h),g=Si(h);if(m||g){const v=()=>{if(s.f){const b=m?f(h)?u[h]:c[h]:p()||!s.k?h.value:c[s.k];if(n)ft(b)&&Km(b,r);else if(ft(b))b.includes(r)||b.push(r);else if(m)c[h]=[r],f(h)&&(u[h]=c[h]);else{const y=[r];p(h,s.k)&&(h.value=y),s.k&&(c[s.k]=y)}}else m?(c[h]=a,f(h)&&(u[h]=a)):g&&(p(h,s.k)&&(h.value=a),s.k&&(c[s.k]=a))};if(a){const b=()=>{v(),lh.delete(s)};b.id=-1,lh.set(s,b),ms(b,t)}else zp(s),v()}}}function zp(s){const e=lh.get(s);e&&(e.flags|=8,lh.delete(s))}nu().requestIdleCallback;nu().cancelIdleCallback;const go=s=>!!s.type.__asyncLoader,hu=s=>s.type.__isKeepAlive;function IM(s,e){nx(s,"a",e)}function RM(s,e){nx(s,"da",e)}function nx(s,e,t=cs){const i=s.__wdc||(s.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return s()});if(uu(e,i,t),t){let n=t.parent;for(;n&&n.parent;)hu(n.parent.vnode)&&PM(i,e,t,n),n=n.parent}}function PM(s,e,t,i){const n=uu(e,s,i,!0);Gl(()=>{Km(i[e],n)},t)}function uu(s,e,t=cs,i=!1){if(t){const n=t[s]||(t[s]=[]),r=e.__weh||(e.__weh=(...a)=>{dr();const o=Hl(t),h=Vs(e,t,s,a);return o(),fr(),h});return i?n.unshift(r):n.push(r),r}}const xr=s=>(e,t=cs)=>{(!Pl||s==="sp")&&uu(s,(...i)=>e(...i),t)},kM=xr("bm"),Kr=xr("m"),FM=xr("bu"),OM=xr("u"),$l=xr("bum"),Gl=xr("um"),BM=xr("sp"),LM=xr("rtg"),DM=xr("rtc");function NM(s,e=cs){uu("ec",s,e)}const UM=Symbol.for("v-ndc");function ci(s,e,t,i){let n;const r=t,a=ft(s);if(a||vi(s)){const o=a&&cr(s);let h=!1,l=!1;o&&(h=!Es(s),l=mr(s),s=ru(s)),n=new Array(s.length);for(let c=0,u=s.length;ce(o,h,void 0,r));else{const o=Object.keys(s);n=new Array(o.length);for(let h=0,l=o.length;h0;return ie(),Jt(Ke,null,[Ue("slot",l,i)],c?-2:64)}let a=s[e];a&&a._c&&(a._d=!1);const o=hr.length;ie();let h;try{const l=a&&rx(a(t)),c=t.key||r||l&&l.key;h=Jt(Ke,{key:(c&&!Cs(c)?c:`_${e}`)+(!l&&i?"_fb":"")},l||(i?i():[]),l&&s._===1?64:-2)}catch(l){for(let c=hr.length;c>o;c--)lp();throw l}finally{a&&a._c&&(a._d=!0)}return h}function rx(s){return s.some(e=>Il(e)?!(e.type===ts||e.type===Ke&&!rx(e.children)):!0)?s:null}const Of=s=>s?Tx(s)?mu(s):Of(s.parent):null,ml=Oi(Object.create(null),{$:s=>s,$el:s=>s.vnode.el,$data:s=>s.data,$props:s=>s.props,$attrs:s=>s.attrs,$slots:s=>s.slots,$refs:s=>s.refs,$parent:s=>Of(s.parent),$root:s=>Of(s.root),$host:s=>s.ce,$emit:s=>s.emit,$options:s=>ox(s),$forceUpdate:s=>s.f||(s.f=()=>{np(s.update)}),$nextTick:s=>s.n||(s.n=lu.bind(s.proxy)),$watch:s=>_M.bind(s)}),Xu=(s,e)=>s!==ti&&!s.__isScriptSetup&&zt(s,e),VM={get({_:s},e){if(e==="__v_skip")return!0;const{ctx:t,setupState:i,data:n,props:r,accessCache:a,type:o,appContext:h}=s;if(e[0]!=="$"){const d=a[e];if(d!==void 0)switch(d){case 1:return i[e];case 2:return n[e];case 4:return t[e];case 3:return r[e]}else{if(Xu(i,e))return a[e]=1,i[e];if(n!==ti&&zt(n,e))return a[e]=2,n[e];if(zt(r,e))return a[e]=3,r[e];if(t!==ti&&zt(t,e))return a[e]=4,t[e];Bf&&(a[e]=0)}}const l=ml[e];let c,u;if(l)return e==="$attrs"&&Qi(s.attrs,"get",""),l(s);if((c=o.__cssModules)&&(c=c[e]))return c;if(t!==ti&&zt(t,e))return a[e]=4,t[e];if(u=h.config.globalProperties,zt(u,e))return u[e]},set({_:s},e,t){const{data:i,setupState:n,ctx:r}=s;return Xu(n,e)?(n[e]=t,!0):i!==ti&&zt(i,e)?(i[e]=t,!0):zt(s.props,e)||e[0]==="$"&&e.slice(1)in s?!1:(r[e]=t,!0)},has({_:{data:s,setupState:e,accessCache:t,ctx:i,appContext:n,props:r,type:a}},o){let h;return!!(t[o]||s!==ti&&o[0]!=="$"&&zt(s,o)||Xu(e,o)||zt(r,o)||zt(i,o)||zt(ml,o)||zt(n.config.globalProperties,o)||(h=a.__cssModules)&&h[o])},defineProperty(s,e,t){return t.get!=null?s._.accessCache[e]=0:zt(t,"value")&&this.set(s,e,t.value,null),Reflect.defineProperty(s,e,t)}};function qp(s){return ft(s)?s.reduce((e,t)=>(e[t]=null,e),{}):s}let Bf=!0;function YM(s){const e=ox(s),t=s.proxy,i=s.ctx;Bf=!1,e.beforeCreate&&Kp(e.beforeCreate,s,"bc");const{data:n,computed:r,methods:a,watch:o,provide:h,inject:l,created:c,beforeMount:u,mounted:d,beforeUpdate:f,updated:p,activated:m,deactivated:g,beforeDestroy:v,beforeUnmount:b,destroyed:y,unmounted:w,render:A,renderTracked:T,renderTriggered:_,errorCaptured:R,serverPrefetch:P,expose:F,inheritAttrs:I,components:k,directives:B,filters:D}=e;if(l&&$M(l,i,null),a)for(const N in a){const O=a[N];Mt(O)&&(i[N]=O.bind(t))}if(n){const N=n.call(t,t);qt(N)&&(s.data=Da(N))}if(Bf=!0,r)for(const N in r){const O=r[N],X=Mt(O)?O.bind(t,t):Mt(O.get)?O.get.bind(t,t):On,E=!Mt(O)&&Mt(O.set)?O.set.bind(t):On,V=vt({get:X,set:E});Object.defineProperty(i,N,{enumerable:!0,configurable:!0,get:()=>V.value,set:q=>V.value=q})}if(o)for(const N in o)ax(o[N],i,t,N);if(h){const N=Mt(h)?h.call(t):h;Reflect.ownKeys(N).forEach(O=>{bM(O,N[O])})}c&&Kp(c,s,"c");function L(N,O){ft(O)?O.forEach(X=>N(X.bind(t))):O&&N(O.bind(t))}if(L(kM,u),L(Kr,d),L(FM,f),L(OM,p),L(IM,m),L(RM,g),L(NM,R),L(DM,T),L(LM,_),L($l,b),L(Gl,w),L(BM,P),ft(F))if(F.length){const N=s.exposed||(s.exposed={});F.forEach(O=>{Object.defineProperty(N,O,{get:()=>t[O],set:X=>t[O]=X,enumerable:!0})})}else s.exposed||(s.exposed={});A&&s.render===On&&(s.render=A),I!=null&&(s.inheritAttrs=I),k&&(s.components=k),B&&(s.directives=B),P&&sx(s)}function $M(s,e,t=On){ft(s)&&(s=Lf(s));for(const i in s){const n=s[i];let r;qt(n)?"default"in n?r=dl(n.from||i,n.default,!0):r=dl(n.from||i):r=dl(n),Si(r)?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):e[i]=r}}function Kp(s,e,t){Vs(ft(s)?s.map(i=>i.bind(e.proxy)):s.bind(e.proxy),e,t)}function ax(s,e,t,i){let n=i.includes(".")?Zy(t,i):()=>t[i];if(vi(s)){const r=e[s];Mt(r)&&fs(n,r)}else if(Mt(s))fs(n,s.bind(t));else if(qt(s))if(ft(s))s.forEach(r=>ax(r,e,t,i));else{const r=Mt(s.handler)?s.handler.bind(t):e[s.handler];Mt(r)&&fs(n,r,s)}}function ox(s){const e=s.type,{mixins:t,extends:i}=e,{mixins:n,optionsCache:r,config:{optionMergeStrategies:a}}=s.appContext,o=r.get(e);let h;return o?h=o:!n.length&&!t&&!i?h=e:(h={},n.length&&n.forEach(l=>ch(h,l,a,!0)),ch(h,e,a)),qt(e)&&r.set(e,h),h}function ch(s,e,t,i=!1){const{mixins:n,extends:r}=e;r&&ch(s,r,t,!0),n&&n.forEach(a=>ch(s,a,t,!0));for(const a in e)if(!(i&&a==="expose")){const o=GM[a]||t&&t[a];s[a]=o?o(s[a],e[a]):e[a]}return s}const GM={data:Zp,props:Jp,emits:Jp,methods:Qo,computed:Qo,beforeCreate:as,created:as,beforeMount:as,mounted:as,beforeUpdate:as,updated:as,beforeDestroy:as,beforeUnmount:as,destroyed:as,unmounted:as,activated:as,deactivated:as,errorCaptured:as,serverPrefetch:as,components:Qo,directives:Qo,watch:jM,provide:Zp,inject:HM};function Zp(s,e){return e?s?function(){return Oi(Mt(s)?s.call(this,this):s,Mt(e)?e.call(this,this):e)}:e:s}function HM(s,e){return Qo(Lf(s),Lf(e))}function Lf(s){if(ft(s)){const e={};for(let t=0;te==="modelValue"||e==="model-value"?s.modelModifiers:s[`${e}Modifiers`]||s[`${nn(e)}Modifiers`]||s[`${qr(e)}Modifiers`];function KM(s,e,...t){if(s.isUnmounted)return;const i=s.vnode.props||ti;let n=t;const r=e.startsWith("update:"),a=r&&qM(i,e.slice(7));a&&(a.trim&&(n=t.map(c=>vi(c)?c.trim():c)),a.number&&(n=t.map(su)));let o,h=i[o=Ou(e)]||i[o=Ou(nn(e))];!h&&r&&(h=i[o=Ou(qr(e))]),h&&Vs(h,s,6,n);const l=i[o+"Once"];if(l){if(!s.emitted)s.emitted={};else if(s.emitted[o])return;s.emitted[o]=!0,Vs(l,s,6,n)}}const ZM=new WeakMap;function cx(s,e,t=!1){const i=t?ZM:e.emitsCache,n=i.get(s);if(n!==void 0)return n;const r=s.emits;let a={},o=!1;if(!Mt(s)){const h=l=>{const c=cx(l,e,!0);c&&(o=!0,Oi(a,c))};!t&&e.mixins.length&&e.mixins.forEach(h),s.extends&&h(s.extends),s.mixins&&s.mixins.forEach(h)}return!r&&!o?(qt(s)&&i.set(s,null),null):(ft(r)?r.forEach(h=>a[h]=null):Oi(a,r),qt(s)&&i.set(s,a),a)}function du(s,e){return!s||!Qh(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),zt(s,e[0].toLowerCase()+e.slice(1))||zt(s,qr(e))||zt(s,e))}function Qp(s){const{type:e,vnode:t,proxy:i,withProxy:n,propsOptions:[r],slots:a,attrs:o,emit:h,render:l,renderCache:c,props:u,data:d,setupState:f,ctx:p,inheritAttrs:m}=s,g=rh(s);let v,b;try{if(t.shapeFlag&4){const w=n||i,A=w;v=En(l.call(A,w,c,u,f,d,p)),b=o}else{const w=e;v=En(w.length>1?w(u,{attrs:o,slots:a,emit:h}):w(u,null)),b=e.props?o:JM(o)}}catch(w){hr.length=0,ou(w,s,1),v=Ue(ts)}let y=v;if(b&&m!==!1){const w=Object.keys(b),{shapeFlag:A}=y;w.length&&A&7&&(r&&w.some(eu)&&(b=QM(b,r)),y=Hr(y,b,!1,!0))}if(t.dirs&&(y=Hr(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(t.dirs):t.dirs),t.transition){const w=cu(y.type)&&oh(y)||y;El(w,t.transition)}return v=y,rh(g),v}const JM=s=>{let e;for(const t in s)(t==="class"||t==="style"||Qh(t))&&((e||(e={}))[t]=s[t]);return e},QM=(s,e)=>{const t={};for(const i in s)(!eu(i)||!(i.slice(9)in e))&&(t[i]=s[i]);return t};function e_(s,e,t){const{props:i,children:n,component:r}=s,{props:a,children:o,patchFlag:h}=e,l=r.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&h>=0){if(h&1024)return!0;if(h&16)return i?eg(i,a,l):!!a;if(h&8){const c=e.dynamicProps;for(let u=0;uObject.create(ux),fx=s=>Object.getPrototypeOf(s)===ux;function i_(s,e,t,i=!1){const n={},r=dx();s.propsDefaults=Object.create(null),mx(s,e,n,r);for(const a in s.propsOptions[0])a in n||(n[a]=void 0);t?s.props=i?n:aM(n):s.type.props?s.props=n:s.props=r,s.attrs=r}function s_(s,e,t,i){const{props:n,attrs:r,vnode:{patchFlag:a}}=s,o=$t(n),[h]=s.propsOptions;let l=!1;if((i||a>0)&&!(a&16)){if(a&8){const c=s.vnode.dynamicProps;for(let u=0;u{h=!0;const[d,f]=px(u,e,!0);Oi(a,d),f&&o.push(...f)};!t&&e.mixins.length&&e.mixins.forEach(c),s.extends&&c(s.extends),s.mixins&&s.mixins.forEach(c)}if(!r&&!h)return qt(s)&&i.set(s,fo),fo;if(ft(r))for(let c=0;cs==="_"||s==="_ctx"||s==="$stable",op=s=>ft(s)?s.map(En):[En(s)],r_=(s,e,t)=>{if(e._n)return e;const i=ah((...n)=>op(e(...n)),t);return i._c=!1,i},gx=(s,e,t)=>{const i=s._ctx;for(const n in s){if(ap(n))continue;const r=s[n];if(Mt(r))e[n]=r_(n,r,i);else if(r!=null){const a=op(r);e[n]=()=>a}}},vx=(s,e)=>{const t=op(e);s.slots.default=()=>t},yx=(s,e,t)=>{for(const i in e)(t||!ap(i))&&(s[i]=e[i])},a_=(s,e,t)=>{const i=s.slots=dx();if(s.vnode.shapeFlag&32){const n=e._;n?(yx(i,e,t),t&&_y(i,"_",n,!0)):gx(e,i)}else e&&vx(s,e)},o_=(s,e,t)=>{const{vnode:i,slots:n}=s;let r=!0,a=ti;if(i.shapeFlag&32){const o=e._;o?t&&o===1?r=!1:yx(n,e,t):(r=!e.$stable,gx(e,n)),a=e}else e&&(vx(s,e),a={default:1});if(r)for(const o in n)!ap(o)&&a[o]==null&&delete n[o]},ms=d_;function l_(s){return c_(s)}function c_(s,e){const t=nu();t.__VUE__=!0;const{insert:i,remove:n,patchProp:r,createElement:a,createText:o,createComment:h,setText:l,setElementText:c,parentNode:u,nextSibling:d,setScopeId:f=On,insertStaticContent:p}=s,m=(G,Z,z,j=null,te=null,he=null,xe=void 0,oe=null,ge=!!Z.dynamicChildren)=>{if(G===Z)return;G&&!ga(G,Z)&&(j=me(G),q(G,te,he,!0),G=null),Z.patchFlag===-2&&(ge=!1,Z.dynamicChildren=null);const{type:le,ref:Oe,shapeFlag:Fe}=Z;switch(le){case fu:g(G,Z,z,j);break;case ts:v(G,Z,z,j);break;case Xc:G==null&&b(Z,z,j,xe);break;case Ke:k(G,Z,z,j,te,he,xe,oe,ge);break;default:Fe&1?A(G,Z,z,j,te,he,xe,oe,ge):Fe&6?B(G,Z,z,j,te,he,xe,oe,ge):(Fe&64||Fe&128)&&le.process(G,Z,z,j,te,he,xe,oe,ge,pe)}Oe!=null&&te?fl(Oe,G&&G.ref,he,Z||G,!Z):Oe==null&&G&&G.ref!=null&&fl(G.ref,null,he,G,!0)},g=(G,Z,z,j)=>{if(G==null)i(Z.el=o(Z.children),z,j);else{const te=Z.el=G.el;Z.children!==G.children&&l(te,Z.children)}},v=(G,Z,z,j)=>{G==null?i(Z.el=h(Z.children||""),z,j):Z.el=G.el},b=(G,Z,z,j)=>{[G.el,G.anchor]=p(G.children,Z,z,j,G.el,G.anchor)},y=({el:G,anchor:Z},z,j)=>{let te;for(;G&&G!==Z;)te=d(G),i(G,z,j),G=te;i(Z,z,j)},w=({el:G,anchor:Z})=>{let z;for(;G&&G!==Z;)z=d(G),n(G),G=z;n(Z)},A=(G,Z,z,j,te,he,xe,oe,ge)=>{if(Z.type==="svg"?xe="svg":Z.type==="math"&&(xe="mathml"),G==null)T(Z,z,j,te,he,xe,oe,ge);else{const le=G.el&&G.el._isVueCE?G.el:null;try{le&&le._beginPatch(),P(G,Z,te,he,xe,oe,ge)}finally{le&&le._endPatch()}}},T=(G,Z,z,j,te,he,xe,oe)=>{let ge,le;const{props:Oe,shapeFlag:Fe,transition:Be,dirs:st}=G;if(ge=G.el=a(G.type,he,Oe&&Oe.is,Oe),Fe&8?c(ge,G.children):Fe&16&&R(G.children,ge,null,j,te,Vu(G,he),xe,oe),st&&ia(G,null,j,"created"),_(ge,G,G.scopeId,xe,j),Oe){for(const At in Oe)At!=="value"&&!cl(At)&&r(ge,At,null,Oe[At],he,j);"value"in Oe&&r(ge,"value",null,Oe.value,he),(le=Oe.onVnodeBeforeMount)&&fn(le,j,G)}st&&ia(G,null,j,"beforeMount");const St=h_(te,Be);St&&Be.beforeEnter(ge),i(ge,Z,z),((le=Oe&&Oe.onVnodeMounted)||St||st)&&ms(()=>{try{le&&fn(le,j,G),St&&Be.enter(ge),st&&ia(G,null,j,"mounted")}finally{}},te)},_=(G,Z,z,j,te)=>{if(z&&f(G,z),j)for(let he=0;he{for(let le=ge;le{const oe=Z.el=G.el;let{patchFlag:ge,dynamicChildren:le,dirs:Oe}=Z;ge|=G.patchFlag&16;const Fe=G.props||ti,Be=Z.props||ti;let st;if(z&&sa(z,!1),(st=Be.onVnodeBeforeUpdate)&&fn(st,z,Z,G),Oe&&ia(Z,G,z,"beforeUpdate"),z&&sa(z,!0),le&&(!G.dynamicChildren||G.dynamicChildren.length!==le.length)&&(ge=0,xe=!1,le=null),(Fe.innerHTML&&Be.innerHTML==null||Fe.textContent&&Be.textContent==null)&&c(oe,""),le?F(G.dynamicChildren,le,oe,z,j,Vu(Z,te),he):xe||O(G,Z,oe,null,z,j,Vu(Z,te),he,!1),ge>0){if(ge&16)I(oe,Fe,Be,z,te);else if(ge&2&&Fe.class!==Be.class&&r(oe,"class",null,Be.class,te),ge&4&&r(oe,"style",Fe.style,Be.style,te),ge&8){const St=Z.dynamicProps;for(let At=0;At{st&&fn(st,z,Z,G),Oe&&ia(Z,G,z,"updated")},j)},F=(G,Z,z,j,te,he,xe)=>{for(let oe=0;oe{if(Z!==z){if(Z!==ti)for(const he in Z)!cl(he)&&!(he in z)&&r(G,he,Z[he],null,te,j);for(const he in z){if(cl(he))continue;const xe=z[he],oe=Z[he];xe!==oe&&he!=="value"&&r(G,he,oe,xe,te,j)}"value"in z&&r(G,"value",Z.value,z.value,te)}},k=(G,Z,z,j,te,he,xe,oe,ge)=>{const le=Z.el=G?G.el:o(""),Oe=Z.anchor=G?G.anchor:o("");let{patchFlag:Fe,dynamicChildren:Be,slotScopeIds:st}=Z;st&&(oe=oe?oe.concat(st):st),G==null?(i(le,z,j),i(Oe,z,j),R(Z.children||[],z,Oe,te,he,xe,oe,ge)):Fe>0&&Fe&64&&Be&&G.dynamicChildren&&G.dynamicChildren.length===Be.length?(F(G.dynamicChildren,Be,z,te,he,xe,oe),(Z.key!=null||te&&Z===te.subTree)&&xx(G,Z,!0)):O(G,Z,z,Oe,te,he,xe,oe,ge)},B=(G,Z,z,j,te,he,xe,oe,ge)=>{Z.slotScopeIds=oe,G==null?Z.shapeFlag&512?te.ctx.activate(Z,z,j,xe,ge):D(Z,z,j,te,he,xe,ge):U(G,Z,ge)},D=(G,Z,z,j,te,he,xe)=>{const oe=G.component=y_(G,j,te);if(hu(G)&&(oe.ctx.renderer=pe),x_(oe,!1,xe),oe.asyncDep){if(te&&te.registerDep(oe,L,xe),!G.el){const ge=oe.subTree=Ue(ts);v(null,ge,Z,z),G.placeholder=ge.el}}else L(oe,G,Z,z,te,he,xe)},U=(G,Z,z)=>{const j=Z.component=G.component;if(e_(G,Z,z))if(j.asyncDep&&!j.asyncResolved){N(j,Z,z);return}else j.next=Z,j.update();else Z.el=G.el,j.vnode=Z},L=(G,Z,z,j,te,he,xe)=>{const oe=()=>{if(G.isMounted){let{next:Fe,bu:Be,u:st,parent:St,vnode:At}=G;{const Wi=bx(G);if(Wi){Fe&&(Fe.el=At.el,N(G,Fe,xe)),Wi.asyncDep.then(()=>{ms(()=>{G.isUnmounted||le()},te)});return}}let Et=Fe,It;sa(G,!1),Fe?(Fe.el=At.el,N(G,Fe,xe)):Fe=At,Be&&Uc(Be),(It=Fe.props&&Fe.props.onVnodeBeforeUpdate)&&fn(It,St,Fe,At),sa(G,!0);const Kt=Qp(G),Ti=G.subTree;G.subTree=Kt,m(Ti,Kt,u(Ti.el),me(Ti),G,te,he),Fe.el=Kt.el,Et===null&&t_(G,Kt.el),st&&ms(st,te),(It=Fe.props&&Fe.props.onVnodeUpdated)&&ms(()=>fn(It,St,Fe,At),te)}else{let Fe;const{el:Be,props:st}=Z,{bm:St,m:At,parent:Et,root:It,type:Kt}=G,Ti=go(Z);sa(G,!1),St&&Uc(St),!Ti&&(Fe=st&&st.onVnodeBeforeMount)&&fn(Fe,Et,Z),sa(G,!0);{It.ce&&It.ce._hasShadowRoot()&&It.ce._injectChildStyle(Kt,G.parent?G.parent.type:void 0);const Wi=G.subTree=Qp(G);m(null,Wi,z,j,G,te,he),Z.el=Wi.el}if(At&&ms(At,te),!Ti&&(Fe=st&&st.onVnodeMounted)){const Wi=Z;ms(()=>fn(Fe,Et,Wi),te)}(Z.shapeFlag&256||Et&&go(Et.vnode)&&Et.vnode.shapeFlag&256)&&G.a&&ms(G.a,te),G.isMounted=!0,Z=z=j=null}};G.scope.on();const ge=G.effect=new Py(oe);G.scope.off();const le=G.update=ge.run.bind(ge),Oe=G.job=ge.runIfDirty.bind(ge);Oe.i=G,Oe.id=G.uid,ge.scheduler=()=>np(Oe),sa(G,!0),le()},N=(G,Z,z)=>{Z.component=G;const j=G.vnode.props;G.vnode=Z,G.next=null,s_(G,Z.props,j,z),o_(G,Z.children,z),dr(),jp(G),fr()},O=(G,Z,z,j,te,he,xe,oe,ge=!1)=>{const le=G&&G.children,Oe=G?G.shapeFlag:0,Fe=Z.children,{patchFlag:Be,shapeFlag:st}=Z;if(Be>0){if(Be&128){E(le,Fe,z,j,te,he,xe,oe,ge);return}else if(Be&256){X(le,Fe,z,j,te,he,xe,oe,ge);return}}st&8?(Oe&16&&fe(le,te,he),Fe!==le&&c(z,Fe)):Oe&16?st&16?E(le,Fe,z,j,te,he,xe,oe,ge):fe(le,te,he,!0):(Oe&8&&c(z,""),st&16&&R(Fe,z,j,te,he,xe,oe,ge))},X=(G,Z,z,j,te,he,xe,oe,ge)=>{G=G||fo,Z=Z||fo;const le=G.length,Oe=Z.length,Fe=Math.min(le,Oe);let Be;for(Be=0;BeOe?fe(G,te,he,!0,!1,Fe):R(Z,z,j,te,he,xe,oe,ge,Fe)},E=(G,Z,z,j,te,he,xe,oe,ge)=>{let le=0;const Oe=Z.length;let Fe=G.length-1,Be=Oe-1;for(;le<=Fe&&le<=Be;){const st=G[le],St=Z[le]=ge?Jn(Z[le]):En(Z[le]);if(ga(st,St))m(st,St,z,null,te,he,xe,oe,ge);else break;le++}for(;le<=Fe&&le<=Be;){const st=G[Fe],St=Z[Be]=ge?Jn(Z[Be]):En(Z[Be]);if(ga(st,St))m(st,St,z,null,te,he,xe,oe,ge);else break;Fe--,Be--}if(le>Fe){if(le<=Be){const st=Be+1,St=stBe)for(;le<=Fe;)q(G[le],te,he,!0),le++;else{const st=le,St=le,At=new Map;for(le=St;le<=Be;le++){const di=Z[le]=ge?Jn(Z[le]):En(Z[le]);di.key!=null&&At.set(di.key,le)}let Et,It=0;const Kt=Be-St+1;let Ti=!1,Wi=0;const zi=new Array(Kt);for(le=0;le=Kt){q(di,te,he,!0);continue}let ce;if(di.key!=null)ce=At.get(di.key);else for(Et=St;Et<=Be;Et++)if(zi[Et-St]===0&&ga(di,Z[Et])){ce=Et;break}ce===void 0?q(di,te,he,!0):(zi[ce-St]=le+1,ce>=Wi?Wi=ce:Ti=!0,m(di,Z[ce],z,null,te,he,xe,oe,ge),It++)}const dn=Ti?u_(zi):fo;for(Et=dn.length-1,le=Kt-1;le>=0;le--){const di=St+le,ce=Z[di],de=Z[di+1],Rt=di+1{const{el:he,type:xe,transition:oe,children:ge,shapeFlag:le}=G;if(le&6){V(G.component.subTree,Z,z,j);return}if(le&128){G.suspense.move(Z,z,j);return}if(le&64){xe.move(G,Z,z,pe);return}if(xe===Ke){i(he,Z,z);for(let Fe=0;Feoe.enter(he),te));else{const{leave:Fe,delayLeave:Be,afterLeave:st}=oe,St=()=>{G.ctx.isUnmounted?n(he):i(he,Z,z)},At=()=>{const Et=he._isLeaving||!!he[Ds];he._isLeaving&&he[Ds](!0),oe.persisted&&!Et?St():Fe(he,()=>{St(),st&&st()})};Be?Be(he,St,At):At()}else i(he,Z,z)},q=(G,Z,z,j=!1,te=!1)=>{const{type:he,props:xe,ref:oe,children:ge,dynamicChildren:le,shapeFlag:Oe,patchFlag:Fe,dirs:Be,cacheIndex:st,memo:St}=G;if(Fe===-2&&(te=!1),oe!=null&&(dr(),fl(oe,null,z,G,!0),fr()),st!=null&&(Z.renderCache[st]=void 0),Oe&256){Z.ctx.deactivate(G);return}const At=Oe&1&&Be,Et=!go(G);let It;if(Et&&(It=xe&&xe.onVnodeBeforeUnmount)&&fn(It,Z,G),Oe&6)K(G.component,z,j);else{if(Oe&128){G.suspense.unmount(z,j);return}At&&ia(G,null,Z,"beforeUnmount"),Oe&64?G.type.remove(G,Z,z,pe,j):le&&!le.hasOnce&&(he!==Ke||Fe>0&&Fe&64)?fe(le,Z,z,!1,!0):(he===Ke&&Fe&384||!te&&Oe&16)&&fe(ge,Z,z),j&&W(G)}const Kt=St!=null&&st==null;(Et&&(It=xe&&xe.onVnodeUnmounted)||At||Kt)&&ms(()=>{It&&fn(It,Z,G),At&&ia(G,null,Z,"unmounted"),Kt&&(G.el=null)},z)},W=G=>{const{type:Z,el:z,anchor:j,transition:te}=G;if(Z===Ke){J(z,j);return}if(Z===Xc){w(G);return}const he=()=>{n(z),te&&!te.persisted&&te.afterLeave&&te.afterLeave()};if(G.shapeFlag&1&&te&&!te.persisted){const{leave:xe,delayLeave:oe}=te,ge=()=>xe(z,he);oe?oe(G.el,he,ge):ge()}else he()},J=(G,Z)=>{let z;for(;G!==Z;)z=d(G),n(G),G=z;n(Z)},K=(G,Z,z)=>{const{bum:j,scope:te,job:he,subTree:xe,um:oe,m:ge,a:le}=G;ig(ge),ig(le),j&&Uc(j),te.stop(),he&&(he.flags|=8,q(xe,G,Z,z)),oe&&ms(oe,Z),ms(()=>{G.isUnmounted=!0},Z)},fe=(G,Z,z,j=!1,te=!1,he=0)=>{for(let xe=he;xe{if(G.shapeFlag&6)return me(G.component.subTree);if(G.shapeFlag&128)return G.suspense.next();const Z=d(G.anchor||G.el),z=Z&&Z[TM];return z?d(z):Z};let we=!1;const Ee=(G,Z,z)=>{let j;G==null?Z._vnode&&(q(Z._vnode,null,null,!0),j=Z._vnode.component):m(Z._vnode||null,G,Z,null,null,null,z),Z._vnode=G,we||(we=!0,jp(j),zy(),we=!1)},pe={p:m,um:q,m:V,r:W,mt:D,mc:R,pc:O,pbc:F,n:me,o:s};return{render:Ee,hydrate:void 0,createApp:zM(Ee)}}function Vu({type:s,props:e},t){return t==="svg"&&s==="foreignObject"||t==="mathml"&&s==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:t}function sa({effect:s,job:e},t){t?(s.flags|=32,e.flags|=4):(s.flags&=-33,e.flags&=-5)}function h_(s,e){return(!s||s&&!s.pendingBranch)&&e&&!e.persisted}function xx(s,e,t=!1){const i=s.children,n=e.children;if(ft(i)&&ft(n))for(let r=0;r>1,s[t[o]]0&&(e[i]=t[r-1]),t[r]=i)}}for(r=t.length,a=t[r-1];r-- >0;)t[r]=a,a=e[a];return t}function bx(s){const e=s.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:bx(e)}function ig(s){if(s)for(let e=0;es.__isSuspense;function d_(s,e){e&&e.pendingBranch?ft(s)?e.effects.push(...s):e.effects.push(s):xM(s)}const Ke=Symbol.for("v-fgt"),fu=Symbol.for("v-txt"),ts=Symbol.for("v-cmt"),Xc=Symbol.for("v-stc"),hr=[];let As=null;function ie(s=!1){hr.push(As=s?null:[])}function lp(){hr.pop(),As=hr[hr.length-1]||null}let Cl=1;function hh(s,e=!1){Cl+=s,s<0&&As&&e&&(As.hasOnce=!0)}function Mx(s){return s.dynamicChildren=Cl>0?As||fo:null,lp(),Cl>0&&As&&As.push(s),s}function ae(s,e,t,i,n,r){return Mx(M(s,e,t,i,n,r,!0))}function Jt(s,e,t,i,n){return Mx(Ue(s,e,t,i,n,!0))}function Il(s){return s?s.__v_isVNode===!0:!1}function ga(s,e){return s.type===e.type&&s.key===e.key}const _x=({key:s})=>s??null,Vc=({ref:s,ref_key:e,ref_for:t})=>(typeof s=="number"&&(s=""+s),s!=null?vi(s)||Si(s)||Mt(s)?{i:is,r:s,k:e,f:!!t}:s:null);function M(s,e=null,t=null,i=0,n=null,r=s===Ke?0:1,a=!1,o=!1){const h={__v_isVNode:!0,__v_skip:!0,type:s,props:e,key:e&&_x(e),ref:e&&Vc(e),scopeId:Ky,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:is};return o?(uh(h,t),r&128&&s.normalize(h)):t&&(h.shapeFlag|=vi(t)?8:16),Cl>0&&!a&&As&&(h.patchFlag>0||r&6)&&h.patchFlag!==32&&As.push(h),h}const Ue=f_;function f_(s,e=null,t=null,i=0,n=null,r=!1){if((!s||s===UM)&&(s=ts),Il(s)){const o=Hr(s,e,!0);return t&&uh(o,t),Cl>0&&!r&&As&&(o.shapeFlag&6?As[As.indexOf(s)]=o:As.push(o)),o.patchFlag=-2,o}if(M_(s)&&(s=s.__vccOpts),e){e=m_(e);let{class:o,style:h}=e;o&&!vi(o)&&(e.class=Ze(o)),qt(h)&&(au(h)&&!ft(h)&&(h=Oi({},h)),e.style=Li(h))}const a=vi(s)?1:Sx(s)?128:cu(s)?64:qt(s)?4:Mt(s)?2:0;return M(s,e,t,i,n,a,r,!0)}function m_(s){return s?au(s)||fx(s)?Oi({},s):s:null}function Hr(s,e,t=!1,i=!1){const{props:n,ref:r,patchFlag:a,children:o,transition:h}=s,l=e?p_(n||{},e):n,c={__v_isVNode:!0,__v_skip:!0,type:s.type,props:l,key:l&&_x(l),ref:e&&e.ref?t&&r?ft(r)?r.concat(Vc(e)):[r,Vc(e)]:Vc(e):r,scopeId:s.scopeId,slotScopeIds:s.slotScopeIds,children:o,target:s.target,targetStart:s.targetStart,targetAnchor:s.targetAnchor,staticCount:s.staticCount,shapeFlag:s.shapeFlag,patchFlag:e&&s.type!==Ke?a===-1?16:a|16:a,dynamicProps:s.dynamicProps,dynamicChildren:s.dynamicChildren,appContext:s.appContext,dirs:s.dirs,transition:h,component:s.component,suspense:s.suspense,ssContent:s.ssContent&&Hr(s.ssContent),ssFallback:s.ssFallback&&Hr(s.ssFallback),placeholder:s.placeholder,el:s.el,anchor:s.anchor,ctx:s.ctx,ce:s.ce};return h&&i&&El(c,h.clone(c)),c}function Qt(s=" ",e=0){return Ue(fu,null,s,e)}function Ts(s,e){const t=Ue(Xc,null,s);return t.staticCount=e,t}function Ve(s="",e=!1){return e?(ie(),Jt(ts,null,s)):Ue(ts,null,s)}function En(s){return s==null||typeof s=="boolean"?Ue(ts):ft(s)?Ue(Ke,null,s.slice()):Il(s)?Jn(s):Ue(fu,null,String(s))}function Jn(s){return s.el===null&&s.patchFlag!==-1||s.memo?s:Hr(s)}function uh(s,e){let t=0;const{shapeFlag:i}=s;if(e==null)e=null;else if(ft(e))t=16;else if(typeof e=="object")if(i&65){const n=e.default;n&&(n._c&&(n._d=!1),uh(s,n()),n._c&&(n._d=!0));return}else{t=32;const n=e._;!n&&!fx(e)?e._ctx=is:n===3&&is&&(is.slots._===1?e._=1:(e._=2,s.patchFlag|=1024))}else if(Mt(e)){if(i&65){uh(s,{default:e});return}e={default:e,_ctx:is},t=32}else e=String(e),i&64?(t=16,e=[Qt(e)]):t=8;s.children=e,s.shapeFlag|=t}function p_(...s){const e={};for(let t=0;tcs||is;let dh,Rl;{const s=nu(),e=(t,i)=>{let n;return(n=s[t])||(n=s[t]=[]),n.push(i),r=>{n.length>1?n.forEach(a=>a(r)):n[0](r)}};dh=e("__VUE_INSTANCE_SETTERS__",t=>cs=t),Rl=e("__VUE_SSR_SETTERS__",t=>Pl=t)}const Hl=s=>{const e=cs;return dh(s),s.scope.on(),()=>{s.scope.off(),dh(e)}},sg=()=>{cs&&cs.scope.off(),dh(null)};function Tx(s){return s.vnode.shapeFlag&4}let Pl=!1;function x_(s,e=!1,t=!1){e&&Rl(e);const{props:i,children:n}=s.vnode,r=Tx(s);i_(s,i,r,e),a_(s,n,t||e);const a=r?b_(s,e):void 0;return e&&Rl(!1),a}function b_(s,e){const t=s.type;s.accessCache=Object.create(null),s.proxy=new Proxy(s.ctx,VM);const{setup:i}=t;if(i){dr();const n=s.setupContext=i.length>1?S_(s):null,r=Hl(s),a=Yl(i,s,0,[s.props,n]),o=by(a);if(fr(),r(),(o||s.sp)&&!go(s)&&sx(s),o){if(a.then(sg,sg),e)return a.then(h=>{Rl(!0);try{ng(s,h,e)}finally{Rl(!1)}}).catch(h=>{ou(h,s,0)});s.asyncDep=a}else ng(s,a)}else Ax(s)}function ng(s,e,t){Mt(e)?s.type.__ssrInlineRender?s.ssrRender=e:s.render=e:qt(e)&&(s.setupState=Hy(e)),Ax(s)}function Ax(s,e,t){const i=s.type;s.render||(s.render=i.render||On);{const n=Hl(s);dr();try{YM(s)}finally{fr(),n()}}}const w_={get(s,e){return Qi(s,"get",""),s[e]}};function S_(s){const e=t=>{s.exposed=t||{}};return{attrs:new Proxy(s.attrs,w_),slots:s.slots,emit:s.emit,expose:e}}function mu(s){return s.exposed?s.exposeProxy||(s.exposeProxy=new Proxy(Hy(Dr(s.exposed)),{get(e,t){if(t in e)return e[t];if(t in ml)return ml[t](s)},has(e,t){return t in e||t in ml}})):s.proxy}function M_(s){return Mt(s)&&"__vccOpts"in s}const vt=(s,e)=>mM(s,e,Pl);function __(s,e,t){try{hh(-1);const i=arguments.length;return i===2?qt(e)&&!ft(e)?Il(e)?Ue(s,null,[e]):Ue(s,e):Ue(s,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&Il(t)&&(t=[t]),Ue(s,e,t))}finally{hh(1)}}const T_="3.5.41";/** * @vue/runtime-dom v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Uf;const ag=typeof window<"u"&&window.trustedTypes;if(ag)try{Uf=ag.createPolicy("vue",{createHTML:s=>s})}catch{}const Cx=Uf?s=>Uf.createHTML(s):s=>s,EM="http://www.w3.org/2000/svg",CM="http://www.w3.org/1998/Math/MathML",jn=typeof document<"u"?document:null,og=jn&&jn.createElement("template"),IM={insert:(s,e,t)=>{e.insertBefore(s,t||null)},remove:s=>{const e=s.parentNode;e&&e.removeChild(s)},createElement:(s,e,t,i)=>{const n=e==="svg"?jn.createElementNS(EM,s):e==="mathml"?jn.createElementNS(CM,s):t?jn.createElement(s,{is:t}):jn.createElement(s);return s==="select"&&i&&i.multiple!=null&&n.setAttribute("multiple",i.multiple),n},createText:s=>jn.createTextNode(s),createComment:s=>jn.createComment(s),setText:(s,e)=>{s.nodeValue=e},setElementText:(s,e)=>{s.textContent=e},parentNode:s=>s.parentNode,nextSibling:s=>s.nextSibling,querySelector:s=>jn.querySelector(s),setScopeId(s,e){s.setAttribute(e,"")},insertStaticContent(s,e,t,i,n,r){const a=t?t.previousSibling:e.lastChild;if(n&&(n===r||n.nextSibling))for(;e.insertBefore(n.cloneNode(!0),t),!(n===r||!(n=n.nextSibling)););else{og.innerHTML=Cx(i==="svg"?`${s}`:i==="mathml"?`${s}`:s);const o=og.content;if(i==="svg"||i==="mathml"){const h=o.firstChild;for(;h.firstChild;)o.appendChild(h.firstChild);o.removeChild(h)}e.insertBefore(o,t)}return[a?a.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},wr="transition",Ho="animation",Fl=Symbol("_vtc"),Ix={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},RM=ki({},Qy,Ix),PM=s=>(s.displayName="Transition",s.props=RM,s),kM=PM((s,{slots:e})=>TM(I_,FM(s),e)),ia=(s,e=[])=>{ft(s)?s.forEach(t=>t(...e)):s&&s(...e)},lg=s=>s?ft(s)?s.some(e=>e.length>1):s.length>1:!1;function FM(s){const e={};for(const k in s)k in Ix||(e[k]=s[k]);if(s.css===!1)return e;const{name:t="v",type:i,duration:n,enterFromClass:r=`${t}-enter-from`,enterActiveClass:a=`${t}-enter-active`,enterToClass:o=`${t}-enter-to`,appearFromClass:h=r,appearActiveClass:l=a,appearToClass:c=o,leaveFromClass:u=`${t}-leave-from`,leaveActiveClass:d=`${t}-leave-active`,leaveToClass:f=`${t}-leave-to`}=s,p=OM(n),m=p&&p[0],g=p&&p[1],{onBeforeEnter:v,onEnter:b,onEnterCancelled:y,onLeave:w,onLeaveCancelled:A,onBeforeAppear:M=v,onAppear:_=b,onAppearCancelled:R=y}=e,P=(k,B,D,U)=>{k._enterCancelled=U,sa(k,B?c:o),sa(k,B?l:a),D&&D()},F=(k,B)=>{k._isLeaving=!1,sa(k,u),sa(k,f),sa(k,d),B&&B()},I=k=>(B,D)=>{const U=k?_:b,L=()=>P(B,k,D);ia(U,[B,L]),cg(()=>{sa(B,k?h:r),Yn(B,k?c:o),lg(U)||hg(B,i,m,L)})};return ki(e,{onBeforeEnter(k){ia(v,[k]),Yn(k,r),Yn(k,a)},onBeforeAppear(k){ia(M,[k]),Yn(k,h),Yn(k,l)},onEnter:I(!1),onAppear:I(!0),onLeave(k,B){k._isLeaving=!0;const D=()=>F(k,B);Yn(k,u),k._enterCancelled?(Yn(k,d),fg(k)):(fg(k),Yn(k,d)),cg(()=>{k._isLeaving&&(sa(k,u),Yn(k,f),lg(w)||hg(k,i,g,D))}),ia(w,[k,D])},onEnterCancelled(k){P(k,!1,void 0,!0),ia(y,[k])},onAppearCancelled(k){P(k,!0,void 0,!0),ia(R,[k])},onLeaveCancelled(k){F(k),ia(A,[k])}})}function OM(s){if(s==null)return null;if(Kt(s))return[$u(s.enter),$u(s.leave)];{const e=$u(s);return[e,e]}}function $u(s){return OS(s)}function Yn(s,e){e.split(/\s+/).forEach(t=>t&&s.classList.add(t)),(s[Fl]||(s[Fl]=new Set)).add(e)}function sa(s,e){e.split(/\s+/).forEach(i=>i&&s.classList.remove(i));const t=s[Fl];t&&(t.delete(e),t.size||(s[Fl]=void 0))}function cg(s){requestAnimationFrame(()=>{requestAnimationFrame(s)})}let BM=0;function hg(s,e,t,i){const n=s._endId=++BM,r=()=>{n===s._endId&&i()};if(t!=null)return setTimeout(r,t);const{type:a,timeout:o,propCount:h}=LM(s,e);if(!a)return i();const l=a+"end";let c=0;const u=()=>{s.removeEventListener(l,d),r()},d=f=>{f.target===s&&++c>=h&&u()};setTimeout(()=>{c(t[p]||"").split(", "),n=i(`${wr}Delay`),r=i(`${wr}Duration`),a=ug(n,r),o=i(`${Ho}Delay`),h=i(`${Ho}Duration`),l=ug(o,h);let c=null,u=0,d=0;e===wr?a>0&&(c=wr,u=a,d=r.length):e===Ho?l>0&&(c=Ho,u=l,d=h.length):(u=Math.max(a,l),c=u>0?a>l?wr:Ho:null,d=c?c===wr?r.length:h.length:0);const f=c===wr&&/\b(?:transform|all)(?:,|$)/.test(i(`${wr}Property`).toString());return{type:c,timeout:u,propCount:d,hasTransform:f}}function ug(s,e){for(;s.lengthdg(t)+dg(s[i])))}function dg(s){return s==="auto"?0:Number(s.slice(0,-1).replace(",","."))*1e3}function fg(s){return(s?s.ownerDocument:document).body.offsetHeight}function DM(s,e,t){const i=s[Fl];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?s.removeAttribute("class"):t?s.setAttribute("class",e):s.className=e}const fh=Symbol("_vod"),Rx=Symbol("_vsh"),Sr={name:"show",beforeMount(s,{value:e},{transition:t}){s[fh]=s.style.display==="none"?"":s.style.display,t&&e?t.beforeEnter(s):jo(s,e)},mounted(s,{value:e},{transition:t}){t&&e&&t.enter(s)},updated(s,{value:e,oldValue:t},{transition:i}){!e!=!t&&(i?e?(i.beforeEnter(s),jo(s,!0),i.enter(s)):i.leave(s,()=>{jo(s,!1)}):jo(s,e))},beforeUnmount(s,{value:e}){jo(s,e)}};function jo(s,e){s.style.display=e?s[fh]:"none",s[Rx]=!e}const NM=Symbol(""),UM=/(?:^|;)\s*display\s*:/;function XM(s,e,t){const i=s.style,n=gi(t);let r=!1;if(t&&!n){if(e)if(gi(e))for(const a of e.split(";")){const o=a.slice(0,a.indexOf(":")).trim();t[o]==null&&tl(i,o,"")}else for(const a in e)t[a]==null&&tl(i,a,"");for(const a in t){a==="display"&&(r=!0);const o=t[a];o!=null?YM(s,a,!gi(e)&&e?e[a]:void 0,o)||tl(i,a,o):tl(i,a,"")}}else if(n){if(e!==t){const a=i[NM];a&&(t+=";"+a),i.cssText=t,r=UM.test(t)}}else e&&s.removeAttribute("style");fh in s&&(s[fh]=r?i.display:"",s[Rx]&&(i.display="none"))}const mg=/\s*!important$/;function tl(s,e,t){if(ft(t))t.forEach(i=>tl(s,e,i));else if(t==null&&(t=""),e.startsWith("--"))s.setProperty(e,t);else{const i=VM(s,e);mg.test(t)?s.setProperty(Kr(i),t.replace(mg,""),"important"):s[i]=t}}const pg=["Webkit","Moz","ms"],Gu={};function VM(s,e){const t=Gu[e];if(t)return t;let i=Ks(e);if(i!=="filter"&&i in s)return Gu[e]=i;i=My(i);for(let n=0;nHu||(zM.then(()=>Hu=0),Hu=Date.now());function KM(s,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;const n=t.value;if(ft(n)){const r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};const a=n.slice(),o=[i];for(let h=0;hs.charCodeAt(0)===111&&s.charCodeAt(1)===110&&s.charCodeAt(2)>96&&s.charCodeAt(2)<123,ZM=(s,e,t,i,n,r)=>{const a=n==="svg";e==="class"?DM(s,i,a):e==="style"?XM(s,t,i):Qh(e)?eu(e)||GM(s,e,t,i,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):JM(s,e,i,a))?(yg(s,e,i),!s.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&vg(s,e,i,a,r,e!=="value")):s._isVueCE&&(QM(s,e)||s._def.__asyncLoader&&(/[A-Z]/.test(e)||!gi(i)))?yg(s,Ks(e),i,r,e):(e==="true-value"?s._trueValue=i:e==="false-value"&&(s._falseValue=i),vg(s,e,i,a))};function JM(s,e,t,i){if(i)return!!(e==="innerHTML"||e==="textContent"||e in s&&bg(e)&&_t(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&s.tagName==="IFRAME"||e==="form"||e==="list"&&s.tagName==="INPUT"||e==="type"&&s.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const n=s.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return bg(e)&&gi(t)?!1:e in s}function QM(s,e){const t=s._def.props;if(!t)return!1;const i=Ks(e);return Array.isArray(t)?t.some(n=>Ks(n)===i):Object.keys(t).some(n=>Ks(n)===i)}const Co=s=>{const e=s.props["onUpdate:modelValue"]||!1;return ft(e)?t=>Uc(e,t):e};function eT(s){s.target.composing=!0}function wg(s){const e=s.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const In=Symbol("_assign"),rc=Symbol("_initialValue");function ju(s,e,t){return e&&(s=s.trim()),t&&(s=su(s)),s}const ut={created(s,{modifiers:{lazy:e,trim:t,number:i}},n){s.parentNode&&(s.type==="text"?s[rc]=s.defaultValue.replace(/[\r\n]/g,""):s.type==="textarea"&&(s[rc]=s.defaultValue.replace(/\r\n?/g,` -`))),s[In]=Co(n);const r=i||n.props&&n.props.type==="number";Or(s,e?"change":"input",a=>{a.target.composing||s[In](ju(s.value,t,r))}),(t||r)&&Or(s,"change",()=>{s.value=ju(s.value,t,r)}),e||(Or(s,"compositionstart",eT),Or(s,"compositionend",wg),Or(s,"change",wg))},mounted(s,{value:e,modifiers:{trim:t,number:i}}){const n=e??"",r=s[rc];delete s[rc],r!==void 0&&(s.type==="text"||s.type==="textarea")&&s.value!==r?s[In](ju(s.value,t,i)):s.value=n},beforeUpdate(s,{value:e,oldValue:t,modifiers:{lazy:i,trim:n,number:r}},a){if(s[In]=Co(a),s.composing)return;const o=(r||s.type==="number")&&!/^0\d/.test(s.value)?su(s.value):s.value,h=e??"";if(o===h)return;const l=s.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===s&&s.type!=="range"&&(i&&e===t||n&&s.value.trim()===h)||(s.value=h)}},ei={deep:!0,created(s,e,t){s[In]=Co(t),Or(s,"change",()=>{const i=s._modelValue,n=Ol(s),r=s.checked,a=s[In];if(ft(i)){const o=Jm(i,n),h=o!==-1;if(r&&!h)a(i.concat(n));else if(!r&&h){const l=[...i];l.splice(o,1),a(l)}}else if(Bo(i)){const o=new Set(i);r?o.add(n):o.delete(n),a(o)}else a(Px(s,r))})},mounted:Sg,beforeUpdate(s,e,t){s[In]=Co(t),Sg(s,e,t)}};function Sg(s,{value:e,oldValue:t},i){s._modelValue=e;let n;if(ft(e))n=Jm(e,i.props.value)>-1;else if(Bo(e))n=e.has(i.props.value);else{if(e===t)return;n=Lo(e,Px(s,!0))}s.checked!==n&&(s.checked=n)}const jt={deep:!0,created(s,{value:e,modifiers:{number:t}},i){s._modelValue=e,Or(s,"change",()=>{const n=Array.prototype.filter.call(s.options,r=>r.selected).map(r=>t?su(Ol(r)):Ol(r));s[In](s.multiple?Bo(s._modelValue)?new Set(n):n:n[0]),s._assigning=!0,lu(()=>{s._assigning=!1})}),s[In]=Co(i)},mounted(s,{value:e}){_g(s,e)},beforeUpdate(s,{value:e},t){s._modelValue=e,s[In]=Co(t)},updated(s,{value:e}){s._assigning||_g(s,e)}};function _g(s,e){const t=s.multiple,i=ft(e);if(!(t&&!i&&!Bo(e))){for(let n=0,r=s.options.length;nString(l)===String(o)):a.selected=Jm(e,o)>-1}else a.selected=e.has(o);else if(Lo(Ol(a),e)){s.selectedIndex!==n&&(s.selectedIndex=n);return}}!t&&s.selectedIndex!==-1&&(s.selectedIndex=-1)}}function Ol(s){return"_value"in s?s._value:s.value}function Px(s,e){const t=e?"_trueValue":"_falseValue";return t in s?s[t]:e}const tT=["ctrl","shift","alt","meta"],iT={stop:s=>s.stopPropagation(),prevent:s=>s.preventDefault(),self:s=>s.target!==s.currentTarget,ctrl:s=>!s.ctrlKey,shift:s=>!s.shiftKey,alt:s=>!s.altKey,meta:s=>!s.metaKey,left:s=>"button"in s&&s.button!==0,middle:s=>"button"in s&&s.button!==1,right:s=>"button"in s&&s.button!==2,exact:(s,e)=>tT.some(t=>s[`${t}Key`]&&!e.includes(t))},xt=(s,e)=>{if(!s)return s;const t=s._withMods||(s._withMods={}),i=e.join(".");return t[i]||(t[i]=((n,...r)=>{for(let a=0;a{const t=s._withKeys||(s._withKeys={}),i=e.join(".");return t[i]||(t[i]=(n=>{if(!("key"in n))return;const r=Kr(n.key);if(e.some(a=>a===r||sT[a]===r))return s(n)}))},nT=ki({patchProp:ZM},IM);let Mg;function rT(){return Mg||(Mg=cM(nT))}const aT=((...s)=>{const e=rT().createApp(...s),{mount:t}=e;return e.mount=i=>{const n=lT(i);if(!n)return;const r=e._component;!_t(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=t(n,!1,oT(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},e});function oT(s){if(s instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&s instanceof MathMLElement)return"mathml"}function lT(s){return gi(s)?document.querySelector(s):s}/*! +**/let Nf;const rg=typeof window<"u"&&window.trustedTypes;if(rg)try{Nf=rg.createPolicy("vue",{createHTML:s=>s})}catch{}const Ex=Nf?s=>Nf.createHTML(s):s=>s,A_="http://www.w3.org/2000/svg",E_="http://www.w3.org/1998/Math/MathML",Wn=typeof document<"u"?document:null,ag=Wn&&Wn.createElement("template"),C_={insert:(s,e,t)=>{e.insertBefore(s,t||null)},remove:s=>{const e=s.parentNode;e&&e.removeChild(s)},createElement:(s,e,t,i)=>{const n=e==="svg"?Wn.createElementNS(A_,s):e==="mathml"?Wn.createElementNS(E_,s):t?Wn.createElement(s,{is:t}):Wn.createElement(s);return s==="select"&&i&&i.multiple!=null&&n.setAttribute("multiple",i.multiple),n},createText:s=>Wn.createTextNode(s),createComment:s=>Wn.createComment(s),setText:(s,e)=>{s.nodeValue=e},setElementText:(s,e)=>{s.textContent=e},parentNode:s=>s.parentNode,nextSibling:s=>s.nextSibling,querySelector:s=>Wn.querySelector(s),setScopeId(s,e){s.setAttribute(e,"")},insertStaticContent(s,e,t,i,n,r){const a=t?t.previousSibling:e.lastChild;if(n&&(n===r||n.nextSibling))for(;e.insertBefore(n.cloneNode(!0),t),!(n===r||!(n=n.nextSibling)););else{ag.innerHTML=Ex(i==="svg"?`${s}`:i==="mathml"?`${s}`:s);const o=ag.content;if(i==="svg"||i==="mathml"){const h=o.firstChild;for(;h.firstChild;)o.appendChild(h.firstChild);o.removeChild(h)}e.insertBefore(o,t)}return[a?a.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},wr="transition",Go="animation",kl=Symbol("_vtc"),Cx={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},I_=Oi({},Jy,Cx),R_=s=>(s.displayName="Transition",s.props=I_,s),P_=R_((s,{slots:e})=>__(CM,k_(s),e)),na=(s,e=[])=>{ft(s)?s.forEach(t=>t(...e)):s&&s(...e)},og=s=>s?ft(s)?s.some(e=>e.length>1):s.length>1:!1;function k_(s){const e={};for(const k in s)k in Cx||(e[k]=s[k]);if(s.css===!1)return e;const{name:t="v",type:i,duration:n,enterFromClass:r=`${t}-enter-from`,enterActiveClass:a=`${t}-enter-active`,enterToClass:o=`${t}-enter-to`,appearFromClass:h=r,appearActiveClass:l=a,appearToClass:c=o,leaveFromClass:u=`${t}-leave-from`,leaveActiveClass:d=`${t}-leave-active`,leaveToClass:f=`${t}-leave-to`}=s,p=F_(n),m=p&&p[0],g=p&&p[1],{onBeforeEnter:v,onEnter:b,onEnterCancelled:y,onLeave:w,onLeaveCancelled:A,onBeforeAppear:T=v,onAppear:_=b,onAppearCancelled:R=y}=e,P=(k,B,D,U)=>{k._enterCancelled=U,ra(k,B?c:o),ra(k,B?l:a),D&&D()},F=(k,B)=>{k._isLeaving=!1,ra(k,u),ra(k,f),ra(k,d),B&&B()},I=k=>(B,D)=>{const U=k?_:b,L=()=>P(B,k,D);na(U,[B,L]),lg(()=>{ra(B,k?h:r),$n(B,k?c:o),og(U)||cg(B,i,m,L)})};return Oi(e,{onBeforeEnter(k){na(v,[k]),$n(k,r),$n(k,a)},onBeforeAppear(k){na(T,[k]),$n(k,h),$n(k,l)},onEnter:I(!1),onAppear:I(!0),onLeave(k,B){k._isLeaving=!0;const D=()=>F(k,B);$n(k,u),k._enterCancelled?($n(k,d),dg(k)):(dg(k),$n(k,d)),lg(()=>{k._isLeaving&&(ra(k,u),$n(k,f),og(w)||cg(k,i,g,D))}),na(w,[k,D])},onEnterCancelled(k){P(k,!1,void 0,!0),na(y,[k])},onAppearCancelled(k){P(k,!0,void 0,!0),na(R,[k])},onLeaveCancelled(k){F(k),na(A,[k])}})}function F_(s){if(s==null)return null;if(qt(s))return[Yu(s.enter),Yu(s.leave)];{const e=Yu(s);return[e,e]}}function Yu(s){return FS(s)}function $n(s,e){e.split(/\s+/).forEach(t=>t&&s.classList.add(t)),(s[kl]||(s[kl]=new Set)).add(e)}function ra(s,e){e.split(/\s+/).forEach(i=>i&&s.classList.remove(i));const t=s[kl];t&&(t.delete(e),t.size||(s[kl]=void 0))}function lg(s){requestAnimationFrame(()=>{requestAnimationFrame(s)})}let O_=0;function cg(s,e,t,i){const n=s._endId=++O_,r=()=>{n===s._endId&&i()};if(t!=null)return setTimeout(r,t);const{type:a,timeout:o,propCount:h}=B_(s,e);if(!a)return i();const l=a+"end";let c=0;const u=()=>{s.removeEventListener(l,d),r()},d=f=>{f.target===s&&++c>=h&&u()};setTimeout(()=>{c(t[p]||"").split(", "),n=i(`${wr}Delay`),r=i(`${wr}Duration`),a=hg(n,r),o=i(`${Go}Delay`),h=i(`${Go}Duration`),l=hg(o,h);let c=null,u=0,d=0;e===wr?a>0&&(c=wr,u=a,d=r.length):e===Go?l>0&&(c=Go,u=l,d=h.length):(u=Math.max(a,l),c=u>0?a>l?wr:Go:null,d=c?c===wr?r.length:h.length:0);const f=c===wr&&/\b(?:transform|all)(?:,|$)/.test(i(`${wr}Property`).toString());return{type:c,timeout:u,propCount:d,hasTransform:f}}function hg(s,e){for(;s.lengthug(t)+ug(s[i])))}function ug(s){return s==="auto"?0:Number(s.slice(0,-1).replace(",","."))*1e3}function dg(s){return(s?s.ownerDocument:document).body.offsetHeight}function L_(s,e,t){const i=s[kl];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?s.removeAttribute("class"):t?s.setAttribute("class",e):s.className=e}const fh=Symbol("_vod"),Ix=Symbol("_vsh"),Yi={name:"show",beforeMount(s,{value:e},{transition:t}){s[fh]=s.style.display==="none"?"":s.style.display,t&&e?t.beforeEnter(s):Ho(s,e)},mounted(s,{value:e},{transition:t}){t&&e&&t.enter(s)},updated(s,{value:e,oldValue:t},{transition:i}){!e!=!t&&(i?e?(i.beforeEnter(s),Ho(s,!0),i.enter(s)):i.leave(s,()=>{Ho(s,!1)}):Ho(s,e))},beforeUnmount(s,{value:e}){Ho(s,e)}};function Ho(s,e){s.style.display=e?s[fh]:"none",s[Ix]=!e}const D_=Symbol(""),N_=/(?:^|;)\s*display\s*:/;function U_(s,e,t){const i=s.style,n=vi(t);let r=!1;if(t&&!n){if(e)if(vi(e))for(const a of e.split(";")){const o=a.slice(0,a.indexOf(":")).trim();t[o]==null&&el(i,o,"")}else for(const a in e)t[a]==null&&el(i,a,"");for(const a in t){a==="display"&&(r=!0);const o=t[a];o!=null?V_(s,a,!vi(e)&&e?e[a]:void 0,o)||el(i,a,o):el(i,a,"")}}else if(n){if(e!==t){const a=i[D_];a&&(t+=";"+a),i.cssText=t,r=N_.test(t)}}else e&&s.removeAttribute("style");fh in s&&(s[fh]=r?i.display:"",s[Ix]&&(i.display="none"))}const fg=/\s*!important$/;function el(s,e,t){if(ft(t))t.forEach(i=>el(s,e,i));else if(t==null&&(t=""),e.startsWith("--"))s.setProperty(e,t);else{const i=X_(s,e);fg.test(t)?s.setProperty(qr(i),t.replace(fg,""),"important"):s[i]=t}}const mg=["Webkit","Moz","ms"],$u={};function X_(s,e){const t=$u[e];if(t)return t;let i=nn(e);if(i!=="filter"&&i in s)return $u[e]=i;i=My(i);for(let n=0;nGu||(W_.then(()=>Gu=0),Gu=Date.now());function q_(s,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;const n=t.value;if(ft(n)){const r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};const a=n.slice(),o=[i];for(let h=0;hs.charCodeAt(0)===111&&s.charCodeAt(1)===110&&s.charCodeAt(2)>96&&s.charCodeAt(2)<123,K_=(s,e,t,i,n,r)=>{const a=n==="svg";e==="class"?L_(s,i,a):e==="style"?U_(s,t,i):Qh(e)?eu(e)||$_(s,e,t,i,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Z_(s,e,i,a))?(vg(s,e,i),!s.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&gg(s,e,i,a,r,e!=="value")):s._isVueCE&&(J_(s,e)||s._def.__asyncLoader&&(/[A-Z]/.test(e)||!vi(i)))?vg(s,nn(e),i,r,e):(e==="true-value"?s._trueValue=i:e==="false-value"&&(s._falseValue=i),gg(s,e,i,a))};function Z_(s,e,t,i){if(i)return!!(e==="innerHTML"||e==="textContent"||e in s&&xg(e)&&Mt(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&s.tagName==="IFRAME"||e==="form"||e==="list"&&s.tagName==="INPUT"||e==="type"&&s.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const n=s.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return xg(e)&&vi(t)?!1:e in s}function J_(s,e){const t=s._def.props;if(!t)return!1;const i=nn(e);return Array.isArray(t)?t.some(n=>nn(n)===i):Object.keys(t).some(n=>nn(n)===i)}const Eo=s=>{const e=s.props["onUpdate:modelValue"]||!1;return ft(e)?t=>Uc(e,t):e};function Q_(s){s.target.composing=!0}function bg(s){const e=s.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const Rn=Symbol("_assign"),rc=Symbol("_initialValue");function Hu(s,e,t){return e&&(s=s.trim()),t&&(s=su(s)),s}const ht={created(s,{modifiers:{lazy:e,trim:t,number:i}},n){s.parentNode&&(s.type==="text"?s[rc]=s.defaultValue.replace(/[\r\n]/g,""):s.type==="textarea"&&(s[rc]=s.defaultValue.replace(/\r\n?/g,` +`))),s[Rn]=Eo(n);const r=i||n.props&&n.props.type==="number";Fr(s,e?"change":"input",a=>{a.target.composing||s[Rn](Hu(s.value,t,r))}),(t||r)&&Fr(s,"change",()=>{s.value=Hu(s.value,t,r)}),e||(Fr(s,"compositionstart",Q_),Fr(s,"compositionend",bg),Fr(s,"change",bg))},mounted(s,{value:e,modifiers:{trim:t,number:i}}){const n=e??"",r=s[rc];delete s[rc],r!==void 0&&(s.type==="text"||s.type==="textarea")&&s.value!==r?s[Rn](Hu(s.value,t,i)):s.value=n},beforeUpdate(s,{value:e,oldValue:t,modifiers:{lazy:i,trim:n,number:r}},a){if(s[Rn]=Eo(a),s.composing)return;const o=(r||s.type==="number")&&!/^0\d/.test(s.value)?su(s.value):s.value,h=e??"";if(o===h)return;const l=s.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===s&&s.type!=="range"&&(i&&e===t||n&&s.value.trim()===h)||(s.value=h)}},ei={deep:!0,created(s,e,t){s[Rn]=Eo(t),Fr(s,"change",()=>{const i=s._modelValue,n=Fl(s),r=s.checked,a=s[Rn];if(ft(i)){const o=Zm(i,n),h=o!==-1;if(r&&!h)a(i.concat(n));else if(!r&&h){const l=[...i];l.splice(o,1),a(l)}}else if(Oo(i)){const o=new Set(i);r?o.add(n):o.delete(n),a(o)}else a(Rx(s,r))})},mounted:wg,beforeUpdate(s,e,t){s[Rn]=Eo(t),wg(s,e,t)}};function wg(s,{value:e,oldValue:t},i){s._modelValue=e;let n;if(ft(e))n=Zm(e,i.props.value)>-1;else if(Oo(e))n=e.has(i.props.value);else{if(e===t)return;n=Bo(e,Rx(s,!0))}s.checked!==n&&(s.checked=n)}const Ht={deep:!0,created(s,{value:e,modifiers:{number:t}},i){s._modelValue=e,Fr(s,"change",()=>{const n=Array.prototype.filter.call(s.options,r=>r.selected).map(r=>t?su(Fl(r)):Fl(r));s[Rn](s.multiple?Oo(s._modelValue)?new Set(n):n:n[0]),s._assigning=!0,lu(()=>{s._assigning=!1})}),s[Rn]=Eo(i)},mounted(s,{value:e}){Sg(s,e)},beforeUpdate(s,{value:e},t){s._modelValue=e,s[Rn]=Eo(t)},updated(s,{value:e}){s._assigning||Sg(s,e)}};function Sg(s,e){const t=s.multiple,i=ft(e);if(!(t&&!i&&!Oo(e))){for(let n=0,r=s.options.length;nString(l)===String(o)):a.selected=Zm(e,o)>-1}else a.selected=e.has(o);else if(Bo(Fl(a),e)){s.selectedIndex!==n&&(s.selectedIndex=n);return}}!t&&s.selectedIndex!==-1&&(s.selectedIndex=-1)}}function Fl(s){return"_value"in s?s._value:s.value}function Rx(s,e){const t=e?"_trueValue":"_falseValue";return t in s?s[t]:e}const eT=["ctrl","shift","alt","meta"],tT={stop:s=>s.stopPropagation(),prevent:s=>s.preventDefault(),self:s=>s.target!==s.currentTarget,ctrl:s=>!s.ctrlKey,shift:s=>!s.shiftKey,alt:s=>!s.altKey,meta:s=>!s.metaKey,left:s=>"button"in s&&s.button!==0,middle:s=>"button"in s&&s.button!==1,right:s=>"button"in s&&s.button!==2,exact:(s,e)=>eT.some(t=>s[`${t}Key`]&&!e.includes(t))},bt=(s,e)=>{if(!s)return s;const t=s._withMods||(s._withMods={}),i=e.join(".");return t[i]||(t[i]=((n,...r)=>{for(let a=0;a{const t=s._withKeys||(s._withKeys={}),i=e.join(".");return t[i]||(t[i]=(n=>{if(!("key"in n))return;const r=qr(n.key);if(e.some(a=>a===r||iT[a]===r))return s(n)}))},sT=Oi({patchProp:K_},C_);let Mg;function nT(){return Mg||(Mg=l_(sT))}const rT=((...s)=>{const e=nT().createApp(...s),{mount:t}=e;return e.mount=i=>{const n=oT(i);if(!n)return;const r=e._component;!Mt(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=t(n,!1,aT(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},e});function aT(s){if(s instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&s instanceof MathMLElement)return"mathml"}function oT(s){return vi(s)?document.querySelector(s):s}/*! * pinia v4.0.3 * (c) 2026 Eduardo San Martin Morote * @license MIT - */let kx;const gu=s=>kx=s,Fx=Symbol();function Tg(s){return s&&typeof s=="object"&&Object.prototype.toString.call(s)==="[object Object]"&&typeof s.toJSON!="function"}function cT(){const s=Ry(!0),e=s.run(()=>ht({}));let t=[],i=[];const n=Nr({install(r){gu(n),n._a=r,r.provide(Fx,n),r.config.globalProperties.$pinia=n,i.forEach(a=>t.push(a)),i=[]},use(r){return this._a?t.push(r):i.push(r),this},_p:t,_a:null,_e:s,_s:new Map,state:e});return n}const Xf=()=>{};function Ag(s,e,t,i=Xf){s.add(e);const n=()=>{s.delete(e)&&i()};return!t&&Py()&&YS(n),n}function Wa(s,...e){s.forEach(t=>{t(...e)})}const hT=s=>s(),Eg=Symbol(),Wu=Symbol();function Vf(s,e){s instanceof Map&&e instanceof Map?e.forEach((t,i)=>s.set(i,t)):s instanceof Set&&e instanceof Set&&e.forEach(s.add,s);for(const t in e){if(!Object.hasOwn(e,t))continue;const i=e[t],n=s[t];Tg(n)&&Tg(i)&&Object.hasOwn(s,t)&&!Si(i)&&!lr(i)?s[t]=Vf(n,i):s[t]=i}return s}const uT=Symbol();function dT(s){return!s||typeof s!="object"||!Object.hasOwn(s,uT)}const{assign:Tr}=Object;function fT(s){return!!(Si(s)&&s.effect)}function mT(s,e,t,i){const{state:n,actions:r,getters:a}=e,o=t.state.value[s];let h;function l(){o||(t.state.value[s]=n?n():{});const c=u_(t.state.value[s]);return Tr(c,r,Object.keys(a||{}).reduce((u,d)=>(u[d]=Nr(gt(()=>{gu(t);const f=t._s.get(s);return a[d].call(f,f)})),u),{}))}return h=Ox(s,l,e,t,i,!0),h}function Ox(s,e,t={},i,n,r){let a;const o=Tr({actions:{}},t),h={deep:!0};let l,c,u=new Set,d=new Set,f;const p=i.state.value[s];!r&&!p&&(i.state.value[s]={});let m;function g(_){let R;l=c=!1,typeof _=="function"?(_(i.state.value[s]),R={type:"patch function",storeId:s,events:f}):(Vf(i.state.value[s],_),R={type:"patch object",payload:_,storeId:s,events:f});const P=m=Symbol();lu().then(()=>{m===P&&(l=!0)}),c=!0,Wa(u,R,i.state.value[s])}const v=r?function(){const{state:R}=t,P=R?R():{};this.$patch(F=>{Tr(F,P)})}:Xf;function b(){a.stop(),u.clear(),d.clear(),i._s.delete(s)}const y=(_,R="")=>{if(Eg in _)return _[Wu]=R,_;const P=function(){gu(i);const F=Array.from(arguments),I=new Set,k=new Set;function B(L){I.add(L)}function D(L){k.add(L)}Wa(d,{args:F,name:P[Wu],store:A,after:B,onError:D});let U;try{U=_.apply(this&&this.$id===s?this:A,F)}catch(L){throw Wa(k,L),L}return U instanceof Promise?U.then(L=>(Wa(I,L),L)).catch(L=>(Wa(k,L),Promise.reject(L))):(Wa(I,U),U)};return P[Eg]=!0,P[Wu]=R,P},w={_p:i,$id:s,$onAction:Ag.bind(null,d),$patch:g,$reset:v,$subscribe(_,R={}){if(u.has(_))return Xf;const P=Ag(u,_,R.detached,()=>F()),F=a.run(()=>ds(()=>i.state.value[s],I=>{(R.flush==="sync"?c:l)&&_({storeId:s,type:"direct",events:f},I)},Tr({},h,R)));return P},$dispose:b},A=Ba(w);i._s.set(s,A);const M=(i._a&&i._a.runWithContext||hT)(()=>i._e.run(()=>(a=Ry()).run(()=>e({action:y}))));for(const _ in M){const R=M[_];Si(R)&&!fT(R)||lr(R)?r||(p&&dT(R)&&(Si(R)?R.value=p[_]:((R instanceof Set||R instanceof Map)&&R.clear(),Vf(R,p[_]))),i.state.value[s][_]=R):typeof R=="function"&&(M[_]=y(R,_),o.actions[_]=R)}return Tr(A,M),Tr($t(A),M),Object.defineProperty(A,"$state",{get:()=>i.state.value[s],set:_=>{g(R=>{Tr(R,_)})}}),i._p.forEach(_=>{const R=a.run(()=>_({store:A,app:i._a,pinia:i,options:o}));Tr(A,R)}),p&&r&&t.hydrate&&t.hydrate(A.$state,p),l=!0,c=!0,A}/*! #__NO_SIDE_EFFECTS__ */function pT(s,e,t){let i;const n=typeof e=="function";i=n?t:e;function r(a,o){const h=S_();return a=a||(h?fl(Fx,null):null),a&&gu(a),a=kx,a._s.has(s)||(n?Ox(s,e,i,a):mT(s,i,a)),a._s.get(s)}return r.$id=s,r}var Da=(s=>(s[s.WEBGL_LEGACY=0]="WEBGL_LEGACY",s[s.WEBGL=1]="WEBGL",s[s.WEBGL2=2]="WEBGL2",s))(Da||{}),Bx=(s=>(s[s.UNKNOWN=0]="UNKNOWN",s[s.WEBGL=1]="WEBGL",s[s.CANVAS=2]="CANVAS",s))(Bx||{}),Yf=(s=>(s[s.COLOR=16384]="COLOR",s[s.DEPTH=256]="DEPTH",s[s.STENCIL=1024]="STENCIL",s))(Yf||{}),dt=(s=>(s[s.NORMAL=0]="NORMAL",s[s.ADD=1]="ADD",s[s.MULTIPLY=2]="MULTIPLY",s[s.SCREEN=3]="SCREEN",s[s.OVERLAY=4]="OVERLAY",s[s.DARKEN=5]="DARKEN",s[s.LIGHTEN=6]="LIGHTEN",s[s.COLOR_DODGE=7]="COLOR_DODGE",s[s.COLOR_BURN=8]="COLOR_BURN",s[s.HARD_LIGHT=9]="HARD_LIGHT",s[s.SOFT_LIGHT=10]="SOFT_LIGHT",s[s.DIFFERENCE=11]="DIFFERENCE",s[s.EXCLUSION=12]="EXCLUSION",s[s.HUE=13]="HUE",s[s.SATURATION=14]="SATURATION",s[s.COLOR=15]="COLOR",s[s.LUMINOSITY=16]="LUMINOSITY",s[s.NORMAL_NPM=17]="NORMAL_NPM",s[s.ADD_NPM=18]="ADD_NPM",s[s.SCREEN_NPM=19]="SCREEN_NPM",s[s.NONE=20]="NONE",s[s.SRC_OVER=0]="SRC_OVER",s[s.SRC_IN=21]="SRC_IN",s[s.SRC_OUT=22]="SRC_OUT",s[s.SRC_ATOP=23]="SRC_ATOP",s[s.DST_OVER=24]="DST_OVER",s[s.DST_IN=25]="DST_IN",s[s.DST_OUT=26]="DST_OUT",s[s.DST_ATOP=27]="DST_ATOP",s[s.ERASE=26]="ERASE",s[s.SUBTRACT=28]="SUBTRACT",s[s.XOR=29]="XOR",s))(dt||{}),Rn=(s=>(s[s.POINTS=0]="POINTS",s[s.LINES=1]="LINES",s[s.LINE_LOOP=2]="LINE_LOOP",s[s.LINE_STRIP=3]="LINE_STRIP",s[s.TRIANGLES=4]="TRIANGLES",s[s.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",s[s.TRIANGLE_FAN=6]="TRIANGLE_FAN",s))(Rn||{}),Ne=(s=>(s[s.RGBA=6408]="RGBA",s[s.RGB=6407]="RGB",s[s.RG=33319]="RG",s[s.RED=6403]="RED",s[s.RGBA_INTEGER=36249]="RGBA_INTEGER",s[s.RGB_INTEGER=36248]="RGB_INTEGER",s[s.RG_INTEGER=33320]="RG_INTEGER",s[s.RED_INTEGER=36244]="RED_INTEGER",s[s.ALPHA=6406]="ALPHA",s[s.LUMINANCE=6409]="LUMINANCE",s[s.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",s[s.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",s[s.DEPTH_STENCIL=34041]="DEPTH_STENCIL",s))(Ne||{}),yo=(s=>(s[s.TEXTURE_2D=3553]="TEXTURE_2D",s[s.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",s[s.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",s[s.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",s[s.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",s[s.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",s[s.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",s))(yo||{}),Qe=(s=>(s[s.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",s[s.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",s[s.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",s[s.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",s[s.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",s[s.UNSIGNED_INT=5125]="UNSIGNED_INT",s[s.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",s[s.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",s[s.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",s[s.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",s[s.BYTE=5120]="BYTE",s[s.SHORT=5122]="SHORT",s[s.INT=5124]="INT",s[s.FLOAT=5126]="FLOAT",s[s.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",s[s.HALF_FLOAT=36193]="HALF_FLOAT",s))(Qe||{}),ze=(s=>(s[s.FLOAT=0]="FLOAT",s[s.INT=1]="INT",s[s.UINT=2]="UINT",s))(ze||{}),qs=(s=>(s[s.NEAREST=0]="NEAREST",s[s.LINEAR=1]="LINEAR",s))(qs||{}),Js=(s=>(s[s.CLAMP=33071]="CLAMP",s[s.REPEAT=10497]="REPEAT",s[s.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",s))(Js||{}),Us=(s=>(s[s.OFF=0]="OFF",s[s.POW2=1]="POW2",s[s.ON=2]="ON",s[s.ON_MANUAL=3]="ON_MANUAL",s))(Us||{}),Ni=(s=>(s[s.NPM=0]="NPM",s[s.UNPACK=1]="UNPACK",s[s.PMA=2]="PMA",s[s.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",s[s.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",s[s.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",s))(Ni||{}),En=(s=>(s[s.NO=0]="NO",s[s.YES=1]="YES",s[s.AUTO=2]="AUTO",s[s.BLEND=0]="BLEND",s[s.CLEAR=1]="CLEAR",s[s.BLIT=2]="BLIT",s))(En||{}),up=(s=>(s[s.AUTO=0]="AUTO",s[s.MANUAL=1]="MANUAL",s))(up||{}),Ls=(s=>(s.LOW="lowp",s.MEDIUM="mediump",s.HIGH="highp",s))(Ls||{}),Ci=(s=>(s[s.NONE=0]="NONE",s[s.SCISSOR=1]="SCISSOR",s[s.STENCIL=2]="STENCIL",s[s.SPRITE=3]="SPRITE",s[s.COLOR=4]="COLOR",s))(Ci||{}),Ai=(s=>(s[s.NONE=0]="NONE",s[s.LOW=2]="LOW",s[s.MEDIUM=4]="MEDIUM",s[s.HIGH=8]="HIGH",s))(Ai||{}),On=(s=>(s[s.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",s[s.ARRAY_BUFFER=34962]="ARRAY_BUFFER",s[s.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",s))(On||{});const gT={createCanvas:(s,e)=>{const t=document.createElement("canvas");return t.width=s,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,e)=>fetch(s,e),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")},We={ADAPTER:gT,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var zu=/iPhone/i,Cg=/iPod/i,Ig=/iPad/i,Rg=/\biOS-universal(?:.+)Mac\b/i,qu=/\bAndroid(?:.+)Mobile\b/i,Pg=/Android/i,za=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,ac=/Silk/i,$n=/Windows Phone/i,kg=/\bWindows(?:.+)ARM\b/i,Fg=/BlackBerry/i,Og=/BB10/i,Bg=/Opera Mini/i,Lg=/\b(CriOS|Chrome)(?:.+)Mobile/i,Dg=/Mobile(?:.+)Firefox\b/i,Ng=function(s){return typeof s<"u"&&s.platform==="MacIntel"&&typeof s.maxTouchPoints=="number"&&s.maxTouchPoints>1&&typeof MSStream>"u"};function vT(s){return function(e){return e.test(s)}}function Ug(s){var e={userAgent:"",platform:"",maxTouchPoints:0};!s&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof s=="string"?e.userAgent=s:s&&s.userAgent&&(e={userAgent:s.userAgent,platform:s.platform,maxTouchPoints:s.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=vT(t),r={apple:{phone:n(zu)&&!n($n),ipod:n(Cg),tablet:!n(zu)&&(n(Ig)||Ng(e))&&!n($n),universal:n(Rg),device:(n(zu)||n(Cg)||n(Ig)||n(Rg)||Ng(e))&&!n($n)},amazon:{phone:n(za),tablet:!n(za)&&n(ac),device:n(za)||n(ac)},android:{phone:!n($n)&&n(za)||!n($n)&&n(qu),tablet:!n($n)&&!n(za)&&!n(qu)&&(n(ac)||n(Pg)),device:!n($n)&&(n(za)||n(ac)||n(qu)||n(Pg))||n(/\bokhttp\b/i)},windows:{phone:n($n),tablet:n(kg),device:n($n)||n(kg)},other:{blackberry:n(Fg),blackberry10:n(Og),opera:n(Bg),firefox:n(Dg),chrome:n(Lg),device:n(Fg)||n(Og)||n(Bg)||n(Dg)||n(Lg)},any:!1,phone:!1,tablet:!1};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}const yT=Ug.default??Ug,tr=yT(globalThis.navigator);We.RETINA_PREFIX=/@([0-9\.]+)x/;We.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var mh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lx(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function xT(s){if(Object.prototype.hasOwnProperty.call(s,"__esModule"))return s;var e=s.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var n=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return s[i]}})}),t}var Ku={exports:{}},Xg;function bT(){return Xg||(Xg=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(h,l,c){this.fn=h,this.context=l,this.once=c||!1}function r(h,l,c,u,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new n(c,u||h,d),p=t?t+l:l;return h._events[p]?h._events[p].fn?h._events[p]=[h._events[p],f]:h._events[p].push(f):(h._events[p]=f,h._eventsCount++),h}function a(h,l){--h._eventsCount===0?h._events=new i:delete h._events[l]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var l=[],c,u;if(this._eventsCount===0)return l;for(u in c=this._events)e.call(c,u)&&l.push(t?u.slice(1):u);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(c)):l},o.prototype.listeners=function(l){var c=t?t+l:l,u=this._events[c];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d80*O){W=K=L[0],J=fe=L[1];for(var ge=O;geK&&(K=me),we>fe&&(fe=we);Ee=Math.max(K-W,fe-J),Ee=Ee!==0?32767/Ee:0}return i(V,q,O,W,J,Ee,0),q}function e(L,N,O,X,E){var V,q;if(E===U(L,N,O,X)>0)for(V=N;V=N;V-=X)q=k(V,L[V],L[V+1],q);return q&&w(q,q.next)&&(B(q),q=q.next),q}function t(L,N){if(!L)return L;N||(N=L);var O=L,X;do if(X=!1,!O.steiner&&(w(O,O.next)||y(O.prev,O,O.next)===0)){if(B(O),O=N=O.prev,O===O.next)break;X=!0}else O=O.next;while(X||O!==N);return N}function i(L,N,O,X,E,V,q){if(L){!q&&V&&f(L,X,E,V);for(var W=L,J,K;L.prev!==L.next;){if(J=L.prev,K=L.next,V?r(L,X,E,V):n(L)){N.push(J.i/O|0),N.push(L.i/O|0),N.push(K.i/O|0),B(L),L=K.next,W=K.next;continue}if(L=K,L===W){q?q===1?(L=a(t(L),N,O),i(L,N,O,X,E,V,2)):q===2&&o(L,N,O,X,E,V):i(t(L),N,O,X,E,V,1);break}}}}function n(L){var N=L.prev,O=L,X=L.next;if(y(N,O,X)>=0)return!1;for(var E=N.x,V=O.x,q=X.x,W=N.y,J=O.y,K=X.y,fe=EV?E>q?E:q:V>q?V:q,Ee=W>J?W>K?W:K:J>K?J:K,ge=X.next;ge!==N;){if(ge.x>=fe&&ge.x<=we&&ge.y>=me&&ge.y<=Ee&&v(E,W,V,J,q,K,ge.x,ge.y)&&y(ge.prev,ge,ge.next)>=0)return!1;ge=ge.next}return!0}function r(L,N,O,X){var E=L.prev,V=L,q=L.next;if(y(E,V,q)>=0)return!1;for(var W=E.x,J=V.x,K=q.x,fe=E.y,me=V.y,we=q.y,Ee=WJ?W>K?W:K:J>K?J:K,G=fe>me?fe>we?fe:we:me>we?me:we,Z=m(Ee,ge,N,O,X),z=m(Te,G,N,O,X),j=L.prevZ,te=L.nextZ;j&&j.z>=Z&&te&&te.z<=z;){if(j.x>=Ee&&j.x<=Te&&j.y>=ge&&j.y<=G&&j!==E&&j!==q&&v(W,fe,J,me,K,we,j.x,j.y)&&y(j.prev,j,j.next)>=0||(j=j.prevZ,te.x>=Ee&&te.x<=Te&&te.y>=ge&&te.y<=G&&te!==E&&te!==q&&v(W,fe,J,me,K,we,te.x,te.y)&&y(te.prev,te,te.next)>=0))return!1;te=te.nextZ}for(;j&&j.z>=Z;){if(j.x>=Ee&&j.x<=Te&&j.y>=ge&&j.y<=G&&j!==E&&j!==q&&v(W,fe,J,me,K,we,j.x,j.y)&&y(j.prev,j,j.next)>=0)return!1;j=j.prevZ}for(;te&&te.z<=z;){if(te.x>=Ee&&te.x<=Te&&te.y>=ge&&te.y<=G&&te!==E&&te!==q&&v(W,fe,J,me,K,we,te.x,te.y)&&y(te.prev,te,te.next)>=0)return!1;te=te.nextZ}return!0}function a(L,N,O){var X=L;do{var E=X.prev,V=X.next.next;!w(E,V)&&A(E,X,X.next,V)&&P(E,V)&&P(V,E)&&(N.push(E.i/O|0),N.push(X.i/O|0),N.push(V.i/O|0),B(X),B(X.next),X=L=V),X=X.next}while(X!==L);return t(X)}function o(L,N,O,X,E,V){var q=L;do{for(var W=q.next.next;W!==q.prev;){if(q.i!==W.i&&b(q,W)){var J=I(q,W);q=t(q,q.next),J=t(J,J.next),i(q,N,O,X,E,V,0),i(J,N,O,X,E,V,0);return}W=W.next}q=q.next}while(q!==L)}function h(L,N,O,X){var E=[],V,q,W,J,K;for(V=0,q=N.length;V=O.next.y&&O.next.y!==O.y){var W=O.x+(E-O.y)*(O.next.x-O.x)/(O.next.y-O.y);if(W<=X&&W>V&&(V=W,q=O.x=O.x&&O.x>=K&&X!==O.x&&v(Eq.x||O.x===q.x&&d(q,O)))&&(q=O,me=we)),O=O.next;while(O!==J);return q}function d(L,N){return y(L.prev,L,N.prev)<0&&y(N.next,L,L.next)<0}function f(L,N,O,X){var E=L;do E.z===0&&(E.z=m(E.x,E.y,N,O,X)),E.prevZ=E.prev,E.nextZ=E.next,E=E.next;while(E!==L);E.prevZ.nextZ=null,E.prevZ=null,p(E)}function p(L){var N,O,X,E,V,q,W,J,K=1;do{for(O=L,L=null,V=null,q=0;O;){for(q++,X=O,W=0,N=0;N0||J>0&&X;)W!==0&&(J===0||!X||O.z<=X.z)?(E=O,O=O.nextZ,W--):(E=X,X=X.nextZ,J--),V?V.nextZ=E:L=E,E.prevZ=V,V=E;O=X}V.nextZ=null,K*=2}while(q>1);return L}function m(L,N,O,X,E){return L=(L-O)*E|0,N=(N-X)*E|0,L=(L|L<<8)&16711935,L=(L|L<<4)&252645135,L=(L|L<<2)&858993459,L=(L|L<<1)&1431655765,N=(N|N<<8)&16711935,N=(N|N<<4)&252645135,N=(N|N<<2)&858993459,N=(N|N<<1)&1431655765,L|N<<1}function g(L){var N=L,O=L;do(N.x=(L-q)*(V-W)&&(L-q)*(X-W)>=(O-q)*(N-W)&&(O-q)*(V-W)>=(E-q)*(X-W)}function b(L,N){return L.next.i!==N.i&&L.prev.i!==N.i&&!R(L,N)&&(P(L,N)&&P(N,L)&&F(L,N)&&(y(L.prev,L,N.prev)||y(L,N.prev,N))||w(L,N)&&y(L.prev,L,L.next)>0&&y(N.prev,N,N.next)>0)}function y(L,N,O){return(N.y-L.y)*(O.x-N.x)-(N.x-L.x)*(O.y-N.y)}function w(L,N){return L.x===N.x&&L.y===N.y}function A(L,N,O,X){var E=_(y(L,N,O)),V=_(y(L,N,X)),q=_(y(O,X,L)),W=_(y(O,X,N));return!!(E!==V&&q!==W||E===0&&M(L,O,N)||V===0&&M(L,X,N)||q===0&&M(O,L,X)||W===0&&M(O,N,X))}function M(L,N,O){return N.x<=Math.max(L.x,O.x)&&N.x>=Math.min(L.x,O.x)&&N.y<=Math.max(L.y,O.y)&&N.y>=Math.min(L.y,O.y)}function _(L){return L>0?1:L<0?-1:0}function R(L,N){var O=L;do{if(O.i!==L.i&&O.next.i!==L.i&&O.i!==N.i&&O.next.i!==N.i&&A(O,O.next,L,N))return!0;O=O.next}while(O!==L);return!1}function P(L,N){return y(L.prev,L,L.next)<0?y(L,N,L.next)>=0&&y(L,L.prev,N)>=0:y(L,N,L.prev)<0||y(L,L.next,N)<0}function F(L,N){var O=L,X=!1,E=(L.x+N.x)/2,V=(L.y+N.y)/2;do O.y>V!=O.next.y>V&&O.next.y!==O.y&&E<(O.next.x-O.x)*(V-O.y)/(O.next.y-O.y)+O.x&&(X=!X),O=O.next;while(O!==L);return X}function I(L,N){var O=new D(L.i,L.x,L.y),X=new D(N.i,N.x,N.y),E=L.next,V=N.prev;return L.next=N,N.prev=L,O.next=E,E.prev=O,X.next=O,O.prev=X,V.next=X,X.prev=V,X}function k(L,N,O,X){var E=new D(L,N,O);return X?(E.next=X.next,E.prev=X,X.next.prev=E,X.next=E):(E.prev=E,E.next=E),E}function B(L){L.next.prev=L.prev,L.prev.next=L.next,L.prevZ&&(L.prevZ.nextZ=L.nextZ),L.nextZ&&(L.nextZ.prevZ=L.prevZ)}function D(L,N,O){this.i=L,this.x=N,this.y=O,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}s.deviation=function(L,N,O,X){var E=N&&N.length,V=E?N[0]*O:L.length,q=Math.abs(U(L,0,V,O));if(E)for(var W=0,J=N.length;W0&&(X+=L[E-1].length,O.holes.push(X))}return O},oc.exports}var _T=ST();const MT=Lx(_T);var na={},il={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */var TT=il.exports,Yg;function AT(){return Yg||(Yg=1,(function(s,e){(function(t){var i=e&&!e.nodeType&&e,n=s&&!s.nodeType&&s,r=typeof mh=="object"&&mh;(r.global===r||r.window===r||r.self===r)&&(t=r);var a,o=2147483647,h=36,l=1,c=26,u=38,d=700,f=72,p=128,m="-",g=/^xn--/,v=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=h-l,A=Math.floor,M=String.fromCharCode,_;function R(E){throw new RangeError(y[E])}function P(E,V){for(var q=E.length,W=[];q--;)W[q]=V(E[q]);return W}function F(E,V){var q=E.split("@"),W="";q.length>1&&(W=q[0]+"@",E=q[1]),E=E.replace(b,".");var J=E.split("."),K=P(J,V).join(".");return W+K}function I(E){for(var V=[],q=0,W=E.length,J,K;q=55296&&J<=56319&&q65535&&(V-=65536,q+=M(V>>>10&1023|55296),V=56320|V&1023),q+=M(V),q}).join("")}function B(E){return E-48<10?E-22:E-65<26?E-65:E-97<26?E-97:h}function D(E,V){return E+22+75*(E<26)-((V!=0)<<5)}function U(E,V,q){var W=0;for(E=q?A(E/d):E>>1,E+=A(E/V);E>w*c>>1;W+=h)E=A(E/w);return A(W+(w+1)*E/(E+u))}function L(E){var V=[],q=E.length,W,J=0,K=p,fe=f,me,we,Ee,ge,Te,G,Z,z,j;for(me=E.lastIndexOf(m),me<0&&(me=0),we=0;we=128&&R("not-basic"),V.push(E.charCodeAt(we));for(Ee=me>0?me+1:0;Ee=q&&R("invalid-input"),Z=B(E.charCodeAt(Ee++)),(Z>=h||Z>A((o-J)/Te))&&R("overflow"),J+=Z*Te,z=G<=fe?l:G>=fe+c?c:G-fe,!(ZA(o/j)&&R("overflow"),Te*=j;W=V.length+1,fe=U(J-ge,W,ge==0),A(J/W)>o-K&&R("overflow"),K+=A(J/W),J%=W,V.splice(J++,0,K)}return k(V)}function N(E){var V,q,W,J,K,fe,me,we,Ee,ge,Te,G=[],Z,z,j,te;for(E=I(E),Z=E.length,V=p,q=0,K=f,fe=0;fe=V&&TeA((o-q)/z)&&R("overflow"),q+=(me-V)*z,V=me,fe=0;feo&&R("overflow"),Te==V){for(we=q,Ee=h;ge=Ee<=K?l:Ee>=K+c?c:Ee-K,!(we-1e3&&ce<1e3||M.call(/e/,de))return de;var kt=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof ce=="number"){var zt=ce<0?-F(-ce):F(ce);if(zt!==ce){var Jt=String(zt),mt=b.call(de,Jt.length+1);return y.call(Jt,kt,"$&_")+"."+y.call(y.call(mt,/([0-9]{3})/g,"$&_"),/_$/,"")}}return y.call(de,kt,"$&_")}var X=IT,E=X.custom,V=z(E)?E:null,q={__proto__:null,double:'"',single:"'"},W={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Ju=function ce(de,kt,zt,Jt){var mt=kt||{};if(he(mt,"quoteStyle")&&!he(q,mt.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(he(mt,"maxStringLength")&&(typeof mt.maxStringLength=="number"?mt.maxStringLength<0&&mt.maxStringLength!==1/0:mt.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var Cs=he(mt,"customInspect")?mt.customInspect:!0;if(typeof Cs!="boolean"&&Cs!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(he(mt,"indent")&&mt.indent!==null&&mt.indent!==" "&&!(parseInt(mt.indent,10)===mt.indent&&mt.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(he(mt,"numericSeparator")&&typeof mt.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var Xs=mt.numericSeparator;if(typeof de>"u")return"undefined";if(de===null)return"null";if(typeof de=="boolean")return de?"true":"false";if(typeof de=="string")return Pt(de,mt);if(typeof de=="number"){if(de===0)return 1/0/de>0?"0":"-0";var Ui=String(de);return Xs?O(de,Ui):Ui}if(typeof de=="bigint"){var Is=String(de)+"n";return Xs?O(de,Is):Is}var xr=typeof mt.depth>"u"?5:mt.depth;if(typeof zt>"u"&&(zt=0),zt>=xr&&xr>0&&typeof de=="object")return me(de)?"[Array]":"[Object]";var ln=Wi(mt,zt);if(typeof Jt>"u")Jt=[];else if(ye(Jt,de)>=0)return"[Circular]";function zi(_e,Me,xe){if(Me&&(Jt=P.call(Jt),Jt.push(Me)),xe){var De={depth:mt.depth};return he(mt,"quoteStyle")&&(De.quoteStyle=mt.quoteStyle),ce(_e,De,zt+1,Jt)}return ce(_e,mt,zt+1,Jt)}if(typeof de=="function"&&!Ee(de)){var Ya=le(de),$a=yi(de,zi);return"[Function"+(Ya?": "+Ya:" (anonymous)")+"]"+($a.length>0?" { "+R.call($a,", ")+" }":"")}if(z(de)){var Qr=D?y.call(String(de),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(de);return typeof de=="object"&&!D?Rt(Qr):Qr}if(St(de)){for(var cn="<"+A.call(String(de.nodeName)),bs=de.attributes||[],hn=0;hn",cn}if(me(de)){if(de.length===0)return"[]";var Xn=yi(de,zi);return ln&&!Oi(Xn)?"["+on(Xn,ln)+"]":"[ "+R.call(Xn,", ")+" ]"}if(ge(de)){var un=yi(de,zi);return!("cause"in Error.prototype)&&"cause"in de&&!L.call(de,"cause")?"{ ["+String(de)+"] "+R.call(_.call("[cause]: "+zi(de.cause),un),", ")+" }":un.length===0?"["+String(de)+"]":"{ ["+String(de)+"] "+R.call(un,", ")+" }"}if(typeof de=="object"&&Cs){if(V&&typeof de[V]=="function"&&X)return X(de,{depth:xr-zt});if(Cs!=="symbol"&&typeof de.inspect=="function")return de.inspect()}if(ae(de)){var Ga=[];return i&&i.call(de,function(_e,Me){Ga.push(zi(Me,de,!0)+" => "+zi(_e,de))}),Fi("Map",t.call(de),Ga,ln)}if(Oe(de)){var br=[];return o&&o.call(de,function(_e){br.push(zi(_e,de))}),Fi("Set",a.call(de),br,ln)}if(Le(de))return Zt("WeakMap");if(tt(de))return Zt("WeakSet");if(Re(de))return Zt("WeakRef");if(G(de))return Rt(zi(Number(de)));if(j(de))return Rt(zi(I.call(de)));if(Z(de))return Rt(p.call(de));if(Te(de))return Rt(zi(String(de)));if(typeof window<"u"&&de===window)return"{ [object Window] }";if(typeof globalThis<"u"&&de===globalThis||typeof mh<"u"&&de===mh)return"{ [object globalThis] }";if(!we(de)&&!Ee(de)){var H=yi(de,zi),Y=N?N(de)===Object.prototype:de instanceof Object||de.constructor===Object,ee=de instanceof Object?"":"null prototype",ne=!Y&&U&&Object(de)===de&&U in de?b.call(ve(de),8,-1):ee?"Object":"",ue=Y||typeof de.constructor!="function"?"":de.constructor.name?de.constructor.name+" ":"",pe=ue+(ne||ee?"["+R.call(_.call([],ne||[],ee||[]),": ")+"] ":"");return H.length===0?pe+"{}":ln?pe+"{"+on(H,ln)+"}":pe+"{ "+R.call(H,", ")+" }"}return String(de)};function J(ce,de,kt){var zt=kt.quoteStyle||de,Jt=q[zt];return Jt+ce+Jt}function K(ce){return y.call(String(ce),/"/g,""")}function fe(ce){return!U||!(typeof ce=="object"&&(U in ce||typeof ce[U]<"u"))}function me(ce){return ve(ce)==="[object Array]"&&fe(ce)}function we(ce){return ve(ce)==="[object Date]"&&fe(ce)}function Ee(ce){return ve(ce)==="[object RegExp]"&&fe(ce)}function ge(ce){return ve(ce)==="[object Error]"&&fe(ce)}function Te(ce){return ve(ce)==="[object String]"&&fe(ce)}function G(ce){return ve(ce)==="[object Number]"&&fe(ce)}function Z(ce){return ve(ce)==="[object Boolean]"&&fe(ce)}function z(ce){if(D)return ce&&typeof ce=="object"&&ce instanceof Symbol;if(typeof ce=="symbol")return!0;if(!ce||typeof ce!="object"||!B)return!1;try{return B.call(ce),!0}catch{}return!1}function j(ce){if(!ce||typeof ce!="object"||!I)return!1;try{return I.call(ce),!0}catch{}return!1}var te=Object.prototype.hasOwnProperty||function(ce){return ce in this};function he(ce,de){return te.call(ce,de)}function ve(ce){return m.call(ce)}function le(ce){if(ce.name)return ce.name;var de=v.call(g.call(ce),/^function\s*([\w$]+)/);return de?de[1]:null}function ye(ce,de){if(ce.indexOf)return ce.indexOf(de);for(var kt=0,zt=ce.length;ktde.maxStringLength){var kt=ce.length-de.maxStringLength,zt="... "+kt+" more character"+(kt>1?"s":"");return Pt(b.call(ce,0,de.maxStringLength),de)+zt}var Jt=W[de.quoteStyle||"single"];Jt.lastIndex=0;var mt=y.call(y.call(ce,Jt,"\\$1"),/[\x00-\x1f]/g,wt);return J(mt,"single",de)}function wt(ce){var de=ce.charCodeAt(0),kt={8:"b",9:"t",10:"n",12:"f",13:"r"}[de];return kt?"\\"+kt:"\\x"+(de<16?"0":"")+w.call(de.toString(16))}function Rt(ce){return"Object("+ce+")"}function Zt(ce){return ce+" { ? }"}function Fi(ce,de,kt,zt){var Jt=zt?on(kt,zt):R.call(kt,", ");return ce+" ("+de+") {"+Jt+"}"}function Oi(ce){for(var de=0;de=0)return!1;return!0}function Wi(ce,de){var kt;if(ce.indent===" ")kt=" ";else if(typeof ce.indent=="number"&&ce.indent>0)kt=R.call(Array(ce.indent+1)," ");else return null;return{base:kt,prev:R.call(Array(de+1),kt)}}function on(ce,de){if(ce.length===0)return"";var kt=` -`+de.prev+de.base;return kt+R.call(ce,","+kt)+` -`+de.prev}function yi(ce,de){var kt=me(ce),zt=[];if(kt){zt.length=ce.length;for(var Jt=0;Jt"u"||!_?s:_(Uint8Array),D={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?s:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?s:ArrayBuffer,"%ArrayIteratorPrototype%":M&&_?_([][Symbol.iterator]()):s,"%AsyncFromSyncIteratorPrototype%":s,"%AsyncFunction%":k,"%AsyncGenerator%":k,"%AsyncGeneratorFunction%":k,"%AsyncIteratorPrototype%":k,"%Atomics%":typeof Atomics>"u"?s:Atomics,"%BigInt%":typeof BigInt>"u"?s:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?s:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?s:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?s:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":t,"%eval%":eval,"%EvalError%":i,"%Float16Array%":typeof Float16Array>"u"?s:Float16Array,"%Float32Array%":typeof Float32Array>"u"?s:Float32Array,"%Float64Array%":typeof Float64Array>"u"?s:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?s:FinalizationRegistry,"%Function%":g,"%GeneratorFunction%":k,"%Int8Array%":typeof Int8Array>"u"?s:Int8Array,"%Int16Array%":typeof Int16Array>"u"?s:Int16Array,"%Int32Array%":typeof Int32Array>"u"?s:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":M&&_?_(_([][Symbol.iterator]())):s,"%JSON%":typeof JSON=="object"?JSON:s,"%Map%":typeof Map>"u"?s:Map,"%MapIteratorPrototype%":typeof Map>"u"||!M||!_?s:_(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":e,"%Object.getOwnPropertyDescriptor%":b,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?s:Promise,"%Proxy%":typeof Proxy>"u"?s:Proxy,"%RangeError%":n,"%ReferenceError%":r,"%Reflect%":typeof Reflect>"u"?s:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?s:Set,"%SetIteratorPrototype%":typeof Set>"u"||!M||!_?s:_(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?s:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":M&&_?_(""[Symbol.iterator]()):s,"%Symbol%":M?Symbol:s,"%SyntaxError%":a,"%ThrowTypeError%":A,"%TypedArray%":B,"%TypeError%":o,"%Uint8Array%":typeof Uint8Array>"u"?s:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?s:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?s:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?s:Uint32Array,"%URIError%":h,"%WeakMap%":typeof WeakMap>"u"?s:WeakMap,"%WeakRef%":typeof WeakRef>"u"?s:WeakRef,"%WeakSet%":typeof WeakSet>"u"?s:WeakSet,"%Function.prototype.call%":I,"%Function.prototype.apply%":F,"%Object.defineProperty%":y,"%Object.getPrototypeOf%":R,"%Math.abs%":l,"%Math.floor%":c,"%Math.max%":u,"%Math.min%":d,"%Math.pow%":f,"%Math.round%":p,"%Math.sign%":m,"%Reflect.getPrototypeOf%":P};if(_)try{null.error}catch(Ee){var U=_(_(Ee));D["%Error.prototype%"]=U}var L=function Ee(ge){var Te;if(ge==="%AsyncFunction%")Te=v("async function () {}");else if(ge==="%GeneratorFunction%")Te=v("function* () {}");else if(ge==="%AsyncGeneratorFunction%")Te=v("async function* () {}");else if(ge==="%AsyncGenerator%"){var G=Ee("%AsyncGeneratorFunction%");G&&(Te=G.prototype)}else if(ge==="%AsyncIteratorPrototype%"){var Z=Ee("%AsyncGenerator%");Z&&_&&(Te=_(Z.prototype))}return D[ge]=Te,Te},N={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O=yu(),X=QT(),E=O.call(I,Array.prototype.concat),V=O.call(F,Array.prototype.splice),q=O.call(I,String.prototype.replace),W=O.call(I,String.prototype.slice),J=O.call(I,RegExp.prototype.exec),K=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,fe=/\\(\\)?/g,me=function(ge){var Te=W(ge,0,1),G=W(ge,-1);if(Te==="%"&&G!=="%")throw new a("invalid intrinsic syntax, expected closing `%`");if(G==="%"&&Te!=="%")throw new a("invalid intrinsic syntax, expected opening `%`");var Z=[];return q(ge,K,function(z,j,te,he){Z[Z.length]=te?q(he,fe,"$1"):j||z}),Z},we=function(ge,Te){var G=ge,Z;if(X(N,G)&&(Z=N[G],G="%"+Z[0]+"%"),X(D,G)){var z=D[G];if(z===k&&(z=L(G)),typeof z>"u"&&!Te)throw new o("intrinsic "+ge+" exists, but is not available. Please file an issue!");return{alias:Z,name:G,value:z}}throw new a("intrinsic "+ge+" does not exist!")};return kd=function(ge,Te){if(typeof ge!="string"||ge.length===0)throw new o("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof Te!="boolean")throw new o('"allowMissing" argument must be a boolean');if(J(/^%?[^%]*%?$/,ge)===null)throw new a("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var G=me(ge),Z=G.length>0?G[0]:"",z=we("%"+Z+"%",Te),j=z.name,te=z.value,he=!1,ve=z.alias;ve&&(Z=ve[0],V(G,E([0,1],ve)));for(var le=1,ye=!0;le=G.length){var Oe=b(te,ae);ye=!!Oe,ye&&"get"in Oe&&!("originalValue"in Oe.get)?te=Oe.get:te=te[ae]}else ye=X(te,ae),te=te[ae];ye&&!he&&(D[j]=te)}}return te},kd}var Fd,T0;function Gx(){if(T0)return Fd;T0=1;var s=fp(),e=$x(),t=e([s("%String.prototype.indexOf%")]);return Fd=function(n,r){var a=s(n,!!r);return typeof a=="function"&&t(n,".prototype.")>-1?e([a]):a},Fd}var Od,A0;function Hx(){if(A0)return Od;A0=1;var s=fp(),e=Gx(),t=vu(),i=Do(),n=s("%Map%",!0),r=e("Map.prototype.get",!0),a=e("Map.prototype.set",!0),o=e("Map.prototype.has",!0),h=e("Map.prototype.delete",!0),l=e("Map.prototype.size",!0);return Od=!!n&&function(){var u,d={assert:function(f){if(!d.has(f))throw new i("Side channel does not contain "+t(f))},delete:function(f){if(u){var p=h(u,f);return l(u)===0&&(u=void 0),p}return!1},get:function(f){if(u)return r(u,f)},has:function(f){return u?o(u,f):!1},set:function(f,p){u||(u=new n),a(u,f,p)}};return d},Od}var Bd,E0;function e2(){if(E0)return Bd;E0=1;var s=fp(),e=Gx(),t=vu(),i=Hx(),n=Do(),r=s("%WeakMap%",!0),a=e("WeakMap.prototype.get",!0),o=e("WeakMap.prototype.set",!0),h=e("WeakMap.prototype.has",!0),l=e("WeakMap.prototype.delete",!0);return Bd=r?function(){var u,d,f={assert:function(p){if(!f.has(p))throw new n("Side channel does not contain "+t(p))},delete:function(p){if(r&&p&&(typeof p=="object"||typeof p=="function")){if(u)return l(u,p)}else if(i&&d)return d.delete(p);return!1},get:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?a(u,p):d&&d.get(p)},has:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?h(u,p):!!d&&d.has(p)},set:function(p,m){r&&p&&(typeof p=="object"||typeof p=="function")?(u||(u=new r),o(u,p,m)):i&&(d||(d=i()),d.set(p,m))}};return f}:i,Bd}var Ld,C0;function jx(){if(C0)return Ld;C0=1;var s=Do(),e=vu(),t=RT(),i=Hx(),n=e2(),r=n||i||t;return Ld=function(){var o,h={assert:function(l){if(!h.has(l)){var c=l&&Object(l)===l?"the given object key":e(l);throw new s("Side channel does not contain "+c)}},delete:function(l){return!!o&&o.delete(l)},get:function(l){return o&&o.get(l)},has:function(l){return!!o&&o.has(l)},set:function(l,c){o||(o=r()),o.set(l,c)}};return h},Ld}var Dd,I0;function mp(){if(I0)return Dd;I0=1;var s=String.prototype.replace,e=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return Dd={default:t.RFC3986,formatters:{RFC1738:function(i){return s.call(i,e,"+")},RFC3986:function(i){return String(i)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},Dd}var Nd,R0;function Wx(){if(R0)return Nd;R0=1;var s=mp(),e=jx(),t=Ux(),i=Object.prototype.hasOwnProperty,n=Array.isArray,r=e(),a=function(P,F){return r.set(P,F),P},o=function(P){return r.has(P)},h=function(P){return r.get(P)},l=function(P,F){r.set(P,F)},c=(function(){for(var R=[],P=0;P<256;++P)R[R.length]="%"+((P<16?"0":"")+P.toString(16)).toUpperCase();return R})(),u=function(P){for(;P.length>1;){var F=P.pop(),I=F.obj[F.prop];if(n(I)){for(var k=[],B=0;B=I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(P.concat(F),I),k)}P[k]=F}else if(P&&typeof P=="object")if(o(P)){var B=h(P)+1;P[B]=F,l(P,B)}else{if(I&&I.strictMerge)return[P,F];(I&&(I.plainObjects||I.allowPrototypes)||!i.call(Object.prototype,F))&&(P[F]=!0)}else return[P,F];return P}if(!P||typeof P!="object"){if(o(F)){for(var D=Object.keys(F),U=I&&I.plainObjects?{__proto__:null,0:P}:{0:P},L=0;LI.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(O,I),O.length-1)}return O}var X=P;if(n(P)&&!n(F)&&(X=d(P,I)),n(P)&&n(F)){if(F.forEach(function(E,V){if(i.call(P,V)){var q=P[V];q&&typeof q=="object"&&E&&typeof E=="object"?P[V]=R(q,E,I):P[P.length]=E}else P[V]=E}),I&&typeof I.arrayLimit=="number"&&P.length>I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(P,I),P.length-1)}return P}return Object.keys(F).reduce(function(E,V){var q=F[V];if(i.call(E,V)?f(E,V,R(E[V],q,I)):f(E,V,q),o(F)&&!o(E)&&a(E,h(F)),o(E)){var W=parseInt(V,10);String(W)===V&&W>=0&&W>h(E)&&l(E,W)}return E},X)},m=function(P,F){return Object.keys(F).reduce(function(I,k){return f(I,k,F[k]),I},P)},g=function(R,P,F){var I=R.replace(/\+/g," ");if(F==="iso-8859-1")return I.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(I)}catch{return I}},v=1024,b=function(P,F,I,k,B){if(P.length===0)return P;var D=P;if(typeof P=="symbol"?D=Symbol.prototype.toString.call(P):typeof P!="string"&&(D=String(P)),I==="iso-8859-1")return escape(D).replace(/%u[0-9a-f]{4}/gi,function(q){return"%26%23"+parseInt(q.slice(2),16)+"%3B"});for(var U="",L=0;L=v?D.slice(L,L+v):D;if(L+v=55296&&O<=56319&&(N=N.slice(0,-1),L-=1)}for(var X=[],E=0;E=48&&V<=57||V>=65&&V<=90||V>=97&&V<=122||B===s.RFC1738&&(V===40||V===41)){X[X.length]=N.charAt(E);continue}if(V<128){X[X.length]=c[V];continue}if(V<2048){X[X.length]=c[192|V>>6]+c[128|V&63];continue}if(V<55296||V>=57344){X[X.length]=c[224|V>>12]+c[128|V>>6&63]+c[128|V&63];continue}E+=1,V=65536+((V&1023)<<10|N.charCodeAt(E)&1023),X[X.length]=c[240|V>>18]+c[128|V>>12&63]+c[128|V>>6&63]+c[128|V&63]}U+=X.join("")}return U},y=function(P){for(var F=[{obj:{o:P},prop:"o"}],I=e(),k=0;kI){if(B)throw new RangeError("Array limit exceeded. Only "+I+" element"+(I===1?"":"s")+" allowed in an array.");return a(d(U,{plainObjects:k}),U.length-1)}return U},_=function(P,F){if(n(P)){for(var I=[],k=0;k"u"&&(E=0)}if(typeof P=="function"?O=P(v,O):O instanceof Date?O=k(O):b==="comma"&&r(O)&&(O=e.maybeMap(O,function(j){return j instanceof Date?k(j):j})),O===null){if(A)return D(R&&!U?R(v,c.encoder,L,"key",B):v);O=""}if(u(O)||e.isBuffer(O)){if(R){var W=U?v:R(v,c.encoder,L,"key",B);return[D(W)+"="+D(R(O,c.encoder,L,"value",B))]}return[D(v)+"="+D(String(O))]}var J=[];if(typeof O>"u")return J;var K;if(b==="comma"&&r(O))U&&R&&(O=e.maybeMap(O,function(j){return j==null?j:R(j)})),K=[{value:O.length>0?O.join(",")||null:void 0}];else if(r(P))K=P;else{var fe=Object.keys(O);K=F?fe.sort(F):fe}var me=_?String(v).replace(/\./g,"%2E"):String(v),we=y&&r(O)&&O.length===1?me+"[]":me;if(w&&r(O)&&O.length===0)return we+"[]";for(var Ee=0;Ee"u"?g.encodeDotInKeys===!0?!0:c.allowDots:!!g.allowDots;return{addQueryPrefix:typeof g.addQueryPrefix=="boolean"?g.addQueryPrefix:c.addQueryPrefix,allowDots:M,allowEmptyArrays:typeof g.allowEmptyArrays=="boolean"?!!g.allowEmptyArrays:c.allowEmptyArrays,arrayFormat:A,charset:v,charsetSentinel:typeof g.charsetSentinel=="boolean"?g.charsetSentinel:c.charsetSentinel,commaRoundTrip:!!g.commaRoundTrip,delimiter:typeof g.delimiter>"u"?c.delimiter:g.delimiter,encode:typeof g.encode=="boolean"?g.encode:c.encode,encodeDotInKeys:typeof g.encodeDotInKeys=="boolean"?g.encodeDotInKeys:c.encodeDotInKeys,encoder:typeof g.encoder=="function"?g.encoder:c.encoder,encodeValuesOnly:typeof g.encodeValuesOnly=="boolean"?g.encodeValuesOnly:c.encodeValuesOnly,filter:w,format:b,formatter:y,serializeDate:typeof g.serializeDate=="function"?g.serializeDate:c.serializeDate,skipNulls:typeof g.skipNulls=="boolean"?g.skipNulls:c.skipNulls,sort:typeof g.sort=="function"?g.sort:null,strictNullHandling:typeof g.strictNullHandling=="boolean"?g.strictNullHandling:c.strictNullHandling}};return Ud=function(m,g){var v=m,b=p(g),y,w;typeof b.filter=="function"?(w=b.filter,v=w("",v)):r(b.filter)&&(w=b.filter,y=w);var A=[];if(typeof v!="object"||v===null)return"";var M=n[b.arrayFormat],_=M==="comma"&&b.commaRoundTrip;y||(y=Object.keys(v)),b.sort&&y.sort(b.sort);for(var R=s(),P=0;P"u"||F===null)){var I=v[F];b.skipNulls&&I===null||o(A,f(I,F,M,_,b.allowEmptyArrays,b.strictNullHandling,b.skipNulls,b.encodeDotInKeys,b.encode?b.encoder:null,b.filter,b.sort,b.allowDots,b.serializeDate,b.format,b.formatter,b.encodeValuesOnly,b.charset,R))}}var k=A.join(b.delimiter),B=b.addQueryPrefix===!0?"?":"";return b.charsetSentinel&&(b.charset==="iso-8859-1"?B+="utf8=%26%2310003%3B"+b.delimiter:B+="utf8=%E2%9C%93"+b.delimiter),k.length>0?B+k:""},Ud}var Xd,k0;function i2(){if(k0)return Xd;k0=1;var s=Wx(),e=Object.prototype.hasOwnProperty,t=Array.isArray,i={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:s.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},n=function(f){return f.replace(/&#(\d+);/g,function(p,m){return String.fromCharCode(parseInt(m,10))})},r=function(f,p,m,g){if(f&&typeof f=="string"&&p.comma&&f.indexOf(",")>-1){if(g&&p.throwOnLimitExceeded)for(var v=0,b=f.indexOf(",");b>-1;){if(v+=1,v>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");b=f.indexOf(",",b+1)}return f.split(",")}if(p.throwOnLimitExceeded&&m>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");return f},a="utf8=%26%2310003%3B",o="utf8=%E2%9C%93",h=function(p,m){var g={__proto__:null},v=m.ignoreQueryPrefix?p.replace(/^\?/,""):p;v=v.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var b=m.parameterLimit===1/0?void 0:m.parameterLimit,y=v.split(m.delimiter,m.throwOnLimitExceeded&&typeof b<"u"?b+1:b);if(m.throwOnLimitExceeded&&typeof b<"u"&&y.length>b)throw new RangeError("Parameter limit exceeded. Only "+b+" parameter"+(b===1?"":"s")+" allowed.");var w=-1,A,M=m.charset;if(m.charsetSentinel)for(A=0;A-1&&(I=t(I)?[I]:I),m.comma&&t(I)&&I.length>m.arrayLimit&&(I=s.combine([],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded)),F!==null){var k=e.call(g,F);k&&(m.duplicates==="combine"||_.indexOf("[]=")>-1)?g[F]=s.combine(g[F],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded):(!k||m.duplicates==="last")&&(g[F]=I)}}return g},l=function(f,p,m,g){var v=0;if(f.length>0&&f[f.length-1]==="[]"){var b=f.slice(0,-1).join("");v=Array.isArray(p)&&p[b]?p[b].length:0}for(var y=g?p:r(p,m,v),w=f.length-1;w>=0;--w){var A,M=f[w];if(M==="[]"&&m.parseArrays)s.isOverflow(y)?A=y:A=m.allowEmptyArrays&&(y===""||m.strictNullHandling&&y===null)?[]:s.combine([],y,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded);else{A=m.plainObjects?{__proto__:null}:{};var _=M.charAt(0)==="["&&M.charAt(M.length-1)==="]"?M.slice(1,-1):M,R=m.decodeDotInKeys?_.replace(/%2E/g,"."):_,P=parseInt(R,10),F=!isNaN(P)&&M!==R&&String(P)===R&&P>=0&&m.parseArrays;if(!m.parseArrays&&R==="")A={0:y};else if(F&&P=0?g.slice(0,b):g;if(y){if(!m.plainObjects&&e.call(Object.prototype,y)&&!m.allowPrototypes)return;v[v.length]=y}for(var w=g.length,A=b,M=0;A>=0&&M=0){if(m.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+m.depth+" and strictDepth is true");v[v.length]="["+g.slice(A)+"]"}return v},u=function(p,m,g,v){if(p){var b=c(p,g);if(b)return l(b,m,g,v)}},d=function(p){if(!p)return i;if(typeof p.allowEmptyArrays<"u"&&typeof p.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof p.decodeDotInKeys<"u"&&typeof p.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(p.decoder!==null&&typeof p.decoder<"u"&&typeof p.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof p.charset<"u"&&p.charset!=="utf-8"&&p.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof p.throwOnLimitExceeded<"u"&&typeof p.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var m=typeof p.charset>"u"?i.charset:p.charset,g=typeof p.duplicates>"u"?i.duplicates:p.duplicates;if(g!=="combine"&&g!=="first"&&g!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var v=typeof p.allowDots>"u"?p.decodeDotInKeys===!0?!0:i.allowDots:!!p.allowDots;return{allowDots:v,allowEmptyArrays:typeof p.allowEmptyArrays=="boolean"?!!p.allowEmptyArrays:i.allowEmptyArrays,allowPrototypes:typeof p.allowPrototypes=="boolean"?p.allowPrototypes:i.allowPrototypes,allowSparse:typeof p.allowSparse=="boolean"?p.allowSparse:i.allowSparse,arrayLimit:typeof p.arrayLimit=="number"?p.arrayLimit:i.arrayLimit,charset:m,charsetSentinel:typeof p.charsetSentinel=="boolean"?p.charsetSentinel:i.charsetSentinel,comma:typeof p.comma=="boolean"?p.comma:i.comma,decodeDotInKeys:typeof p.decodeDotInKeys=="boolean"?p.decodeDotInKeys:i.decodeDotInKeys,decoder:typeof p.decoder=="function"?p.decoder:i.decoder,delimiter:typeof p.delimiter=="string"||s.isRegExp(p.delimiter)?p.delimiter:i.delimiter,depth:typeof p.depth=="number"||p.depth===!1?+p.depth:i.depth,duplicates:g,ignoreQueryPrefix:p.ignoreQueryPrefix===!0,interpretNumericEntities:typeof p.interpretNumericEntities=="boolean"?p.interpretNumericEntities:i.interpretNumericEntities,parameterLimit:typeof p.parameterLimit=="number"?p.parameterLimit:i.parameterLimit,parseArrays:p.parseArrays!==!1,plainObjects:typeof p.plainObjects=="boolean"?p.plainObjects:i.plainObjects,strictDepth:typeof p.strictDepth=="boolean"?!!p.strictDepth:i.strictDepth,strictMerge:typeof p.strictMerge=="boolean"?!!p.strictMerge:i.strictMerge,strictNullHandling:typeof p.strictNullHandling=="boolean"?p.strictNullHandling:i.strictNullHandling,throwOnLimitExceeded:typeof p.throwOnLimitExceeded=="boolean"?p.throwOnLimitExceeded:!1}};return Xd=function(f,p){var m=d(p);if(f===""||f===null||typeof f>"u")return m.plainObjects?{__proto__:null}:{};for(var g=typeof f=="string"?h(f,m):f,v=m.plainObjects?{__proto__:null}:{},b=Object.keys(g),y=0;y",'"',"`"," ","\r",` -`," "],a=["{","}","|","\\","^","`"].concat(r),o=["'"].concat(a),h=["%","/","?",";","#"].concat(o),l=["/","?","#"],c=255,u=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},p={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=s2();function v(A,M,_){if(A&&typeof A=="object"&&A instanceof e)return A;var R=new e;return R.parse(A,M,_),R}e.prototype.parse=function(A,M,_){if(typeof A!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof A);var R=A.indexOf("?"),P=R!==-1&&R127?fe+="x":fe+=K[me];if(!fe.match(u)){var Ee=W.slice(0,O),ge=W.slice(O+1),Te=K.match(d);Te&&(Ee.push(Te[1]),ge.unshift(Te[2])),ge.length&&(k="/"+ge.join(".")+k),this.hostname=Ee.join(".");break}}}this.hostname.length>c?this.hostname="":this.hostname=this.hostname.toLowerCase(),q||(this.hostname=s.toASCII(this.hostname));var G=this.port?":"+this.port:"",Z=this.hostname||"";this.host=Z+G,this.href+=this.host,q&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),k[0]!=="/"&&(k="/"+k))}if(!f[U])for(var O=0,J=o.length;O0?_.host.split("@"):!1;fe&&(_.auth=fe.shift(),_.hostname=fe.shift(),_.host=_.hostname)}return _.search=A.search,_.query=A.query,(_.pathname!==null||_.search!==null)&&(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.href=_.format(),_}if(!W.length)return _.pathname=null,_.search?_.path="/"+_.search:_.path=null,_.href=_.format(),_;for(var me=W.slice(-1)[0],we=(_.host||A.host||W.length>1)&&(me==="."||me==="..")||me==="",Ee=0,ge=W.length;ge>=0;ge--)me=W[ge],me==="."?W.splice(ge,1):me===".."?(W.splice(ge,1),Ee++):Ee&&(W.splice(ge,1),Ee--);if(!V&&!q)for(;Ee--;Ee)W.unshift("..");V&&W[0]!==""&&(!W[0]||W[0].charAt(0)!=="/")&&W.unshift(""),we&&W.join("/").substr(-1)!=="/"&&W.push("");var Te=W[0]===""||W[0]&&W[0].charAt(0)==="/";if(K){_.hostname=Te?"":W.length?W.shift():"",_.host=_.hostname;var fe=_.host&&_.host.indexOf("@")>0?_.host.split("@"):!1;fe&&(_.auth=fe.shift(),_.hostname=fe.shift(),_.host=_.hostname)}return V=V||_.host&&W.length,V&&!Te&&W.unshift(""),W.length>0?_.pathname=W.join("/"):(_.pathname=null,_.path=null),(_.pathname!==null||_.search!==null)&&(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.auth=A.auth||_.auth,_.slashes=_.slashes||A.slashes,_.href=_.format(),_},e.prototype.parseHost=function(){var A=this.host,M=i.exec(A);M&&(M=M[0],M!==":"&&(this.port=M.substr(1)),A=A.substr(0,A.length-M.length)),A&&(this.hostname=A)},na.parse=v,na.resolve=y,na.resolveObject=w,na.format=b,na.Url=e,na}n2();const B0={};function Ot(s,e,t=3){if(B0[e])return;let i=new Error().stack;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",`${e} + */let Px;const pu=s=>Px=s,kx=Symbol();function _g(s){return s&&typeof s=="object"&&Object.prototype.toString.call(s)==="[object Object]"&&typeof s.toJSON!="function"}function lT(){const s=Iy(!0),e=s.run(()=>lt({}));let t=[],i=[];const n=Dr({install(r){pu(n),n._a=r,r.provide(kx,n),r.config.globalProperties.$pinia=n,i.forEach(a=>t.push(a)),i=[]},use(r){return this._a?t.push(r):i.push(r),this},_p:t,_a:null,_e:s,_s:new Map,state:e});return n}const Uf=()=>{};function Tg(s,e,t,i=Uf){s.add(e);const n=()=>{s.delete(e)&&i()};return!t&&Ry()&&VS(n),n}function Wa(s,...e){s.forEach(t=>{t(...e)})}const cT=s=>s(),Ag=Symbol(),ju=Symbol();function Xf(s,e){s instanceof Map&&e instanceof Map?e.forEach((t,i)=>s.set(i,t)):s instanceof Set&&e instanceof Set&&e.forEach(s.add,s);for(const t in e){if(!Object.hasOwn(e,t))continue;const i=e[t],n=s[t];_g(n)&&_g(i)&&Object.hasOwn(s,t)&&!Si(i)&&!cr(i)?s[t]=Xf(n,i):s[t]=i}return s}const hT=Symbol();function uT(s){return!s||typeof s!="object"||!Object.hasOwn(s,hT)}const{assign:_r}=Object;function dT(s){return!!(Si(s)&&s.effect)}function fT(s,e,t,i){const{state:n,actions:r,getters:a}=e,o=t.state.value[s];let h;function l(){o||(t.state.value[s]=n?n():{});const c=hM(t.state.value[s]);return _r(c,r,Object.keys(a||{}).reduce((u,d)=>(u[d]=Dr(vt(()=>{pu(t);const f=t._s.get(s);return a[d].call(f,f)})),u),{}))}return h=Fx(s,l,e,t,i,!0),h}function Fx(s,e,t={},i,n,r){let a;const o=_r({actions:{}},t),h={deep:!0};let l,c,u=new Set,d=new Set,f;const p=i.state.value[s];!r&&!p&&(i.state.value[s]={});let m;function g(_){let R;l=c=!1,typeof _=="function"?(_(i.state.value[s]),R={type:"patch function",storeId:s,events:f}):(Xf(i.state.value[s],_),R={type:"patch object",payload:_,storeId:s,events:f});const P=m=Symbol();lu().then(()=>{m===P&&(l=!0)}),c=!0,Wa(u,R,i.state.value[s])}const v=r?function(){const{state:R}=t,P=R?R():{};this.$patch(F=>{_r(F,P)})}:Uf;function b(){a.stop(),u.clear(),d.clear(),i._s.delete(s)}const y=(_,R="")=>{if(Ag in _)return _[ju]=R,_;const P=function(){pu(i);const F=Array.from(arguments),I=new Set,k=new Set;function B(L){I.add(L)}function D(L){k.add(L)}Wa(d,{args:F,name:P[ju],store:A,after:B,onError:D});let U;try{U=_.apply(this&&this.$id===s?this:A,F)}catch(L){throw Wa(k,L),L}return U instanceof Promise?U.then(L=>(Wa(I,L),L)).catch(L=>(Wa(k,L),Promise.reject(L))):(Wa(I,U),U)};return P[Ag]=!0,P[ju]=R,P},w={_p:i,$id:s,$onAction:Tg.bind(null,d),$patch:g,$reset:v,$subscribe(_,R={}){if(u.has(_))return Uf;const P=Tg(u,_,R.detached,()=>F()),F=a.run(()=>fs(()=>i.state.value[s],I=>{(R.flush==="sync"?c:l)&&_({storeId:s,type:"direct",events:f},I)},_r({},h,R)));return P},$dispose:b},A=Da(w);i._s.set(s,A);const T=(i._a&&i._a.runWithContext||cT)(()=>i._e.run(()=>(a=Iy()).run(()=>e({action:y}))));for(const _ in T){const R=T[_];Si(R)&&!dT(R)||cr(R)?r||(p&&uT(R)&&(Si(R)?R.value=p[_]:((R instanceof Set||R instanceof Map)&&R.clear(),Xf(R,p[_]))),i.state.value[s][_]=R):typeof R=="function"&&(T[_]=y(R,_),o.actions[_]=R)}return _r(A,T),_r($t(A),T),Object.defineProperty(A,"$state",{get:()=>i.state.value[s],set:_=>{g(R=>{_r(R,_)})}}),i._p.forEach(_=>{const R=a.run(()=>_({store:A,app:i._a,pinia:i,options:o}));_r(A,R)}),p&&r&&t.hydrate&&t.hydrate(A.$state,p),l=!0,c=!0,A}/*! #__NO_SIDE_EFFECTS__ */function mT(s,e,t){let i;const n=typeof e=="function";i=n?t:e;function r(a,o){const h=wM();return a=a||(h?dl(kx,null):null),a&&pu(a),a=Px,a._s.has(s)||(n?Fx(s,e,i,a):fT(s,i,a)),a._s.get(s)}return r.$id=s,r}var Na=(s=>(s[s.WEBGL_LEGACY=0]="WEBGL_LEGACY",s[s.WEBGL=1]="WEBGL",s[s.WEBGL2=2]="WEBGL2",s))(Na||{}),Ox=(s=>(s[s.UNKNOWN=0]="UNKNOWN",s[s.WEBGL=1]="WEBGL",s[s.CANVAS=2]="CANVAS",s))(Ox||{}),Vf=(s=>(s[s.COLOR=16384]="COLOR",s[s.DEPTH=256]="DEPTH",s[s.STENCIL=1024]="STENCIL",s))(Vf||{}),dt=(s=>(s[s.NORMAL=0]="NORMAL",s[s.ADD=1]="ADD",s[s.MULTIPLY=2]="MULTIPLY",s[s.SCREEN=3]="SCREEN",s[s.OVERLAY=4]="OVERLAY",s[s.DARKEN=5]="DARKEN",s[s.LIGHTEN=6]="LIGHTEN",s[s.COLOR_DODGE=7]="COLOR_DODGE",s[s.COLOR_BURN=8]="COLOR_BURN",s[s.HARD_LIGHT=9]="HARD_LIGHT",s[s.SOFT_LIGHT=10]="SOFT_LIGHT",s[s.DIFFERENCE=11]="DIFFERENCE",s[s.EXCLUSION=12]="EXCLUSION",s[s.HUE=13]="HUE",s[s.SATURATION=14]="SATURATION",s[s.COLOR=15]="COLOR",s[s.LUMINOSITY=16]="LUMINOSITY",s[s.NORMAL_NPM=17]="NORMAL_NPM",s[s.ADD_NPM=18]="ADD_NPM",s[s.SCREEN_NPM=19]="SCREEN_NPM",s[s.NONE=20]="NONE",s[s.SRC_OVER=0]="SRC_OVER",s[s.SRC_IN=21]="SRC_IN",s[s.SRC_OUT=22]="SRC_OUT",s[s.SRC_ATOP=23]="SRC_ATOP",s[s.DST_OVER=24]="DST_OVER",s[s.DST_IN=25]="DST_IN",s[s.DST_OUT=26]="DST_OUT",s[s.DST_ATOP=27]="DST_ATOP",s[s.ERASE=26]="ERASE",s[s.SUBTRACT=28]="SUBTRACT",s[s.XOR=29]="XOR",s))(dt||{}),Pn=(s=>(s[s.POINTS=0]="POINTS",s[s.LINES=1]="LINES",s[s.LINE_LOOP=2]="LINE_LOOP",s[s.LINE_STRIP=3]="LINE_STRIP",s[s.TRIANGLES=4]="TRIANGLES",s[s.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",s[s.TRIANGLE_FAN=6]="TRIANGLE_FAN",s))(Pn||{}),Ne=(s=>(s[s.RGBA=6408]="RGBA",s[s.RGB=6407]="RGB",s[s.RG=33319]="RG",s[s.RED=6403]="RED",s[s.RGBA_INTEGER=36249]="RGBA_INTEGER",s[s.RGB_INTEGER=36248]="RGB_INTEGER",s[s.RG_INTEGER=33320]="RG_INTEGER",s[s.RED_INTEGER=36244]="RED_INTEGER",s[s.ALPHA=6406]="ALPHA",s[s.LUMINANCE=6409]="LUMINANCE",s[s.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",s[s.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",s[s.DEPTH_STENCIL=34041]="DEPTH_STENCIL",s))(Ne||{}),vo=(s=>(s[s.TEXTURE_2D=3553]="TEXTURE_2D",s[s.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",s[s.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",s[s.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",s[s.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",s[s.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",s[s.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",s))(vo||{}),et=(s=>(s[s.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",s[s.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",s[s.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",s[s.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",s[s.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",s[s.UNSIGNED_INT=5125]="UNSIGNED_INT",s[s.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",s[s.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",s[s.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",s[s.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",s[s.BYTE=5120]="BYTE",s[s.SHORT=5122]="SHORT",s[s.INT=5124]="INT",s[s.FLOAT=5126]="FLOAT",s[s.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",s[s.HALF_FLOAT=36193]="HALF_FLOAT",s))(et||{}),ze=(s=>(s[s.FLOAT=0]="FLOAT",s[s.INT=1]="INT",s[s.UINT=2]="UINT",s))(ze||{}),sn=(s=>(s[s.NEAREST=0]="NEAREST",s[s.LINEAR=1]="LINEAR",s))(sn||{}),an=(s=>(s[s.CLAMP=33071]="CLAMP",s[s.REPEAT=10497]="REPEAT",s[s.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",s))(an||{}),Ys=(s=>(s[s.OFF=0]="OFF",s[s.POW2=1]="POW2",s[s.ON=2]="ON",s[s.ON_MANUAL=3]="ON_MANUAL",s))(Ys||{}),Ni=(s=>(s[s.NPM=0]="NPM",s[s.UNPACK=1]="UNPACK",s[s.PMA=2]="PMA",s[s.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",s[s.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",s[s.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",s))(Ni||{}),Cn=(s=>(s[s.NO=0]="NO",s[s.YES=1]="YES",s[s.AUTO=2]="AUTO",s[s.BLEND=0]="BLEND",s[s.CLEAR=1]="CLEAR",s[s.BLIT=2]="BLIT",s))(Cn||{}),hp=(s=>(s[s.AUTO=0]="AUTO",s[s.MANUAL=1]="MANUAL",s))(hp||{}),Us=(s=>(s.LOW="lowp",s.MEDIUM="mediump",s.HIGH="highp",s))(Us||{}),Ri=(s=>(s[s.NONE=0]="NONE",s[s.SCISSOR=1]="SCISSOR",s[s.STENCIL=2]="STENCIL",s[s.SPRITE=3]="SPRITE",s[s.COLOR=4]="COLOR",s))(Ri||{}),Ei=(s=>(s[s.NONE=0]="NONE",s[s.LOW=2]="LOW",s[s.MEDIUM=4]="MEDIUM",s[s.HIGH=8]="HIGH",s))(Ei||{}),Bn=(s=>(s[s.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",s[s.ARRAY_BUFFER=34962]="ARRAY_BUFFER",s[s.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",s))(Bn||{});const pT={createCanvas:(s,e)=>{const t=document.createElement("canvas");return t.width=s,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,e)=>fetch(s,e),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")},We={ADAPTER:pT,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var Wu=/iPhone/i,Eg=/iPod/i,Cg=/iPad/i,Ig=/\biOS-universal(?:.+)Mac\b/i,zu=/\bAndroid(?:.+)Mobile\b/i,Rg=/Android/i,za=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,ac=/Silk/i,Gn=/Windows Phone/i,Pg=/\bWindows(?:.+)ARM\b/i,kg=/BlackBerry/i,Fg=/BB10/i,Og=/Opera Mini/i,Bg=/\b(CriOS|Chrome)(?:.+)Mobile/i,Lg=/Mobile(?:.+)Firefox\b/i,Dg=function(s){return typeof s<"u"&&s.platform==="MacIntel"&&typeof s.maxTouchPoints=="number"&&s.maxTouchPoints>1&&typeof MSStream>"u"};function gT(s){return function(e){return e.test(s)}}function Ng(s){var e={userAgent:"",platform:"",maxTouchPoints:0};!s&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof s=="string"?e.userAgent=s:s&&s.userAgent&&(e={userAgent:s.userAgent,platform:s.platform,maxTouchPoints:s.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=gT(t),r={apple:{phone:n(Wu)&&!n(Gn),ipod:n(Eg),tablet:!n(Wu)&&(n(Cg)||Dg(e))&&!n(Gn),universal:n(Ig),device:(n(Wu)||n(Eg)||n(Cg)||n(Ig)||Dg(e))&&!n(Gn)},amazon:{phone:n(za),tablet:!n(za)&&n(ac),device:n(za)||n(ac)},android:{phone:!n(Gn)&&n(za)||!n(Gn)&&n(zu),tablet:!n(Gn)&&!n(za)&&!n(zu)&&(n(ac)||n(Rg)),device:!n(Gn)&&(n(za)||n(ac)||n(zu)||n(Rg))||n(/\bokhttp\b/i)},windows:{phone:n(Gn),tablet:n(Pg),device:n(Gn)||n(Pg)},other:{blackberry:n(kg),blackberry10:n(Fg),opera:n(Og),firefox:n(Lg),chrome:n(Bg),device:n(kg)||n(Fg)||n(Og)||n(Lg)||n(Bg)},any:!1,phone:!1,tablet:!1};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}const vT=Ng.default??Ng,ir=vT(globalThis.navigator);We.RETINA_PREFIX=/@([0-9\.]+)x/;We.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var mh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Bx(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function yT(s){if(Object.prototype.hasOwnProperty.call(s,"__esModule"))return s;var e=s.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var n=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return s[i]}})}),t}var qu={exports:{}},Ug;function xT(){return Ug||(Ug=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(h,l,c){this.fn=h,this.context=l,this.once=c||!1}function r(h,l,c,u,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new n(c,u||h,d),p=t?t+l:l;return h._events[p]?h._events[p].fn?h._events[p]=[h._events[p],f]:h._events[p].push(f):(h._events[p]=f,h._eventsCount++),h}function a(h,l){--h._eventsCount===0?h._events=new i:delete h._events[l]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var l=[],c,u;if(this._eventsCount===0)return l;for(u in c=this._events)e.call(c,u)&&l.push(t?u.slice(1):u);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(c)):l},o.prototype.listeners=function(l){var c=t?t+l:l,u=this._events[c];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d80*O){W=K=L[0],J=fe=L[1];for(var pe=O;peK&&(K=me),we>fe&&(fe=we);Ee=Math.max(K-W,fe-J),Ee=Ee!==0?32767/Ee:0}return i(V,q,O,W,J,Ee,0),q}function e(L,N,O,X,E){var V,q;if(E===U(L,N,O,X)>0)for(V=N;V=N;V-=X)q=k(V,L[V],L[V+1],q);return q&&w(q,q.next)&&(B(q),q=q.next),q}function t(L,N){if(!L)return L;N||(N=L);var O=L,X;do if(X=!1,!O.steiner&&(w(O,O.next)||y(O.prev,O,O.next)===0)){if(B(O),O=N=O.prev,O===O.next)break;X=!0}else O=O.next;while(X||O!==N);return N}function i(L,N,O,X,E,V,q){if(L){!q&&V&&f(L,X,E,V);for(var W=L,J,K;L.prev!==L.next;){if(J=L.prev,K=L.next,V?r(L,X,E,V):n(L)){N.push(J.i/O|0),N.push(L.i/O|0),N.push(K.i/O|0),B(L),L=K.next,W=K.next;continue}if(L=K,L===W){q?q===1?(L=a(t(L),N,O),i(L,N,O,X,E,V,2)):q===2&&o(L,N,O,X,E,V):i(t(L),N,O,X,E,V,1);break}}}}function n(L){var N=L.prev,O=L,X=L.next;if(y(N,O,X)>=0)return!1;for(var E=N.x,V=O.x,q=X.x,W=N.y,J=O.y,K=X.y,fe=EV?E>q?E:q:V>q?V:q,Ee=W>J?W>K?W:K:J>K?J:K,pe=X.next;pe!==N;){if(pe.x>=fe&&pe.x<=we&&pe.y>=me&&pe.y<=Ee&&v(E,W,V,J,q,K,pe.x,pe.y)&&y(pe.prev,pe,pe.next)>=0)return!1;pe=pe.next}return!0}function r(L,N,O,X){var E=L.prev,V=L,q=L.next;if(y(E,V,q)>=0)return!1;for(var W=E.x,J=V.x,K=q.x,fe=E.y,me=V.y,we=q.y,Ee=WJ?W>K?W:K:J>K?J:K,G=fe>me?fe>we?fe:we:me>we?me:we,Z=m(Ee,pe,N,O,X),z=m(Ae,G,N,O,X),j=L.prevZ,te=L.nextZ;j&&j.z>=Z&&te&&te.z<=z;){if(j.x>=Ee&&j.x<=Ae&&j.y>=pe&&j.y<=G&&j!==E&&j!==q&&v(W,fe,J,me,K,we,j.x,j.y)&&y(j.prev,j,j.next)>=0||(j=j.prevZ,te.x>=Ee&&te.x<=Ae&&te.y>=pe&&te.y<=G&&te!==E&&te!==q&&v(W,fe,J,me,K,we,te.x,te.y)&&y(te.prev,te,te.next)>=0))return!1;te=te.nextZ}for(;j&&j.z>=Z;){if(j.x>=Ee&&j.x<=Ae&&j.y>=pe&&j.y<=G&&j!==E&&j!==q&&v(W,fe,J,me,K,we,j.x,j.y)&&y(j.prev,j,j.next)>=0)return!1;j=j.prevZ}for(;te&&te.z<=z;){if(te.x>=Ee&&te.x<=Ae&&te.y>=pe&&te.y<=G&&te!==E&&te!==q&&v(W,fe,J,me,K,we,te.x,te.y)&&y(te.prev,te,te.next)>=0)return!1;te=te.nextZ}return!0}function a(L,N,O){var X=L;do{var E=X.prev,V=X.next.next;!w(E,V)&&A(E,X,X.next,V)&&P(E,V)&&P(V,E)&&(N.push(E.i/O|0),N.push(X.i/O|0),N.push(V.i/O|0),B(X),B(X.next),X=L=V),X=X.next}while(X!==L);return t(X)}function o(L,N,O,X,E,V){var q=L;do{for(var W=q.next.next;W!==q.prev;){if(q.i!==W.i&&b(q,W)){var J=I(q,W);q=t(q,q.next),J=t(J,J.next),i(q,N,O,X,E,V,0),i(J,N,O,X,E,V,0);return}W=W.next}q=q.next}while(q!==L)}function h(L,N,O,X){var E=[],V,q,W,J,K;for(V=0,q=N.length;V=O.next.y&&O.next.y!==O.y){var W=O.x+(E-O.y)*(O.next.x-O.x)/(O.next.y-O.y);if(W<=X&&W>V&&(V=W,q=O.x=O.x&&O.x>=K&&X!==O.x&&v(Eq.x||O.x===q.x&&d(q,O)))&&(q=O,me=we)),O=O.next;while(O!==J);return q}function d(L,N){return y(L.prev,L,N.prev)<0&&y(N.next,L,L.next)<0}function f(L,N,O,X){var E=L;do E.z===0&&(E.z=m(E.x,E.y,N,O,X)),E.prevZ=E.prev,E.nextZ=E.next,E=E.next;while(E!==L);E.prevZ.nextZ=null,E.prevZ=null,p(E)}function p(L){var N,O,X,E,V,q,W,J,K=1;do{for(O=L,L=null,V=null,q=0;O;){for(q++,X=O,W=0,N=0;N0||J>0&&X;)W!==0&&(J===0||!X||O.z<=X.z)?(E=O,O=O.nextZ,W--):(E=X,X=X.nextZ,J--),V?V.nextZ=E:L=E,E.prevZ=V,V=E;O=X}V.nextZ=null,K*=2}while(q>1);return L}function m(L,N,O,X,E){return L=(L-O)*E|0,N=(N-X)*E|0,L=(L|L<<8)&16711935,L=(L|L<<4)&252645135,L=(L|L<<2)&858993459,L=(L|L<<1)&1431655765,N=(N|N<<8)&16711935,N=(N|N<<4)&252645135,N=(N|N<<2)&858993459,N=(N|N<<1)&1431655765,L|N<<1}function g(L){var N=L,O=L;do(N.x=(L-q)*(V-W)&&(L-q)*(X-W)>=(O-q)*(N-W)&&(O-q)*(V-W)>=(E-q)*(X-W)}function b(L,N){return L.next.i!==N.i&&L.prev.i!==N.i&&!R(L,N)&&(P(L,N)&&P(N,L)&&F(L,N)&&(y(L.prev,L,N.prev)||y(L,N.prev,N))||w(L,N)&&y(L.prev,L,L.next)>0&&y(N.prev,N,N.next)>0)}function y(L,N,O){return(N.y-L.y)*(O.x-N.x)-(N.x-L.x)*(O.y-N.y)}function w(L,N){return L.x===N.x&&L.y===N.y}function A(L,N,O,X){var E=_(y(L,N,O)),V=_(y(L,N,X)),q=_(y(O,X,L)),W=_(y(O,X,N));return!!(E!==V&&q!==W||E===0&&T(L,O,N)||V===0&&T(L,X,N)||q===0&&T(O,L,X)||W===0&&T(O,N,X))}function T(L,N,O){return N.x<=Math.max(L.x,O.x)&&N.x>=Math.min(L.x,O.x)&&N.y<=Math.max(L.y,O.y)&&N.y>=Math.min(L.y,O.y)}function _(L){return L>0?1:L<0?-1:0}function R(L,N){var O=L;do{if(O.i!==L.i&&O.next.i!==L.i&&O.i!==N.i&&O.next.i!==N.i&&A(O,O.next,L,N))return!0;O=O.next}while(O!==L);return!1}function P(L,N){return y(L.prev,L,L.next)<0?y(L,N,L.next)>=0&&y(L,L.prev,N)>=0:y(L,N,L.prev)<0||y(L,L.next,N)<0}function F(L,N){var O=L,X=!1,E=(L.x+N.x)/2,V=(L.y+N.y)/2;do O.y>V!=O.next.y>V&&O.next.y!==O.y&&E<(O.next.x-O.x)*(V-O.y)/(O.next.y-O.y)+O.x&&(X=!X),O=O.next;while(O!==L);return X}function I(L,N){var O=new D(L.i,L.x,L.y),X=new D(N.i,N.x,N.y),E=L.next,V=N.prev;return L.next=N,N.prev=L,O.next=E,E.prev=O,X.next=O,O.prev=X,V.next=X,X.prev=V,X}function k(L,N,O,X){var E=new D(L,N,O);return X?(E.next=X.next,E.prev=X,X.next.prev=E,X.next=E):(E.prev=E,E.next=E),E}function B(L){L.next.prev=L.prev,L.prev.next=L.next,L.prevZ&&(L.prevZ.nextZ=L.nextZ),L.nextZ&&(L.nextZ.prevZ=L.prevZ)}function D(L,N,O){this.i=L,this.x=N,this.y=O,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}s.deviation=function(L,N,O,X){var E=N&&N.length,V=E?N[0]*O:L.length,q=Math.abs(U(L,0,V,O));if(E)for(var W=0,J=N.length;W0&&(X+=L[E-1].length,O.holes.push(X))}return O},oc.exports}var ST=wT();const MT=Bx(ST);var aa={},tl={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */var _T=tl.exports,Vg;function TT(){return Vg||(Vg=1,(function(s,e){(function(t){var i=e&&!e.nodeType&&e,n=s&&!s.nodeType&&s,r=typeof mh=="object"&&mh;(r.global===r||r.window===r||r.self===r)&&(t=r);var a,o=2147483647,h=36,l=1,c=26,u=38,d=700,f=72,p=128,m="-",g=/^xn--/,v=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=h-l,A=Math.floor,T=String.fromCharCode,_;function R(E){throw new RangeError(y[E])}function P(E,V){for(var q=E.length,W=[];q--;)W[q]=V(E[q]);return W}function F(E,V){var q=E.split("@"),W="";q.length>1&&(W=q[0]+"@",E=q[1]),E=E.replace(b,".");var J=E.split("."),K=P(J,V).join(".");return W+K}function I(E){for(var V=[],q=0,W=E.length,J,K;q=55296&&J<=56319&&q65535&&(V-=65536,q+=T(V>>>10&1023|55296),V=56320|V&1023),q+=T(V),q}).join("")}function B(E){return E-48<10?E-22:E-65<26?E-65:E-97<26?E-97:h}function D(E,V){return E+22+75*(E<26)-((V!=0)<<5)}function U(E,V,q){var W=0;for(E=q?A(E/d):E>>1,E+=A(E/V);E>w*c>>1;W+=h)E=A(E/w);return A(W+(w+1)*E/(E+u))}function L(E){var V=[],q=E.length,W,J=0,K=p,fe=f,me,we,Ee,pe,Ae,G,Z,z,j;for(me=E.lastIndexOf(m),me<0&&(me=0),we=0;we=128&&R("not-basic"),V.push(E.charCodeAt(we));for(Ee=me>0?me+1:0;Ee=q&&R("invalid-input"),Z=B(E.charCodeAt(Ee++)),(Z>=h||Z>A((o-J)/Ae))&&R("overflow"),J+=Z*Ae,z=G<=fe?l:G>=fe+c?c:G-fe,!(ZA(o/j)&&R("overflow"),Ae*=j;W=V.length+1,fe=U(J-pe,W,pe==0),A(J/W)>o-K&&R("overflow"),K+=A(J/W),J%=W,V.splice(J++,0,K)}return k(V)}function N(E){var V,q,W,J,K,fe,me,we,Ee,pe,Ae,G=[],Z,z,j,te;for(E=I(E),Z=E.length,V=p,q=0,K=f,fe=0;fe=V&&AeA((o-q)/z)&&R("overflow"),q+=(me-V)*z,V=me,fe=0;feo&&R("overflow"),Ae==V){for(we=q,Ee=h;pe=Ee<=K?l:Ee>=K+c?c:Ee-K,!(we-1e3&&ce<1e3||T.call(/e/,de))return de;var Rt=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof ce=="number"){var Wt=ce<0?-F(-ce):F(ce);if(Wt!==ce){var Zt=String(Wt),pt=b.call(de,Zt.length+1);return y.call(Zt,Rt,"$&_")+"."+y.call(y.call(pt,/([0-9]{3})/g,"$&_"),/_$/,"")}}return y.call(de,Rt,"$&_")}var X=CT,E=X.custom,V=z(E)?E:null,q={__proto__:null,double:'"',single:"'"},W={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Zu=function ce(de,Rt,Wt,Zt){var pt=Rt||{};if(he(pt,"quoteStyle")&&!he(q,pt.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(he(pt,"maxStringLength")&&(typeof pt.maxStringLength=="number"?pt.maxStringLength<0&&pt.maxStringLength!==1/0:pt.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var Rs=he(pt,"customInspect")?pt.customInspect:!0;if(typeof Rs!="boolean"&&Rs!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(he(pt,"indent")&&pt.indent!==null&&pt.indent!==" "&&!(parseInt(pt.indent,10)===pt.indent&&pt.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(he(pt,"numericSeparator")&&typeof pt.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var Hs=pt.numericSeparator;if(typeof de>"u")return"undefined";if(de===null)return"null";if(typeof de=="boolean")return de?"true":"false";if(typeof de=="string")return At(de,pt);if(typeof de=="number"){if(de===0)return 1/0/de>0?"0":"-0";var Ui=String(de);return Hs?O(de,Ui):Ui}if(typeof de=="bigint"){var Ps=String(de)+"n";return Hs?O(de,Ps):Ps}var br=typeof pt.depth>"u"?5:pt.depth;if(typeof Wt>"u"&&(Wt=0),Wt>=br&&br>0&&typeof de=="object")return me(de)?"[Array]":"[Object]";var js=zi(pt,Wt);if(typeof Zt>"u")Zt=[];else if(ge(Zt,de)>=0)return"[Circular]";function ss(Me,be,De){if(be&&(Zt=P.call(Zt),Zt.push(be)),De){var Ie={depth:pt.depth};return he(pt,"quoteStyle")&&(Ie.quoteStyle=pt.quoteStyle),ce(Me,Ie,Wt+1,Zt)}return ce(Me,pt,Wt+1,Zt)}if(typeof de=="function"&&!Ee(de)){var $a=oe(de),Ga=di(de,ss);return"[Function"+($a?": "+$a:" (anonymous)")+"]"+(Ga.length>0?" { "+R.call(Ga,", ")+" }":"")}if(z(de)){var Qr=D?y.call(String(de),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(de);return typeof de=="object"&&!D?It(Qr):Qr}if(St(de)){for(var Ws="<"+A.call(String(de.nodeName)),ws=de.attributes||[],Vn=0;Vn",Ws}if(me(de)){if(de.length===0)return"[]";var ks=di(de,ss);return js&&!Wi(ks)?"["+dn(ks,js)+"]":"[ "+R.call(ks,", ")+" ]"}if(pe(de)){var ea=di(de,ss);return!("cause"in Error.prototype)&&"cause"in de&&!L.call(de,"cause")?"{ ["+String(de)+"] "+R.call(_.call("[cause]: "+ss(de.cause),ea),", ")+" }":ea.length===0?"["+String(de)+"]":"{ ["+String(de)+"] "+R.call(ea,", ")+" }"}if(typeof de=="object"&&Rs){if(V&&typeof de[V]=="function"&&X)return X(de,{depth:br-Wt});if(Rs!=="symbol"&&typeof de.inspect=="function")return de.inspect()}if(le(de)){var ta=[];return i&&i.call(de,function(Me,be){ta.push(ss(be,de,!0)+" => "+ss(Me,de))}),Ti("Map",t.call(de),ta,js)}if(Be(de)){var H=[];return o&&o.call(de,function(Me){H.push(ss(Me,de))}),Ti("Set",a.call(de),H,js)}if(Oe(de))return Kt("WeakMap");if(st(de))return Kt("WeakSet");if(Fe(de))return Kt("WeakRef");if(G(de))return It(ss(Number(de)));if(j(de))return It(ss(I.call(de)));if(Z(de))return It(p.call(de));if(Ae(de))return It(ss(String(de)));if(typeof window<"u"&&de===window)return"{ [object Window] }";if(typeof globalThis<"u"&&de===globalThis||typeof mh<"u"&&de===mh)return"{ [object globalThis] }";if(!we(de)&&!Ee(de)){var Y=di(de,ss),ee=N?N(de)===Object.prototype:de instanceof Object||de.constructor===Object,ne=de instanceof Object?"":"null prototype",ue=!ee&&U&&Object(de)===de&&U in de?b.call(xe(de),8,-1):ne?"Object":"",ve=ee||typeof de.constructor!="function"?"":de.constructor.name?de.constructor.name+" ":"",_e=ve+(ue||ne?"["+R.call(_.call([],ue||[],ne||[]),": ")+"] ":"");return Y.length===0?_e+"{}":js?_e+"{"+dn(Y,js)+"}":_e+"{ "+R.call(Y,", ")+" }"}return String(de)};function J(ce,de,Rt){var Wt=Rt.quoteStyle||de,Zt=q[Wt];return Zt+ce+Zt}function K(ce){return y.call(String(ce),/"/g,""")}function fe(ce){return!U||!(typeof ce=="object"&&(U in ce||typeof ce[U]<"u"))}function me(ce){return xe(ce)==="[object Array]"&&fe(ce)}function we(ce){return xe(ce)==="[object Date]"&&fe(ce)}function Ee(ce){return xe(ce)==="[object RegExp]"&&fe(ce)}function pe(ce){return xe(ce)==="[object Error]"&&fe(ce)}function Ae(ce){return xe(ce)==="[object String]"&&fe(ce)}function G(ce){return xe(ce)==="[object Number]"&&fe(ce)}function Z(ce){return xe(ce)==="[object Boolean]"&&fe(ce)}function z(ce){if(D)return ce&&typeof ce=="object"&&ce instanceof Symbol;if(typeof ce=="symbol")return!0;if(!ce||typeof ce!="object"||!B)return!1;try{return B.call(ce),!0}catch{}return!1}function j(ce){if(!ce||typeof ce!="object"||!I)return!1;try{return I.call(ce),!0}catch{}return!1}var te=Object.prototype.hasOwnProperty||function(ce){return ce in this};function he(ce,de){return te.call(ce,de)}function xe(ce){return m.call(ce)}function oe(ce){if(ce.name)return ce.name;var de=v.call(g.call(ce),/^function\s*([\w$]+)/);return de?de[1]:null}function ge(ce,de){if(ce.indexOf)return ce.indexOf(de);for(var Rt=0,Wt=ce.length;Rtde.maxStringLength){var Rt=ce.length-de.maxStringLength,Wt="... "+Rt+" more character"+(Rt>1?"s":"");return At(b.call(ce,0,de.maxStringLength),de)+Wt}var Zt=W[de.quoteStyle||"single"];Zt.lastIndex=0;var pt=y.call(y.call(ce,Zt,"\\$1"),/[\x00-\x1f]/g,Et);return J(pt,"single",de)}function Et(ce){var de=ce.charCodeAt(0),Rt={8:"b",9:"t",10:"n",12:"f",13:"r"}[de];return Rt?"\\"+Rt:"\\x"+(de<16?"0":"")+w.call(de.toString(16))}function It(ce){return"Object("+ce+")"}function Kt(ce){return ce+" { ? }"}function Ti(ce,de,Rt,Wt){var Zt=Wt?dn(Rt,Wt):R.call(Rt,", ");return ce+" ("+de+") {"+Zt+"}"}function Wi(ce){for(var de=0;de=0)return!1;return!0}function zi(ce,de){var Rt;if(ce.indent===" ")Rt=" ";else if(typeof ce.indent=="number"&&ce.indent>0)Rt=R.call(Array(ce.indent+1)," ");else return null;return{base:Rt,prev:R.call(Array(de+1),Rt)}}function dn(ce,de){if(ce.length===0)return"";var Rt=` +`+de.prev+de.base;return Rt+R.call(ce,","+Rt)+` +`+de.prev}function di(ce,de){var Rt=me(ce),Wt=[];if(Rt){Wt.length=ce.length;for(var Zt=0;Zt"u"||!_?s:_(Uint8Array),D={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?s:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?s:ArrayBuffer,"%ArrayIteratorPrototype%":T&&_?_([][Symbol.iterator]()):s,"%AsyncFromSyncIteratorPrototype%":s,"%AsyncFunction%":k,"%AsyncGenerator%":k,"%AsyncGeneratorFunction%":k,"%AsyncIteratorPrototype%":k,"%Atomics%":typeof Atomics>"u"?s:Atomics,"%BigInt%":typeof BigInt>"u"?s:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?s:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?s:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?s:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":t,"%eval%":eval,"%EvalError%":i,"%Float16Array%":typeof Float16Array>"u"?s:Float16Array,"%Float32Array%":typeof Float32Array>"u"?s:Float32Array,"%Float64Array%":typeof Float64Array>"u"?s:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?s:FinalizationRegistry,"%Function%":g,"%GeneratorFunction%":k,"%Int8Array%":typeof Int8Array>"u"?s:Int8Array,"%Int16Array%":typeof Int16Array>"u"?s:Int16Array,"%Int32Array%":typeof Int32Array>"u"?s:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":T&&_?_(_([][Symbol.iterator]())):s,"%JSON%":typeof JSON=="object"?JSON:s,"%Map%":typeof Map>"u"?s:Map,"%MapIteratorPrototype%":typeof Map>"u"||!T||!_?s:_(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":e,"%Object.getOwnPropertyDescriptor%":b,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?s:Promise,"%Proxy%":typeof Proxy>"u"?s:Proxy,"%RangeError%":n,"%ReferenceError%":r,"%Reflect%":typeof Reflect>"u"?s:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?s:Set,"%SetIteratorPrototype%":typeof Set>"u"||!T||!_?s:_(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?s:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":T&&_?_(""[Symbol.iterator]()):s,"%Symbol%":T?Symbol:s,"%SyntaxError%":a,"%ThrowTypeError%":A,"%TypedArray%":B,"%TypeError%":o,"%Uint8Array%":typeof Uint8Array>"u"?s:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?s:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?s:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?s:Uint32Array,"%URIError%":h,"%WeakMap%":typeof WeakMap>"u"?s:WeakMap,"%WeakRef%":typeof WeakRef>"u"?s:WeakRef,"%WeakSet%":typeof WeakSet>"u"?s:WeakSet,"%Function.prototype.call%":I,"%Function.prototype.apply%":F,"%Object.defineProperty%":y,"%Object.getPrototypeOf%":R,"%Math.abs%":l,"%Math.floor%":c,"%Math.max%":u,"%Math.min%":d,"%Math.pow%":f,"%Math.round%":p,"%Math.sign%":m,"%Reflect.getPrototypeOf%":P};if(_)try{null.error}catch(Ee){var U=_(_(Ee));D["%Error.prototype%"]=U}var L=function Ee(pe){var Ae;if(pe==="%AsyncFunction%")Ae=v("async function () {}");else if(pe==="%GeneratorFunction%")Ae=v("function* () {}");else if(pe==="%AsyncGeneratorFunction%")Ae=v("async function* () {}");else if(pe==="%AsyncGenerator%"){var G=Ee("%AsyncGeneratorFunction%");G&&(Ae=G.prototype)}else if(pe==="%AsyncIteratorPrototype%"){var Z=Ee("%AsyncGenerator%");Z&&_&&(Ae=_(Z.prototype))}return D[pe]=Ae,Ae},N={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O=vu(),X=JT(),E=O.call(I,Array.prototype.concat),V=O.call(F,Array.prototype.splice),q=O.call(I,String.prototype.replace),W=O.call(I,String.prototype.slice),J=O.call(I,RegExp.prototype.exec),K=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,fe=/\\(\\)?/g,me=function(pe){var Ae=W(pe,0,1),G=W(pe,-1);if(Ae==="%"&&G!=="%")throw new a("invalid intrinsic syntax, expected closing `%`");if(G==="%"&&Ae!=="%")throw new a("invalid intrinsic syntax, expected opening `%`");var Z=[];return q(pe,K,function(z,j,te,he){Z[Z.length]=te?q(he,fe,"$1"):j||z}),Z},we=function(pe,Ae){var G=pe,Z;if(X(N,G)&&(Z=N[G],G="%"+Z[0]+"%"),X(D,G)){var z=D[G];if(z===k&&(z=L(G)),typeof z>"u"&&!Ae)throw new o("intrinsic "+pe+" exists, but is not available. Please file an issue!");return{alias:Z,name:G,value:z}}throw new a("intrinsic "+pe+" does not exist!")};return Pd=function(pe,Ae){if(typeof pe!="string"||pe.length===0)throw new o("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof Ae!="boolean")throw new o('"allowMissing" argument must be a boolean');if(J(/^%?[^%]*%?$/,pe)===null)throw new a("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var G=me(pe),Z=G.length>0?G[0]:"",z=we("%"+Z+"%",Ae),j=z.name,te=z.value,he=!1,xe=z.alias;xe&&(Z=xe[0],V(G,E([0,1],xe)));for(var oe=1,ge=!0;oe=G.length){var Be=b(te,le);ge=!!Be,ge&&"get"in Be&&!("originalValue"in Be.get)?te=Be.get:te=te[le]}else ge=X(te,le),te=te[le];ge&&!he&&(D[j]=te)}}return te},Pd}var kd,_0;function $x(){if(_0)return kd;_0=1;var s=dp(),e=Yx(),t=e([s("%String.prototype.indexOf%")]);return kd=function(n,r){var a=s(n,!!r);return typeof a=="function"&&t(n,".prototype.")>-1?e([a]):a},kd}var Fd,T0;function Gx(){if(T0)return Fd;T0=1;var s=dp(),e=$x(),t=gu(),i=Lo(),n=s("%Map%",!0),r=e("Map.prototype.get",!0),a=e("Map.prototype.set",!0),o=e("Map.prototype.has",!0),h=e("Map.prototype.delete",!0),l=e("Map.prototype.size",!0);return Fd=!!n&&function(){var u,d={assert:function(f){if(!d.has(f))throw new i("Side channel does not contain "+t(f))},delete:function(f){if(u){var p=h(u,f);return l(u)===0&&(u=void 0),p}return!1},get:function(f){if(u)return r(u,f)},has:function(f){return u?o(u,f):!1},set:function(f,p){u||(u=new n),a(u,f,p)}};return d},Fd}var Od,A0;function QT(){if(A0)return Od;A0=1;var s=dp(),e=$x(),t=gu(),i=Gx(),n=Lo(),r=s("%WeakMap%",!0),a=e("WeakMap.prototype.get",!0),o=e("WeakMap.prototype.set",!0),h=e("WeakMap.prototype.has",!0),l=e("WeakMap.prototype.delete",!0);return Od=r?function(){var u,d,f={assert:function(p){if(!f.has(p))throw new n("Side channel does not contain "+t(p))},delete:function(p){if(r&&p&&(typeof p=="object"||typeof p=="function")){if(u)return l(u,p)}else if(i&&d)return d.delete(p);return!1},get:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?a(u,p):d&&d.get(p)},has:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?h(u,p):!!d&&d.has(p)},set:function(p,m){r&&p&&(typeof p=="object"||typeof p=="function")?(u||(u=new r),o(u,p,m)):i&&(d||(d=i()),d.set(p,m))}};return f}:i,Od}var Bd,E0;function Hx(){if(E0)return Bd;E0=1;var s=Lo(),e=gu(),t=IT(),i=Gx(),n=QT(),r=n||i||t;return Bd=function(){var o,h={assert:function(l){if(!h.has(l)){var c=l&&Object(l)===l?"the given object key":e(l);throw new s("Side channel does not contain "+c)}},delete:function(l){return!!o&&o.delete(l)},get:function(l){return o&&o.get(l)},has:function(l){return!!o&&o.has(l)},set:function(l,c){o||(o=r()),o.set(l,c)}};return h},Bd}var Ld,C0;function fp(){if(C0)return Ld;C0=1;var s=String.prototype.replace,e=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return Ld={default:t.RFC3986,formatters:{RFC1738:function(i){return s.call(i,e,"+")},RFC3986:function(i){return String(i)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},Ld}var Dd,I0;function jx(){if(I0)return Dd;I0=1;var s=fp(),e=Hx(),t=Nx(),i=Object.prototype.hasOwnProperty,n=Array.isArray,r=e(),a=function(P,F){return r.set(P,F),P},o=function(P){return r.has(P)},h=function(P){return r.get(P)},l=function(P,F){r.set(P,F)},c=(function(){for(var R=[],P=0;P<256;++P)R[R.length]="%"+((P<16?"0":"")+P.toString(16)).toUpperCase();return R})(),u=function(P){for(;P.length>1;){var F=P.pop(),I=F.obj[F.prop];if(n(I)){for(var k=[],B=0;B=I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(P.concat(F),I),k)}P[k]=F}else if(P&&typeof P=="object")if(o(P)){var B=h(P)+1;P[B]=F,l(P,B)}else{if(I&&I.strictMerge)return[P,F];(I&&(I.plainObjects||I.allowPrototypes)||!i.call(Object.prototype,F))&&(P[F]=!0)}else return[P,F];return P}if(!P||typeof P!="object"){if(o(F)){for(var D=Object.keys(F),U=I&&I.plainObjects?{__proto__:null,0:P}:{0:P},L=0;LI.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(O,I),O.length-1)}return O}var X=P;if(n(P)&&!n(F)&&(X=d(P,I)),n(P)&&n(F)){if(F.forEach(function(E,V){if(i.call(P,V)){var q=P[V];q&&typeof q=="object"&&E&&typeof E=="object"?P[V]=R(q,E,I):P[P.length]=E}else P[V]=E}),I&&typeof I.arrayLimit=="number"&&P.length>I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return a(d(P,I),P.length-1)}return P}return Object.keys(F).reduce(function(E,V){var q=F[V];if(i.call(E,V)?f(E,V,R(E[V],q,I)):f(E,V,q),o(F)&&!o(E)&&a(E,h(F)),o(E)){var W=parseInt(V,10);String(W)===V&&W>=0&&W>h(E)&&l(E,W)}return E},X)},m=function(P,F){return Object.keys(F).reduce(function(I,k){return f(I,k,F[k]),I},P)},g=function(R,P,F){var I=R.replace(/\+/g," ");if(F==="iso-8859-1")return I.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(I)}catch{return I}},v=1024,b=function(P,F,I,k,B){if(P.length===0)return P;var D=P;if(typeof P=="symbol"?D=Symbol.prototype.toString.call(P):typeof P!="string"&&(D=String(P)),I==="iso-8859-1")return escape(D).replace(/%u[0-9a-f]{4}/gi,function(q){return"%26%23"+parseInt(q.slice(2),16)+"%3B"});for(var U="",L=0;L=v?D.slice(L,L+v):D;if(L+v=55296&&O<=56319&&(N=N.slice(0,-1),L-=1)}for(var X=[],E=0;E=48&&V<=57||V>=65&&V<=90||V>=97&&V<=122||B===s.RFC1738&&(V===40||V===41)){X[X.length]=N.charAt(E);continue}if(V<128){X[X.length]=c[V];continue}if(V<2048){X[X.length]=c[192|V>>6]+c[128|V&63];continue}if(V<55296||V>=57344){X[X.length]=c[224|V>>12]+c[128|V>>6&63]+c[128|V&63];continue}E+=1,V=65536+((V&1023)<<10|N.charCodeAt(E)&1023),X[X.length]=c[240|V>>18]+c[128|V>>12&63]+c[128|V>>6&63]+c[128|V&63]}U+=X.join("")}return U},y=function(P){for(var F=[{obj:{o:P},prop:"o"}],I=e(),k=0;kI){if(B)throw new RangeError("Array limit exceeded. Only "+I+" element"+(I===1?"":"s")+" allowed in an array.");return a(d(U,{plainObjects:k}),U.length-1)}return U},_=function(P,F){if(n(P)){for(var I=[],k=0;k"u"&&(E=0)}if(typeof P=="function"?O=P(v,O):O instanceof Date?O=k(O):b==="comma"&&r(O)&&(O=e.maybeMap(O,function(j){return j instanceof Date?k(j):j})),O===null){if(A)return D(R&&!U?R(v,c.encoder,L,"key",B):v);O=""}if(u(O)||e.isBuffer(O)){if(R){var W=U?v:R(v,c.encoder,L,"key",B);return[D(W)+"="+D(R(O,c.encoder,L,"value",B))]}return[D(v)+"="+D(String(O))]}var J=[];if(typeof O>"u")return J;var K;if(b==="comma"&&r(O))U&&R&&(O=e.maybeMap(O,function(j){return j==null?j:R(j)})),K=[{value:O.length>0?O.join(",")||null:void 0}];else if(r(P))K=P;else{var fe=Object.keys(O);K=F?fe.sort(F):fe}var me=_?String(v).replace(/\./g,"%2E"):String(v),we=y&&r(O)&&O.length===1?me+"[]":me;if(w&&r(O)&&O.length===0)return we+"[]";for(var Ee=0;Ee"u"?g.encodeDotInKeys===!0?!0:c.allowDots:!!g.allowDots;return{addQueryPrefix:typeof g.addQueryPrefix=="boolean"?g.addQueryPrefix:c.addQueryPrefix,allowDots:T,allowEmptyArrays:typeof g.allowEmptyArrays=="boolean"?!!g.allowEmptyArrays:c.allowEmptyArrays,arrayFormat:A,charset:v,charsetSentinel:typeof g.charsetSentinel=="boolean"?g.charsetSentinel:c.charsetSentinel,commaRoundTrip:!!g.commaRoundTrip,delimiter:typeof g.delimiter>"u"?c.delimiter:g.delimiter,encode:typeof g.encode=="boolean"?g.encode:c.encode,encodeDotInKeys:typeof g.encodeDotInKeys=="boolean"?g.encodeDotInKeys:c.encodeDotInKeys,encoder:typeof g.encoder=="function"?g.encoder:c.encoder,encodeValuesOnly:typeof g.encodeValuesOnly=="boolean"?g.encodeValuesOnly:c.encodeValuesOnly,filter:w,format:b,formatter:y,serializeDate:typeof g.serializeDate=="function"?g.serializeDate:c.serializeDate,skipNulls:typeof g.skipNulls=="boolean"?g.skipNulls:c.skipNulls,sort:typeof g.sort=="function"?g.sort:null,strictNullHandling:typeof g.strictNullHandling=="boolean"?g.strictNullHandling:c.strictNullHandling}};return Nd=function(m,g){var v=m,b=p(g),y,w;typeof b.filter=="function"?(w=b.filter,v=w("",v)):r(b.filter)&&(w=b.filter,y=w);var A=[];if(typeof v!="object"||v===null)return"";var T=n[b.arrayFormat],_=T==="comma"&&b.commaRoundTrip;y||(y=Object.keys(v)),b.sort&&y.sort(b.sort);for(var R=s(),P=0;P"u"||F===null)){var I=v[F];b.skipNulls&&I===null||o(A,f(I,F,T,_,b.allowEmptyArrays,b.strictNullHandling,b.skipNulls,b.encodeDotInKeys,b.encode?b.encoder:null,b.filter,b.sort,b.allowDots,b.serializeDate,b.format,b.formatter,b.encodeValuesOnly,b.charset,R))}}var k=A.join(b.delimiter),B=b.addQueryPrefix===!0?"?":"";return b.charsetSentinel&&(b.charset==="iso-8859-1"?B+="utf8=%26%2310003%3B"+b.delimiter:B+="utf8=%E2%9C%93"+b.delimiter),k.length>0?B+k:""},Nd}var Ud,P0;function tA(){if(P0)return Ud;P0=1;var s=jx(),e=Object.prototype.hasOwnProperty,t=Array.isArray,i={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:s.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},n=function(f){return f.replace(/&#(\d+);/g,function(p,m){return String.fromCharCode(parseInt(m,10))})},r=function(f,p,m,g){if(f&&typeof f=="string"&&p.comma&&f.indexOf(",")>-1){if(g&&p.throwOnLimitExceeded)for(var v=0,b=f.indexOf(",");b>-1;){if(v+=1,v>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");b=f.indexOf(",",b+1)}return f.split(",")}if(p.throwOnLimitExceeded&&m>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");return f},a="utf8=%26%2310003%3B",o="utf8=%E2%9C%93",h=function(p,m){var g={__proto__:null},v=m.ignoreQueryPrefix?p.replace(/^\?/,""):p;v=v.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var b=m.parameterLimit===1/0?void 0:m.parameterLimit,y=v.split(m.delimiter,m.throwOnLimitExceeded&&typeof b<"u"?b+1:b);if(m.throwOnLimitExceeded&&typeof b<"u"&&y.length>b)throw new RangeError("Parameter limit exceeded. Only "+b+" parameter"+(b===1?"":"s")+" allowed.");var w=-1,A,T=m.charset;if(m.charsetSentinel)for(A=0;A-1&&(I=t(I)?[I]:I),m.comma&&t(I)&&I.length>m.arrayLimit&&(I=s.combine([],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded)),F!==null){var k=e.call(g,F);k&&(m.duplicates==="combine"||_.indexOf("[]=")>-1)?g[F]=s.combine(g[F],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded):(!k||m.duplicates==="last")&&(g[F]=I)}}return g},l=function(f,p,m,g){var v=0;if(f.length>0&&f[f.length-1]==="[]"){var b=f.slice(0,-1).join("");v=Array.isArray(p)&&p[b]?p[b].length:0}for(var y=g?p:r(p,m,v),w=f.length-1;w>=0;--w){var A,T=f[w];if(T==="[]"&&m.parseArrays)s.isOverflow(y)?A=y:A=m.allowEmptyArrays&&(y===""||m.strictNullHandling&&y===null)?[]:s.combine([],y,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded);else{A=m.plainObjects?{__proto__:null}:{};var _=T.charAt(0)==="["&&T.charAt(T.length-1)==="]"?T.slice(1,-1):T,R=m.decodeDotInKeys?_.replace(/%2E/g,"."):_,P=parseInt(R,10),F=!isNaN(P)&&T!==R&&String(P)===R&&P>=0&&m.parseArrays;if(!m.parseArrays&&R==="")A={0:y};else if(F&&P=0?g.slice(0,b):g;if(y){if(!m.plainObjects&&e.call(Object.prototype,y)&&!m.allowPrototypes)return;v[v.length]=y}for(var w=g.length,A=b,T=0;A>=0&&T=0){if(m.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+m.depth+" and strictDepth is true");v[v.length]="["+g.slice(A)+"]"}return v},u=function(p,m,g,v){if(p){var b=c(p,g);if(b)return l(b,m,g,v)}},d=function(p){if(!p)return i;if(typeof p.allowEmptyArrays<"u"&&typeof p.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof p.decodeDotInKeys<"u"&&typeof p.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(p.decoder!==null&&typeof p.decoder<"u"&&typeof p.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof p.charset<"u"&&p.charset!=="utf-8"&&p.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof p.throwOnLimitExceeded<"u"&&typeof p.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var m=typeof p.charset>"u"?i.charset:p.charset,g=typeof p.duplicates>"u"?i.duplicates:p.duplicates;if(g!=="combine"&&g!=="first"&&g!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var v=typeof p.allowDots>"u"?p.decodeDotInKeys===!0?!0:i.allowDots:!!p.allowDots;return{allowDots:v,allowEmptyArrays:typeof p.allowEmptyArrays=="boolean"?!!p.allowEmptyArrays:i.allowEmptyArrays,allowPrototypes:typeof p.allowPrototypes=="boolean"?p.allowPrototypes:i.allowPrototypes,allowSparse:typeof p.allowSparse=="boolean"?p.allowSparse:i.allowSparse,arrayLimit:typeof p.arrayLimit=="number"?p.arrayLimit:i.arrayLimit,charset:m,charsetSentinel:typeof p.charsetSentinel=="boolean"?p.charsetSentinel:i.charsetSentinel,comma:typeof p.comma=="boolean"?p.comma:i.comma,decodeDotInKeys:typeof p.decodeDotInKeys=="boolean"?p.decodeDotInKeys:i.decodeDotInKeys,decoder:typeof p.decoder=="function"?p.decoder:i.decoder,delimiter:typeof p.delimiter=="string"||s.isRegExp(p.delimiter)?p.delimiter:i.delimiter,depth:typeof p.depth=="number"||p.depth===!1?+p.depth:i.depth,duplicates:g,ignoreQueryPrefix:p.ignoreQueryPrefix===!0,interpretNumericEntities:typeof p.interpretNumericEntities=="boolean"?p.interpretNumericEntities:i.interpretNumericEntities,parameterLimit:typeof p.parameterLimit=="number"?p.parameterLimit:i.parameterLimit,parseArrays:p.parseArrays!==!1,plainObjects:typeof p.plainObjects=="boolean"?p.plainObjects:i.plainObjects,strictDepth:typeof p.strictDepth=="boolean"?!!p.strictDepth:i.strictDepth,strictMerge:typeof p.strictMerge=="boolean"?!!p.strictMerge:i.strictMerge,strictNullHandling:typeof p.strictNullHandling=="boolean"?p.strictNullHandling:i.strictNullHandling,throwOnLimitExceeded:typeof p.throwOnLimitExceeded=="boolean"?p.throwOnLimitExceeded:!1}};return Ud=function(f,p){var m=d(p);if(f===""||f===null||typeof f>"u")return m.plainObjects?{__proto__:null}:{};for(var g=typeof f=="string"?h(f,m):f,v=m.plainObjects?{__proto__:null}:{},b=Object.keys(g),y=0;y",'"',"`"," ","\r",` +`," "],a=["{","}","|","\\","^","`"].concat(r),o=["'"].concat(a),h=["%","/","?",";","#"].concat(o),l=["/","?","#"],c=255,u=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},p={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=iA();function v(A,T,_){if(A&&typeof A=="object"&&A instanceof e)return A;var R=new e;return R.parse(A,T,_),R}e.prototype.parse=function(A,T,_){if(typeof A!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof A);var R=A.indexOf("?"),P=R!==-1&&R127?fe+="x":fe+=K[me];if(!fe.match(u)){var Ee=W.slice(0,O),pe=W.slice(O+1),Ae=K.match(d);Ae&&(Ee.push(Ae[1]),pe.unshift(Ae[2])),pe.length&&(k="/"+pe.join(".")+k),this.hostname=Ee.join(".");break}}}this.hostname.length>c?this.hostname="":this.hostname=this.hostname.toLowerCase(),q||(this.hostname=s.toASCII(this.hostname));var G=this.port?":"+this.port:"",Z=this.hostname||"";this.host=Z+G,this.href+=this.host,q&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),k[0]!=="/"&&(k="/"+k))}if(!f[U])for(var O=0,J=o.length;O0?_.host.split("@"):!1;fe&&(_.auth=fe.shift(),_.hostname=fe.shift(),_.host=_.hostname)}return _.search=A.search,_.query=A.query,(_.pathname!==null||_.search!==null)&&(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.href=_.format(),_}if(!W.length)return _.pathname=null,_.search?_.path="/"+_.search:_.path=null,_.href=_.format(),_;for(var me=W.slice(-1)[0],we=(_.host||A.host||W.length>1)&&(me==="."||me==="..")||me==="",Ee=0,pe=W.length;pe>=0;pe--)me=W[pe],me==="."?W.splice(pe,1):me===".."?(W.splice(pe,1),Ee++):Ee&&(W.splice(pe,1),Ee--);if(!V&&!q)for(;Ee--;Ee)W.unshift("..");V&&W[0]!==""&&(!W[0]||W[0].charAt(0)!=="/")&&W.unshift(""),we&&W.join("/").substr(-1)!=="/"&&W.push("");var Ae=W[0]===""||W[0]&&W[0].charAt(0)==="/";if(K){_.hostname=Ae?"":W.length?W.shift():"",_.host=_.hostname;var fe=_.host&&_.host.indexOf("@")>0?_.host.split("@"):!1;fe&&(_.auth=fe.shift(),_.hostname=fe.shift(),_.host=_.hostname)}return V=V||_.host&&W.length,V&&!Ae&&W.unshift(""),W.length>0?_.pathname=W.join("/"):(_.pathname=null,_.path=null),(_.pathname!==null||_.search!==null)&&(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.auth=A.auth||_.auth,_.slashes=_.slashes||A.slashes,_.href=_.format(),_},e.prototype.parseHost=function(){var A=this.host,T=i.exec(A);T&&(T=T[0],T!==":"&&(this.port=T.substr(1)),A=A.substr(0,A.length-T.length)),A&&(this.hostname=A)},aa.parse=v,aa.resolve=y,aa.resolveObject=w,aa.format=b,aa.Url=e,aa}sA();const O0={};function kt(s,e,t=3){if(O0[e])return;let i=new Error().stack;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",`${e} Deprecated since v${s}`):(i=i.split(` `).splice(t).join(` `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${e} Deprecated since v${s}`),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${e} -Deprecated since v${s}`),console.warn(i))),B0[e]=!0}function Vs(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function Wo(s){return s.split("?")[0].split("#")[0]}function r2(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function a2(s,e,t){return s.replace(new RegExp(r2(e),"g"),t)}function o2(s,e){let t="",i=0,n=-1,r=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const h=t.lastIndexOf("/");if(h!==t.length-1){h===-1?(t="",i=0):(t=t.slice(0,h),i=t.length-1-t.lastIndexOf("/")),n=o,r=0;continue}}else if(t.length===2||t.length===1){t="",i=0,n=o,r=0;continue}}}else t.length>0?t+=`/${s.slice(n+1,o)}`:t=s.slice(n+1,o),i=o-n-1;n=o,r=0}else a===46&&r!==-1?++r:r=-1}return t}const wi={toPosix(s){return a2(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){Vs(s),s=this.toPosix(s);const e=/^file:\/\/\//.exec(s);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(s);return t?t[0]:""},toAbsolute(s,e,t){if(Vs(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=Wo(this.toPosix(e??We.ADAPTER.getBaseUrl())),n=Wo(this.toPosix(t??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?wi.join(n,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(Vs(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let e="";const t=s.startsWith("/");this.hasProtocol(s)&&(e=this.rootname(s),s=s.slice(e.length));const i=s.endsWith("/");return s=o2(s),s.length>0&&i&&(s+="/"),t?`/${s}`:e+s},isAbsolute(s){return Vs(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=i;else{const n=s[t-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${i}`:e+=`/${i}`}}return e===void 0?".":this.normalize(e)},dirname(s){if(Vs(s),s.length===0)return".";s=this.toPosix(s);let e=s.charCodeAt(0);const t=e===47;let i=-1,n=!0;const r=this.getProtocol(s),a=s;s=s.slice(r.length);for(let o=s.length-1;o>=1;--o)if(e=s.charCodeAt(o),e===47){if(!n){i=o;break}}else n=!1;return i===-1?t?"/":this.isUrl(a)?r+s:r:t&&i===1?"//":r+s.slice(0,i)},rootname(s){Vs(s),s=this.toPosix(s);let e="";if(s.startsWith("/")?e="/":e=this.getProtocol(s),this.isUrl(s)){const t=s.indexOf("/",e.length);t!==-1?e=s.slice(0,t):e=s,e.endsWith("/")||(e+="/")}return e},basename(s,e){Vs(s),e&&Vs(e),s=Wo(this.toPosix(s));let t=0,i=-1,n=!0,r;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e.length===s.length&&e===s)return"";let a=e.length-1,o=-1;for(r=s.length-1;r>=0;--r){const h=s.charCodeAt(r);if(h===47){if(!n){t=r+1;break}}else o===-1&&(n=!1,o=r+1),a>=0&&(h===e.charCodeAt(a)?--a===-1&&(i=r):(a=-1,i=o))}return t===i?i=o:i===-1&&(i=s.length),s.slice(t,i)}for(r=s.length-1;r>=0;--r)if(s.charCodeAt(r)===47){if(!n){t=r+1;break}}else i===-1&&(n=!1,i=r+1);return i===-1?"":s.slice(t,i)},extname(s){Vs(s),s=Wo(this.toPosix(s));let e=-1,t=0,i=-1,n=!0,r=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!n){t=a+1;break}continue}i===-1&&(n=!1,i=a+1),o===46?e===-1?e=a:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||i===-1||r===0||r===1&&e===i-1&&e===t+1?"":s.slice(e,i)},parse(s){Vs(s);const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;s=Wo(this.toPosix(s));let t=s.charCodeAt(0);const i=this.isAbsolute(s);let n;e.root=this.rootname(s),i||this.hasProtocol(s)?n=1:n=0;let r=-1,a=0,o=-1,h=!0,l=s.length-1,c=0;for(;l>=n;--l){if(t=s.charCodeAt(l),t===47){if(!h){a=l+1;break}continue}o===-1&&(h=!1,o=l+1),t===46?r===-1?r=l:c!==1&&(c=1):r!==-1&&(c=-1)}return r===-1||o===-1||c===0||c===1&&r===o-1&&r===a+1?o!==-1&&(a===0&&i?e.base=e.name=s.slice(1,o):e.base=e.name=s.slice(a,o)):(a===0&&i?(e.name=s.slice(1,r),e.base=s.slice(1,o)):(e.name=s.slice(a,r),e.base=s.slice(a,o)),e.ext=s.slice(r,o)),e.dir=this.dirname(s),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Yd;async function l2(){return Yd??(Yd=(async()=>{var r;const s=document.createElement("canvas").getContext("webgl");if(!s)return Ni.UNPACK;const e=await new Promise(a=>{const o=document.createElement("video");o.onloadeddata=()=>a(o),o.onerror=()=>a(null),o.autoplay=!1,o.crossOrigin="anonymous",o.preload="auto",o.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",o.load()});if(!e)return Ni.UNPACK;const t=s.createTexture();s.bindTexture(s.TEXTURE_2D,t);const i=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,i),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return s.readPixels(0,0,1,1,s.RGBA,s.UNSIGNED_BYTE,n),s.deleteFramebuffer(i),s.deleteTexture(t),(r=s.getExtension("WEBGL_lose_context"))==null||r.loseContext(),n[0]<=n[3]?Ni.PMA:Ni.UNPACK})()),Yd}let $d;function c2(){return typeof $d>"u"&&($d=(function(){var e;const s={stencil:!0,failIfMajorPerformanceCaveat:We.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!We.ADAPTER.getWebGLRenderingContext())return!1;const t=We.ADAPTER.createCanvas();let i=t.getContext("webgl",s)||t.getContext("experimental-webgl",s);const n=!!((e=i==null?void 0:i.getContextAttributes())!=null&&e.stencil);if(i){const r=i.getExtension("WEBGL_lose_context");r&&r.loseContext()}return i=null,n}catch{return!1}})()),$d}var h2={grad:.9,turn:360,rad:360/(2*Math.PI)},Gn=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},Di=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t+0},Ds=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s>e?s:e},zx=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},L0=function(s){return{r:Ds(s.r,0,255),g:Ds(s.g,0,255),b:Ds(s.b,0,255),a:Ds(s.a)}},Gd=function(s){return{r:Di(s.r),g:Di(s.g),b:Di(s.b),a:Di(s.a,3)}},u2=/^#([0-9a-f]{3,8})$/i,lc=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},qx=function(s){var e=s.r,t=s.g,i=s.b,n=s.a,r=Math.max(e,t,i),a=r-Math.min(e,t,i),o=a?r===e?(t-i)/a:r===t?2+(i-e)/a:4+(e-t)/a:0;return{h:60*(o<0?o+6:o),s:r?a/r*100:0,v:r/255*100,a:n}},Kx=function(s){var e=s.h,t=s.s,i=s.v,n=s.a;e=e/360*6,t/=100,i/=100;var r=Math.floor(e),a=i*(1-t),o=i*(1-(e-r)*t),h=i*(1-(1-e+r)*t),l=r%6;return{r:255*[i,o,a,a,h,i][l],g:255*[h,i,i,o,a,a][l],b:255*[a,a,h,i,i,o][l],a:n}},D0=function(s){return{h:zx(s.h),s:Ds(s.s,0,100),l:Ds(s.l,0,100),a:Ds(s.a)}},N0=function(s){return{h:Di(s.h),s:Di(s.s),l:Di(s.l),a:Di(s.a,3)}},U0=function(s){return Kx((t=(e=s).s,{h:e.h,s:(t*=((i=e.l)<50?i:100-i)/100)>0?2*t/(i+t)*100:0,v:i+t,a:e.a}));var e,t,i},gl=function(s){return{h:(e=qx(s)).h,s:(n=(200-(t=e.s))*(i=e.v)/100)>0&&n<200?t*i/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,t,i,n},d2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,f2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,p2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$f={string:[[function(s){var e=u2.exec(s);return e?(s=e[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?Di(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?Di(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var e=m2.exec(s)||p2.exec(s);return e?e[2]!==e[4]||e[4]!==e[6]?null:L0({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(s){var e=d2.exec(s)||f2.exec(s);if(!e)return null;var t,i,n=D0({h:(t=e[1],i=e[2],i===void 0&&(i="deg"),Number(t)*(h2[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return U0(n)},"hsl"]],object:[[function(s){var e=s.r,t=s.g,i=s.b,n=s.a,r=n===void 0?1:n;return Gn(e)&&Gn(t)&&Gn(i)?L0({r:Number(e),g:Number(t),b:Number(i),a:Number(r)}):null},"rgb"],[function(s){var e=s.h,t=s.s,i=s.l,n=s.a,r=n===void 0?1:n;if(!Gn(e)||!Gn(t)||!Gn(i))return null;var a=D0({h:Number(e),s:Number(t),l:Number(i),a:Number(r)});return U0(a)},"hsl"],[function(s){var e=s.h,t=s.s,i=s.v,n=s.a,r=n===void 0?1:n;if(!Gn(e)||!Gn(t)||!Gn(i))return null;var a=(function(o){return{h:zx(o.h),s:Ds(o.s,0,100),v:Ds(o.v,0,100),a:Ds(o.a)}})({h:Number(e),s:Number(t),v:Number(i),a:Number(r)});return Kx(a)},"hsv"]]},X0=function(s,e){for(var t=0;t=.5},s.prototype.toHex=function(){return e=Gd(this.rgba),t=e.r,i=e.g,n=e.b,a=(r=e.a)<1?lc(Di(255*r)):"","#"+lc(t)+lc(i)+lc(n)+a;var e,t,i,n,r,a},s.prototype.toRgb=function(){return Gd(this.rgba)},s.prototype.toRgbString=function(){return e=Gd(this.rgba),t=e.r,i=e.g,n=e.b,(r=e.a)<1?"rgba("+t+", "+i+", "+n+", "+r+")":"rgb("+t+", "+i+", "+n+")";var e,t,i,n,r},s.prototype.toHsl=function(){return N0(gl(this.rgba))},s.prototype.toHslString=function(){return e=N0(gl(this.rgba)),t=e.h,i=e.s,n=e.l,(r=e.a)<1?"hsla("+t+", "+i+"%, "+n+"%, "+r+")":"hsl("+t+", "+i+"%, "+n+"%)";var e,t,i,n,r},s.prototype.toHsv=function(){return e=qx(this.rgba),{h:Di(e.h),s:Di(e.s),v:Di(e.v),a:Di(e.a,3)};var e},s.prototype.invert=function(){return fn({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},s.prototype.saturate=function(e){return e===void 0&&(e=.1),fn(Hd(this.rgba,e))},s.prototype.desaturate=function(e){return e===void 0&&(e=.1),fn(Hd(this.rgba,-e))},s.prototype.grayscale=function(){return fn(Hd(this.rgba,-1))},s.prototype.lighten=function(e){return e===void 0&&(e=.1),fn(V0(this.rgba,e))},s.prototype.darken=function(e){return e===void 0&&(e=.1),fn(V0(this.rgba,-e))},s.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},s.prototype.alpha=function(e){return typeof e=="number"?fn({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):Di(this.rgba.a,3);var t},s.prototype.hue=function(e){var t=gl(this.rgba);return typeof e=="number"?fn({h:e,s:t.s,l:t.l,a:t.a}):Di(t.h)},s.prototype.isEqual=function(e){return this.toHex()===fn(e).toHex()},s})(),fn=function(s){return s instanceof Gf?s:new Gf(s)},Y0=[],v2=function(s){s.forEach(function(e){Y0.indexOf(e)<0&&(e(Gf,$f),Y0.push(e))})};function y2(s,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var n in t)i[t[n]]=n;var r={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,h,l=i[this.toHex()];if(l)return l;if(a!=null&&a.closest){var c=this.toRgb(),u=1/0,d="black";if(!r.length)for(var f in t)r[f]=new s(t[f]).toRgb();for(var p in t){var m=(o=c,h=r[p],Math.pow(o.r-h.r,2)+Math.pow(o.g-h.g,2)+Math.pow(o.b-h.b,2));mn===t[r]);if(e!==null&&t!==null){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(a=>e[a]===t[a])}return e===t}toRgba(){const[e,t,i,n]=this._components;return{r:e,g:t,b:i,a:n}}toRgb(){const[e,t,i]=this._components;return{r:e,g:t,b:i}}toRgbaString(){const[e,t,i]=this.toUint8RgbArray();return`rgba(${e},${t},${i},${this.alpha})`}toUint8RgbArray(e){const[t,i,n]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(i*255),e[2]=Math.round(n*255),e}toRgbArray(e){e=e??[];const[t,i,n]=this._components;return e[0]=t,e[1]=i,e[2]=n,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,i,n,r]=Yc.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=i,this._components[2]*=n,this._components[3]*=r,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let i=this._int>>16&255,n=this._int>>8&255,r=this._int&255;return t&&(i=i*e+.5|0,n=n*e+.5|0,r=r*e+.5|0),(e*255<<24)+(i<<16)+(n<<8)+r}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,i,n]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(i*e)/e,this._components[2]=Math.round(n*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,i,n,r]=this._components;return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e}normalize(e){let t,i,n,r;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const a=e;t=(a>>16&255)/255,i=(a>>8&255)/255,n=(a&255)/255,r=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,i,n,r=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,i,n,r=255]=e,t/=255,i/=255,n/=255,r/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const o=Yc.HEX_PATTERN.exec(e);o&&(e=`#${o[2]}`)}const a=fn(e);a.isValid()&&({r:t,g:i,b:n,a:r}=a.rgba,t/=255,i/=255,n/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=i,this._components[2]=n,this._components[3]=r,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,i]=this._components;this._int=(e*255<<16)+(t*255<<8)+(i*255|0)}_clamp(e,t=0,i=1){return typeof e=="number"?Math.min(Math.max(e,t),i):(e.forEach((n,r)=>{e[r]=Math.min(Math.max(n,t),i)}),e)}};so.shared=new so,so.temp=new so,so.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Wt=so;function x2(s){return Ot("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Wt.shared.setValue(s).toHex()}function b2(s){return Ot("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Wt.shared.setValue(s).toNumber()}function w2(){const s=[],e=[];for(let i=0;i<32;i++)s[i]=i,e[i]=i;s[dt.NORMAL_NPM]=dt.NORMAL,s[dt.ADD_NPM]=dt.ADD,s[dt.SCREEN_NPM]=dt.SCREEN,e[dt.NORMAL]=dt.NORMAL_NPM,e[dt.ADD]=dt.ADD_NPM,e[dt.SCREEN]=dt.SCREEN_NPM;const t=[];return t.push(e),t.push(s),t}const Zx=w2();function Jx(s,e){return Zx[e?1:0][s]}function S2(s,e=null){const t=s*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let i=0,n=0;i>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function $0(s){return!(s&s-1)&&!!s}function G0(s){let e=(s>65535?1:0)<<4;s>>>=e;let t=(s>255?1:0)<<3;return s>>>=t,e|=t,t=(s>15?1:0)<<2,s>>>=t,e|=t,t=(s>3?1:0)<<1,s>>>=t,e|=t,e|s>>1}function xo(s,e,t){const i=s.length;let n;if(e>=i||t===0)return;t=e+t>i?i-e:t;const r=i-t;for(n=e;n(s.Renderer="renderer",s.Application="application",s.RendererSystem="renderer-webgl-system",s.RendererPlugin="renderer-webgl-plugin",s.CanvasRendererSystem="renderer-canvas-system",s.CanvasRendererPlugin="renderer-canvas-plugin",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s))(Ge||{});const jf=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},q0=(s,e)=>jf(s).priority??e,et={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(jf).forEach(e=>{e.type.forEach(t=>{var i,n;return(n=(i=this._removeHandlers)[t])==null?void 0:n.call(i,e)})}),this},add(...s){return s.map(jf).forEach(e=>{e.type.forEach(t=>{var r,a;const i=this._addHandlers,n=this._queue;i[t]?(r=i[t])==null||r.call(i,e):(n[t]=n[t]||[],(a=n[t])==null||a.push(e))})}),this},handle(s,e,t){var a;const i=this._addHandlers,n=this._removeHandlers;if(i[s]||n[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=e,n[s]=t;const r=this._queue;return r[s]&&((a=r[s])==null||a.forEach(o=>e(o)),delete r[s]),this},handleByMap(s,e){return this.handle(s,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(s,e,t=-1){return this.handle(s,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((n,r)=>q0(r,t)-q0(n,t)))},i=>{const n=e.indexOf(i.ref);n!==-1&&e.splice(n,1)})}};class Wf{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const C2=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` -`);function I2(s){let e="";for(let t=0;t0&&(e+=` -else `),t=0;--i){const n=zf[i];if(n.test&&n.test(s,t))return new n(s,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class Qs{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,i,n,r,a,o,h){if(arguments.length>8)throw new Error("max arguments reached");const{name:l,items:c}=this;this._aliasCount++;for(let u=0,d=c.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Qs.prototype,{dispatch:{value:Qs.prototype.emit},run:{value:Qs.prototype.emit}});class Bl{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new Qs("setRealSize"),this.onUpdate=new Qs("update"),this.onError=new Qs("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,i){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class xu extends Bl{constructor(e,t){const{width:i,height:n}=t||{};if(!i||!n)throw new Error("BufferResource width or height invalid");super(i,n),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,i){const n=e.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,this.unpackAlignment),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===Ni.UNPACK);const r=t.realWidth,a=t.realHeight;return i.width===r&&i.height===a?n.texSubImage2D(t.target,0,0,0,r,a,t.format,i.type,this.data):(i.width=r,i.height=a,n.texImage2D(t.target,0,i.internalFormat,r,a,0,t.format,i.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const P2={scaleMode:qs.NEAREST,alphaMode:Ni.NPM},qf=class no extends jl{constructor(e=null,t=null){super(),t=Object.assign({},no.defaultOptions,t);const{alphaMode:i,mipmap:n,anisotropicLevel:r,scaleMode:a,width:o,height:h,wrapMode:l,format:c,type:u,target:d,resolution:f,resourceOptions:p}=t;e&&!(e instanceof Bl)&&(e=eb(e,p),e.internal=!0),this.resolution=f||We.RESOLUTION,this.width=Math.round((o||0)*this.resolution)/this.resolution,this.height=Math.round((h||0)*this.resolution)/this.resolution,this._mipmap=n,this.anisotropicLevel=r,this._wrapMode=l,this._scaleMode=a,this.format=c,this.type=u,this.target=d,this.alphaMode=i,this.uid=Pa(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=o>0&&h>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let i;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,i=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,i=!0),i&&this.dirtyStyleId++,this}setSize(e,t,i){return i=i||this.resolution,this.setRealSize(e*i,t*i,i)}setRealSize(e,t,i){return this.resolution=i||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=$0(this.realWidth)&&$0(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete _r[this.cacheId],delete mn[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),no.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,i=We.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else{if(!e._pixiId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${o}_${Pa()}`}r=e._pixiId}let a=_r[r];if(n&&i&&!a)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return a||(a=new no(e,t),a.cacheId=r,no.addToCache(a,r)),a}static fromBuffer(e,t,i,n){e=e||new Float32Array(t*i*4);const r=new xu(e,{width:t,height:i,...n==null?void 0:n.resourceOptions});let a,o;return e instanceof Float32Array?(a=Ne.RGBA,o=Qe.FLOAT):e instanceof Int32Array?(a=Ne.RGBA_INTEGER,o=Qe.INT):e instanceof Uint32Array?(a=Ne.RGBA_INTEGER,o=Qe.UNSIGNED_INT):e instanceof Int16Array?(a=Ne.RGBA_INTEGER,o=Qe.SHORT):e instanceof Uint16Array?(a=Ne.RGBA_INTEGER,o=Qe.UNSIGNED_SHORT):e instanceof Int8Array?(a=Ne.RGBA,o=Qe.BYTE):(a=Ne.RGBA,o=Qe.UNSIGNED_BYTE),r.internal=!0,new no(r,Object.assign({},P2,{type:o,format:a},n))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),_r[t]&&_r[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),_r[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=_r[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete _r[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;t1){for(let u=0;u(s[s.POLY=0]="POLY",s[s.RECT=1]="RECT",s[s.CIRC=2]="CIRC",s[s.ELIP=3]="ELIP",s[s.RREC=4]="RREC",s))(Hi||{});class Xt{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new Xt(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}Xt.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const cc=[new Xt,new Xt,new Xt,new Xt];class Tt{constructor(e=0,t=0,i=0,n=0){this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(n),this.type=Hi.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new Tt(0,0,0,0)}clone(){return new Tt(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=R)return!1;const P=this.ye.bottom?e.bottom:this.bottom)>P}const i=this.left,n=this.right,r=this.top,a=this.bottom;if(n<=i||a<=r)return!1;const o=cc[0].set(e.left,e.top),h=cc[1].set(e.left,e.bottom),l=cc[2].set(e.right,e.top),c=cc[3].set(e.right,e.bottom);if(l.x<=o.x||h.y<=o.y)return!1;const u=Math.sign(t.a*t.d-t.b*t.c);if(u===0||(t.apply(o,o),t.apply(h,h),t.apply(l,l),t.apply(c,c),Math.max(o.x,h.x,l.x,c.x)<=i||Math.min(o.x,h.x,l.x,c.x)>=n||Math.max(o.y,h.y,l.y,c.y)<=r||Math.min(o.y,h.y,l.y,c.y)>=a))return!1;const d=u*(h.y-o.y),f=u*(o.x-h.x),p=d*i+f*r,m=d*n+f*r,g=d*i+f*a,v=d*n+f*a;if(Math.max(p,m,g,v)<=d*o.x+f*o.y||Math.min(p,m,g,v)>=d*c.x+f*c.y)return!1;const b=u*(o.y-l.y),y=u*(l.x-o.x),w=b*i+y*r,A=b*n+y*r,M=b*i+y*a,_=b*n+y*a;return!(Math.max(w,A,M,_)<=b*o.x+y*o.y||Math.min(w,A,M,_)>=b*c.x+y*c.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),r=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=n,this.height=Math.max(r-n,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=n-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),r=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=n,this.height=r-n,this}}Tt.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class bu{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.radius=i,this.type=Hi.CIRC}clone(){return new bu(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const i=this.radius*this.radius;let n=this.x-e,r=this.y-t;return n*=n,r*=r,n+r<=i}getBounds(){return new Tt(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}bu.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class wu{constructor(e=0,t=0,i=0,n=0){this.x=e,this.y=t,this.width=i,this.height=n,this.type=Hi.ELIP}clone(){return new wu(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let i=(e-this.x)/this.width,n=(t-this.y)/this.height;return i*=i,n*=n,i+n<=1}getBounds(){return new Tt(this.x-this.width,this.y-this.height,this.width,this.height)}}wu.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class Aa{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const i=[];for(let n=0,r=t.length;nt!=c>t&&e<(l-o)*((t-h)/(c-h))+o&&(i=!i)}return i}}Aa.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((s,e)=>`${s}, ${e}`,"")}]`};class Su{constructor(e=0,t=0,i=0,n=0,r=20){this.x=e,this.y=t,this.width=i,this.height=n,this.radius=r,this.type=Hi.RREC}clone(){return new Su(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+i&&t<=this.y+this.height-i||e>=this.x+i&&e<=this.x+this.width-i)return!0;let n=e-(this.x+i),r=t-(this.y+i);const a=i*i;if(n*n+r*r<=a||(n=e-(this.x+this.width-i),n*n+r*r<=a)||(r=t-(this.y+this.height-i),n*n+r*r<=a)||(n=e-(this.x+i),n*n+r*r<=a))return!0}return!1}}Su.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class oi{constructor(e=1,t=0,i=0,n=1,r=0,a=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=n,this.tx=r,this.ty=a}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,n,r,a){return this.a=e,this.b=t,this.c=i,this.d=n,this.tx=r,this.ty=a,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new Xt;const i=e.x,n=e.y;return t.x=this.a*i+this.c*n+this.tx,t.y=this.b*i+this.d*n+this.ty,t}applyInverse(e,t){t=t||new Xt;const i=1/(this.a*this.d+this.c*-this.b),n=e.x,r=e.y;return t.x=this.d*i*n+-this.c*i*r+(this.ty*this.c-this.tx*this.d)*i,t.y=this.a*i*r+-this.b*i*n+(-this.ty*this.a+this.tx*this.b)*i,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.a,r=this.c,a=this.tx;return this.a=n*t-this.b*i,this.b=n*i+this.b*t,this.c=r*t-this.d*i,this.d=r*i+this.d*t,this.tx=a*t-this.ty*i,this.ty=a*i+this.ty*t,this}append(e){const t=this.a,i=this.b,n=this.c,r=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*i+e.b*r,this.c=e.c*t+e.d*n,this.d=e.c*i+e.d*r,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*i+e.ty*r+this.ty,this}setTransform(e,t,i,n,r,a,o,h,l){return this.a=Math.cos(o+l)*r,this.b=Math.sin(o+l)*r,this.c=-Math.sin(o-h)*a,this.d=Math.cos(o-h)*a,this.tx=e-(i*this.a+n*this.c),this.ty=t-(i*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,n=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,n=this.c,r=this.d,a=e.pivot,o=-Math.atan2(-n,r),h=Math.atan2(i,t),l=Math.abs(o+h);return l<1e-5||Math.abs(vh-l)<1e-5?(e.rotation=h,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=o,e.skew.y=h),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(n*n+r*r),e.position.x=this.tx+(a.x*t+a.y*n),e.position.y=this.ty+(a.x*i+a.y*r),e}invert(){const e=this.a,t=this.b,i=this.c,n=this.d,r=this.tx,a=e*n-t*i;return this.a=n/a,this.b=-t/a,this.c=-i/a,this.d=e/a,this.tx=(i*this.ty-n*r)/a,this.ty=-(e*this.ty-t*r)/a,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new oi;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new oi}static get TEMP_MATRIX(){return new oi}}oi.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const ca=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],ha=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],ua=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],da=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Zf=[],ib=[],hc=Math.sign;function U2(){for(let s=0;s<16;s++){const e=[];Zf.push(e);for(let t=0;t<16;t++){const i=hc(ca[s]*ca[t]+ua[s]*ha[t]),n=hc(ha[s]*ca[t]+da[s]*ha[t]),r=hc(ca[s]*ua[t]+ua[s]*da[t]),a=hc(ha[s]*ua[t]+da[s]*da[t]);for(let o=0;o<16;o++)if(ca[o]===i&&ha[o]===n&&ua[o]===r&&da[o]===a){e.push(o);break}}}for(let s=0;s<16;s++){const e=new oi;e.set(ca[s],ha[s],ua[s],da[s],0,0),ib.push(e)}}U2();const fi={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:s=>ca[s],uY:s=>ha[s],vX:s=>ua[s],vY:s=>da[s],inv:s=>s&8?s&15:-s&7,add:(s,e)=>Zf[s][e],sub:(s,e)=>Zf[s][fi.inv(e)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,e)=>Math.abs(s)*2<=Math.abs(e)?e>=0?fi.S:fi.N:Math.abs(e)*2<=Math.abs(s)?s>0?fi.E:fi.W:e>0?s>0?fi.SE:fi.SW:s>0?fi.NE:fi.NW,matrixAppendRotationInv:(s,e,t=0,i=0)=>{const n=ib[fi.inv(e)];n.tx=t,n.ty=i,s.append(n)}};class ir{constructor(e,t,i=0,n=0){this._x=i,this._y=n,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new ir(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}ir.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Jf=class{constructor(){this.worldTransform=new oi,this.localTransform=new oi,this.position=new ir(this.onChange,this,0,0),this.scale=new ir(this.onChange,this,1,1),this.pivot=new ir(this.onChange,this,0,0),this.skew=new ir(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const s=this.localTransform;this._localID!==this._currentLocalID&&(s.a=this._cx*this.scale.x,s.b=this._sx*this.scale.x,s.c=this._cy*this.scale.y,s.d=this._sy*this.scale.y,s.tx=this.position.x-(this.pivot.x*s.a+this.pivot.y*s.c),s.ty=this.position.y-(this.pivot.x*s.b+this.pivot.y*s.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(s){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==s._worldID){const t=s.worldTransform,i=this.worldTransform;i.a=e.a*t.a+e.b*t.c,i.b=e.a*t.b+e.b*t.d,i.c=e.c*t.a+e.d*t.c,i.d=e.c*t.b+e.d*t.d,i.tx=e.tx*t.a+e.ty*t.c+t.tx,i.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=s._worldID,this._worldID++}}setFromMatrix(s){s.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(s){this._rotation!==s&&(this._rotation=s,this.updateSkew())}};Jf.IDENTITY=new Jf;let pp=Jf;pp.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var X2=`varying vec2 vTextureCoord; +Deprecated since v${s}`),console.warn(i))),O0[e]=!0}function zs(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function jo(s){return s.split("?")[0].split("#")[0]}function nA(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function rA(s,e,t){return s.replace(new RegExp(nA(e),"g"),t)}function aA(s,e){let t="",i=0,n=-1,r=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const h=t.lastIndexOf("/");if(h!==t.length-1){h===-1?(t="",i=0):(t=t.slice(0,h),i=t.length-1-t.lastIndexOf("/")),n=o,r=0;continue}}else if(t.length===2||t.length===1){t="",i=0,n=o,r=0;continue}}}else t.length>0?t+=`/${s.slice(n+1,o)}`:t=s.slice(n+1,o),i=o-n-1;n=o,r=0}else a===46&&r!==-1?++r:r=-1}return t}const wi={toPosix(s){return rA(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){zs(s),s=this.toPosix(s);const e=/^file:\/\/\//.exec(s);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(s);return t?t[0]:""},toAbsolute(s,e,t){if(zs(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=jo(this.toPosix(e??We.ADAPTER.getBaseUrl())),n=jo(this.toPosix(t??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?wi.join(n,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(zs(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let e="";const t=s.startsWith("/");this.hasProtocol(s)&&(e=this.rootname(s),s=s.slice(e.length));const i=s.endsWith("/");return s=aA(s),s.length>0&&i&&(s+="/"),t?`/${s}`:e+s},isAbsolute(s){return zs(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=i;else{const n=s[t-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${i}`:e+=`/${i}`}}return e===void 0?".":this.normalize(e)},dirname(s){if(zs(s),s.length===0)return".";s=this.toPosix(s);let e=s.charCodeAt(0);const t=e===47;let i=-1,n=!0;const r=this.getProtocol(s),a=s;s=s.slice(r.length);for(let o=s.length-1;o>=1;--o)if(e=s.charCodeAt(o),e===47){if(!n){i=o;break}}else n=!1;return i===-1?t?"/":this.isUrl(a)?r+s:r:t&&i===1?"//":r+s.slice(0,i)},rootname(s){zs(s),s=this.toPosix(s);let e="";if(s.startsWith("/")?e="/":e=this.getProtocol(s),this.isUrl(s)){const t=s.indexOf("/",e.length);t!==-1?e=s.slice(0,t):e=s,e.endsWith("/")||(e+="/")}return e},basename(s,e){zs(s),e&&zs(e),s=jo(this.toPosix(s));let t=0,i=-1,n=!0,r;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e.length===s.length&&e===s)return"";let a=e.length-1,o=-1;for(r=s.length-1;r>=0;--r){const h=s.charCodeAt(r);if(h===47){if(!n){t=r+1;break}}else o===-1&&(n=!1,o=r+1),a>=0&&(h===e.charCodeAt(a)?--a===-1&&(i=r):(a=-1,i=o))}return t===i?i=o:i===-1&&(i=s.length),s.slice(t,i)}for(r=s.length-1;r>=0;--r)if(s.charCodeAt(r)===47){if(!n){t=r+1;break}}else i===-1&&(n=!1,i=r+1);return i===-1?"":s.slice(t,i)},extname(s){zs(s),s=jo(this.toPosix(s));let e=-1,t=0,i=-1,n=!0,r=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!n){t=a+1;break}continue}i===-1&&(n=!1,i=a+1),o===46?e===-1?e=a:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||i===-1||r===0||r===1&&e===i-1&&e===t+1?"":s.slice(e,i)},parse(s){zs(s);const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;s=jo(this.toPosix(s));let t=s.charCodeAt(0);const i=this.isAbsolute(s);let n;e.root=this.rootname(s),i||this.hasProtocol(s)?n=1:n=0;let r=-1,a=0,o=-1,h=!0,l=s.length-1,c=0;for(;l>=n;--l){if(t=s.charCodeAt(l),t===47){if(!h){a=l+1;break}continue}o===-1&&(h=!1,o=l+1),t===46?r===-1?r=l:c!==1&&(c=1):r!==-1&&(c=-1)}return r===-1||o===-1||c===0||c===1&&r===o-1&&r===a+1?o!==-1&&(a===0&&i?e.base=e.name=s.slice(1,o):e.base=e.name=s.slice(a,o)):(a===0&&i?(e.name=s.slice(1,r),e.base=s.slice(1,o)):(e.name=s.slice(a,r),e.base=s.slice(a,o)),e.ext=s.slice(r,o)),e.dir=this.dirname(s),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Vd;async function oA(){return Vd??(Vd=(async()=>{var r;const s=document.createElement("canvas").getContext("webgl");if(!s)return Ni.UNPACK;const e=await new Promise(a=>{const o=document.createElement("video");o.onloadeddata=()=>a(o),o.onerror=()=>a(null),o.autoplay=!1,o.crossOrigin="anonymous",o.preload="auto",o.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",o.load()});if(!e)return Ni.UNPACK;const t=s.createTexture();s.bindTexture(s.TEXTURE_2D,t);const i=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,i),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return s.readPixels(0,0,1,1,s.RGBA,s.UNSIGNED_BYTE,n),s.deleteFramebuffer(i),s.deleteTexture(t),(r=s.getExtension("WEBGL_lose_context"))==null||r.loseContext(),n[0]<=n[3]?Ni.PMA:Ni.UNPACK})()),Vd}let Yd;function lA(){return typeof Yd>"u"&&(Yd=(function(){var e;const s={stencil:!0,failIfMajorPerformanceCaveat:We.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!We.ADAPTER.getWebGLRenderingContext())return!1;const t=We.ADAPTER.createCanvas();let i=t.getContext("webgl",s)||t.getContext("experimental-webgl",s);const n=!!((e=i==null?void 0:i.getContextAttributes())!=null&&e.stencil);if(i){const r=i.getExtension("WEBGL_lose_context");r&&r.loseContext()}return i=null,n}catch{return!1}})()),Yd}var cA={grad:.9,turn:360,rad:360/(2*Math.PI)},Hn=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},Di=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t+0},Xs=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s>e?s:e},Wx=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},B0=function(s){return{r:Xs(s.r,0,255),g:Xs(s.g,0,255),b:Xs(s.b,0,255),a:Xs(s.a)}},$d=function(s){return{r:Di(s.r),g:Di(s.g),b:Di(s.b),a:Di(s.a,3)}},hA=/^#([0-9a-f]{3,8})$/i,lc=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},zx=function(s){var e=s.r,t=s.g,i=s.b,n=s.a,r=Math.max(e,t,i),a=r-Math.min(e,t,i),o=a?r===e?(t-i)/a:r===t?2+(i-e)/a:4+(e-t)/a:0;return{h:60*(o<0?o+6:o),s:r?a/r*100:0,v:r/255*100,a:n}},qx=function(s){var e=s.h,t=s.s,i=s.v,n=s.a;e=e/360*6,t/=100,i/=100;var r=Math.floor(e),a=i*(1-t),o=i*(1-(e-r)*t),h=i*(1-(1-e+r)*t),l=r%6;return{r:255*[i,o,a,a,h,i][l],g:255*[h,i,i,o,a,a][l],b:255*[a,a,h,i,i,o][l],a:n}},L0=function(s){return{h:Wx(s.h),s:Xs(s.s,0,100),l:Xs(s.l,0,100),a:Xs(s.a)}},D0=function(s){return{h:Di(s.h),s:Di(s.s),l:Di(s.l),a:Di(s.a,3)}},N0=function(s){return qx((t=(e=s).s,{h:e.h,s:(t*=((i=e.l)<50?i:100-i)/100)>0?2*t/(i+t)*100:0,v:i+t,a:e.a}));var e,t,i},pl=function(s){return{h:(e=zx(s)).h,s:(n=(200-(t=e.s))*(i=e.v)/100)>0&&n<200?t*i/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,t,i,n},uA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,dA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,mA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yf={string:[[function(s){var e=hA.exec(s);return e?(s=e[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?Di(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?Di(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var e=fA.exec(s)||mA.exec(s);return e?e[2]!==e[4]||e[4]!==e[6]?null:B0({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(s){var e=uA.exec(s)||dA.exec(s);if(!e)return null;var t,i,n=L0({h:(t=e[1],i=e[2],i===void 0&&(i="deg"),Number(t)*(cA[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return N0(n)},"hsl"]],object:[[function(s){var e=s.r,t=s.g,i=s.b,n=s.a,r=n===void 0?1:n;return Hn(e)&&Hn(t)&&Hn(i)?B0({r:Number(e),g:Number(t),b:Number(i),a:Number(r)}):null},"rgb"],[function(s){var e=s.h,t=s.s,i=s.l,n=s.a,r=n===void 0?1:n;if(!Hn(e)||!Hn(t)||!Hn(i))return null;var a=L0({h:Number(e),s:Number(t),l:Number(i),a:Number(r)});return N0(a)},"hsl"],[function(s){var e=s.h,t=s.s,i=s.v,n=s.a,r=n===void 0?1:n;if(!Hn(e)||!Hn(t)||!Hn(i))return null;var a=(function(o){return{h:Wx(o.h),s:Xs(o.s,0,100),v:Xs(o.v,0,100),a:Xs(o.a)}})({h:Number(e),s:Number(t),v:Number(i),a:Number(r)});return qx(a)},"hsv"]]},U0=function(s,e){for(var t=0;t=.5},s.prototype.toHex=function(){return e=$d(this.rgba),t=e.r,i=e.g,n=e.b,a=(r=e.a)<1?lc(Di(255*r)):"","#"+lc(t)+lc(i)+lc(n)+a;var e,t,i,n,r,a},s.prototype.toRgb=function(){return $d(this.rgba)},s.prototype.toRgbString=function(){return e=$d(this.rgba),t=e.r,i=e.g,n=e.b,(r=e.a)<1?"rgba("+t+", "+i+", "+n+", "+r+")":"rgb("+t+", "+i+", "+n+")";var e,t,i,n,r},s.prototype.toHsl=function(){return D0(pl(this.rgba))},s.prototype.toHslString=function(){return e=D0(pl(this.rgba)),t=e.h,i=e.s,n=e.l,(r=e.a)<1?"hsla("+t+", "+i+"%, "+n+"%, "+r+")":"hsl("+t+", "+i+"%, "+n+"%)";var e,t,i,n,r},s.prototype.toHsv=function(){return e=zx(this.rgba),{h:Di(e.h),s:Di(e.s),v:Di(e.v),a:Di(e.a,3)};var e},s.prototype.invert=function(){return mn({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},s.prototype.saturate=function(e){return e===void 0&&(e=.1),mn(Gd(this.rgba,e))},s.prototype.desaturate=function(e){return e===void 0&&(e=.1),mn(Gd(this.rgba,-e))},s.prototype.grayscale=function(){return mn(Gd(this.rgba,-1))},s.prototype.lighten=function(e){return e===void 0&&(e=.1),mn(X0(this.rgba,e))},s.prototype.darken=function(e){return e===void 0&&(e=.1),mn(X0(this.rgba,-e))},s.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},s.prototype.alpha=function(e){return typeof e=="number"?mn({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):Di(this.rgba.a,3);var t},s.prototype.hue=function(e){var t=pl(this.rgba);return typeof e=="number"?mn({h:e,s:t.s,l:t.l,a:t.a}):Di(t.h)},s.prototype.isEqual=function(e){return this.toHex()===mn(e).toHex()},s})(),mn=function(s){return s instanceof $f?s:new $f(s)},V0=[],gA=function(s){s.forEach(function(e){V0.indexOf(e)<0&&(e($f,Yf),V0.push(e))})};function vA(s,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var n in t)i[t[n]]=n;var r={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,h,l=i[this.toHex()];if(l)return l;if(a!=null&&a.closest){var c=this.toRgb(),u=1/0,d="black";if(!r.length)for(var f in t)r[f]=new s(t[f]).toRgb();for(var p in t){var m=(o=c,h=r[p],Math.pow(o.r-h.r,2)+Math.pow(o.g-h.g,2)+Math.pow(o.b-h.b,2));mn===t[r]);if(e!==null&&t!==null){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(a=>e[a]===t[a])}return e===t}toRgba(){const[e,t,i,n]=this._components;return{r:e,g:t,b:i,a:n}}toRgb(){const[e,t,i]=this._components;return{r:e,g:t,b:i}}toRgbaString(){const[e,t,i]=this.toUint8RgbArray();return`rgba(${e},${t},${i},${this.alpha})`}toUint8RgbArray(e){const[t,i,n]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(i*255),e[2]=Math.round(n*255),e}toRgbArray(e){e=e??[];const[t,i,n]=this._components;return e[0]=t,e[1]=i,e[2]=n,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,i,n,r]=Yc.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=i,this._components[2]*=n,this._components[3]*=r,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let i=this._int>>16&255,n=this._int>>8&255,r=this._int&255;return t&&(i=i*e+.5|0,n=n*e+.5|0,r=r*e+.5|0),(e*255<<24)+(i<<16)+(n<<8)+r}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,i,n]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(i*e)/e,this._components[2]=Math.round(n*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,i,n,r]=this._components;return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e}normalize(e){let t,i,n,r;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const a=e;t=(a>>16&255)/255,i=(a>>8&255)/255,n=(a&255)/255,r=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,i,n,r=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,i,n,r=255]=e,t/=255,i/=255,n/=255,r/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const o=Yc.HEX_PATTERN.exec(e);o&&(e=`#${o[2]}`)}const a=mn(e);a.isValid()&&({r:t,g:i,b:n,a:r}=a.rgba,t/=255,i/=255,n/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=i,this._components[2]=n,this._components[3]=r,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,i]=this._components;this._int=(e*255<<16)+(t*255<<8)+(i*255|0)}_clamp(e,t=0,i=1){return typeof e=="number"?Math.min(Math.max(e,t),i):(e.forEach((n,r)=>{e[r]=Math.min(Math.max(n,t),i)}),e)}};io.shared=new io,io.temp=new io,io.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let jt=io;function yA(s){return kt("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),jt.shared.setValue(s).toHex()}function xA(s){return kt("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),jt.shared.setValue(s).toNumber()}function bA(){const s=[],e=[];for(let i=0;i<32;i++)s[i]=i,e[i]=i;s[dt.NORMAL_NPM]=dt.NORMAL,s[dt.ADD_NPM]=dt.ADD,s[dt.SCREEN_NPM]=dt.SCREEN,e[dt.NORMAL]=dt.NORMAL_NPM,e[dt.ADD]=dt.ADD_NPM,e[dt.SCREEN]=dt.SCREEN_NPM;const t=[];return t.push(e),t.push(s),t}const Kx=bA();function Zx(s,e){return Kx[e?1:0][s]}function wA(s,e=null){const t=s*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let i=0,n=0;i>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function Y0(s){return!(s&s-1)&&!!s}function $0(s){let e=(s>65535?1:0)<<4;s>>>=e;let t=(s>255?1:0)<<3;return s>>>=t,e|=t,t=(s>15?1:0)<<2,s>>>=t,e|=t,t=(s>3?1:0)<<1,s>>>=t,e|=t,e|s>>1}function yo(s,e,t){const i=s.length;let n;if(e>=i||t===0)return;t=e+t>i?i-e:t;const r=i-t;for(n=e;n(s.Renderer="renderer",s.Application="application",s.RendererSystem="renderer-webgl-system",s.RendererPlugin="renderer-webgl-plugin",s.CanvasRendererSystem="renderer-canvas-system",s.CanvasRendererPlugin="renderer-canvas-plugin",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s))(He||{});const Hf=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},z0=(s,e)=>Hf(s).priority??e,tt={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(Hf).forEach(e=>{e.type.forEach(t=>{var i,n;return(n=(i=this._removeHandlers)[t])==null?void 0:n.call(i,e)})}),this},add(...s){return s.map(Hf).forEach(e=>{e.type.forEach(t=>{var r,a;const i=this._addHandlers,n=this._queue;i[t]?(r=i[t])==null||r.call(i,e):(n[t]=n[t]||[],(a=n[t])==null||a.push(e))})}),this},handle(s,e,t){var a;const i=this._addHandlers,n=this._removeHandlers;if(i[s]||n[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=e,n[s]=t;const r=this._queue;return r[s]&&((a=r[s])==null||a.forEach(o=>e(o)),delete r[s]),this},handleByMap(s,e){return this.handle(s,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(s,e,t=-1){return this.handle(s,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((n,r)=>z0(r,t)-z0(n,t)))},i=>{const n=e.indexOf(i.ref);n!==-1&&e.splice(n,1)})}};class jf{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const EA=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` +`);function CA(s){let e="";for(let t=0;t0&&(e+=` +else `),t=0;--i){const n=Wf[i];if(n.test&&n.test(s,t))return new n(s,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class on{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,i,n,r,a,o,h){if(arguments.length>8)throw new Error("max arguments reached");const{name:l,items:c}=this;this._aliasCount++;for(let u=0,d=c.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(on.prototype,{dispatch:{value:on.prototype.emit},run:{value:on.prototype.emit}});class Ol{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new on("setRealSize"),this.onUpdate=new on("update"),this.onError=new on("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,i){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class yu extends Ol{constructor(e,t){const{width:i,height:n}=t||{};if(!i||!n)throw new Error("BufferResource width or height invalid");super(i,n),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,i){const n=e.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,this.unpackAlignment),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===Ni.UNPACK);const r=t.realWidth,a=t.realHeight;return i.width===r&&i.height===a?n.texSubImage2D(t.target,0,0,0,r,a,t.format,i.type,this.data):(i.width=r,i.height=a,n.texImage2D(t.target,0,i.internalFormat,r,a,0,t.format,i.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const RA={scaleMode:sn.NEAREST,alphaMode:Ni.NPM},zf=class so extends jl{constructor(e=null,t=null){super(),t=Object.assign({},so.defaultOptions,t);const{alphaMode:i,mipmap:n,anisotropicLevel:r,scaleMode:a,width:o,height:h,wrapMode:l,format:c,type:u,target:d,resolution:f,resourceOptions:p}=t;e&&!(e instanceof Ol)&&(e=Qx(e,p),e.internal=!0),this.resolution=f||We.RESOLUTION,this.width=Math.round((o||0)*this.resolution)/this.resolution,this.height=Math.round((h||0)*this.resolution)/this.resolution,this._mipmap=n,this.anisotropicLevel=r,this._wrapMode=l,this._scaleMode=a,this.format=c,this.type=u,this.target=d,this.alphaMode=i,this.uid=Fa(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=o>0&&h>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let i;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,i=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,i=!0),i&&this.dirtyStyleId++,this}setSize(e,t,i){return i=i||this.resolution,this.setRealSize(e*i,t*i,i)}setRealSize(e,t,i){return this.resolution=i||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=Y0(this.realWidth)&&Y0(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete Sr[this.cacheId],delete pn[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),so.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,i=We.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else{if(!e._pixiId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${o}_${Fa()}`}r=e._pixiId}let a=Sr[r];if(n&&i&&!a)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return a||(a=new so(e,t),a.cacheId=r,so.addToCache(a,r)),a}static fromBuffer(e,t,i,n){e=e||new Float32Array(t*i*4);const r=new yu(e,{width:t,height:i,...n==null?void 0:n.resourceOptions});let a,o;return e instanceof Float32Array?(a=Ne.RGBA,o=et.FLOAT):e instanceof Int32Array?(a=Ne.RGBA_INTEGER,o=et.INT):e instanceof Uint32Array?(a=Ne.RGBA_INTEGER,o=et.UNSIGNED_INT):e instanceof Int16Array?(a=Ne.RGBA_INTEGER,o=et.SHORT):e instanceof Uint16Array?(a=Ne.RGBA_INTEGER,o=et.UNSIGNED_SHORT):e instanceof Int8Array?(a=Ne.RGBA,o=et.BYTE):(a=Ne.RGBA,o=et.UNSIGNED_BYTE),r.internal=!0,new so(r,Object.assign({},RA,{type:o,format:a},n))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),Sr[t]&&Sr[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),Sr[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=Sr[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete Sr[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;t1){for(let u=0;u(s[s.POLY=0]="POLY",s[s.RECT=1]="RECT",s[s.CIRC=2]="CIRC",s[s.ELIP=3]="ELIP",s[s.RREC=4]="RREC",s))(Hi||{});class Ut{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new Ut(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}Ut.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const cc=[new Ut,new Ut,new Ut,new Ut];class Tt{constructor(e=0,t=0,i=0,n=0){this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(n),this.type=Hi.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new Tt(0,0,0,0)}clone(){return new Tt(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=R)return!1;const P=this.ye.bottom?e.bottom:this.bottom)>P}const i=this.left,n=this.right,r=this.top,a=this.bottom;if(n<=i||a<=r)return!1;const o=cc[0].set(e.left,e.top),h=cc[1].set(e.left,e.bottom),l=cc[2].set(e.right,e.top),c=cc[3].set(e.right,e.bottom);if(l.x<=o.x||h.y<=o.y)return!1;const u=Math.sign(t.a*t.d-t.b*t.c);if(u===0||(t.apply(o,o),t.apply(h,h),t.apply(l,l),t.apply(c,c),Math.max(o.x,h.x,l.x,c.x)<=i||Math.min(o.x,h.x,l.x,c.x)>=n||Math.max(o.y,h.y,l.y,c.y)<=r||Math.min(o.y,h.y,l.y,c.y)>=a))return!1;const d=u*(h.y-o.y),f=u*(o.x-h.x),p=d*i+f*r,m=d*n+f*r,g=d*i+f*a,v=d*n+f*a;if(Math.max(p,m,g,v)<=d*o.x+f*o.y||Math.min(p,m,g,v)>=d*c.x+f*c.y)return!1;const b=u*(o.y-l.y),y=u*(l.x-o.x),w=b*i+y*r,A=b*n+y*r,T=b*i+y*a,_=b*n+y*a;return!(Math.max(w,A,T,_)<=b*o.x+y*o.y||Math.min(w,A,T,_)>=b*c.x+y*c.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),r=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=n,this.height=Math.max(r-n,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=n-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),r=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=n,this.height=r-n,this}}Tt.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class xu{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.radius=i,this.type=Hi.CIRC}clone(){return new xu(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const i=this.radius*this.radius;let n=this.x-e,r=this.y-t;return n*=n,r*=r,n+r<=i}getBounds(){return new Tt(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}xu.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class bu{constructor(e=0,t=0,i=0,n=0){this.x=e,this.y=t,this.width=i,this.height=n,this.type=Hi.ELIP}clone(){return new bu(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let i=(e-this.x)/this.width,n=(t-this.y)/this.height;return i*=i,n*=n,i+n<=1}getBounds(){return new Tt(this.x-this.width,this.y-this.height,this.width,this.height)}}bu.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class Ca{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const i=[];for(let n=0,r=t.length;nt!=c>t&&e<(l-o)*((t-h)/(c-h))+o&&(i=!i)}return i}}Ca.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((s,e)=>`${s}, ${e}`,"")}]`};class wu{constructor(e=0,t=0,i=0,n=0,r=20){this.x=e,this.y=t,this.width=i,this.height=n,this.radius=r,this.type=Hi.RREC}clone(){return new wu(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+i&&t<=this.y+this.height-i||e>=this.x+i&&e<=this.x+this.width-i)return!0;let n=e-(this.x+i),r=t-(this.y+i);const a=i*i;if(n*n+r*r<=a||(n=e-(this.x+this.width-i),n*n+r*r<=a)||(r=t-(this.y+this.height-i),n*n+r*r<=a)||(n=e-(this.x+i),n*n+r*r<=a))return!0}return!1}}wu.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class li{constructor(e=1,t=0,i=0,n=1,r=0,a=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=n,this.tx=r,this.ty=a}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,n,r,a){return this.a=e,this.b=t,this.c=i,this.d=n,this.tx=r,this.ty=a,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new Ut;const i=e.x,n=e.y;return t.x=this.a*i+this.c*n+this.tx,t.y=this.b*i+this.d*n+this.ty,t}applyInverse(e,t){t=t||new Ut;const i=1/(this.a*this.d+this.c*-this.b),n=e.x,r=e.y;return t.x=this.d*i*n+-this.c*i*r+(this.ty*this.c-this.tx*this.d)*i,t.y=this.a*i*r+-this.b*i*n+(-this.ty*this.a+this.tx*this.b)*i,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.a,r=this.c,a=this.tx;return this.a=n*t-this.b*i,this.b=n*i+this.b*t,this.c=r*t-this.d*i,this.d=r*i+this.d*t,this.tx=a*t-this.ty*i,this.ty=a*i+this.ty*t,this}append(e){const t=this.a,i=this.b,n=this.c,r=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*i+e.b*r,this.c=e.c*t+e.d*n,this.d=e.c*i+e.d*r,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*i+e.ty*r+this.ty,this}setTransform(e,t,i,n,r,a,o,h,l){return this.a=Math.cos(o+l)*r,this.b=Math.sin(o+l)*r,this.c=-Math.sin(o-h)*a,this.d=Math.cos(o-h)*a,this.tx=e-(i*this.a+n*this.c),this.ty=t-(i*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,n=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,n=this.c,r=this.d,a=e.pivot,o=-Math.atan2(-n,r),h=Math.atan2(i,t),l=Math.abs(o+h);return l<1e-5||Math.abs(vh-l)<1e-5?(e.rotation=h,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=o,e.skew.y=h),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(n*n+r*r),e.position.x=this.tx+(a.x*t+a.y*n),e.position.y=this.ty+(a.x*i+a.y*r),e}invert(){const e=this.a,t=this.b,i=this.c,n=this.d,r=this.tx,a=e*n-t*i;return this.a=n/a,this.b=-t/a,this.c=-i/a,this.d=e/a,this.tx=(i*this.ty-n*r)/a,this.ty=-(e*this.ty-t*r)/a,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new li;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new li}static get TEMP_MATRIX(){return new li}}li.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const ua=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],da=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],fa=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ma=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Kf=[],tb=[],hc=Math.sign;function NA(){for(let s=0;s<16;s++){const e=[];Kf.push(e);for(let t=0;t<16;t++){const i=hc(ua[s]*ua[t]+fa[s]*da[t]),n=hc(da[s]*ua[t]+ma[s]*da[t]),r=hc(ua[s]*fa[t]+fa[s]*ma[t]),a=hc(da[s]*fa[t]+ma[s]*ma[t]);for(let o=0;o<16;o++)if(ua[o]===i&&da[o]===n&&fa[o]===r&&ma[o]===a){e.push(o);break}}}for(let s=0;s<16;s++){const e=new li;e.set(ua[s],da[s],fa[s],ma[s],0,0),tb.push(e)}}NA();const mi={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:s=>ua[s],uY:s=>da[s],vX:s=>fa[s],vY:s=>ma[s],inv:s=>s&8?s&15:-s&7,add:(s,e)=>Kf[s][e],sub:(s,e)=>Kf[s][mi.inv(e)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,e)=>Math.abs(s)*2<=Math.abs(e)?e>=0?mi.S:mi.N:Math.abs(e)*2<=Math.abs(s)?s>0?mi.E:mi.W:e>0?s>0?mi.SE:mi.SW:s>0?mi.NE:mi.NW,matrixAppendRotationInv:(s,e,t=0,i=0)=>{const n=tb[mi.inv(e)];n.tx=t,n.ty=i,s.append(n)}};class sr{constructor(e,t,i=0,n=0){this._x=i,this._y=n,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new sr(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}sr.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Zf=class{constructor(){this.worldTransform=new li,this.localTransform=new li,this.position=new sr(this.onChange,this,0,0),this.scale=new sr(this.onChange,this,1,1),this.pivot=new sr(this.onChange,this,0,0),this.skew=new sr(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const s=this.localTransform;this._localID!==this._currentLocalID&&(s.a=this._cx*this.scale.x,s.b=this._sx*this.scale.x,s.c=this._cy*this.scale.y,s.d=this._sy*this.scale.y,s.tx=this.position.x-(this.pivot.x*s.a+this.pivot.y*s.c),s.ty=this.position.y-(this.pivot.x*s.b+this.pivot.y*s.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(s){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==s._worldID){const t=s.worldTransform,i=this.worldTransform;i.a=e.a*t.a+e.b*t.c,i.b=e.a*t.b+e.b*t.d,i.c=e.c*t.a+e.d*t.c,i.d=e.c*t.b+e.d*t.d,i.tx=e.tx*t.a+e.ty*t.c+t.tx,i.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=s._worldID,this._worldID++}}setFromMatrix(s){s.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(s){this._rotation!==s&&(this._rotation=s,this.updateSkew())}};Zf.IDENTITY=new Zf;let mp=Zf;mp.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var UA=`varying vec2 vTextureCoord; uniform sampler2D uSampler; void main(void){ gl_FragColor *= texture2D(uSampler, vTextureCoord); -}`,V2=`attribute vec2 aVertexPosition; +}`,XA=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -48,7 +48,7 @@ void main(void){ gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); vTextureCoord = aTextureCoord; } -`;function Z0(s,e,t){const i=s.createShader(e);return s.shaderSource(i,t),s.compileShader(i),i}function Qd(s){const e=new Array(s);for(let t=0;ts.type==="float"&&s.size===1&&!s.isArray,code:s=>` +`;function K0(s,e,t){const i=s.createShader(e);return s.shaderSource(i,t),s.compileShader(i),i}function Jd(s){const e=new Array(s);for(let t=0;ts.type==="float"&&s.size===1&&!s.isArray,code:s=>` if(uv["${s}"] !== ud["${s}"].value) { ud["${s}"].value = uv["${s}"] @@ -168,7 +168,7 @@ void main(void){ cv[3] = v[3]; gl.uniform4f(ud["${s}"].location, v[0], v[1], v[2], v[3]) - }`}],Y2={float:` + }`}],VA={float:` if (cv !== v) { cu.value = v; @@ -304,7 +304,7 @@ void main(void){ cu.value = v; gl.uniform1i(location, v); - }`},$2={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function G2(s,e){var i;const t=[` + }`},YA={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function $A(s,e){var i;const t=[` var v = null; var cv = null; var cu = null; @@ -314,18 +314,18 @@ void main(void){ renderer.shader.syncUniformBufferGroup(uv.${n}, '${n}'); `):t.push(` renderer.shader.syncUniformGroup(uv.${n}, syncData); - `));continue}const a=s.uniforms[n];let o=!1;for(let h=0;h=Da.WEBGL2&&(e=s.getContext("webgl2",{})),e||(e=s.getContext("webgl",{})||s.getContext("experimental-webgl",{}),e?e.getExtension("WEBGL_draw_buffers"):e=null),qa=e}return qa}let uc;function j2(){if(!uc){uc=Ls.MEDIUM;const s=H2();if(s&&s.getShaderPrecisionFormat){const e=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT);e&&(uc=e.precision?Ls.HIGH:Ls.MEDIUM)}}return uc}function J0(s,e){const t=s.getShaderSource(e).split(` +`))}const sb={};let qa=sb;function GA(){if(qa===sb||qa!=null&&qa.isContextLost()){const s=We.ADAPTER.createCanvas();let e;We.PREFER_ENV>=Na.WEBGL2&&(e=s.getContext("webgl2",{})),e||(e=s.getContext("webgl",{})||s.getContext("experimental-webgl",{}),e?e.getExtension("WEBGL_draw_buffers"):e=null),qa=e}return qa}let uc;function HA(){if(!uc){uc=Us.MEDIUM;const s=GA();if(s&&s.getShaderPrecisionFormat){const e=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT);e&&(uc=e.precision?Us.HIGH:Us.MEDIUM)}}return uc}function Z0(s,e){const t=s.getShaderSource(e).split(` `).map((l,c)=>`${c}: ${l}`),i=s.getShaderInfoLog(e),n=i.split(` `),r={},a=n.map(l=>parseFloat(l.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(l=>l&&!r[l]?(r[l]=!0,!0):!1),o=[""];a.forEach(l=>{t[l-1]=`%c${t[l-1]}%c`,o.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});const h=t.join(` -`);o[0]=h,console.error(i),console.groupCollapsed("click to view full shader code"),console.warn(...o),console.groupEnd()}function W2(s,e,t,i){s.getProgramParameter(e,s.LINK_STATUS)||(s.getShaderParameter(t,s.COMPILE_STATUS)||J0(s,t),s.getShaderParameter(i,s.COMPILE_STATUS)||J0(s,i),console.error("PixiJS Error: Could not initialize shader."),s.getProgramInfoLog(e)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",s.getProgramInfoLog(e)))}const z2={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function rb(s){return z2[s]}let dc=null;const Q0={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function ab(s,e){if(!dc){const t=Object.keys(Q0);dc={};for(let i=0;i0&&(t+=` else `),ithis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)}buildTexturesAndDrawCalls(){const{_bufferedTextures:e,maxTextures:t}=this,i=Gs._textureArrayPool,n=this.renderer.batch,r=this._tempBoundTextures,a=this.renderer.textureGC.count;let o=++vt._globalBatch,h=0,l=i[0],c=0;n.copyBoundTextures(r,t);for(let u=0;u=t&&(n.boundArray(l,r,o,t),this.buildDrawCalls(l,c,u),c=u,l=i[++h],++o),d._batchEnabled=o,d.touched=a,l.elements[l.count++]=d)}l.count>0&&(n.boundArray(l,r,o,t),this.buildDrawCalls(l,c,this._bufferSize),++h,++o);for(let u=0;u0);for(let m=0;mthis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)}buildTexturesAndDrawCalls(){const{_bufferedTextures:e,maxTextures:t}=this,i=Zs._textureArrayPool,n=this.renderer.batch,r=this._tempBoundTextures,a=this.renderer.textureGC.count;let o=++yt._globalBatch,h=0,l=i[0],c=0;n.copyBoundTextures(r,t);for(let u=0;u=t&&(n.boundArray(l,r,o,t),this.buildDrawCalls(l,c,u),c=u,l=i[++h],++o),d._batchEnabled=o,d.touched=a,l.elements[l.count++]=d)}l.count>0&&(n.boundArray(l,r,o,t),this.buildDrawCalls(l,c,this._bufferSize),++h,++o);for(let u=0;u0);for(let m=0;m=0;--n)e[n]=i[n]||null,e[n]&&(e[n]._batchLocation=n)}boundArray(e,t,i,n){const{elements:r,ids:a,count:o}=e;let h=0;for(let l=0;l=0&&u=Da.WEBGL2&&(i=e.getContext("webgl2",t)),i)this.webGLVersion=2;else if(this.webGLVersion=1,i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!i)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=i,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),i="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;i&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=i||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=n,n||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}xh.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},xh.extension={type:Ge.RendererSystem,name:"context"};et.add(xh);class im{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new Qs("disposeFramebuffer"),this.multisample=Ai.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new vt(null,{scaleMode:qs.NEAREST,resolution:1,mipmap:Us.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new vt(null,{scaleMode:qs.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:Us.OFF,format:Ne.DEPTH_COMPONENT,type:Qe.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let i=0;i{const n=this.source;this.url=n.src;const r=()=>{this.destroyed||(n.onload=null,n.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};n.complete&&n.src?r():(n.onload=r,n.onerror=a=>{i(a),this.onError.emit(a)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,i=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:i?"cors":"no-cors"}).then(n=>n.blob()).then(n=>t(n,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ni.UNPACK?"premultiply":"none"})).then(n=>this.destroyed?Promise.reject():(this.bitmap=n,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,i){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,i);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,i,this.bitmap),!this.preserveBitmap){let n=!0;const r=t._glTextures;for(const a in r){const o=r[a];if(o!==i&&o.dirtyId!==t.dirtyId){n=!1;break}}n&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class gp{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,i){const n=t.width,r=t.height;if(i){const a=e.width/2/n,o=e.height/2/r,h=e.x/n+a,l=e.y/r+o;i=fi.add(i,fi.NW),this.x0=h+a*fi.uX(i),this.y0=l+o*fi.uY(i),i=fi.add(i,2),this.x1=h+a*fi.uX(i),this.y1=l+o*fi.uY(i),i=fi.add(i,2),this.x2=h+a*fi.uX(i),this.y2=l+o*fi.uY(i),i=fi.add(i,2),this.x3=h+a*fi.uX(i),this.y3=l+o*fi.uY(i)}else this.x0=e.x/n,this.y0=e.y/r,this.x1=(e.x+e.width)/n,this.y1=e.y/r,this.x2=(e.x+e.width)/n,this.y2=(e.y+e.height)/r,this.x3=e.x/n,this.y3=(e.y+e.height)/r;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}gp.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const iv=new gp;function mc(s){s.destroy=function(){},s.on=function(){},s.once=function(){},s.emit=function(){}}let pt=class si extends jl{constructor(e,t,i,n,r,a,o){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new Tt(0,0,1,1)),e instanceof si&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=n,this.valid=!1,this.destroyed=!1,this._uvs=iv,this.uvMatrix=null,this.orig=i||t,this._rotate=Number(r||0),r===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=a?new Xt(a.x,a.y):new Xt(0,0),this.defaultBorders=o,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t!=null&&t.url&&mn[t.url]&&si.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,si.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){var n;const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),i=new si(this.baseTexture,!this.noFrame&&e,t,(n=this.trim)==null?void 0:n.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(i._frame=e),i}updateUvs(){this._uvs===iv&&(this._uvs=new gp),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},i=We.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else if(e instanceof vt){if(!e.cacheId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e.cacheId=`${o}-${Pa()}`,vt.addToCache(e,e.cacheId)}r=e.cacheId}else{if(!e._pixiId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${o}_${Pa()}`}r=e._pixiId}let a=mn[r];if(n&&i&&!a)throw new Error(`The cacheId "${r}" does not exist in TextureCache.`);return!a&&!(e instanceof vt)?(t.resolution||(t.resolution=mr(e)),a=new si(new vt(e,t)),a.baseTexture.cacheId=r,vt.addToCache(a.baseTexture,r),si.addToCache(a,r)):!a&&e instanceof vt&&(a=new si(e),si.addToCache(a,r)),a}static fromURL(e,t){const i=Object.assign({autoLoad:!1},t==null?void 0:t.resourceOptions),n=si.from(e,Object.assign({resourceOptions:i},t),!1),r=n.baseTexture.resource;return n.baseTexture.valid?Promise.resolve(n):r.load().then(()=>Promise.resolve(n))}static fromBuffer(e,t,i,n){return new si(vt.fromBuffer(e,t,i,n))}static fromLoader(e,t,i,n){const r=new vt(e,Object.assign({scaleMode:vt.defaultOptions.scaleMode,resolution:mr(t)},n)),{resource:a}=r;a instanceof hb&&(a.url=t);const o=new si(r);return i||(i=t),vt.addToCache(o.baseTexture,i),si.addToCache(o,i),i!==t&&(vt.addToCache(o.baseTexture,t),si.addToCache(o,t)),o.baseTexture.valid?Promise.resolve(o):new Promise(h=>{o.baseTexture.once("loaded",()=>h(o))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),mn[t]&&mn[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),mn[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=mn[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete mn[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;tthis.baseTexture.width,o=i+r>this.baseTexture.height;if(a||o){const h=a&&o?"and":"or",l=`X: ${t} + ${n} = ${t+n} > ${this.baseTexture.width}`,c=`Y: ${i} + ${r} = ${i+r} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${l} ${h} ${c}`)}this.valid=n&&r&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return si._EMPTY||(si._EMPTY=new si(new vt),mc(si._EMPTY),mc(si._EMPTY.baseTexture)),si._EMPTY}static get WHITE(){if(!si._WHITE){const e=We.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),si._WHITE=new si(vt.from(e)),mc(si._WHITE),mc(si._WHITE.baseTexture)}return si._WHITE}};class Na extends pt{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,i=!0){const n=this.baseTexture.resolution,r=Math.round(e*n)/n,a=Math.round(t*n)/n;this.valid=r>0&&a>0,this._frame.width=this.orig.width=r,this._frame.height=this.orig.height=a,i&&this.baseTexture.resize(r,a),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new Na(new cb(e))}}class ub{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,i=Ai.NONE){const n=new cb(Object.assign({width:e,height:t,resolution:1,multisample:i},this.textureOptions));return new Na(n)}getOptimalTexture(e,t,i=1,n=Ai.NONE){let r;e=Math.max(Math.ceil(e*i-1e-6),1),t=Math.max(Math.ceil(t*i-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=ph(e),t=ph(t),r=((e&65535)<<16|t&65535)>>>0,n>1&&(r+=n*4294967296)):r=n>1?-n:-1,this.texturePool[r]||(this.texturePool[r]=[]);let a=this.texturePool[r].pop();return a||(a=this.createTexture(e,t,n)),a.filterPoolKey=r,a.setResolution(i),a}getFilterTexture(e,t,i){const n=this.getOptimalTexture(e.width,e.height,t||e.resolution,i||Ai.NONE);return n.filterFrame=e.filterFrame,n}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const i=this.texturePool[t];if(i)for(let n=0;n0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const i=this.texturePool[t];if(i)for(let n=0;n1&&(c=this.getOptimalFilterTexture(l.width,l.height,t.resolution),c.filterFrame=l.filterFrame),i[u].apply(this,l,c,En.CLEAR,t);const d=l;l=c,c=d}i[u].apply(this,l,h.renderTexture,En.BLEND,t),u>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(l),this.returnFilterTexture(c)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=En.CLEAR){const{renderTexture:i,state:n}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e==null?void 0:e.filterFrame){const a=this.tempRect;a.x=0,a.y=0,a.width=e.filterFrame.width,a.height=e.filterFrame.height,i.bind(e,e.filterFrame,a)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?i.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const r=n.stateId&1||this.forceClear;(t===En.CLEAR||t===En.BLIT&&r)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,i,n){const r=this.renderer;r.state.set(e.state),this.bindAndClear(i,n),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,r.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),r.geometry.bind(this.quadUv),r.geometry.draw(Rn.TRIANGLES)):(r.geometry.bind(this.quad),r.geometry.draw(Rn.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:i,destinationFrame:n}=this.activeState,{orig:r}=t._texture,a=e.set(n.width,0,0,n.height,i.x,i.y),o=t.worldTransform.copyTo(oi.TEMP_MATRIX);return o.invert(),a.prepend(o),a.scale(1/r.width,1/r.height),a.translate(t.anchor.x,t.anchor.y),a}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,i=1,n=Ai.NONE){return this.texturePool.getOptimalTexture(e,t,i,n)}getFilterTexture(e,t,i){if(typeof e=="number"){const r=e;e=t,t=r}e=e||this.activeState.renderTexture;const n=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,i||Ai.NONE);return n.filterFrame=e.filterFrame,n}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const i=pc[0],n=pc[1],r=pc[2],a=pc[3];i.set(t.left,t.top),n.set(t.left,t.bottom),r.set(t.right,t.top),a.set(t.right,t.bottom),e.apply(i,i),e.apply(n,n),e.apply(r,r),e.apply(a,a);const o=Math.min(i.x,n.x,r.x,a.x),h=Math.min(i.y,n.y,r.y,a.y),l=Math.max(i.x,n.x,r.x,a.x),c=Math.max(i.y,n.y,r.y,a.y);t.x=o,t.y=h,t.width=l-o,t.height=c-h}roundFrame(e,t,i,n,r){if(!(e.width<=0||e.height<=0||i.width<=0||i.height<=0)){if(r){const{a,b:o,c:h,d:l}=r;if((Math.abs(o)>1e-4||Math.abs(h)>1e-4)&&(Math.abs(a)>1e-4||Math.abs(l)>1e-4))return}r=r?ef.copyFrom(r):ef.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.transformAABB(r,e),e.ceil(t),this.transformAABB(r.invert(),e)}}}fb.extension={type:Ge.RendererSystem,name:"filter"};et.add(fb);class aA{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=Ai.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const oA=new Tt;class mb{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new im(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Tt,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,i=this.renderer.context.extensions.depthTexture;We.PREFER_ENV===Da.WEBGL_LEGACY&&(t=null,i=null),t?e.drawBuffers=n=>t.drawBuffersWEBGL(n):(this.hasMRT=!1,e.drawBuffers=()=>{}),i||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,i=0){const{gl:n}=this;if(e){const r=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)),r.mipLevel!==i&&(e.dirtyId++,e.dirtyFormat++,r.mipLevel=i),r.dirtyId!==e.dirtyId&&(r.dirtyId=e.dirtyId,r.dirtyFormat!==e.dirtyFormat?(r.dirtyFormat=e.dirtyFormat,r.dirtySize=e.dirtySize,this.updateFramebuffer(e,i)):r.dirtySize!==e.dirtySize&&(r.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let a=0;a>i,o=t.height>>i,h=a/t.width;this.setViewport(t.x*h,t.y*h,a,o)}else{const a=e.width>>i,o=e.height>>i;this.setViewport(0,0,a,o)}}else this.current&&(this.current=null,n.bindFramebuffer(n.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,i,n){const r=this.viewport;e=Math.round(e),t=Math.round(t),i=Math.round(i),n=Math.round(n),(r.width!==i||r.height!==n||r.x!==e||r.y!==t)&&(r.x=e,r.y=t,r.width=i,r.height=n,this.gl.viewport(e,t,i,n))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,i,n,r=Yf.COLOR|Yf.DEPTH){const{gl:a}=this;a.clearColor(e,t,i,n),a.clear(r)}initFramebuffer(e){const{gl:t}=this,i=new aA(t.createFramebuffer());return i.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=i,this.managedFramebuffers.push(e),e.disposeRunner.add(this),i}resizeFramebuffer(e){const{gl:t}=this,i=e.glFramebuffers[this.CONTEXT_UID];if(i.stencil){t.bindRenderbuffer(t.RENDERBUFFER,i.stencil);let a;this.renderer.context.webGLVersion===1?a=t.DEPTH_STENCIL:e.depth&&e.stencil?a=t.DEPTH24_STENCIL8:e.depth?a=t.DEPTH_COMPONENT24:a=t.STENCIL_INDEX8,i.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,i.multisample,a,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,a,e.width,e.height)}const n=e.colorTextures;let r=n.length;t.drawBuffers||(r=Math.min(r,1));for(let a=0;a1&&this.canMultisampleFramebuffer(e)?n.msaaBuffer=n.msaaBuffer||i.createRenderbuffer():n.msaaBuffer&&(i.deleteRenderbuffer(n.msaaBuffer),n.msaaBuffer=null,n.blitFramebuffer&&(n.blitFramebuffer.dispose(),n.blitFramebuffer=null));const o=[];for(let h=0;h1&&i.drawBuffers(o),e.depthTexture&&this.writeDepthTexture){const h=e.depthTexture;this.renderer.texture.bind(h,0),i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,h._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){n.stencil=n.stencil||i.createRenderbuffer();let h,l;this.renderer.context.webGLVersion===1?(h=i.DEPTH_STENCIL_ATTACHMENT,l=i.DEPTH_STENCIL):e.depth&&e.stencil?(h=i.DEPTH_STENCIL_ATTACHMENT,l=i.DEPTH24_STENCIL8):e.depth?(h=i.DEPTH_ATTACHMENT,l=i.DEPTH_COMPONENT24):(h=i.STENCIL_ATTACHMENT,l=i.STENCIL_INDEX8),i.bindRenderbuffer(i.RENDERBUFFER,n.stencil),n.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,n.multisample,l,e.width,e.height):i.renderbufferStorage(i.RENDERBUFFER,l,e.width,e.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,h,i.RENDERBUFFER,n.stencil)}else n.stencil&&(i.deleteRenderbuffer(n.stencil),n.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let i=Ai.NONE;if(e<=1||t===null)return i;for(let n=0;n=0&&this.managedFramebuffers.splice(r,1),e.disposeRunner.remove(this),t||(n.deleteFramebuffer(i.framebuffer),i.msaaBuffer&&n.deleteRenderbuffer(i.msaaBuffer),i.stencil&&n.deleteRenderbuffer(i.stencil)),i.blitFramebuffer&&this.disposeFramebuffer(i.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let i=0;ii.createVertexArrayOES(),e.bindVertexArray=n=>i.bindVertexArrayOES(n),e.deleteVertexArray=n=>i.deleteVertexArrayOES(n)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const i=e.getExtension("ANGLE_instanced_arrays");i?(e.vertexAttribDivisor=(n,r)=>i.vertexAttribDivisorANGLE(n,r),e.drawElementsInstanced=(n,r,a,o,h)=>i.drawElementsInstancedANGLE(n,r,a,o,h),e.drawArraysInstanced=(n,r,a,o)=>i.drawArraysInstancedANGLE(n,r,a,o)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:i}=this;let n=e.glVertexArrayObjects[this.CONTEXT_UID],r=!1;n||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=n={},r=!0);const a=n[t.program.id]||this.initGeometryVao(e,t,r);this._activeGeometry=e,this._activeVao!==a&&(this._activeVao=a,this.hasVao?i.bindVertexArray(a):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let i=0;i"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const i=this.mapCoord;for(let n=0;n=0;--n)e[n]=i[n]||null,e[n]&&(e[n]._batchLocation=n)}boundArray(e,t,i,n){const{elements:r,ids:a,count:o}=e;let h=0;for(let l=0;l=0&&u=Na.WEBGL2&&(i=e.getContext("webgl2",t)),i)this.webGLVersion=2;else if(this.webGLVersion=1,i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!i)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=i,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),i="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;i&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=i||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=n,n||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}xh.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},xh.extension={type:He.RendererSystem,name:"context"};tt.add(xh);class tm{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new on("disposeFramebuffer"),this.multisample=Ei.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new yt(null,{scaleMode:sn.NEAREST,resolution:1,mipmap:Ys.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new yt(null,{scaleMode:sn.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:Ys.OFF,format:Ne.DEPTH_COMPONENT,type:et.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let i=0;i{const n=this.source;this.url=n.src;const r=()=>{this.destroyed||(n.onload=null,n.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};n.complete&&n.src?r():(n.onload=r,n.onerror=a=>{i(a),this.onError.emit(a)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,i=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:i?"cors":"no-cors"}).then(n=>n.blob()).then(n=>t(n,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ni.UNPACK?"premultiply":"none"})).then(n=>this.destroyed?Promise.reject():(this.bitmap=n,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,i){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,i);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,i,this.bitmap),!this.preserveBitmap){let n=!0;const r=t._glTextures;for(const a in r){const o=r[a];if(o!==i&&o.dirtyId!==t.dirtyId){n=!1;break}}n&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class pp{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,i){const n=t.width,r=t.height;if(i){const a=e.width/2/n,o=e.height/2/r,h=e.x/n+a,l=e.y/r+o;i=mi.add(i,mi.NW),this.x0=h+a*mi.uX(i),this.y0=l+o*mi.uY(i),i=mi.add(i,2),this.x1=h+a*mi.uX(i),this.y1=l+o*mi.uY(i),i=mi.add(i,2),this.x2=h+a*mi.uX(i),this.y2=l+o*mi.uY(i),i=mi.add(i,2),this.x3=h+a*mi.uX(i),this.y3=l+o*mi.uY(i)}else this.x0=e.x/n,this.y0=e.y/r,this.x1=(e.x+e.width)/n,this.y1=e.y/r,this.x2=(e.x+e.width)/n,this.y2=(e.y+e.height)/r,this.x3=e.x/n,this.y3=(e.y+e.height)/r;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}pp.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const tv=new pp;function mc(s){s.destroy=function(){},s.on=function(){},s.once=function(){},s.emit=function(){}}let gt=class ri extends jl{constructor(e,t,i,n,r,a,o){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new Tt(0,0,1,1)),e instanceof ri&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=n,this.valid=!1,this.destroyed=!1,this._uvs=tv,this.uvMatrix=null,this.orig=i||t,this._rotate=Number(r||0),r===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=a?new Ut(a.x,a.y):new Ut(0,0),this.defaultBorders=o,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t!=null&&t.url&&pn[t.url]&&ri.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,ri.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){var n;const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),i=new ri(this.baseTexture,!this.noFrame&&e,t,(n=this.trim)==null?void 0:n.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(i._frame=e),i}updateUvs(){this._uvs===tv&&(this._uvs=new pp),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},i=We.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else if(e instanceof yt){if(!e.cacheId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e.cacheId=`${o}-${Fa()}`,yt.addToCache(e,e.cacheId)}r=e.cacheId}else{if(!e._pixiId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${o}_${Fa()}`}r=e._pixiId}let a=pn[r];if(n&&i&&!a)throw new Error(`The cacheId "${r}" does not exist in TextureCache.`);return!a&&!(e instanceof yt)?(t.resolution||(t.resolution=pr(e)),a=new ri(new yt(e,t)),a.baseTexture.cacheId=r,yt.addToCache(a.baseTexture,r),ri.addToCache(a,r)):!a&&e instanceof yt&&(a=new ri(e),ri.addToCache(a,r)),a}static fromURL(e,t){const i=Object.assign({autoLoad:!1},t==null?void 0:t.resourceOptions),n=ri.from(e,Object.assign({resourceOptions:i},t),!1),r=n.baseTexture.resource;return n.baseTexture.valid?Promise.resolve(n):r.load().then(()=>Promise.resolve(n))}static fromBuffer(e,t,i,n){return new ri(yt.fromBuffer(e,t,i,n))}static fromLoader(e,t,i,n){const r=new yt(e,Object.assign({scaleMode:yt.defaultOptions.scaleMode,resolution:pr(t)},n)),{resource:a}=r;a instanceof cb&&(a.url=t);const o=new ri(r);return i||(i=t),yt.addToCache(o.baseTexture,i),ri.addToCache(o,i),i!==t&&(yt.addToCache(o.baseTexture,t),ri.addToCache(o,t)),o.baseTexture.valid?Promise.resolve(o):new Promise(h=>{o.baseTexture.once("loaded",()=>h(o))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),pn[t]&&pn[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),pn[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=pn[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete pn[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;tthis.baseTexture.width,o=i+r>this.baseTexture.height;if(a||o){const h=a&&o?"and":"or",l=`X: ${t} + ${n} = ${t+n} > ${this.baseTexture.width}`,c=`Y: ${i} + ${r} = ${i+r} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${l} ${h} ${c}`)}this.valid=n&&r&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return ri._EMPTY||(ri._EMPTY=new ri(new yt),mc(ri._EMPTY),mc(ri._EMPTY.baseTexture)),ri._EMPTY}static get WHITE(){if(!ri._WHITE){const e=We.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),ri._WHITE=new ri(yt.from(e)),mc(ri._WHITE),mc(ri._WHITE.baseTexture)}return ri._WHITE}};class Ua extends gt{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,i=!0){const n=this.baseTexture.resolution,r=Math.round(e*n)/n,a=Math.round(t*n)/n;this.valid=r>0&&a>0,this._frame.width=this.orig.width=r,this._frame.height=this.orig.height=a,i&&this.baseTexture.resize(r,a),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new Ua(new lb(e))}}class hb{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,i=Ei.NONE){const n=new lb(Object.assign({width:e,height:t,resolution:1,multisample:i},this.textureOptions));return new Ua(n)}getOptimalTexture(e,t,i=1,n=Ei.NONE){let r;e=Math.max(Math.ceil(e*i-1e-6),1),t=Math.max(Math.ceil(t*i-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=ph(e),t=ph(t),r=((e&65535)<<16|t&65535)>>>0,n>1&&(r+=n*4294967296)):r=n>1?-n:-1,this.texturePool[r]||(this.texturePool[r]=[]);let a=this.texturePool[r].pop();return a||(a=this.createTexture(e,t,n)),a.filterPoolKey=r,a.setResolution(i),a}getFilterTexture(e,t,i){const n=this.getOptimalTexture(e.width,e.height,t||e.resolution,i||Ei.NONE);return n.filterFrame=e.filterFrame,n}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const i=this.texturePool[t];if(i)for(let n=0;n0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const i=this.texturePool[t];if(i)for(let n=0;n1&&(c=this.getOptimalFilterTexture(l.width,l.height,t.resolution),c.filterFrame=l.filterFrame),i[u].apply(this,l,c,Cn.CLEAR,t);const d=l;l=c,c=d}i[u].apply(this,l,h.renderTexture,Cn.BLEND,t),u>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(l),this.returnFilterTexture(c)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=Cn.CLEAR){const{renderTexture:i,state:n}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e==null?void 0:e.filterFrame){const a=this.tempRect;a.x=0,a.y=0,a.width=e.filterFrame.width,a.height=e.filterFrame.height,i.bind(e,e.filterFrame,a)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?i.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const r=n.stateId&1||this.forceClear;(t===Cn.CLEAR||t===Cn.BLIT&&r)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,i,n){const r=this.renderer;r.state.set(e.state),this.bindAndClear(i,n),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,r.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),r.geometry.bind(this.quadUv),r.geometry.draw(Pn.TRIANGLES)):(r.geometry.bind(this.quad),r.geometry.draw(Pn.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:i,destinationFrame:n}=this.activeState,{orig:r}=t._texture,a=e.set(n.width,0,0,n.height,i.x,i.y),o=t.worldTransform.copyTo(li.TEMP_MATRIX);return o.invert(),a.prepend(o),a.scale(1/r.width,1/r.height),a.translate(t.anchor.x,t.anchor.y),a}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,i=1,n=Ei.NONE){return this.texturePool.getOptimalTexture(e,t,i,n)}getFilterTexture(e,t,i){if(typeof e=="number"){const r=e;e=t,t=r}e=e||this.activeState.renderTexture;const n=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,i||Ei.NONE);return n.filterFrame=e.filterFrame,n}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const i=pc[0],n=pc[1],r=pc[2],a=pc[3];i.set(t.left,t.top),n.set(t.left,t.bottom),r.set(t.right,t.top),a.set(t.right,t.bottom),e.apply(i,i),e.apply(n,n),e.apply(r,r),e.apply(a,a);const o=Math.min(i.x,n.x,r.x,a.x),h=Math.min(i.y,n.y,r.y,a.y),l=Math.max(i.x,n.x,r.x,a.x),c=Math.max(i.y,n.y,r.y,a.y);t.x=o,t.y=h,t.width=l-o,t.height=c-h}roundFrame(e,t,i,n,r){if(!(e.width<=0||e.height<=0||i.width<=0||i.height<=0)){if(r){const{a,b:o,c:h,d:l}=r;if((Math.abs(o)>1e-4||Math.abs(h)>1e-4)&&(Math.abs(a)>1e-4||Math.abs(l)>1e-4))return}r=r?Qd.copyFrom(r):Qd.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.transformAABB(r,e),e.ceil(t),this.transformAABB(r.invert(),e)}}}db.extension={type:He.RendererSystem,name:"filter"};tt.add(db);class rE{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=Ei.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const aE=new Tt;class fb{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new tm(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Tt,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,i=this.renderer.context.extensions.depthTexture;We.PREFER_ENV===Na.WEBGL_LEGACY&&(t=null,i=null),t?e.drawBuffers=n=>t.drawBuffersWEBGL(n):(this.hasMRT=!1,e.drawBuffers=()=>{}),i||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,i=0){const{gl:n}=this;if(e){const r=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)),r.mipLevel!==i&&(e.dirtyId++,e.dirtyFormat++,r.mipLevel=i),r.dirtyId!==e.dirtyId&&(r.dirtyId=e.dirtyId,r.dirtyFormat!==e.dirtyFormat?(r.dirtyFormat=e.dirtyFormat,r.dirtySize=e.dirtySize,this.updateFramebuffer(e,i)):r.dirtySize!==e.dirtySize&&(r.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let a=0;a>i,o=t.height>>i,h=a/t.width;this.setViewport(t.x*h,t.y*h,a,o)}else{const a=e.width>>i,o=e.height>>i;this.setViewport(0,0,a,o)}}else this.current&&(this.current=null,n.bindFramebuffer(n.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,i,n){const r=this.viewport;e=Math.round(e),t=Math.round(t),i=Math.round(i),n=Math.round(n),(r.width!==i||r.height!==n||r.x!==e||r.y!==t)&&(r.x=e,r.y=t,r.width=i,r.height=n,this.gl.viewport(e,t,i,n))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,i,n,r=Vf.COLOR|Vf.DEPTH){const{gl:a}=this;a.clearColor(e,t,i,n),a.clear(r)}initFramebuffer(e){const{gl:t}=this,i=new rE(t.createFramebuffer());return i.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=i,this.managedFramebuffers.push(e),e.disposeRunner.add(this),i}resizeFramebuffer(e){const{gl:t}=this,i=e.glFramebuffers[this.CONTEXT_UID];if(i.stencil){t.bindRenderbuffer(t.RENDERBUFFER,i.stencil);let a;this.renderer.context.webGLVersion===1?a=t.DEPTH_STENCIL:e.depth&&e.stencil?a=t.DEPTH24_STENCIL8:e.depth?a=t.DEPTH_COMPONENT24:a=t.STENCIL_INDEX8,i.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,i.multisample,a,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,a,e.width,e.height)}const n=e.colorTextures;let r=n.length;t.drawBuffers||(r=Math.min(r,1));for(let a=0;a1&&this.canMultisampleFramebuffer(e)?n.msaaBuffer=n.msaaBuffer||i.createRenderbuffer():n.msaaBuffer&&(i.deleteRenderbuffer(n.msaaBuffer),n.msaaBuffer=null,n.blitFramebuffer&&(n.blitFramebuffer.dispose(),n.blitFramebuffer=null));const o=[];for(let h=0;h1&&i.drawBuffers(o),e.depthTexture&&this.writeDepthTexture){const h=e.depthTexture;this.renderer.texture.bind(h,0),i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,h._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){n.stencil=n.stencil||i.createRenderbuffer();let h,l;this.renderer.context.webGLVersion===1?(h=i.DEPTH_STENCIL_ATTACHMENT,l=i.DEPTH_STENCIL):e.depth&&e.stencil?(h=i.DEPTH_STENCIL_ATTACHMENT,l=i.DEPTH24_STENCIL8):e.depth?(h=i.DEPTH_ATTACHMENT,l=i.DEPTH_COMPONENT24):(h=i.STENCIL_ATTACHMENT,l=i.STENCIL_INDEX8),i.bindRenderbuffer(i.RENDERBUFFER,n.stencil),n.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,n.multisample,l,e.width,e.height):i.renderbufferStorage(i.RENDERBUFFER,l,e.width,e.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,h,i.RENDERBUFFER,n.stencil)}else n.stencil&&(i.deleteRenderbuffer(n.stencil),n.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let i=Ei.NONE;if(e<=1||t===null)return i;for(let n=0;n=0&&this.managedFramebuffers.splice(r,1),e.disposeRunner.remove(this),t||(n.deleteFramebuffer(i.framebuffer),i.msaaBuffer&&n.deleteRenderbuffer(i.msaaBuffer),i.stencil&&n.deleteRenderbuffer(i.stencil)),i.blitFramebuffer&&this.disposeFramebuffer(i.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let i=0;ii.createVertexArrayOES(),e.bindVertexArray=n=>i.bindVertexArrayOES(n),e.deleteVertexArray=n=>i.deleteVertexArrayOES(n)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const i=e.getExtension("ANGLE_instanced_arrays");i?(e.vertexAttribDivisor=(n,r)=>i.vertexAttribDivisorANGLE(n,r),e.drawElementsInstanced=(n,r,a,o,h)=>i.drawElementsInstancedANGLE(n,r,a,o,h),e.drawArraysInstanced=(n,r,a,o)=>i.drawArraysInstancedANGLE(n,r,a,o)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:i}=this;let n=e.glVertexArrayObjects[this.CONTEXT_UID],r=!1;n||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=n={},r=!0);const a=n[t.program.id]||this.initGeometryVao(e,t,r);this._activeGeometry=e,this._activeVao!==a&&(this._activeVao=a,this.hasVao?i.bindVertexArray(a):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let i=0;i"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const i=this.mapCoord;for(let n=0;n0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}gb.extension={type:Ge.RendererSystem,name:"mask"};et.add(gb);class vb{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==i&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const nv=new oi,rv=[],yb=class $c extends vb{constructor(e){super(e),this.glConst=We.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:n}=this,r=n.renderTexture,a=i.getBounds(!0,rv.pop()??new Tt);this.roundFrameToPixels(a,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&a.fit(t),e._scissorRectLocal=a}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:n,d:r}=e;return(Math.abs(i)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||$c.isMatrixRotated(t.worldTransform)||$c.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,n,r){$c.isMatrixRotated(r)||(r=r?nv.copyFrom(r):nv.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&rv.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};yb.extension={type:Ge.RendererSystem,name:"scissor"};let dA=yb;et.add(dA);class xb extends vb{constructor(e){super(e),this.glConst=We.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,n,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,i.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=i?i._colorMask:15;n!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(i._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}xb.extension={type:Ge.RendererSystem,name:"stencil"};et.add(xb);class bb{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return Ot("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return Ot("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return Ot("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}bb.extension={type:[Ge.RendererSystem,Ge.CanvasRendererSystem],name:"_plugin"};et.add(bb);class wb{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new oi,this.transform=null}update(e,t,i,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,i,n){const r=this.projectionMatrix,a=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=a*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-a-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}wb.extension={type:Ge.RendererSystem,name:"projection"};et.add(wb);const fA=new pp,av=new Tt;class Sb{constructor(e){this.renderer=e,this._tempMatrix=new oi}generateTexture(e,t){const{region:i,...n}=t||{},r=(i==null?void 0:i.copyTo(av))||e.getLocalBounds(av,!0),a=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/a),r.height=Math.max(r.height,1/a),n.width=r.width,n.height=r.height,n.resolution=a,n.multisample??(n.multisample=this.renderer.multisample);const o=Na.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const h=e.transform;return e.transform=fA,this.renderer.render(e,{renderTexture:o,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=h,o}destroy(){}}Sb.extension={type:[Ge.RendererSystem,Ge.CanvasRendererSystem],name:"textureGenerator"};et.add(Sb);const ra=new Tt,qo=new Tt;class _b{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new Tt,this.destinationFrame=new Tt,this.viewportFrame=new Tt}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const n=this.renderer;this.current=e;let r,a,o;e?(r=e.baseTexture,o=r.resolution,t||(ra.width=e.frame.width,ra.height=e.frame.height,t=ra),i||(qo.x=e.frame.x,qo.y=e.frame.y,qo.width=t.width,qo.height=t.height,i=qo),a=r.framebuffer):(o=n.resolution,t||(ra.width=n._view.screen.width,ra.height=n._view.screen.height,t=ra),i||(i=ra,i.width=t.width,i.height=t.height));const h=this.viewportFrame;h.x=i.x*o,h.y=i.y*o,h.width=i.width*o,h.height=i.height*o,e||(h.y=n.view.height-(h.y+h.height)),h.ceil(),this.renderer.framebuffer.bind(a,h),this.renderer.projection.update(i,t,o,!a),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=Wt.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,a=this.current?this.current.baseTexture:this.renderer._view.screen,o=r.width!==a.width||r.height!==a.height;if(o){let{x:h,y:l,width:c,height:u}=this.viewportFrame;h=Math.round(h),l=Math.round(l),c=Math.round(c),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(h,l,c,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),o&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}_b.extension={type:Ge.RendererSystem,name:"renderTexture"};et.add(_b);class mA{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function pA(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let n=0;nl>c?1:-1);for(let l=0;l0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}pb.extension={type:He.RendererSystem,name:"mask"};tt.add(pb);class gb{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==i&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const sv=new li,nv=[],vb=class $c extends gb{constructor(e){super(e),this.glConst=We.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:n}=this,r=n.renderTexture,a=i.getBounds(!0,nv.pop()??new Tt);this.roundFrameToPixels(a,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&a.fit(t),e._scissorRectLocal=a}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:n,d:r}=e;return(Math.abs(i)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||$c.isMatrixRotated(t.worldTransform)||$c.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,n,r){$c.isMatrixRotated(r)||(r=r?sv.copyFrom(r):sv.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&nv.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};vb.extension={type:He.RendererSystem,name:"scissor"};let uE=vb;tt.add(uE);class yb extends gb{constructor(e){super(e),this.glConst=We.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,n,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,i.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=i?i._colorMask:15;n!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(i._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}yb.extension={type:He.RendererSystem,name:"stencil"};tt.add(yb);class xb{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return kt("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return kt("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return kt("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}xb.extension={type:[He.RendererSystem,He.CanvasRendererSystem],name:"_plugin"};tt.add(xb);class bb{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new li,this.transform=null}update(e,t,i,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,i,n){const r=this.projectionMatrix,a=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=a*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-a-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}bb.extension={type:He.RendererSystem,name:"projection"};tt.add(bb);const dE=new mp,rv=new Tt;class wb{constructor(e){this.renderer=e,this._tempMatrix=new li}generateTexture(e,t){const{region:i,...n}=t||{},r=(i==null?void 0:i.copyTo(rv))||e.getLocalBounds(rv,!0),a=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/a),r.height=Math.max(r.height,1/a),n.width=r.width,n.height=r.height,n.resolution=a,n.multisample??(n.multisample=this.renderer.multisample);const o=Ua.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const h=e.transform;return e.transform=dE,this.renderer.render(e,{renderTexture:o,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=h,o}destroy(){}}wb.extension={type:[He.RendererSystem,He.CanvasRendererSystem],name:"textureGenerator"};tt.add(wb);const oa=new Tt,zo=new Tt;class Sb{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new Tt,this.destinationFrame=new Tt,this.viewportFrame=new Tt}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const n=this.renderer;this.current=e;let r,a,o;e?(r=e.baseTexture,o=r.resolution,t||(oa.width=e.frame.width,oa.height=e.frame.height,t=oa),i||(zo.x=e.frame.x,zo.y=e.frame.y,zo.width=t.width,zo.height=t.height,i=zo),a=r.framebuffer):(o=n.resolution,t||(oa.width=n._view.screen.width,oa.height=n._view.screen.height,t=oa),i||(i=oa,i.width=t.width,i.height=t.height));const h=this.viewportFrame;h.x=i.x*o,h.y=i.y*o,h.width=i.width*o,h.height=i.height*o,e||(h.y=n.view.height-(h.y+h.height)),h.ceil(),this.renderer.framebuffer.bind(a,h),this.renderer.projection.update(i,t,o,!a),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=jt.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,a=this.current?this.current.baseTexture:this.renderer._view.screen,o=r.width!==a.width||r.height!==a.height;if(o){let{x:h,y:l,width:c,height:u}=this.viewportFrame;h=Math.round(h),l=Math.round(l),c=Math.round(c),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(h,l,c,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),o&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}Sb.extension={type:He.RendererSystem,name:"renderTexture"};tt.add(Sb);class fE{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function mE(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let n=0;nl>c?1:-1);for(let l=0;l({data:r,offset:0,dataLen:0,dirty:0}));let t=0,i=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*a.data.size),a.dataLen=t,i%t!==0&&i<16){const o=i%t%16;i+=o,n+=o}i+t>16?(n=Math.ceil(n/16)*16,a.offset=n,n+=t,i=t):(a.offset=n,i+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function wA(s,e){const t=[];for(const i in s)e[i]&&t.push(e[i]);return t.sort((i,n)=>i.index-n.index),t}function SA(s,e){if(!s.autoManage)return{size:0,syncFunc:yA};const t=wA(s.uniforms,e),{uboElements:i,size:n}=bA(t),r=[` + `},Mb={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:32,mat3:48,mat4:64};function xE(s){const e=s.map(r=>({data:r,offset:0,dataLen:0,dirty:0}));let t=0,i=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*a.data.size),a.dataLen=t,i%t!==0&&i<16){const o=i%t%16;i+=o,n+=o}i+t>16?(n=Math.ceil(n/16)*16,a.offset=n,n+=t,i=t):(a.offset=n,i+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function bE(s,e){const t=[];for(const i in s)e[i]&&t.push(e[i]);return t.sort((i,n)=>i.index-n.index),t}function wE(s,e){if(!s.autoManage)return{size:0,syncFunc:vE};const t=bE(s.uniforms,e),{uboElements:i,size:n}=xE(t),r=[` var v = null; var v2 = null; var cv = null; @@ -484,7 +484,7 @@ void main(void) var gl = renderer.gl var index = 0; var data = buffer.data; - `];for(let a=0;a1){const u=rb(o.data.type),d=Math.max(Mb[o.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` + `];for(let a=0;a1){const u=nb(o.data.type),d=Math.max(Mb[o.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` cv = ud.${l}.value; v = uv.${l}; offset = ${o.offset/4}; @@ -500,7 +500,7 @@ void main(void) offset += ${p}; } - `)}else{const u=xA[o.data.type];r.push(` + `)}else{const u=yE[o.data.type];r.push(` cv = ud.${l}.value; v = uv.${l}; offset = ${o.offset/4}; @@ -508,7 +508,7 @@ void main(void) `)}}return r.push(` renderer.buffer.update(buffer); `),{size:n,syncFunc:new Function("ud","uv","renderer","syncData","buffer",r.join(` -`))}}let _A=0;const gc={textureCount:0,uboCount:0};class Tb{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=_A++}systemCheck(){if(!q2())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const i=e.program,n=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(n.program)),t||(gc.textureCount=0,gc.uboCount=0,this.syncUniformGroup(e.uniformGroup,gc)),n}setUniforms(e){const t=this.shader.program,i=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,t){const i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,t))}syncUniforms(e,t,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=G2(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;const n=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,t);e.buffer.update(),n(i.uniformData,e.uniforms,this.renderer,gc,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[t])}createSyncBufferGroup(e,t,i){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,i);t.uniformBufferBindings[i]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const a=this.getSignature(e,this.shader.program.uniformData,"ubo");let o=this._uboCache[a];if(o||(o=this._uboCache[a]=SA(e,this.shader.program.uniformData)),e.autoManage){const h=new Float32Array(o.size/4);e.buffer.update(h)}return t.uniformGroups[e.id]=o.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,i){const n=e.uniforms,r=[`${i}-`];for(const a in n)r.push(a),t[a]&&r.push(t[a].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,i=e.program,n=vA(t,i);return i.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}Tb.extension={type:Ge.RendererSystem,name:"shader"};et.add(Tb);class bh{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}bh.defaultOptions={hello:!1},bh.extension={type:[Ge.RendererSystem,Ge.CanvasRendererSystem],name:"startup"};et.add(bh);function MA(s,e=[]){return e[dt.NORMAL]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.ADD]=[s.ONE,s.ONE],e[dt.MULTIPLY]=[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SCREEN]=[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.OVERLAY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.DARKEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.LIGHTEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR_DODGE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR_BURN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.HARD_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SOFT_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.DIFFERENCE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.EXCLUSION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.HUE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SATURATION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.LUMINOSITY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.NONE]=[0,0],e[dt.NORMAL_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.ADD_NPM]=[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],e[dt.SCREEN_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SRC_IN]=[s.DST_ALPHA,s.ZERO],e[dt.SRC_OUT]=[s.ONE_MINUS_DST_ALPHA,s.ZERO],e[dt.SRC_ATOP]=[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[dt.DST_OVER]=[s.ONE_MINUS_DST_ALPHA,s.ONE],e[dt.DST_IN]=[s.ZERO,s.SRC_ALPHA],e[dt.DST_OUT]=[s.ZERO,s.ONE_MINUS_SRC_ALPHA],e[dt.DST_ATOP]=[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],e[dt.XOR]=[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[dt.SUBTRACT]=[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD],e}const TA=0,AA=1,EA=2,CA=3,IA=4,RA=5,Ab=class sm{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=dt.NONE,this._blendEq=!1,this.map=[],this.map[TA]=this.setBlend,this.map[AA]=this.setOffset,this.map[EA]=this.setCullFace,this.map[CA]=this.setDepthTest,this.map[IA]=this.setFrontFace,this.map[RA]=this.setDepthMask,this.checks=[],this.defaultState=new Nn,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=MA(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,i=0;for(;t;)t&1&&this.map[i].call(this,!!(e.data&1<>1,i++;this.stateId=e.data}for(let t=0;te.systems[n]),i=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of i)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Qs(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const n in this.runners)this.runners[n].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=i.find(a=>this._systemsHash[a]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const rl=class Gc{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=Gc.defaultMaxIdle,this.checkCountMax=Gc.defaultCheckCountMax,this.mode=Gc.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==up.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,i=!0)}if(i){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};rl.defaultMode=up.AUTO,rl.defaultMaxIdle=3600,rl.defaultCheckCountMax=600,rl.extension={type:Ge.RendererSystem,name:"textureGC"};let fa=rl;et.add(fa);class sf{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=Qe.UNSIGNED_BYTE,this.internalFormat=Ne.RGBA,this.samplerType=0}}function FA(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:ze.FLOAT,[s.RGBA]:ze.FLOAT,[s.ALPHA]:ze.FLOAT,[s.LUMINANCE]:ze.FLOAT,[s.LUMINANCE_ALPHA]:ze.FLOAT,[s.R8]:ze.FLOAT,[s.R8_SNORM]:ze.FLOAT,[s.RG8]:ze.FLOAT,[s.RG8_SNORM]:ze.FLOAT,[s.RGB8]:ze.FLOAT,[s.RGB8_SNORM]:ze.FLOAT,[s.RGB565]:ze.FLOAT,[s.RGBA4]:ze.FLOAT,[s.RGB5_A1]:ze.FLOAT,[s.RGBA8]:ze.FLOAT,[s.RGBA8_SNORM]:ze.FLOAT,[s.RGB10_A2]:ze.FLOAT,[s.RGB10_A2UI]:ze.FLOAT,[s.SRGB8]:ze.FLOAT,[s.SRGB8_ALPHA8]:ze.FLOAT,[s.R16F]:ze.FLOAT,[s.RG16F]:ze.FLOAT,[s.RGB16F]:ze.FLOAT,[s.RGBA16F]:ze.FLOAT,[s.R32F]:ze.FLOAT,[s.RG32F]:ze.FLOAT,[s.RGB32F]:ze.FLOAT,[s.RGBA32F]:ze.FLOAT,[s.R11F_G11F_B10F]:ze.FLOAT,[s.RGB9_E5]:ze.FLOAT,[s.R8I]:ze.INT,[s.R8UI]:ze.UINT,[s.R16I]:ze.INT,[s.R16UI]:ze.UINT,[s.R32I]:ze.INT,[s.R32UI]:ze.UINT,[s.RG8I]:ze.INT,[s.RG8UI]:ze.UINT,[s.RG16I]:ze.INT,[s.RG16UI]:ze.UINT,[s.RG32I]:ze.INT,[s.RG32UI]:ze.UINT,[s.RGB8I]:ze.INT,[s.RGB8UI]:ze.UINT,[s.RGB16I]:ze.INT,[s.RGB16UI]:ze.UINT,[s.RGB32I]:ze.INT,[s.RGB32UI]:ze.UINT,[s.RGBA8I]:ze.INT,[s.RGBA8UI]:ze.UINT,[s.RGBA16I]:ze.INT,[s.RGBA16UI]:ze.UINT,[s.RGBA32I]:ze.INT,[s.RGBA32UI]:ze.UINT,[s.DEPTH_COMPONENT16]:ze.FLOAT,[s.DEPTH_COMPONENT24]:ze.FLOAT,[s.DEPTH_COMPONENT32F]:ze.FLOAT,[s.DEPTH_STENCIL]:ze.FLOAT,[s.DEPTH24_STENCIL8]:ze.FLOAT,[s.DEPTH32F_STENCIL8]:ze.FLOAT}:e={[s.RGB]:ze.FLOAT,[s.RGBA]:ze.FLOAT,[s.ALPHA]:ze.FLOAT,[s.LUMINANCE]:ze.FLOAT,[s.LUMINANCE_ALPHA]:ze.FLOAT,[s.DEPTH_STENCIL]:ze.FLOAT},e}function OA(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[Qe.UNSIGNED_BYTE]:{[Ne.RGBA]:s.RGBA8,[Ne.RGB]:s.RGB8,[Ne.RG]:s.RG8,[Ne.RED]:s.R8,[Ne.RGBA_INTEGER]:s.RGBA8UI,[Ne.RGB_INTEGER]:s.RGB8UI,[Ne.RG_INTEGER]:s.RG8UI,[Ne.RED_INTEGER]:s.R8UI,[Ne.ALPHA]:s.ALPHA,[Ne.LUMINANCE]:s.LUMINANCE,[Ne.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[Qe.BYTE]:{[Ne.RGBA]:s.RGBA8_SNORM,[Ne.RGB]:s.RGB8_SNORM,[Ne.RG]:s.RG8_SNORM,[Ne.RED]:s.R8_SNORM,[Ne.RGBA_INTEGER]:s.RGBA8I,[Ne.RGB_INTEGER]:s.RGB8I,[Ne.RG_INTEGER]:s.RG8I,[Ne.RED_INTEGER]:s.R8I},[Qe.UNSIGNED_SHORT]:{[Ne.RGBA_INTEGER]:s.RGBA16UI,[Ne.RGB_INTEGER]:s.RGB16UI,[Ne.RG_INTEGER]:s.RG16UI,[Ne.RED_INTEGER]:s.R16UI,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[Qe.SHORT]:{[Ne.RGBA_INTEGER]:s.RGBA16I,[Ne.RGB_INTEGER]:s.RGB16I,[Ne.RG_INTEGER]:s.RG16I,[Ne.RED_INTEGER]:s.R16I},[Qe.UNSIGNED_INT]:{[Ne.RGBA_INTEGER]:s.RGBA32UI,[Ne.RGB_INTEGER]:s.RGB32UI,[Ne.RG_INTEGER]:s.RG32UI,[Ne.RED_INTEGER]:s.R32UI,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[Qe.INT]:{[Ne.RGBA_INTEGER]:s.RGBA32I,[Ne.RGB_INTEGER]:s.RGB32I,[Ne.RG_INTEGER]:s.RG32I,[Ne.RED_INTEGER]:s.R32I},[Qe.FLOAT]:{[Ne.RGBA]:s.RGBA32F,[Ne.RGB]:s.RGB32F,[Ne.RG]:s.RG32F,[Ne.RED]:s.R32F,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[Qe.HALF_FLOAT]:{[Ne.RGBA]:s.RGBA16F,[Ne.RGB]:s.RGB16F,[Ne.RG]:s.RG16F,[Ne.RED]:s.R16F},[Qe.UNSIGNED_SHORT_5_6_5]:{[Ne.RGB]:s.RGB565},[Qe.UNSIGNED_SHORT_4_4_4_4]:{[Ne.RGBA]:s.RGBA4},[Qe.UNSIGNED_SHORT_5_5_5_1]:{[Ne.RGBA]:s.RGB5_A1},[Qe.UNSIGNED_INT_2_10_10_10_REV]:{[Ne.RGBA]:s.RGB10_A2,[Ne.RGBA_INTEGER]:s.RGB10_A2UI},[Qe.UNSIGNED_INT_10F_11F_11F_REV]:{[Ne.RGB]:s.R11F_G11F_B10F},[Qe.UNSIGNED_INT_5_9_9_9_REV]:{[Ne.RGB]:s.RGB9_E5},[Qe.UNSIGNED_INT_24_8]:{[Ne.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[Qe.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[Ne.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[Qe.UNSIGNED_BYTE]:{[Ne.RGBA]:s.RGBA,[Ne.RGB]:s.RGB,[Ne.ALPHA]:s.ALPHA,[Ne.LUMINANCE]:s.LUMINANCE,[Ne.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[Qe.UNSIGNED_SHORT_5_6_5]:{[Ne.RGB]:s.RGB},[Qe.UNSIGNED_SHORT_4_4_4_4]:{[Ne.RGBA]:s.RGBA},[Qe.UNSIGNED_SHORT_5_5_5_1]:{[Ne.RGBA]:s.RGBA}},e}class Eb{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new vt,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=OA(e),this.samplerTypes=FA(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const a=t[r];a&&a._glTextures[n].samplerType!==ze.FLOAT&&this.renderer.texture.unbind(a)}}initTexture(e){const t=new sf(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var i;t.internalFormat=((i=this.internalFormats[e.type])==null?void 0:i[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??ze.FLOAT,this.webGLVersion===2&&e.type===Qe.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(i,e,t))t.samplerType!==ze.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,a=e.realHeight,o=i.gl;(t.width!==r||t.height!==a||t.dirtyId<0)&&(t.width=r,t.height=a,o.texImage2D(e.target,0,t.internalFormat,r,a,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&xo(this.managedTextures,n,1)}}updateTextureStyle(e){var i;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===Us.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Js.CLAMP:t.wrapMode=e.wrapMode,(i=e.resource)!=null&&i.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==Us.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===qs.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===qs.LINEAR){const r=Math.min(e.anisotropicLevel,i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===qs.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===qs.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}Eb.extension={type:Ge.RendererSystem,name:"texture"};et.add(Eb);class Cb{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:n}=this;t&&n.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let a=0;a(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(ka||{});class nf{constructor(e,t=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const Ib=class Ss{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new nf(null,null,1/0),this.deltaMS=1/Ss.targetFPMS,this.elapsedMS=1/Ss.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=ka.NORMAL){return this._addListener(new nf(e,t,i))}addOnce(e,t,i=ka.NORMAL){return this._addListener(new nf(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?us.shared:new us,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Rb.extension=Ge.Application;et.add(Rb);const Pb=[];et.handleByList(Ge.Renderer,Pb);function BA(s){for(const e of Pb)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var LA=`attribute vec2 aVertexPosition; +`))}}let SE=0;const gc={textureCount:0,uboCount:0};class _b{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=SE++}systemCheck(){if(!zA())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const i=e.program,n=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(n.program)),t||(gc.textureCount=0,gc.uboCount=0,this.syncUniformGroup(e.uniformGroup,gc)),n}setUniforms(e){const t=this.shader.program,i=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,t){const i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,t))}syncUniforms(e,t,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=$A(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;const n=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,t);e.buffer.update(),n(i.uniformData,e.uniforms,this.renderer,gc,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[t])}createSyncBufferGroup(e,t,i){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,i);t.uniformBufferBindings[i]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const a=this.getSignature(e,this.shader.program.uniformData,"ubo");let o=this._uboCache[a];if(o||(o=this._uboCache[a]=wE(e,this.shader.program.uniformData)),e.autoManage){const h=new Float32Array(o.size/4);e.buffer.update(h)}return t.uniformGroups[e.id]=o.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,i){const n=e.uniforms,r=[`${i}-`];for(const a in n)r.push(a),t[a]&&r.push(t[a].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,i=e.program,n=gE(t,i);return i.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}_b.extension={type:He.RendererSystem,name:"shader"};tt.add(_b);class bh{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}bh.defaultOptions={hello:!1},bh.extension={type:[He.RendererSystem,He.CanvasRendererSystem],name:"startup"};tt.add(bh);function ME(s,e=[]){return e[dt.NORMAL]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.ADD]=[s.ONE,s.ONE],e[dt.MULTIPLY]=[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SCREEN]=[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.OVERLAY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.DARKEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.LIGHTEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR_DODGE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR_BURN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.HARD_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SOFT_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.DIFFERENCE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.EXCLUSION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.HUE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SATURATION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.COLOR]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.LUMINOSITY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.NONE]=[0,0],e[dt.NORMAL_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.ADD_NPM]=[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],e[dt.SCREEN_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[dt.SRC_IN]=[s.DST_ALPHA,s.ZERO],e[dt.SRC_OUT]=[s.ONE_MINUS_DST_ALPHA,s.ZERO],e[dt.SRC_ATOP]=[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[dt.DST_OVER]=[s.ONE_MINUS_DST_ALPHA,s.ONE],e[dt.DST_IN]=[s.ZERO,s.SRC_ALPHA],e[dt.DST_OUT]=[s.ZERO,s.ONE_MINUS_SRC_ALPHA],e[dt.DST_ATOP]=[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],e[dt.XOR]=[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[dt.SUBTRACT]=[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD],e}const _E=0,TE=1,AE=2,EE=3,CE=4,IE=5,Tb=class im{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=dt.NONE,this._blendEq=!1,this.map=[],this.map[_E]=this.setBlend,this.map[TE]=this.setOffset,this.map[AE]=this.setCullFace,this.map[EE]=this.setDepthTest,this.map[CE]=this.setFrontFace,this.map[IE]=this.setDepthMask,this.checks=[],this.defaultState=new Un,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=ME(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,i=0;for(;t;)t&1&&this.map[i].call(this,!!(e.data&1<>1,i++;this.stateId=e.data}for(let t=0;te.systems[n]),i=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of i)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new on(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const n in this.runners)this.runners[n].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=i.find(a=>this._systemsHash[a]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const nl=class Gc{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=Gc.defaultMaxIdle,this.checkCountMax=Gc.defaultCheckCountMax,this.mode=Gc.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==hp.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,i=!0)}if(i){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};nl.defaultMode=hp.AUTO,nl.defaultMaxIdle=3600,nl.defaultCheckCountMax=600,nl.extension={type:He.RendererSystem,name:"textureGC"};let pa=nl;tt.add(pa);class tf{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=et.UNSIGNED_BYTE,this.internalFormat=Ne.RGBA,this.samplerType=0}}function kE(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:ze.FLOAT,[s.RGBA]:ze.FLOAT,[s.ALPHA]:ze.FLOAT,[s.LUMINANCE]:ze.FLOAT,[s.LUMINANCE_ALPHA]:ze.FLOAT,[s.R8]:ze.FLOAT,[s.R8_SNORM]:ze.FLOAT,[s.RG8]:ze.FLOAT,[s.RG8_SNORM]:ze.FLOAT,[s.RGB8]:ze.FLOAT,[s.RGB8_SNORM]:ze.FLOAT,[s.RGB565]:ze.FLOAT,[s.RGBA4]:ze.FLOAT,[s.RGB5_A1]:ze.FLOAT,[s.RGBA8]:ze.FLOAT,[s.RGBA8_SNORM]:ze.FLOAT,[s.RGB10_A2]:ze.FLOAT,[s.RGB10_A2UI]:ze.FLOAT,[s.SRGB8]:ze.FLOAT,[s.SRGB8_ALPHA8]:ze.FLOAT,[s.R16F]:ze.FLOAT,[s.RG16F]:ze.FLOAT,[s.RGB16F]:ze.FLOAT,[s.RGBA16F]:ze.FLOAT,[s.R32F]:ze.FLOAT,[s.RG32F]:ze.FLOAT,[s.RGB32F]:ze.FLOAT,[s.RGBA32F]:ze.FLOAT,[s.R11F_G11F_B10F]:ze.FLOAT,[s.RGB9_E5]:ze.FLOAT,[s.R8I]:ze.INT,[s.R8UI]:ze.UINT,[s.R16I]:ze.INT,[s.R16UI]:ze.UINT,[s.R32I]:ze.INT,[s.R32UI]:ze.UINT,[s.RG8I]:ze.INT,[s.RG8UI]:ze.UINT,[s.RG16I]:ze.INT,[s.RG16UI]:ze.UINT,[s.RG32I]:ze.INT,[s.RG32UI]:ze.UINT,[s.RGB8I]:ze.INT,[s.RGB8UI]:ze.UINT,[s.RGB16I]:ze.INT,[s.RGB16UI]:ze.UINT,[s.RGB32I]:ze.INT,[s.RGB32UI]:ze.UINT,[s.RGBA8I]:ze.INT,[s.RGBA8UI]:ze.UINT,[s.RGBA16I]:ze.INT,[s.RGBA16UI]:ze.UINT,[s.RGBA32I]:ze.INT,[s.RGBA32UI]:ze.UINT,[s.DEPTH_COMPONENT16]:ze.FLOAT,[s.DEPTH_COMPONENT24]:ze.FLOAT,[s.DEPTH_COMPONENT32F]:ze.FLOAT,[s.DEPTH_STENCIL]:ze.FLOAT,[s.DEPTH24_STENCIL8]:ze.FLOAT,[s.DEPTH32F_STENCIL8]:ze.FLOAT}:e={[s.RGB]:ze.FLOAT,[s.RGBA]:ze.FLOAT,[s.ALPHA]:ze.FLOAT,[s.LUMINANCE]:ze.FLOAT,[s.LUMINANCE_ALPHA]:ze.FLOAT,[s.DEPTH_STENCIL]:ze.FLOAT},e}function FE(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[et.UNSIGNED_BYTE]:{[Ne.RGBA]:s.RGBA8,[Ne.RGB]:s.RGB8,[Ne.RG]:s.RG8,[Ne.RED]:s.R8,[Ne.RGBA_INTEGER]:s.RGBA8UI,[Ne.RGB_INTEGER]:s.RGB8UI,[Ne.RG_INTEGER]:s.RG8UI,[Ne.RED_INTEGER]:s.R8UI,[Ne.ALPHA]:s.ALPHA,[Ne.LUMINANCE]:s.LUMINANCE,[Ne.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[et.BYTE]:{[Ne.RGBA]:s.RGBA8_SNORM,[Ne.RGB]:s.RGB8_SNORM,[Ne.RG]:s.RG8_SNORM,[Ne.RED]:s.R8_SNORM,[Ne.RGBA_INTEGER]:s.RGBA8I,[Ne.RGB_INTEGER]:s.RGB8I,[Ne.RG_INTEGER]:s.RG8I,[Ne.RED_INTEGER]:s.R8I},[et.UNSIGNED_SHORT]:{[Ne.RGBA_INTEGER]:s.RGBA16UI,[Ne.RGB_INTEGER]:s.RGB16UI,[Ne.RG_INTEGER]:s.RG16UI,[Ne.RED_INTEGER]:s.R16UI,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[et.SHORT]:{[Ne.RGBA_INTEGER]:s.RGBA16I,[Ne.RGB_INTEGER]:s.RGB16I,[Ne.RG_INTEGER]:s.RG16I,[Ne.RED_INTEGER]:s.R16I},[et.UNSIGNED_INT]:{[Ne.RGBA_INTEGER]:s.RGBA32UI,[Ne.RGB_INTEGER]:s.RGB32UI,[Ne.RG_INTEGER]:s.RG32UI,[Ne.RED_INTEGER]:s.R32UI,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[et.INT]:{[Ne.RGBA_INTEGER]:s.RGBA32I,[Ne.RGB_INTEGER]:s.RGB32I,[Ne.RG_INTEGER]:s.RG32I,[Ne.RED_INTEGER]:s.R32I},[et.FLOAT]:{[Ne.RGBA]:s.RGBA32F,[Ne.RGB]:s.RGB32F,[Ne.RG]:s.RG32F,[Ne.RED]:s.R32F,[Ne.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[et.HALF_FLOAT]:{[Ne.RGBA]:s.RGBA16F,[Ne.RGB]:s.RGB16F,[Ne.RG]:s.RG16F,[Ne.RED]:s.R16F},[et.UNSIGNED_SHORT_5_6_5]:{[Ne.RGB]:s.RGB565},[et.UNSIGNED_SHORT_4_4_4_4]:{[Ne.RGBA]:s.RGBA4},[et.UNSIGNED_SHORT_5_5_5_1]:{[Ne.RGBA]:s.RGB5_A1},[et.UNSIGNED_INT_2_10_10_10_REV]:{[Ne.RGBA]:s.RGB10_A2,[Ne.RGBA_INTEGER]:s.RGB10_A2UI},[et.UNSIGNED_INT_10F_11F_11F_REV]:{[Ne.RGB]:s.R11F_G11F_B10F},[et.UNSIGNED_INT_5_9_9_9_REV]:{[Ne.RGB]:s.RGB9_E5},[et.UNSIGNED_INT_24_8]:{[Ne.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[et.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[Ne.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[et.UNSIGNED_BYTE]:{[Ne.RGBA]:s.RGBA,[Ne.RGB]:s.RGB,[Ne.ALPHA]:s.ALPHA,[Ne.LUMINANCE]:s.LUMINANCE,[Ne.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[et.UNSIGNED_SHORT_5_6_5]:{[Ne.RGB]:s.RGB},[et.UNSIGNED_SHORT_4_4_4_4]:{[Ne.RGBA]:s.RGBA},[et.UNSIGNED_SHORT_5_5_5_1]:{[Ne.RGBA]:s.RGBA}},e}class Ab{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new yt,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=FE(e),this.samplerTypes=kE(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const a=t[r];a&&a._glTextures[n].samplerType!==ze.FLOAT&&this.renderer.texture.unbind(a)}}initTexture(e){const t=new tf(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var i;t.internalFormat=((i=this.internalFormats[e.type])==null?void 0:i[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??ze.FLOAT,this.webGLVersion===2&&e.type===et.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(i,e,t))t.samplerType!==ze.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,a=e.realHeight,o=i.gl;(t.width!==r||t.height!==a||t.dirtyId<0)&&(t.width=r,t.height=a,o.texImage2D(e.target,0,t.internalFormat,r,a,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&yo(this.managedTextures,n,1)}}updateTextureStyle(e){var i;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===Ys.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=an.CLAMP:t.wrapMode=e.wrapMode,(i=e.resource)!=null&&i.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==Ys.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===sn.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===sn.LINEAR){const r=Math.min(e.anisotropicLevel,i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===sn.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===sn.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}Ab.extension={type:He.RendererSystem,name:"texture"};tt.add(Ab);class Eb{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:n}=this;t&&n.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let a=0;a(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(Oa||{});class sf{constructor(e,t=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const Cb=class Ms{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new sf(null,null,1/0),this.deltaMS=1/Ms.targetFPMS,this.elapsedMS=1/Ms.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=Oa.NORMAL){return this._addListener(new sf(e,t,i))}addOnce(e,t,i=Oa.NORMAL){return this._addListener(new sf(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?ds.shared:new ds,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Ib.extension=He.Application;tt.add(Ib);const Rb=[];tt.handleByList(He.Renderer,Rb);function OE(s){for(const e of Rb)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var BE=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -519,7 +519,7 @@ void main(void) { gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); vTextureCoord = aTextureCoord; -}`,DA=`attribute vec2 aVertexPosition; +}`,LE=`attribute vec2 aVertexPosition; uniform mat3 projectionMatrix; @@ -545,7 +545,7 @@ void main(void) gl_Position = filterVertexPosition(); vTextureCoord = filterTextureCoord(); } -`;const NA=LA,kb=DA;class Fb{constructor(e){this.renderer=e}contextChange(e){let t;if(this.renderer.context.webGLVersion===1){const i=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,i)}else{const i=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,i)}t>=Ai.HIGH?this.multisample=Ai.HIGH:t>=Ai.MEDIUM?this.multisample=Ai.MEDIUM:t>=Ai.LOW?this.multisample=Ai.LOW:this.multisample=Ai.NONE}destroy(){}}Fb.extension={type:Ge.RendererSystem,name:"_multisample"};et.add(Fb);class UA{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class Ob{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,i){const{gl:n,CONTEXT_UID:r}=this;i=i||0;const a=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,a.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),i&&(t||n.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class XA extends Lb{constructor(e,t){const{width:i,height:n}=t||{};let r,a;Array.isArray(e)?(r=e,a=e.length):a=e,super(a,{width:i,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=yo.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:n,itemDirtyIds:r,items:a}=this,{gl:o}=e;i.dirtyId<0&&o.texImage3D(o.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,n,0,t.format,i.type,null);for(let h=0;h0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=yo.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const i=await We.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await i.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ni.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return co._EMPTY=co._EMPTY??We.ADAPTER.createCanvas(0,0),co._EMPTY}}const rm=class jc extends pr{constructor(e,t){t=t||{},super(We.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},jc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;pr.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/i*t,r=this._overrideHeight||this._overrideWidth/t*i),n=Math.round(n),r=Math.round(r);const a=this.source;a.width=n,a.height=r,a._pixiId=`canvas_${Pa()}`,a.getContext("2d").drawImage(e,0,0,t,i,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=jc.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&jc.SVG_XML.test(e)}};rm.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let am=rm;class $A extends pr{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const om=class lm extends pr{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];pr.crossOrigin(i,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(us.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(us.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(us.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||lm.TYPES.includes(t)}};om.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],om.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Nb=om;zf.push(co,hb,VA,Nb,$A,am,xu,YA,XA);class Ll{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?Tt.EMPTY:(e=e||new Tt(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:n,c:r,d:a,tx:o,ty:h}=e,l=i*t.x+r*t.y+o,c=n*t.x+a*t.y+h;this.minX=Math.min(this.minX,l),this.maxX=Math.max(this.maxX,l),this.minY=Math.min(this.minY,c),this.maxY=Math.max(this.maxY,c)}addQuad(e){let t=this.minX,i=this.minY,n=this.maxX,r=this.maxY,a=e[0],o=e[1];t=an?a:n,r=o>r?o:r,a=e[2],o=e[3],t=an?a:n,r=o>r?o:r,a=e[4],o=e[5],t=an?a:n,r=o>r?o:r,a=e[6],o=e[7],t=an?a:n,r=o>r?o:r,this.minX=t,this.minY=i,this.maxX=n,this.maxY=r}addFrame(e,t,i,n,r){this.addFrameMatrix(e.worldTransform,t,i,n,r)}addFrameMatrix(e,t,i,n,r){const a=e.a,o=e.b,h=e.c,l=e.d,c=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=a*t+h*i+c,v=o*t+l*i+u;d=gp?g:p,m=v>m?v:m,g=a*n+h*i+c,v=o*n+l*i+u,d=gp?g:p,m=v>m?v:m,g=a*t+h*r+c,v=o*t+l*r+u,d=gp?g:p,m=v>m?v:m,g=a*n+h*r+c,v=o*n+l*r+u,d=gp?g:p,m=v>m?v:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,i){let n=this.minX,r=this.minY,a=this.maxX,o=this.maxY;for(let h=t;ha?l:a,o=c>o?c:o}this.minX=n,this.minY=r,this.maxX=a,this.maxY=o}addVertices(e,t,i,n){this.addVerticesMatrix(e.worldTransform,t,i,n)}addVerticesMatrix(e,t,i,n,r=0,a=r){const o=e.a,h=e.b,l=e.c,c=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let v=i;vn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXl?r:l,this.maxY=a>c?a:c}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXl?r:l,this.maxY=a>c?a:c}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,n,r,a){e-=r,t-=a,i+=r,n+=a,this.minX=this.minXi?this.maxX:i,this.minY=this.minYn?this.maxY:n}}class vi extends jl{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new pp,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Ll,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),n=this.getChildIndex(t);this.children[i]=t,this.children[n]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);xo(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){a=this.children.splice(i,r);for(let o=0;o1&&this.children.sort(jA),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,n;this.cullArea?(i=this.cullArea,n=this.worldTransform):this._render!==cm.prototype._render&&(i=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=HA.copyFrom(n),n.prepend(r)):n=r),i&&t.intersects(i,n))this._render(e);else if(this.cullArea)return;for(let a=0,o=this.children.length;a=n&&Ko.x=r&&Ko.y=Ei.HIGH?this.multisample=Ei.HIGH:t>=Ei.MEDIUM?this.multisample=Ei.MEDIUM:t>=Ei.LOW?this.multisample=Ei.LOW:this.multisample=Ei.NONE}destroy(){}}kb.extension={type:He.RendererSystem,name:"_multisample"};tt.add(kb);class NE{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class Fb{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,i){const{gl:n,CONTEXT_UID:r}=this;i=i||0;const a=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,a.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),i&&(t||n.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class UE extends Bb{constructor(e,t){const{width:i,height:n}=t||{};let r,a;Array.isArray(e)?(r=e,a=e.length):a=e,super(a,{width:i,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=vo.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:n,itemDirtyIds:r,items:a}=this,{gl:o}=e;i.dirtyId<0&&o.texImage3D(o.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,n,0,t.format,i.type,null);for(let h=0;h0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=vo.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const i=await We.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await i.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ni.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return lo._EMPTY=lo._EMPTY??We.ADAPTER.createCanvas(0,0),lo._EMPTY}}const nm=class jc extends gr{constructor(e,t){t=t||{},super(We.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},jc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;gr.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/i*t,r=this._overrideHeight||this._overrideWidth/t*i),n=Math.round(n),r=Math.round(r);const a=this.source;a.width=n,a.height=r,a._pixiId=`canvas_${Fa()}`,a.getContext("2d").drawImage(e,0,0,t,i,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=jc.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&jc.SVG_XML.test(e)}};nm.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let rm=nm;class YE extends gr{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const am=class om extends gr{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];gr.crossOrigin(i,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(ds.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(ds.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(ds.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||om.TYPES.includes(t)}};am.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],am.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Db=am;Wf.push(lo,cb,XE,Db,YE,rm,yu,VE,UE);class Bl{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?Tt.EMPTY:(e=e||new Tt(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:n,c:r,d:a,tx:o,ty:h}=e,l=i*t.x+r*t.y+o,c=n*t.x+a*t.y+h;this.minX=Math.min(this.minX,l),this.maxX=Math.max(this.maxX,l),this.minY=Math.min(this.minY,c),this.maxY=Math.max(this.maxY,c)}addQuad(e){let t=this.minX,i=this.minY,n=this.maxX,r=this.maxY,a=e[0],o=e[1];t=an?a:n,r=o>r?o:r,a=e[2],o=e[3],t=an?a:n,r=o>r?o:r,a=e[4],o=e[5],t=an?a:n,r=o>r?o:r,a=e[6],o=e[7],t=an?a:n,r=o>r?o:r,this.minX=t,this.minY=i,this.maxX=n,this.maxY=r}addFrame(e,t,i,n,r){this.addFrameMatrix(e.worldTransform,t,i,n,r)}addFrameMatrix(e,t,i,n,r){const a=e.a,o=e.b,h=e.c,l=e.d,c=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=a*t+h*i+c,v=o*t+l*i+u;d=gp?g:p,m=v>m?v:m,g=a*n+h*i+c,v=o*n+l*i+u,d=gp?g:p,m=v>m?v:m,g=a*t+h*r+c,v=o*t+l*r+u,d=gp?g:p,m=v>m?v:m,g=a*n+h*r+c,v=o*n+l*r+u,d=gp?g:p,m=v>m?v:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,i){let n=this.minX,r=this.minY,a=this.maxX,o=this.maxY;for(let h=t;ha?l:a,o=c>o?c:o}this.minX=n,this.minY=r,this.maxX=a,this.maxY=o}addVertices(e,t,i,n){this.addVerticesMatrix(e.worldTransform,t,i,n)}addVerticesMatrix(e,t,i,n,r=0,a=r){const o=e.a,h=e.b,l=e.c,c=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let v=i;vn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXl?r:l,this.maxY=a>c?a:c}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXl?r:l,this.maxY=a>c?a:c}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,n,r,a){e-=r,t-=a,i+=r,n+=a,this.minX=this.minXi?this.maxX:i,this.minY=this.minYn?this.maxY:n}}class yi extends jl{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new mp,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Bl,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),n=this.getChildIndex(t);this.children[i]=t,this.children[n]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);yo(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){a=this.children.splice(i,r);for(let o=0;o1&&this.children.sort(HE),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,n;this.cullArea?(i=this.cullArea,n=this.worldTransform):this._render!==lm.prototype._render&&(i=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=GE.copyFrom(n),n.prepend(r)):n=r),i&&t.intersects(i,n))this._render(e);else if(this.cullArea)return;for(let a=0,o=this.children.length;a=n&&qo.x=r&&qo.y=t&&(a=s-o-1),h=h.replace("%value%",e[a].toString()),n+=h,n+=` -`}return i=i.replace("%blur%",n),i=i.replace("%size%",s.toString()),i}const eE=` +`;class qE extends us{constructor(e=1){super(DE,zE,{uAlpha:1}),this.alpha=e}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}}const KE={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},ZE=["varying vec2 vBlurTexCoords[%size%];","uniform sampler2D uSampler;","void main(void)","{"," gl_FragColor = vec4(0.0);"," %blur%","}"].join(` +`);function JE(s){const e=KE[s],t=e.length;let i=ZE,n="";const r="gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;";let a;for(let o=0;o=t&&(a=s-o-1),h=h.replace("%value%",e[a].toString()),n+=h,n+=` +`}return i=i.replace("%blur%",n),i=i.replace("%size%",s.toString()),i}const QE=` attribute vec2 aVertexPosition; uniform mat3 projectionMatrix; @@ -586,8 +586,8 @@ void main(void) vec2 textureCoord = filterTextureCoord(); %blur% - }`;function tE(s,e){const t=Math.ceil(s/2);let i=eE,n="",r;e?r="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":r="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let a=0;a{Object.defineProperty(ov,s,{get(){return Ot("7.1.0",`filters.${s} has moved to ${s}`),e}})});class dE{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(us.system.add(this.tickerUpdate,this,ka.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(us.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=i.length-1;r>=0;r--)n.forEach(a=>{e.currentTarget=i[r],this.notifyTarget(e,a)})}propagationPath(e){const t=[e];for(let i=0;i=0;u--){const d=c[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,n,r,a||r(e,i));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),o=!0}}}const h=this._isInteractive(t),l=e.isInteractive();return h&&l&&this._allInteractiveElements.push(e),a||this._hitElements.length>0?null:o?this._hitElements:h&&!r(e,i)&&n(e,i)?l?[e]:[]:null}hitTestRecursive(e,t,i,n,r){if(this._interactivePrune(e)||r(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(Br.pauseUpdate=!1),e.interactiveChildren&&e.children){const h=e.children;for(let l=h.length-1;l>=0;l--){const c=h[l],u=this.hitTestRecursive(c,this._isInteractive(t)?t:c.eventMode,i,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const a=this._isInteractive(t),o=e.isInteractive();return a&&n(e,i)?o?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var i;if(e.hitArea&&(e.worldTransform.applyInverse(t,rf),!e.hitArea.contains(rf.x,rf.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((i=n.containsPoint)!=null&&i.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,a;t=t??e.type;const i=`on${t}`;(a=(r=e.currentTarget)[i])==null||a.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var h,l;if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((h=n.overTargets)==null?void 0:h.length)>0&&r!==t.target){const c=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,c,r);if(this.dispatchEvent(u,"pointerout"),i&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const c=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,c);this.dispatchEvent(u,"pointerover"),i&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),i&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const a=[],o=this.enableGlobalMoveEvents??!0;this.moveOnAll?a.push("pointermove"):this.dispatchEvent(t,"pointermove"),o&&a.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?a.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),o&&a.push("globaltouchmove")),i&&(this.moveOnAll?a.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),o&&a.push("globalmousemove"),this.cursor=(l=t.target)==null?void 0:l.cursor),a.length>0&&this.all(t,a),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var a;if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(a=i.target)==null?void 0:a.cursor);const r=this.clonePointerEvent(i,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),i&&this.dispatchEvent(r,"mouseout");const a=this.createPointerEvent(e,"pointerleave",n);for(a.eventPhase=a.AT_TARGET;a.target&&a.target!==this.rootTarget.parent;)a.currentTarget=a.target,this.notifyTarget(a),i&&this.notifyTarget(a,"mouseleave"),a.target=a.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(a)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const o=i.button===2;this.dispatchEvent(i,o?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let a=r;if(r&&!i.composedPath().includes(r)){let o=r;for(;o&&!i.composedPath().includes(o);){if(i.currentTarget=o,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const h=i.button===2;this.notifyTarget(i,h?"rightupoutside":"mouseupoutside")}o=o.parent}delete n.pressTargetsByButton[e.button],a=o}if(a){const o=this.clonePointerEvent(i,"click");o.target=a,o.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:o.target,timeStamp:t});const h=n.clicksByButton[e.button];if(h.target===o.target&&t-h.timeStamp<200?++h.clickCount:h.clickCount=1,h.target=o.target,h.timeStamp=t,o.detail=h.clickCount,o.pointerType==="mouse"){const l=o.button===2;this.dispatchEvent(o,l?"rightclick":"click")}else o.pointerType==="touch"&&this.dispatchEvent(o,"tap");this.dispatchEvent(o,"pointertap"),this.freeEvent(o)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof Hs)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let r=i;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof wo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,fm._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,a=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=gE),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=vE[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};dm.extension={name:"events",type:[Ge.RendererSystem,Ge.CanvasRendererSystem]},dm.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let mm=dm;et.add(mm);function lv(s){return s==="dynamic"||s==="static"}const yE={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??lv(mm.defaultEventMode)},set interactive(s){Ot("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??mm.defaultEventMode},set eventMode(s){this._internalInteractive=lv(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,a=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const o=typeof e=="function"?e:e.handleEvent,h=this;n&&n.addEventListener("abort",()=>{h.off(s,o,a)}),r?h.once(s,o,a):h.on(s,o,a)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,n)},dispatchEvent(s){if(!(s instanceof Wl))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};vi.mixin(yE);const xE={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};vi.mixin(xE);const bE=9,vc=100,wE=0,SE=0,cv=2,hv=1,_E=-1e3,ME=-1e3,TE=2;class Vb{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(tr.tablet||tr.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${vc}px`,t.style.height=`${vc}px`,t.style.position="absolute",t.style.top=`${wE}px`,t.style.left=`${SE}px`,t.style.zIndex=cv.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${hv}px`,e.style.height=`${hv}px`,e.style.position="absolute",e.style.top=`${_E}px`,e.style.left=`${ME}px`,e.style.zIndex=TE.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${vc}px`,t.style.height=`${vc}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=cv.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new Wl(n),{target:i});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(a=>n.dispatchEvent(r,a))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===bE&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Vb.extension={name:"accessibility",type:[Ge.RendererPlugin,Ge.CanvasRendererPlugin]};et.add(Vb);const Yb=class pm{constructor(e){this.stage=new ji,e=Object.assign({forceCanvas:!1},e),this.renderer=BA(e),pm._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const i=pm._plugins.slice(0);i.reverse(),i.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Yb._plugins=[];let $b=Yb;et.handleByList(Ge.Application,$b._plugins);class Gb{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,i=r}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Gb.extension=Ge.Application;et.add(Gb);const uv={loader:Ge.LoadParser,resolver:Ge.ResolveParser,cache:Ge.CacheParser,detection:Ge.DetectionParser};et.handle(Ge.Asset,s=>{const e=s.ref;Object.entries(uv).filter(([t])=>!!e[t]).forEach(([t,i])=>et.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(uv).filter(t=>!!e[t]).forEach(t=>et.remove(e[t]))});class AE{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),_h=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function Hb(s,e,t,i,n){const r=e[t];for(let a=0;a{const a=r.substring(1,r.length-1).split(",");n.push(a)}),Hb(s,n,0,t,i)}else i.push(s);return i}const Mh=s=>!Array.isArray(s);class CE{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=Ws(e);let n;for(let o=0;o{n[o]=t}));const r=Object.keys(n),a={cacheKeys:r,keys:i};if(i.forEach(o=>{this._cacheMap.set(o,a)}),r.forEach(o=>{const h=n?n[o]:t;this._cache.has(o)&&this._cache.get(o)!==h&&console.warn("[Cache] already has key:",o),this._cache.set(o,n[o])}),t instanceof pt){const o=t;i.forEach(h=>{o.baseTexture!==pt.EMPTY.baseTexture&&vt.addToCache(o.baseTexture,h),pt.addToCache(o,h)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const pa=new CE;class IE{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{var a,o;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let h=0;h({alias:[l],src:l})),o=a.length,h=a.map(async l=>{const c=wi.toAbsolute(l.src);if(!n[l.src])try{this.promiseCache[c]||(this.promiseCache[c]=this._getLoadPromiseAndParser(c,l)),n[l.src]=await this.promiseCache[c].promise,t&&t(++i/o)}catch(u){throw delete this.promiseCache[c],delete n[l.src],new Error(`[Loader.load] Failed to load ${c}. -${u}`)}});return await Promise.all(h),r?n[a[0].src]:n}async unload(e){const t=Ws(e,i=>({alias:[i],src:i})).map(async i=>{var a,o;const n=wi.toAbsolute(i.src),r=this.promiseCache[n];if(r){const h=await r.promise;delete this.promiseCache[n],(o=(a=r.parser)==null?void 0:a.unload)==null||o.call(a,h,i,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var Es=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(Es||{});const RE=".json",PE="application/json",kE={extension:{type:Ge.LoadParser,priority:Es.Low},name:"loadJson",test(s){return No(s,PE)||xs(s,RE)},async load(s){return await(await We.ADAPTER.fetch(s)).json()}};et.add(kE);const FE=".txt",OE="text/plain",BE={name:"loadTxt",extension:{type:Ge.LoadParser,priority:Es.Low},test(s){return No(s,OE)||xs(s,FE)},async load(s){return await(await We.ADAPTER.fetch(s)).text()}};et.add(BE);const LE=["normal","bold","100","200","300","400","500","600","700","800","900"],DE=[".ttf",".otf",".woff",".woff2"],NE=["font/ttf","font/otf","font/woff","font/woff2"],UE=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function XE(s){const e=wi.extname(s),t=wi.basename(s,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1));let i=t.length>0;for(const r of t)if(!r.match(UE)){i=!1;break}let n=t.join(" ");return i||(n=`"${n.replace(/[\\"]/g,"\\$&")}"`),n}const VE=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function YE(s){return VE.test(s)?s:encodeURI(s)}const $E={extension:{type:Ge.LoadParser,priority:Es.Low},name:"loadWebFont",test(s){return No(s,NE)||xs(s,DE)},async load(s,e){var i,n,r;const t=We.ADAPTER.getFontFaceSet();if(t){const a=[],o=((i=e.data)==null?void 0:i.family)??XE(s),h=((r=(n=e.data)==null?void 0:n.weights)==null?void 0:r.filter(c=>LE.includes(c)))??["normal"],l=e.data??{};for(let c=0;cWe.ADAPTER.getFontFaceSet().delete(e))}};et.add($E);const GE=`(function() { +`;class hC extends us{constructor(e=.5,t=Math.random()){super(Pb,cC,{uNoise:0,uSeed:0}),this.noise=e,this.seed=t}get noise(){return this.uniforms.uNoise}set noise(e){this.uniforms.uNoise=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}}const av={AlphaFilter:qE,BlurFilter:tC,BlurFilterPass:cm,ColorMatrixFilter:hm,DisplacementFilter:rC,FXAAFilter:lC,NoiseFilter:hC};Object.entries(av).forEach(([s,e])=>{Object.defineProperty(av,s,{get(){return kt("7.1.0",`filters.${s} has moved to ${s}`),e}})});class uC{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(ds.system.add(this.tickerUpdate,this,Oa.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(ds.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=i.length-1;r>=0;r--)n.forEach(a=>{e.currentTarget=i[r],this.notifyTarget(e,a)})}propagationPath(e){const t=[e];for(let i=0;i=0;u--){const d=c[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,n,r,a||r(e,i));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),o=!0}}}const h=this._isInteractive(t),l=e.isInteractive();return h&&l&&this._allInteractiveElements.push(e),a||this._hitElements.length>0?null:o?this._hitElements:h&&!r(e,i)&&n(e,i)?l?[e]:[]:null}hitTestRecursive(e,t,i,n,r){if(this._interactivePrune(e)||r(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(Or.pauseUpdate=!1),e.interactiveChildren&&e.children){const h=e.children;for(let l=h.length-1;l>=0;l--){const c=h[l],u=this.hitTestRecursive(c,this._isInteractive(t)?t:c.eventMode,i,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const a=this._isInteractive(t),o=e.isInteractive();return a&&n(e,i)?o?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var i;if(e.hitArea&&(e.worldTransform.applyInverse(t,nf),!e.hitArea.contains(nf.x,nf.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((i=n.containsPoint)!=null&&i.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,a;t=t??e.type;const i=`on${t}`;(a=(r=e.currentTarget)[i])==null||a.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var h,l;if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((h=n.overTargets)==null?void 0:h.length)>0&&r!==t.target){const c=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,c,r);if(this.dispatchEvent(u,"pointerout"),i&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const c=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,c);this.dispatchEvent(u,"pointerover"),i&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),i&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const a=[],o=this.enableGlobalMoveEvents??!0;this.moveOnAll?a.push("pointermove"):this.dispatchEvent(t,"pointermove"),o&&a.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?a.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),o&&a.push("globaltouchmove")),i&&(this.moveOnAll?a.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),o&&a.push("globalmousemove"),this.cursor=(l=t.target)==null?void 0:l.cursor),a.length>0&&this.all(t,a),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var a;if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(a=i.target)==null?void 0:a.cursor);const r=this.clonePointerEvent(i,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),i&&this.dispatchEvent(r,"mouseout");const a=this.createPointerEvent(e,"pointerleave",n);for(a.eventPhase=a.AT_TARGET;a.target&&a.target!==this.rootTarget.parent;)a.currentTarget=a.target,this.notifyTarget(a),i&&this.notifyTarget(a,"mouseleave"),a.target=a.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(a)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const o=i.button===2;this.dispatchEvent(i,o?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let a=r;if(r&&!i.composedPath().includes(r)){let o=r;for(;o&&!i.composedPath().includes(o);){if(i.currentTarget=o,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const h=i.button===2;this.notifyTarget(i,h?"rightupoutside":"mouseupoutside")}o=o.parent}delete n.pressTargetsByButton[e.button],a=o}if(a){const o=this.clonePointerEvent(i,"click");o.target=a,o.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:o.target,timeStamp:t});const h=n.clicksByButton[e.button];if(h.target===o.target&&t-h.timeStamp<200?++h.clickCount:h.clickCount=1,h.target=o.target,h.timeStamp=t,o.detail=h.clickCount,o.pointerType==="mouse"){const l=o.button===2;this.dispatchEvent(o,l?"rightclick":"click")}else o.pointerType==="touch"&&this.dispatchEvent(o,"tap");this.dispatchEvent(o,"pointertap"),this.freeEvent(o)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof Js)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let r=i;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof bo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,dm._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,a=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=pC),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=gC[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};um.extension={name:"events",type:[He.RendererSystem,He.CanvasRendererSystem]},um.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let fm=um;tt.add(fm);function ov(s){return s==="dynamic"||s==="static"}const vC={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??ov(fm.defaultEventMode)},set interactive(s){kt("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??fm.defaultEventMode},set eventMode(s){this._internalInteractive=ov(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,a=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const o=typeof e=="function"?e:e.handleEvent,h=this;n&&n.addEventListener("abort",()=>{h.off(s,o,a)}),r?h.once(s,o,a):h.on(s,o,a)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,n)},dispatchEvent(s){if(!(s instanceof Wl))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};yi.mixin(vC);const yC={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};yi.mixin(yC);const xC=9,vc=100,bC=0,wC=0,lv=2,cv=1,SC=-1e3,MC=-1e3,_C=2;class Xb{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(ir.tablet||ir.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${vc}px`,t.style.height=`${vc}px`,t.style.position="absolute",t.style.top=`${bC}px`,t.style.left=`${wC}px`,t.style.zIndex=lv.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${cv}px`,e.style.height=`${cv}px`,e.style.position="absolute",e.style.top=`${SC}px`,e.style.left=`${MC}px`,e.style.zIndex=_C.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${vc}px`,t.style.height=`${vc}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=lv.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new Wl(n),{target:i});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(a=>n.dispatchEvent(r,a))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===xC&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Xb.extension={name:"accessibility",type:[He.RendererPlugin,He.CanvasRendererPlugin]};tt.add(Xb);const Vb=class mm{constructor(e){this.stage=new ji,e=Object.assign({forceCanvas:!1},e),this.renderer=OE(e),mm._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const i=mm._plugins.slice(0);i.reverse(),i.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Vb._plugins=[];let Yb=Vb;tt.handleByList(He.Application,Yb._plugins);class $b{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,i=r}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}$b.extension=He.Application;tt.add($b);const hv={loader:He.LoadParser,resolver:He.ResolveParser,cache:He.CacheParser,detection:He.DetectionParser};tt.handle(He.Asset,s=>{const e=s.ref;Object.entries(hv).filter(([t])=>!!e[t]).forEach(([t,i])=>tt.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(hv).filter(t=>!!e[t]).forEach(t=>tt.remove(e[t]))});class TC{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),Mh=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function Gb(s,e,t,i,n){const r=e[t];for(let a=0;a{const a=r.substring(1,r.length-1).split(",");n.push(a)}),Gb(s,n,0,t,i)}else i.push(s);return i}const _h=s=>!Array.isArray(s);class EC{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=en(e);let n;for(let o=0;o{n[o]=t}));const r=Object.keys(n),a={cacheKeys:r,keys:i};if(i.forEach(o=>{this._cacheMap.set(o,a)}),r.forEach(o=>{const h=n?n[o]:t;this._cache.has(o)&&this._cache.get(o)!==h&&console.warn("[Cache] already has key:",o),this._cache.set(o,n[o])}),t instanceof gt){const o=t;i.forEach(h=>{o.baseTexture!==gt.EMPTY.baseTexture&&yt.addToCache(o.baseTexture,h),gt.addToCache(o,h)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const va=new EC;class CC{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{var a,o;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let h=0;h({alias:[l],src:l})),o=a.length,h=a.map(async l=>{const c=wi.toAbsolute(l.src);if(!n[l.src])try{this.promiseCache[c]||(this.promiseCache[c]=this._getLoadPromiseAndParser(c,l)),n[l.src]=await this.promiseCache[c].promise,t&&t(++i/o)}catch(u){throw delete this.promiseCache[c],delete n[l.src],new Error(`[Loader.load] Failed to load ${c}. +${u}`)}});return await Promise.all(h),r?n[a[0].src]:n}async unload(e){const t=en(e,i=>({alias:[i],src:i})).map(async i=>{var a,o;const n=wi.toAbsolute(i.src),r=this.promiseCache[n];if(r){const h=await r.promise;delete this.promiseCache[n],(o=(a=r.parser)==null?void 0:a.unload)==null||o.call(a,h,i,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var Is=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(Is||{});const IC=".json",RC="application/json",PC={extension:{type:He.LoadParser,priority:Is.Low},name:"loadJson",test(s){return Do(s,RC)||bs(s,IC)},async load(s){return await(await We.ADAPTER.fetch(s)).json()}};tt.add(PC);const kC=".txt",FC="text/plain",OC={name:"loadTxt",extension:{type:He.LoadParser,priority:Is.Low},test(s){return Do(s,FC)||bs(s,kC)},async load(s){return await(await We.ADAPTER.fetch(s)).text()}};tt.add(OC);const BC=["normal","bold","100","200","300","400","500","600","700","800","900"],LC=[".ttf",".otf",".woff",".woff2"],DC=["font/ttf","font/otf","font/woff","font/woff2"],NC=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function UC(s){const e=wi.extname(s),t=wi.basename(s,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1));let i=t.length>0;for(const r of t)if(!r.match(NC)){i=!1;break}let n=t.join(" ");return i||(n=`"${n.replace(/[\\"]/g,"\\$&")}"`),n}const XC=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function VC(s){return XC.test(s)?s:encodeURI(s)}const YC={extension:{type:He.LoadParser,priority:Is.Low},name:"loadWebFont",test(s){return Do(s,DC)||bs(s,LC)},async load(s,e){var i,n,r;const t=We.ADAPTER.getFontFaceSet();if(t){const a=[],o=((i=e.data)==null?void 0:i.family)??UC(s),h=((r=(n=e.data)==null?void 0:n.weights)==null?void 0:r.filter(c=>BC.includes(c)))??["normal"],l=e.data??{};for(let c=0;cWe.ADAPTER.getFontFaceSet().delete(e))}};tt.add(YC);const $C=`(function() { "use strict"; const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; async function checkImageBitmap() { @@ -903,7 +903,7 @@ ${u}`)}});return await Promise.all(h),r?n[a[0].src]:n}async unload(e){const t=Ws self.postMessage(result); }); })(); -`;let So=null,gm=class{constructor(){So||(So=URL.createObjectURL(new Blob([GE],{type:"application/javascript"}))),this.worker=new Worker(So)}};gm.revokeObjectURL=function(){So&&(URL.revokeObjectURL(So),So=null)};const HE=`(function() { +`;let wo=null,pm=class{constructor(){wo||(wo=URL.createObjectURL(new Blob([$C],{type:"application/javascript"}))),this.worker=new Worker(wo)}};pm.revokeObjectURL=function(){wo&&(URL.revokeObjectURL(wo),wo=null)};const GC=`(function() { "use strict"; async function loadImageBitmap(url) { const response = await fetch(url); @@ -929,8 +929,8 @@ ${u}`)}});return await Promise.all(h),r?n[a[0].src]:n}async unload(e){const t=Ws } }; })(); -`;let _o=null;class jb{constructor(){_o||(_o=URL.createObjectURL(new Blob([HE],{type:"application/javascript"}))),this.worker=new Worker(_o)}}jb.revokeObjectURL=function(){_o&&(URL.revokeObjectURL(_o),_o=null)};let dv=0,af;class jE{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(e=>{const{worker:t}=new gm;t.addEventListener("message",i=>{t.terminate(),gm.revokeObjectURL(),e(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){af===void 0&&(af=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const i=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),i}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),i=t.id;this.resolveHash[dv]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:dv++,id:i})}}const fv=new jE;function zl(s,e,t){s.resource.internal=!0;const i=new pt(s),n=()=>{delete e.promiseCache[t],pa.has(t)&&pa.remove(t)};return i.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),i.once("destroyed",()=>{s.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),i}const WE=[".jpeg",".jpg",".png",".webp",".avif"],zE=["image/jpeg","image/png","image/webp","image/avif"];async function qE(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const Mu={name:"loadTextures",extension:{type:Ge.LoadParser,priority:Es.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return No(s,zE)||xs(s,WE)},async load(s,e,t){var o;const i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;i?this.config.preferWorkers&&await fv.isImageBitmapSupported()?n=await fv.loadImageBitmap(s):n=await qE(s):n=await new Promise((h,l)=>{const c=new Image;c.crossOrigin=this.config.crossOrigin,c.src=s,c.complete?h(c):(c.onload=()=>h(c),c.onerror=u=>l(u))});const r={...e.data};r.resolution??(r.resolution=mr(s)),i&&((o=r.resourceOptions)==null?void 0:o.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const a=new vt(n,r);return a.resource.src=s,zl(a,t,s)},unload(s){s.destroy(!0)}};et.add(Mu);const KE=".svg",ZE="image/svg+xml",JE={extension:{type:Ge.LoadParser,priority:Es.High},name:"loadSVG",test(s){return No(s,ZE)||xs(s,KE)},async testParse(s){return am.test(s)},async parse(s,e,t){var r;const i=new am(s,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await i.load();const n=new vt(i,{resolution:mr(s),...e==null?void 0:e.data});return n.resource.src=e.src,zl(n,t,e.src)},async load(s,e){return(await We.ADAPTER.fetch(s)).text()},unload:Mu.unload};et.add(JE);const QE=[".mp4",".m4v",".webm",".ogv"],eC=["video/mp4","video/webm","video/ogg"],tC={name:"loadVideo",extension:{type:Ge.LoadParser,priority:Es.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(s){return No(s,eC)||xs(s,QE)},async load(s,e,t){var a;let i;const n=await(await We.ADAPTER.fetch(s)).blob(),r=URL.createObjectURL(n);try{const o={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(a=e==null?void 0:e.data)==null?void 0:a.resourceOptions,autoLoad:!0},h=new Nb(r,o);await h.load();const l=new vt(h,{alphaMode:await l2(),resolution:mr(s),...e==null?void 0:e.data});l.resource.src=s,i=zl(l,t,s),i.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(o){throw URL.revokeObjectURL(r),o}return i},unload(s){s.destroy(!0)}};et.add(tC);class iC{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,name:i,src:n,srcs:r}=e;return Ws(t||i||n||r,a=>typeof a=="string"?a:Array.isArray(a)?a.map(o=>(o==null?void 0:o.src)??(o==null?void 0:o.srcs)??o):a!=null&&a.src||a!=null&&a.srcs?a.src??a.srcs:a,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,a=n.alias??n.name;let o;if(typeof a=="string"){const h=this._createBundleAssetId(e,a);i.push(h),o=[a,h]}else{const h=a.map(l=>this._createBundleAssetId(e,l));i.push(...h),o=[...a,...h]}this.add({...n,alias:o,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const a=t[n],o=a.src??a.srcs;this.add({...a,alias:r,src:Array.isArray(o)?o:[o]})}i.push(...r)}),this._bundles[e]=i}add(e,t,i,n,r){const a=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(Ot("7.2.0",`Assets.add now uses an object instead of individual parameters. -Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),a.push({alias:e,src:t,data:i,format:n,loadParser:r})):Array.isArray(e)?a.push(...e):a.push(e);let o;o=h=>{this.hasKey(h)&&console.warn(`[Resolver] already has key: ${h} overwriting`)},Ws(a).forEach(h=>{const{src:l,srcs:c}=h;let{data:u,format:d,loadParser:f}=h;const p=Ws(l||c).map(v=>typeof v=="string"?EE(v):Array.isArray(v)?v:[v]),m=this.getAlias(h);Array.isArray(m)?m.forEach(o):o(m);const g=[];p.forEach(v=>{v.forEach(b=>{let y={};if(typeof b!="object"){y.src=b;for(let w=0;w{this._assetMap[v]=g})})}resolveBundle(e){const t=Mh(e);e=Ws(e);const i={};return e.forEach(n=>{const r=this._bundles[n];if(r){const a=this.resolve(r),o={};for(const h in a){const l=a[h];o[this._extractAssetIdFromBundle(n,h)]=l}i[n]=o}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const n in t)i[n]=t[n].src;return i}return t.src}resolve(e){const t=Mh(e);e=Ws(e);const i={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const a=r[0],o=this._getPreferredOrder(r);o==null||o.priority.forEach(h=>{o.params[h].forEach(l=>{const c=r.filter(u=>u[h]?u[h]===l:!1);c.length&&(r=c)})}),this._resolverHash[n]=r[0]??a}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:n,loadParser:r,format:a}=t;return(this._basePath||this._rootPath)&&(e.src=wi.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=a??e.format??wi.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class sC{constructor(){this._detections=[],this._initialized=!1,this.resolver=new iC,this.loader=new IE,this.cache=pa,this._backgroundLoader=new AE(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,a;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let o=e.manifest;typeof o=="string"&&(o=await this.load(o)),this.resolver.addManifest(o)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,i=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(a=e.texturePreference)==null?void 0:a.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,n,r){this.resolver.add(e,t,i,n,r)}async load(e,t){this._initialized||await this.init();const i=Mh(e),n=Ws(e).map(o=>{if(typeof o!="string"){const h=this.resolver.getAlias(o);return h.some(l=>!this.resolver.hasKey(l))&&this.add(o),Array.isArray(h)?h[0]:h}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),r=this.resolver.resolve(n),a=await this._mapLoadToResolve(r,t);return i?a[n[0]]:a}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},a=Object.keys(n);let o=0,h=0;const l=()=>{t==null||t(++o/h)},c=a.map(u=>{const d=n[u];return h+=Object.keys(d).length,this._mapLoadToResolve(d,l).then(f=>{r[u]=f})});return await Promise.all(c),i?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return pa.get(e);const t={};for(let i=0;i{const l=r[o.src],c=[o.src];o.alias&&c.push(...o.alias),a[n[h]]=l,pa.set(c,l)}),a}async unload(e){this._initialized||await this.init();const t=Ws(e).map(n=>typeof n!="string"?n.src:n),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=Ws(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{pa.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,n)=>t.indexOf(i)===n),t}get detections(){return this._detections}get preferWorkers(){return Mu.config.preferWorkers}set preferWorkers(e){Ot("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const kn=new sC;et.handleByList(Ge.LoadParser,kn.loader.parsers).handleByList(Ge.ResolveParser,kn.resolver.parsers).handleByList(Ge.CacheParser,kn.cache.parsers).handleByList(Ge.DetectionParser,kn.detections);const nC={extension:Ge.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof pt),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((n,r)=>{t[i+(r===0?"":r+1)]=n})}),t}};et.add(nC);async function Wb(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const rC={extension:{type:Ge.DetectionParser,priority:1},test:async()=>Wb("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};et.add(rC);const aC={extension:{type:Ge.DetectionParser,priority:0},test:async()=>Wb("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};et.add(aC);const mv=["png","jpg","jpeg"],oC={extension:{type:Ge.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...mv],remove:async s=>s.filter(e=>!mv.includes(e))};et.add(oC);const lC="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function xp(s){return lC?!1:document.createElement("video").canPlayType(s)!==""}const cC={extension:{type:Ge.DetectionParser,priority:0},test:async()=>xp("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};et.add(cC);const hC={extension:{type:Ge.DetectionParser,priority:0},test:async()=>xp("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};et.add(hC);const uC={extension:{type:Ge.DetectionParser,priority:0},test:async()=>xp("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};et.add(uC);const dC={extension:Ge.ResolveParser,test:Mu.test,parse:s=>{var e;return{resolution:parseFloat(((e=We.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:wi.extname(s).slice(1),src:s}}};et.add(dC);var Vi=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(Vi||{});const Th={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let pn,ao;function pv(){ao={bptc:pn.getExtension("EXT_texture_compression_bptc"),astc:pn.getExtension("WEBGL_compressed_texture_astc"),etc:pn.getExtension("WEBGL_compressed_texture_etc"),s3tc:pn.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:pn.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:pn.getExtension("WEBGL_compressed_texture_pvrtc")||pn.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:pn.getExtension("WEBGL_compressed_texture_etc1"),atc:pn.getExtension("WEBGL_compressed_texture_atc")}}const fC={extension:{type:Ge.DetectionParser,priority:2},test:async()=>{const s=We.ADAPTER.createCanvas().getContext("webgl");return s?(pn=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{ao||pv();const e=[];for(const t in ao)ao[t]&&e.push(t);return[...e,...s]},remove:async s=>(ao||pv(),s.filter(e=>!(e in ao)))};et.add(fC);class mC extends xu{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,n;typeof e=="string"?(i=e,n=new Uint8Array):(i=null,n=e),super(n,t),this.origin=i,this.buffer=n?new Wf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Wf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class Ea extends mC{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=Ea._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||Ea._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,a=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,n,r,a,o){const h=new Array(i);let l=e.byteOffset,c=a,u=o,d=c+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*Th[t];for(let m=0;m1?c:d,levelHeight:i>1?u:f,levelBuffer:new Uint8Array(e.buffer,l,p)},l+=p,c=c>>1||1,u=u>>1||1,d=c+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*Th[t];return h}}const of=4,yc=124,pC=32,gv=20,gC=542327876,xc={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},vC={FOURCC:2},bc={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},yC=1,xC=2,bC=4,wC=64,SC=512,_C=131072,MC=827611204,TC=861165636,AC=894720068,EC=808540228,CC=4,IC={[MC]:Vi.COMPRESSED_RGBA_S3TC_DXT1_EXT,[TC]:Vi.COMPRESSED_RGBA_S3TC_DXT3_EXT,[AC]:Vi.COMPRESSED_RGBA_S3TC_DXT5_EXT},RC={70:Vi.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:Vi.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:Vi.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:Vi.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:Vi.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:Vi.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:Vi.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:Vi.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:Vi.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:Vi.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:Vi.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:Vi.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:Vi.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function PC(s){const e=new Uint32Array(s);if(e[0]!==gC)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,yc/Uint32Array.BYTES_PER_ELEMENT),i=t[xc.HEIGHT],n=t[xc.WIDTH],r=t[xc.MIPMAP_COUNT],a=new Uint32Array(s,xc.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,pC/Uint32Array.BYTES_PER_ELEMENT),o=a[yC];if(o&bC){const h=a[vC.FOURCC];if(h!==EC){const b=IC[h],y=of+yc,w=new Uint8Array(s,y);return[new Ea(w,{format:b,width:n,height:i,levels:r})]}const l=of+yc,c=new Uint32Array(e.buffer,l,gv/Uint32Array.BYTES_PER_ELEMENT),u=c[bc.DXGI_FORMAT],d=c[bc.RESOURCE_DIMENSION],f=c[bc.MISC_FLAG],p=c[bc.ARRAY_SIZE],m=RC[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===CC)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,v=of+yc+gv;if(p===1)g.push(new Uint8Array(s,v));else{const b=Th[m];let y=0,w=n,A=i;for(let _=0;_>>1,A=A>>>1}let M=v;for(let _=0;_new Ea(b,{format:m,width:n,height:i,levels:r}))}throw o&wC?new Error("DDSParser does not support uncompressed texture data."):o&SC?new Error("DDSParser does not supported YUV uncompressed texture data."):o&_C?new Error("DDSParser does not support single-channel (lumninance) texture data!"):o&xC?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const vv=[171,75,84,88,32,49,49,187,13,10,26,10],kC=67305985,Ys={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},vm=64,yv={[Qe.UNSIGNED_BYTE]:1,[Qe.UNSIGNED_SHORT]:2,[Qe.INT]:4,[Qe.UNSIGNED_INT]:4,[Qe.FLOAT]:4,[Qe.HALF_FLOAT]:8},FC={[Ne.RGBA]:4,[Ne.RGB]:3,[Ne.RG]:2,[Ne.RED]:1,[Ne.LUMINANCE]:1,[Ne.LUMINANCE_ALPHA]:2,[Ne.ALPHA]:1},OC={[Qe.UNSIGNED_SHORT_4_4_4_4]:2,[Qe.UNSIGNED_SHORT_5_5_5_1]:2,[Qe.UNSIGNED_SHORT_5_6_5]:2};function BC(s,e,t=!1){const i=new DataView(e);if(!LC(s,i))return null;const n=i.getUint32(Ys.ENDIANNESS,!0)===kC,r=i.getUint32(Ys.GL_TYPE,n),a=i.getUint32(Ys.GL_FORMAT,n),o=i.getUint32(Ys.GL_INTERNAL_FORMAT,n),h=i.getUint32(Ys.PIXEL_WIDTH,n),l=i.getUint32(Ys.PIXEL_HEIGHT,n)||1,c=i.getUint32(Ys.PIXEL_DEPTH,n)||1,u=i.getUint32(Ys.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=i.getUint32(Ys.NUMBER_OF_FACES,n),f=i.getUint32(Ys.NUMBER_OF_MIPMAP_LEVELS,n),p=i.getUint32(Ys.BYTES_OF_KEY_VALUE_DATA,n);if(l===0||c!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,v=h+3&-4,b=l+3&-4,y=new Array(u);let w=h*l;r===0&&(w=v*b);let A;if(r!==0?yv[r]?A=yv[r]*FC[a]:A=OC[r]:A=Th[o],A===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const M=t?NC(i,p,n):null;let _=w*A,R=h,P=l,F=v,I=b,k=vm+p;for(let B=0;B1||r!==0?R:F,levelHeight:f>1||r!==0?P:I,levelBuffer:new Uint8Array(e,U,_)},U+=_}k+=D+4,k=k%4!==0?k+4-k%4:k,R=R>>1||1,P=P>>1||1,F=R+m-1&-4,I=P+g-1&-4,_=F*I*A}return r!==0?{uncompressed:y.map(B=>{let D=B[0].levelBuffer,U=!1;return r===Qe.FLOAT?D=new Float32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4):r===Qe.UNSIGNED_INT?(U=!0,D=new Uint32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)):r===Qe.INT&&(U=!0,D=new Int32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)),{resource:new xu(D,{width:B[0].levelWidth,height:B[0].levelHeight}),type:r,format:U?DC(a):a}}),kvData:M}:{compressed:y.map(B=>new Ea(null,{format:o,width:h,height:l,levels:f,levelBuffers:B})),kvData:M}}function LC(s,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let h=0;for(;h{const a=new vt(r,{mipmap:Us.OFF,alphaMode:Ni.NO_PREMULTIPLIED_ALPHA,resolution:mr(s),...e.data});return zl(a,t,s)});return n.length===1?n[0]:n},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};et.add(UC);const XC={extension:{type:Ge.LoadParser,priority:Es.High},name:"loadKTX",test(s){return xs(s,".ktx")},async load(s,e,t){const i=await(await We.ADAPTER.fetch(s)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:a}=BC(s,i),o=n??r,h={mipmap:Us.OFF,alphaMode:Ni.NO_PREMULTIPLIED_ALPHA,resolution:mr(s),...e.data},l=o.map(c=>{o===r&&Object.assign(h,{type:c.type,format:c.format});const u=c.resource??c,d=new vt(u,h);return d.ktxKeyValueData=a,zl(d,t,s)});return l.length===1?l[0]:l},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};et.add(XC);const VC=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],YC={extension:Ge.ResolveParser,test:s=>{const e=wi.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{var i,n;const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(VC.includes(r))return{resolution:parseFloat(((i=We.RETINA_PREFIX.exec(s))==null?void 0:i[1])??"1"),format:r,src:s}}return{resolution:parseFloat(((n=We.RETINA_PREFIX.exec(s))==null?void 0:n[1])??"1"),format:t,src:s}}};et.add(YC);const wc=new Tt,$C=4,zb=class ol{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,n){const r=new Image;return r.src=await this.base64(e,t,i,n),r}async base64(e,t,i,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((a,o)=>{r.toBlob(h=>{if(!h){o(new Error("ICanvas.toBlob failed!"));return}const l=new FileReader;l.onload=()=>a(l.result),l.onerror=o,l.readAsDataURL(h)},t,i)});if(r.toDataURL!==void 0)return r.toDataURL(t,i);if(r.convertToBlob!==void 0){const a=await r.convertToBlob({type:t,quality:i});return new Promise((o,h)=>{const l=new FileReader;l.onload=()=>o(l.result),l.onerror=h,l.readAsDataURL(a)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:n,height:r,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);a&&ol._flipY(i,n,r),o&&ol._unpremultiplyAlpha(i);const h=new M2(n,r,1),l=new ImageData(new Uint8ClampedArray(i.buffer),n,r);return h.context.putImageData(l,0,0),h.canvas}pixels(e,t){const{pixels:i,width:n,height:r,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);return a&&ol._flipY(i,n,r),o&&ol._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let n,r=!1,a=!1,o,h=!1;e&&(e instanceof Na?o=e:(o=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),h=!0,t&&(wc.width=t.width,wc.height=t.height,t=wc)));const l=i.gl;if(o){if(n=o.baseTexture.resolution,t=t??o.frame,r=!1,a=o.baseTexture.alphaMode>0&&o.baseTexture.format===Ne.RGBA,!h){i.renderTexture.bind(o);const f=o.framebuffer.glFramebuffers[i.CONTEXT_UID];f.blitFramebuffer&&i.framebuffer.bind(f.blitFramebuffer)}}else n=i.resolution,t||(t=wc,t.width=i.width/n,t.height=i.height/n),r=!0,a=this._rendererPremultipliedAlpha,i.renderTexture.bind();const c=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array($C*c*u);return l.readPixels(Math.round(t.x*n),Math.round(t.y*n),c,u,l.RGBA,l.UNSIGNED_BYTE,d),h&&(o==null||o.destroy(!0)),{pixels:d,width:c,height:u,flipY:r,premultipliedAlpha:a}}destroy(){this.renderer=null}static _flipY(e,t,i){const n=t<<2,r=i>>1,a=new Uint8Array(n);for(let o=0;o=0&&o>=0&&n>=0&&r>=0)){e.length=0;return}const h=Math.ceil(2.3*Math.sqrt(a+o)),l=h*8+(n?4:0)+(r?4:0);if(e.length=l,l===0)return;if(h===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=i+r,e[2]=e[4]=t-n,e[5]=e[7]=i-r;return}let c=0,u=h*4+(n?2:0)+2,d=u,f=l;{const p=n+a,m=r,g=t+p,v=t-p,b=i+m;if(e[c++]=g,e[c++]=b,e[--u]=b,e[--u]=v,r){const y=i-m;e[d++]=v,e[d++]=y,e[--f]=y,e[--f]=g}}for(let p=1;p0||e&&i<=0){const n=t/2;for(let r=n+n%2;r=6){xv(t,!1);const a=[];for(let l=0;l=0&&r>=0&&a.push(t,i,t+n,i,t+n,i+r,t,i+r)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const n=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},jC={build(s){Ah.build(s)},triangulate(s,e){Ah.triangulate(s,e)}};var Fs=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(Fs||{}),Xr=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(Xr||{});const Io={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class bv{static curveTo(e,t,i,n,r,a){const o=a[a.length-2],h=a[a.length-1]-t,l=o-e,c=n-t,u=i-e,d=Math.abs(h*u-l*c);if(d<1e-8||r===0)return(a[a.length-2]!==e||a[a.length-1]!==t)&&a.push(e,t),null;const f=h*h+l*l,p=c*c+u*u,m=h*c+l*u,g=r*Math.sqrt(f)/d,v=r*Math.sqrt(p)/d,b=g*m/f,y=v*m/p,w=g*u+v*l,A=g*c+v*h,M=l*(v+b),_=h*(v+b),R=u*(g+y),P=c*(g+y),F=Math.atan2(_-A,M-w),I=Math.atan2(P-A,R-w);return{cx:w+e,cy:A+t,radius:r,startAngle:F,endAngle:I,anticlockwise:l*c>u*h}}static arc(e,t,i,n,r,a,o,h,l){const c=o-a,u=Io._segmentsCount(Math.abs(c)*r,Math.ceil(Math.abs(c)/vh)*40),d=c/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,v=g%1/g;for(let b=0;b<=g;++b){const y=b+v*b,w=d+a+f*y,A=Math.cos(w),M=-Math.sin(w);l.push((p*A+m*M)*r+i,(p*-M+m*A)*r+n)}}}class WC{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class bp{static curveLength(e,t,i,n,r,a,o,h){let l=0,c=0,u=0,d=0,f=0,p=0,m=0,g=0,v=0,b=0,y=0,w=e,A=t;for(let M=1;M<=10;++M)c=M/10,u=c*c,d=u*c,f=1-c,p=f*f,m=p*f,g=m*e+3*p*c*i+3*f*u*r+d*o,v=m*t+3*p*c*n+3*f*u*a+d*h,b=w-g,y=A-v,w=g,A=v,l+=Math.sqrt(b*b+y*y);return l}static curveTo(e,t,i,n,r,a,o){const h=o[o.length-2],l=o[o.length-1];o.length-=2;const c=Io._segmentsCount(bp.curveLength(h,l,e,t,i,n,r,a));let u=0,d=0,f=0,p=0,m=0;o.push(h,l);for(let g=1,v=0;g<=c;++g)v=g/c,u=1-v,d=u*u,f=d*u,p=v*v,m=p*v,o.push(f*h+3*d*v*e+3*u*p*i+m*r,f*l+3*d*v*t+3*u*p*n+m*a)}}function wv(s,e,t,i,n,r,a,o){const h=s-t*n,l=e-i*n,c=s+t*r,u=e+i*r;let d,f;a?(d=i,f=-t):(d=-i,f=t);const p=h+d,m=l+f,g=c+d,v=u+f;return o.push(p,m,g,v),2}function aa(s,e,t,i,n,r,a,o){const h=t-s,l=i-e;let c=Math.atan2(h,l),u=Math.atan2(n-s,r-e);o&&cu&&(u+=Math.PI*2);let d=c;const f=u-c,p=Math.abs(f),m=Math.sqrt(h*h+l*l),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,v=f/g;if(d+=v,o){a.push(s,e,t,i);for(let b=1,y=d;b=0&&(r.join===Fs.ROUND?d+=aa(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+4:d+=2,c.push(y-P*D,w-F*D,y+P*B,w+F*B));continue}const K=(-_+v)*(-R+w)-(-_+y)*(-R+b),fe=(-P+A)*(-F+w)-(-P+y)*(-F+M),me=(O*fe-E*K)/W,we=(V*K-X*fe)/W,Ee=(me-y)*(me-y)+(we-w)*(we-w),ge=y+(me-y)*B,Te=w+(we-w)*B,G=y-(me-y)*D,Z=w-(we-w)*D,z=Math.min(O*O+X*X,E*E+V*V),j=J?B:D,te=z+j*j*m,he=Ee<=te;let ve=r.join;if(ve===Fs.MITER&&Ee/m>g&&(ve=Fs.BEVEL),he)switch(ve){case Fs.MITER:{c.push(ge,Te,G,Z);break}case Fs.BEVEL:{J?c.push(ge,Te,y+_*D,w+R*D,ge,Te,y+P*D,w+F*D):c.push(y-_*B,w-R*B,G,Z,y-P*B,w-F*B,G,Z),d+=2;break}case Fs.ROUND:{J?(c.push(ge,Te,y+_*D,w+R*D),d+=aa(y,w,y+_*D,w+R*D,y+P*D,w+F*D,c,!0)+4,c.push(ge,Te,y+P*D,w+F*D)):(c.push(y-_*B,w-R*B,G,Z),d+=aa(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+4,c.push(y-P*B,w-F*B,G,Z));break}}else{switch(c.push(y-_*B,w-R*B,y+_*D,w+R*D),ve){case Fs.MITER:{J?c.push(G,Z,G,Z):c.push(ge,Te,ge,Te),d+=2;break}case Fs.ROUND:{J?d+=aa(y,w,y+_*D,w+R*D,y+P*D,w+F*D,c,!0)+2:d+=aa(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+2;break}}c.push(y-P*B,w-F*B,y+P*D,w+F*D),d+=2}}v=i[(u-2)*2],b=i[(u-2)*2+1],y=i[(u-1)*2],w=i[(u-1)*2+1],_=-(b-w),R=v-y,I=Math.sqrt(_*_+R*R),_/=I,R/=I,_*=p,R*=p,c.push(y-_*B,w-R*B,y+_*D,w+R*D),h||(r.cap===Xr.ROUND?d+=aa(y-_*(B-D)*.5,w-R*(B-D)*.5,y-_*B,w-R*B,y+_*D,w+R*D,c,!1)+2:r.cap===Xr.SQUARE&&(d+=wv(y,w,_,R,B,D,!1,c)));const U=e.indices,L=Io.epsilon*Io.epsilon;for(let N=f;N0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,n=null){const r=new Eh(e,t,i,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new Eh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=n.lineStyle,n.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],n=i.style);for(let h=this.shapeIndex;h65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&o===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=o?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=Sc.pop(),n||(n=new Kf,n.texArray=new em),this.drawCalls.push(n)),n.start=c,n.size=0,n.texArray.count=0,n.type=l),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=Js.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,c+=d.size,o=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,o,d.attribSize,d.attribStart)}vt._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),a=new Float32Array(r),o=new Uint32Array(r);let h=0;for(let l=0;l0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new Aa,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new Aa,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,n=i[i.length-2],r=i[i.length-1];return(n!==e||r!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),wp.curveTo(e,t,i,n,r),this}bezierCurveTo(e,t,i,n,r,a){return this._initCurve(),bp.curveTo(e,t,i,n,r,a,this.currentPath.points),this}arcTo(e,t,i,n,r){this._initCurve(e,t);const a=this.currentPath.points,o=bv.curveTo(e,t,i,n,r,a);if(o){const{cx:h,cy:l,radius:c,startAngle:u,endAngle:d,anticlockwise:f}=o;this.arc(h,l,c,u,d,f)}return this}arc(e,t,i,n,r,a=!1){if(n===r)return this;if(!a&&r<=n?r+=vh:a&&n<=r&&(n+=vh),r-n===0)return this;const o=e+Math.cos(n)*i,h=t+Math.sin(n)*i,l=this._geometry.closePointEps;let c=this.currentPath?this.currentPath.points:null;if(c){const u=Math.abs(c[c.length-2]-o),d=Math.abs(c[c.length-1]-h);u0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,n){return this.drawShape(new Tt(e,t,i,n))}drawRoundedRect(e,t,i,n,r){return this.drawShape(new Su(e,t,i,n,r))}drawCircle(e,t,i){return this.drawShape(new bu(e,t,i))}drawEllipse(e,t,i,n){return this.drawShape(new wu(e,t,i,n))}drawPolygon(...e){let t,i=!0;const n=e[0];n.points?(i=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new Aa(t);return r.closeStroke=i,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===Hi.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let n=0;n{const{worker:t}=new pm;t.addEventListener("message",i=>{t.terminate(),pm.revokeObjectURL(),e(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){rf===void 0&&(rf=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const i=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),i}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),i=t.id;this.resolveHash[uv]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:uv++,id:i})}}const dv=new HC;function zl(s,e,t){s.resource.internal=!0;const i=new gt(s),n=()=>{delete e.promiseCache[t],va.has(t)&&va.remove(t)};return i.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),i.once("destroyed",()=>{s.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),i}const jC=[".jpeg",".jpg",".png",".webp",".avif"],WC=["image/jpeg","image/png","image/webp","image/avif"];async function zC(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const Mu={name:"loadTextures",extension:{type:He.LoadParser,priority:Is.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return Do(s,WC)||bs(s,jC)},async load(s,e,t){var o;const i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;i?this.config.preferWorkers&&await dv.isImageBitmapSupported()?n=await dv.loadImageBitmap(s):n=await zC(s):n=await new Promise((h,l)=>{const c=new Image;c.crossOrigin=this.config.crossOrigin,c.src=s,c.complete?h(c):(c.onload=()=>h(c),c.onerror=u=>l(u))});const r={...e.data};r.resolution??(r.resolution=pr(s)),i&&((o=r.resourceOptions)==null?void 0:o.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const a=new yt(n,r);return a.resource.src=s,zl(a,t,s)},unload(s){s.destroy(!0)}};tt.add(Mu);const qC=".svg",KC="image/svg+xml",ZC={extension:{type:He.LoadParser,priority:Is.High},name:"loadSVG",test(s){return Do(s,KC)||bs(s,qC)},async testParse(s){return rm.test(s)},async parse(s,e,t){var r;const i=new rm(s,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await i.load();const n=new yt(i,{resolution:pr(s),...e==null?void 0:e.data});return n.resource.src=e.src,zl(n,t,e.src)},async load(s,e){return(await We.ADAPTER.fetch(s)).text()},unload:Mu.unload};tt.add(ZC);const JC=[".mp4",".m4v",".webm",".ogv"],QC=["video/mp4","video/webm","video/ogg"],e2={name:"loadVideo",extension:{type:He.LoadParser,priority:Is.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(s){return Do(s,QC)||bs(s,JC)},async load(s,e,t){var a;let i;const n=await(await We.ADAPTER.fetch(s)).blob(),r=URL.createObjectURL(n);try{const o={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(a=e==null?void 0:e.data)==null?void 0:a.resourceOptions,autoLoad:!0},h=new Db(r,o);await h.load();const l=new yt(h,{alphaMode:await oA(),resolution:pr(s),...e==null?void 0:e.data});l.resource.src=s,i=zl(l,t,s),i.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(o){throw URL.revokeObjectURL(r),o}return i},unload(s){s.destroy(!0)}};tt.add(e2);class t2{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,name:i,src:n,srcs:r}=e;return en(t||i||n||r,a=>typeof a=="string"?a:Array.isArray(a)?a.map(o=>(o==null?void 0:o.src)??(o==null?void 0:o.srcs)??o):a!=null&&a.src||a!=null&&a.srcs?a.src??a.srcs:a,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,a=n.alias??n.name;let o;if(typeof a=="string"){const h=this._createBundleAssetId(e,a);i.push(h),o=[a,h]}else{const h=a.map(l=>this._createBundleAssetId(e,l));i.push(...h),o=[...a,...h]}this.add({...n,alias:o,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const a=t[n],o=a.src??a.srcs;this.add({...a,alias:r,src:Array.isArray(o)?o:[o]})}i.push(...r)}),this._bundles[e]=i}add(e,t,i,n,r){const a=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(kt("7.2.0",`Assets.add now uses an object instead of individual parameters. +Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),a.push({alias:e,src:t,data:i,format:n,loadParser:r})):Array.isArray(e)?a.push(...e):a.push(e);let o;o=h=>{this.hasKey(h)&&console.warn(`[Resolver] already has key: ${h} overwriting`)},en(a).forEach(h=>{const{src:l,srcs:c}=h;let{data:u,format:d,loadParser:f}=h;const p=en(l||c).map(v=>typeof v=="string"?AC(v):Array.isArray(v)?v:[v]),m=this.getAlias(h);Array.isArray(m)?m.forEach(o):o(m);const g=[];p.forEach(v=>{v.forEach(b=>{let y={};if(typeof b!="object"){y.src=b;for(let w=0;w{this._assetMap[v]=g})})}resolveBundle(e){const t=_h(e);e=en(e);const i={};return e.forEach(n=>{const r=this._bundles[n];if(r){const a=this.resolve(r),o={};for(const h in a){const l=a[h];o[this._extractAssetIdFromBundle(n,h)]=l}i[n]=o}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const n in t)i[n]=t[n].src;return i}return t.src}resolve(e){const t=_h(e);e=en(e);const i={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const a=r[0],o=this._getPreferredOrder(r);o==null||o.priority.forEach(h=>{o.params[h].forEach(l=>{const c=r.filter(u=>u[h]?u[h]===l:!1);c.length&&(r=c)})}),this._resolverHash[n]=r[0]??a}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:n,loadParser:r,format:a}=t;return(this._basePath||this._rootPath)&&(e.src=wi.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=a??e.format??wi.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class i2{constructor(){this._detections=[],this._initialized=!1,this.resolver=new t2,this.loader=new CC,this.cache=va,this._backgroundLoader=new TC(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,a;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let o=e.manifest;typeof o=="string"&&(o=await this.load(o)),this.resolver.addManifest(o)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,i=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(a=e.texturePreference)==null?void 0:a.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,n,r){this.resolver.add(e,t,i,n,r)}async load(e,t){this._initialized||await this.init();const i=_h(e),n=en(e).map(o=>{if(typeof o!="string"){const h=this.resolver.getAlias(o);return h.some(l=>!this.resolver.hasKey(l))&&this.add(o),Array.isArray(h)?h[0]:h}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),r=this.resolver.resolve(n),a=await this._mapLoadToResolve(r,t);return i?a[n[0]]:a}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},a=Object.keys(n);let o=0,h=0;const l=()=>{t==null||t(++o/h)},c=a.map(u=>{const d=n[u];return h+=Object.keys(d).length,this._mapLoadToResolve(d,l).then(f=>{r[u]=f})});return await Promise.all(c),i?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return va.get(e);const t={};for(let i=0;i{const l=r[o.src],c=[o.src];o.alias&&c.push(...o.alias),a[n[h]]=l,va.set(c,l)}),a}async unload(e){this._initialized||await this.init();const t=en(e).map(n=>typeof n!="string"?n.src:n),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=en(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{va.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,n)=>t.indexOf(i)===n),t}get detections(){return this._detections}get preferWorkers(){return Mu.config.preferWorkers}set preferWorkers(e){kt("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const Fn=new i2;tt.handleByList(He.LoadParser,Fn.loader.parsers).handleByList(He.ResolveParser,Fn.resolver.parsers).handleByList(He.CacheParser,Fn.cache.parsers).handleByList(He.DetectionParser,Fn.detections);const s2={extension:He.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof gt),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((n,r)=>{t[i+(r===0?"":r+1)]=n})}),t}};tt.add(s2);async function jb(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const n2={extension:{type:He.DetectionParser,priority:1},test:async()=>jb("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};tt.add(n2);const r2={extension:{type:He.DetectionParser,priority:0},test:async()=>jb("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};tt.add(r2);const fv=["png","jpg","jpeg"],a2={extension:{type:He.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...fv],remove:async s=>s.filter(e=>!fv.includes(e))};tt.add(a2);const o2="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function yp(s){return o2?!1:document.createElement("video").canPlayType(s)!==""}const l2={extension:{type:He.DetectionParser,priority:0},test:async()=>yp("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};tt.add(l2);const c2={extension:{type:He.DetectionParser,priority:0},test:async()=>yp("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};tt.add(c2);const h2={extension:{type:He.DetectionParser,priority:0},test:async()=>yp("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};tt.add(h2);const u2={extension:He.ResolveParser,test:Mu.test,parse:s=>{var e;return{resolution:parseFloat(((e=We.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:wi.extname(s).slice(1),src:s}}};tt.add(u2);var Xi=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(Xi||{});const Th={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let gn,ro;function mv(){ro={bptc:gn.getExtension("EXT_texture_compression_bptc"),astc:gn.getExtension("WEBGL_compressed_texture_astc"),etc:gn.getExtension("WEBGL_compressed_texture_etc"),s3tc:gn.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:gn.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:gn.getExtension("WEBGL_compressed_texture_pvrtc")||gn.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:gn.getExtension("WEBGL_compressed_texture_etc1"),atc:gn.getExtension("WEBGL_compressed_texture_atc")}}const d2={extension:{type:He.DetectionParser,priority:2},test:async()=>{const s=We.ADAPTER.createCanvas().getContext("webgl");return s?(gn=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{ro||mv();const e=[];for(const t in ro)ro[t]&&e.push(t);return[...e,...s]},remove:async s=>(ro||mv(),s.filter(e=>!(e in ro)))};tt.add(d2);class f2 extends yu{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,n;typeof e=="string"?(i=e,n=new Uint8Array):(i=null,n=e),super(n,t),this.origin=i,this.buffer=n?new jf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new jf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class Ia extends f2{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=Ia._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||Ia._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,a=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,n,r,a,o){const h=new Array(i);let l=e.byteOffset,c=a,u=o,d=c+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*Th[t];for(let m=0;m1?c:d,levelHeight:i>1?u:f,levelBuffer:new Uint8Array(e.buffer,l,p)},l+=p,c=c>>1||1,u=u>>1||1,d=c+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*Th[t];return h}}const af=4,yc=124,m2=32,pv=20,p2=542327876,xc={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},g2={FOURCC:2},bc={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},v2=1,y2=2,x2=4,b2=64,w2=512,S2=131072,M2=827611204,_2=861165636,T2=894720068,A2=808540228,E2=4,C2={[M2]:Xi.COMPRESSED_RGBA_S3TC_DXT1_EXT,[_2]:Xi.COMPRESSED_RGBA_S3TC_DXT3_EXT,[T2]:Xi.COMPRESSED_RGBA_S3TC_DXT5_EXT},I2={70:Xi.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:Xi.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:Xi.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:Xi.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:Xi.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:Xi.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:Xi.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:Xi.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:Xi.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:Xi.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:Xi.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:Xi.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:Xi.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function R2(s){const e=new Uint32Array(s);if(e[0]!==p2)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,yc/Uint32Array.BYTES_PER_ELEMENT),i=t[xc.HEIGHT],n=t[xc.WIDTH],r=t[xc.MIPMAP_COUNT],a=new Uint32Array(s,xc.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,m2/Uint32Array.BYTES_PER_ELEMENT),o=a[v2];if(o&x2){const h=a[g2.FOURCC];if(h!==A2){const b=C2[h],y=af+yc,w=new Uint8Array(s,y);return[new Ia(w,{format:b,width:n,height:i,levels:r})]}const l=af+yc,c=new Uint32Array(e.buffer,l,pv/Uint32Array.BYTES_PER_ELEMENT),u=c[bc.DXGI_FORMAT],d=c[bc.RESOURCE_DIMENSION],f=c[bc.MISC_FLAG],p=c[bc.ARRAY_SIZE],m=I2[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===E2)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,v=af+yc+pv;if(p===1)g.push(new Uint8Array(s,v));else{const b=Th[m];let y=0,w=n,A=i;for(let _=0;_>>1,A=A>>>1}let T=v;for(let _=0;_new Ia(b,{format:m,width:n,height:i,levels:r}))}throw o&b2?new Error("DDSParser does not support uncompressed texture data."):o&w2?new Error("DDSParser does not supported YUV uncompressed texture data."):o&S2?new Error("DDSParser does not support single-channel (lumninance) texture data!"):o&y2?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const gv=[171,75,84,88,32,49,49,187,13,10,26,10],P2=67305985,qs={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},gm=64,vv={[et.UNSIGNED_BYTE]:1,[et.UNSIGNED_SHORT]:2,[et.INT]:4,[et.UNSIGNED_INT]:4,[et.FLOAT]:4,[et.HALF_FLOAT]:8},k2={[Ne.RGBA]:4,[Ne.RGB]:3,[Ne.RG]:2,[Ne.RED]:1,[Ne.LUMINANCE]:1,[Ne.LUMINANCE_ALPHA]:2,[Ne.ALPHA]:1},F2={[et.UNSIGNED_SHORT_4_4_4_4]:2,[et.UNSIGNED_SHORT_5_5_5_1]:2,[et.UNSIGNED_SHORT_5_6_5]:2};function O2(s,e,t=!1){const i=new DataView(e);if(!B2(s,i))return null;const n=i.getUint32(qs.ENDIANNESS,!0)===P2,r=i.getUint32(qs.GL_TYPE,n),a=i.getUint32(qs.GL_FORMAT,n),o=i.getUint32(qs.GL_INTERNAL_FORMAT,n),h=i.getUint32(qs.PIXEL_WIDTH,n),l=i.getUint32(qs.PIXEL_HEIGHT,n)||1,c=i.getUint32(qs.PIXEL_DEPTH,n)||1,u=i.getUint32(qs.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=i.getUint32(qs.NUMBER_OF_FACES,n),f=i.getUint32(qs.NUMBER_OF_MIPMAP_LEVELS,n),p=i.getUint32(qs.BYTES_OF_KEY_VALUE_DATA,n);if(l===0||c!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,v=h+3&-4,b=l+3&-4,y=new Array(u);let w=h*l;r===0&&(w=v*b);let A;if(r!==0?vv[r]?A=vv[r]*k2[a]:A=F2[r]:A=Th[o],A===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const T=t?D2(i,p,n):null;let _=w*A,R=h,P=l,F=v,I=b,k=gm+p;for(let B=0;B1||r!==0?R:F,levelHeight:f>1||r!==0?P:I,levelBuffer:new Uint8Array(e,U,_)},U+=_}k+=D+4,k=k%4!==0?k+4-k%4:k,R=R>>1||1,P=P>>1||1,F=R+m-1&-4,I=P+g-1&-4,_=F*I*A}return r!==0?{uncompressed:y.map(B=>{let D=B[0].levelBuffer,U=!1;return r===et.FLOAT?D=new Float32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4):r===et.UNSIGNED_INT?(U=!0,D=new Uint32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)):r===et.INT&&(U=!0,D=new Int32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)),{resource:new yu(D,{width:B[0].levelWidth,height:B[0].levelHeight}),type:r,format:U?L2(a):a}}),kvData:T}:{compressed:y.map(B=>new Ia(null,{format:o,width:h,height:l,levels:f,levelBuffers:B})),kvData:T}}function B2(s,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let h=0;for(;h{const a=new yt(r,{mipmap:Ys.OFF,alphaMode:Ni.NO_PREMULTIPLIED_ALPHA,resolution:pr(s),...e.data});return zl(a,t,s)});return n.length===1?n[0]:n},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};tt.add(N2);const U2={extension:{type:He.LoadParser,priority:Is.High},name:"loadKTX",test(s){return bs(s,".ktx")},async load(s,e,t){const i=await(await We.ADAPTER.fetch(s)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:a}=O2(s,i),o=n??r,h={mipmap:Ys.OFF,alphaMode:Ni.NO_PREMULTIPLIED_ALPHA,resolution:pr(s),...e.data},l=o.map(c=>{o===r&&Object.assign(h,{type:c.type,format:c.format});const u=c.resource??c,d=new yt(u,h);return d.ktxKeyValueData=a,zl(d,t,s)});return l.length===1?l[0]:l},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};tt.add(U2);const X2=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],V2={extension:He.ResolveParser,test:s=>{const e=wi.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{var i,n;const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(X2.includes(r))return{resolution:parseFloat(((i=We.RETINA_PREFIX.exec(s))==null?void 0:i[1])??"1"),format:r,src:s}}return{resolution:parseFloat(((n=We.RETINA_PREFIX.exec(s))==null?void 0:n[1])??"1"),format:t,src:s}}};tt.add(V2);const wc=new Tt,Y2=4,Wb=class al{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,n){const r=new Image;return r.src=await this.base64(e,t,i,n),r}async base64(e,t,i,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((a,o)=>{r.toBlob(h=>{if(!h){o(new Error("ICanvas.toBlob failed!"));return}const l=new FileReader;l.onload=()=>a(l.result),l.onerror=o,l.readAsDataURL(h)},t,i)});if(r.toDataURL!==void 0)return r.toDataURL(t,i);if(r.convertToBlob!==void 0){const a=await r.convertToBlob({type:t,quality:i});return new Promise((o,h)=>{const l=new FileReader;l.onload=()=>o(l.result),l.onerror=h,l.readAsDataURL(a)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:n,height:r,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);a&&al._flipY(i,n,r),o&&al._unpremultiplyAlpha(i);const h=new MA(n,r,1),l=new ImageData(new Uint8ClampedArray(i.buffer),n,r);return h.context.putImageData(l,0,0),h.canvas}pixels(e,t){const{pixels:i,width:n,height:r,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);return a&&al._flipY(i,n,r),o&&al._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let n,r=!1,a=!1,o,h=!1;e&&(e instanceof Ua?o=e:(o=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),h=!0,t&&(wc.width=t.width,wc.height=t.height,t=wc)));const l=i.gl;if(o){if(n=o.baseTexture.resolution,t=t??o.frame,r=!1,a=o.baseTexture.alphaMode>0&&o.baseTexture.format===Ne.RGBA,!h){i.renderTexture.bind(o);const f=o.framebuffer.glFramebuffers[i.CONTEXT_UID];f.blitFramebuffer&&i.framebuffer.bind(f.blitFramebuffer)}}else n=i.resolution,t||(t=wc,t.width=i.width/n,t.height=i.height/n),r=!0,a=this._rendererPremultipliedAlpha,i.renderTexture.bind();const c=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array(Y2*c*u);return l.readPixels(Math.round(t.x*n),Math.round(t.y*n),c,u,l.RGBA,l.UNSIGNED_BYTE,d),h&&(o==null||o.destroy(!0)),{pixels:d,width:c,height:u,flipY:r,premultipliedAlpha:a}}destroy(){this.renderer=null}static _flipY(e,t,i){const n=t<<2,r=i>>1,a=new Uint8Array(n);for(let o=0;o=0&&o>=0&&n>=0&&r>=0)){e.length=0;return}const h=Math.ceil(2.3*Math.sqrt(a+o)),l=h*8+(n?4:0)+(r?4:0);if(e.length=l,l===0)return;if(h===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=i+r,e[2]=e[4]=t-n,e[5]=e[7]=i-r;return}let c=0,u=h*4+(n?2:0)+2,d=u,f=l;{const p=n+a,m=r,g=t+p,v=t-p,b=i+m;if(e[c++]=g,e[c++]=b,e[--u]=b,e[--u]=v,r){const y=i-m;e[d++]=v,e[d++]=y,e[--f]=y,e[--f]=g}}for(let p=1;p0||e&&i<=0){const n=t/2;for(let r=n+n%2;r=6){yv(t,!1);const a=[];for(let l=0;l=0&&r>=0&&a.push(t,i,t+n,i,t+n,i+r,t,i+r)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const n=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},H2={build(s){Ah.build(s)},triangulate(s,e){Ah.triangulate(s,e)}};var Ls=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(Ls||{}),Ur=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(Ur||{});const Co={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class xv{static curveTo(e,t,i,n,r,a){const o=a[a.length-2],h=a[a.length-1]-t,l=o-e,c=n-t,u=i-e,d=Math.abs(h*u-l*c);if(d<1e-8||r===0)return(a[a.length-2]!==e||a[a.length-1]!==t)&&a.push(e,t),null;const f=h*h+l*l,p=c*c+u*u,m=h*c+l*u,g=r*Math.sqrt(f)/d,v=r*Math.sqrt(p)/d,b=g*m/f,y=v*m/p,w=g*u+v*l,A=g*c+v*h,T=l*(v+b),_=h*(v+b),R=u*(g+y),P=c*(g+y),F=Math.atan2(_-A,T-w),I=Math.atan2(P-A,R-w);return{cx:w+e,cy:A+t,radius:r,startAngle:F,endAngle:I,anticlockwise:l*c>u*h}}static arc(e,t,i,n,r,a,o,h,l){const c=o-a,u=Co._segmentsCount(Math.abs(c)*r,Math.ceil(Math.abs(c)/vh)*40),d=c/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,v=g%1/g;for(let b=0;b<=g;++b){const y=b+v*b,w=d+a+f*y,A=Math.cos(w),T=-Math.sin(w);l.push((p*A+m*T)*r+i,(p*-T+m*A)*r+n)}}}class j2{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class xp{static curveLength(e,t,i,n,r,a,o,h){let l=0,c=0,u=0,d=0,f=0,p=0,m=0,g=0,v=0,b=0,y=0,w=e,A=t;for(let T=1;T<=10;++T)c=T/10,u=c*c,d=u*c,f=1-c,p=f*f,m=p*f,g=m*e+3*p*c*i+3*f*u*r+d*o,v=m*t+3*p*c*n+3*f*u*a+d*h,b=w-g,y=A-v,w=g,A=v,l+=Math.sqrt(b*b+y*y);return l}static curveTo(e,t,i,n,r,a,o){const h=o[o.length-2],l=o[o.length-1];o.length-=2;const c=Co._segmentsCount(xp.curveLength(h,l,e,t,i,n,r,a));let u=0,d=0,f=0,p=0,m=0;o.push(h,l);for(let g=1,v=0;g<=c;++g)v=g/c,u=1-v,d=u*u,f=d*u,p=v*v,m=p*v,o.push(f*h+3*d*v*e+3*u*p*i+m*r,f*l+3*d*v*t+3*u*p*n+m*a)}}function bv(s,e,t,i,n,r,a,o){const h=s-t*n,l=e-i*n,c=s+t*r,u=e+i*r;let d,f;a?(d=i,f=-t):(d=-i,f=t);const p=h+d,m=l+f,g=c+d,v=u+f;return o.push(p,m,g,v),2}function la(s,e,t,i,n,r,a,o){const h=t-s,l=i-e;let c=Math.atan2(h,l),u=Math.atan2(n-s,r-e);o&&cu&&(u+=Math.PI*2);let d=c;const f=u-c,p=Math.abs(f),m=Math.sqrt(h*h+l*l),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,v=f/g;if(d+=v,o){a.push(s,e,t,i);for(let b=1,y=d;b=0&&(r.join===Ls.ROUND?d+=la(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+4:d+=2,c.push(y-P*D,w-F*D,y+P*B,w+F*B));continue}const K=(-_+v)*(-R+w)-(-_+y)*(-R+b),fe=(-P+A)*(-F+w)-(-P+y)*(-F+T),me=(O*fe-E*K)/W,we=(V*K-X*fe)/W,Ee=(me-y)*(me-y)+(we-w)*(we-w),pe=y+(me-y)*B,Ae=w+(we-w)*B,G=y-(me-y)*D,Z=w-(we-w)*D,z=Math.min(O*O+X*X,E*E+V*V),j=J?B:D,te=z+j*j*m,he=Ee<=te;let xe=r.join;if(xe===Ls.MITER&&Ee/m>g&&(xe=Ls.BEVEL),he)switch(xe){case Ls.MITER:{c.push(pe,Ae,G,Z);break}case Ls.BEVEL:{J?c.push(pe,Ae,y+_*D,w+R*D,pe,Ae,y+P*D,w+F*D):c.push(y-_*B,w-R*B,G,Z,y-P*B,w-F*B,G,Z),d+=2;break}case Ls.ROUND:{J?(c.push(pe,Ae,y+_*D,w+R*D),d+=la(y,w,y+_*D,w+R*D,y+P*D,w+F*D,c,!0)+4,c.push(pe,Ae,y+P*D,w+F*D)):(c.push(y-_*B,w-R*B,G,Z),d+=la(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+4,c.push(y-P*B,w-F*B,G,Z));break}}else{switch(c.push(y-_*B,w-R*B,y+_*D,w+R*D),xe){case Ls.MITER:{J?c.push(G,Z,G,Z):c.push(pe,Ae,pe,Ae),d+=2;break}case Ls.ROUND:{J?d+=la(y,w,y+_*D,w+R*D,y+P*D,w+F*D,c,!0)+2:d+=la(y,w,y-_*B,w-R*B,y-P*B,w-F*B,c,!1)+2;break}}c.push(y-P*B,w-F*B,y+P*D,w+F*D),d+=2}}v=i[(u-2)*2],b=i[(u-2)*2+1],y=i[(u-1)*2],w=i[(u-1)*2+1],_=-(b-w),R=v-y,I=Math.sqrt(_*_+R*R),_/=I,R/=I,_*=p,R*=p,c.push(y-_*B,w-R*B,y+_*D,w+R*D),h||(r.cap===Ur.ROUND?d+=la(y-_*(B-D)*.5,w-R*(B-D)*.5,y-_*B,w-R*B,y+_*D,w+R*D,c,!1)+2:r.cap===Ur.SQUARE&&(d+=bv(y,w,_,R,B,D,!1,c)));const U=e.indices,L=Co.epsilon*Co.epsilon;for(let N=f;N0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,n=null){const r=new Eh(e,t,i,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new Eh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=n.lineStyle,n.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],n=i.style);for(let h=this.shapeIndex;h65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&o===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=o?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=Sc.pop(),n||(n=new qf,n.texArray=new Qf),this.drawCalls.push(n)),n.start=c,n.size=0,n.texArray.count=0,n.type=l),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=an.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,c+=d.size,o=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,o,d.attribSize,d.attribStart)}yt._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),a=new Float32Array(r),o=new Uint32Array(r);let h=0;for(let l=0;l0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new Ca,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new Ca,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,n=i[i.length-2],r=i[i.length-1];return(n!==e||r!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),bp.curveTo(e,t,i,n,r),this}bezierCurveTo(e,t,i,n,r,a){return this._initCurve(),xp.curveTo(e,t,i,n,r,a,this.currentPath.points),this}arcTo(e,t,i,n,r){this._initCurve(e,t);const a=this.currentPath.points,o=xv.curveTo(e,t,i,n,r,a);if(o){const{cx:h,cy:l,radius:c,startAngle:u,endAngle:d,anticlockwise:f}=o;this.arc(h,l,c,u,d,f)}return this}arc(e,t,i,n,r,a=!1){if(n===r)return this;if(!a&&r<=n?r+=vh:a&&n<=r&&(n+=vh),r-n===0)return this;const o=e+Math.cos(n)*i,h=t+Math.sin(n)*i,l=this._geometry.closePointEps;let c=this.currentPath?this.currentPath.points:null;if(c){const u=Math.abs(c[c.length-2]-o),d=Math.abs(c[c.length-1]-h);u0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,n){return this.drawShape(new Tt(e,t,i,n))}drawRoundedRect(e,t,i,n,r){return this.drawShape(new wu(e,t,i,n,r))}drawCircle(e,t,i){return this.drawShape(new xu(e,t,i))}drawEllipse(e,t,i,n){return this.drawShape(new bu(e,t,i,n))}drawPolygon(...e){let t,i=!0;const n=e[0];n.points?(i=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new Ca(t);return r.closeStroke=i,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===Hi.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let n=0;ni&&!e.autoResize&&(a=i);let o=e._buffers;o||(o=e._buffers=this.generateBuffers(e));const h=t[0]._texture.baseTexture,l=h.alphaMode>0;this.state.blendMode=Jx(e.blendMode,l),r.state.set(this.state);const c=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=Wt.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,l).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=h,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=o.length&&o.push(this._generateOneMoreBuffer(e));const g=o[p];g.uploadDynamic(t,f,m);const v=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[a]=l,n[a+r]=l,n[a+r*2]=l,n[a+r*3]=l,a+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}e1.extension={name:"particle",type:Ge.RendererPlugin};et.add(e1);var Au=(s=>(s[s.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",s[s.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",s))(Au||{});const _c={willReadFrequently:!0},gn=class at{static get experimentalLetterSpacingSupported(){let e=at._experimentalLetterSpacingSupported;if(e!==void 0){const t=We.ADAPTER.getCanvasRenderingContext2D().prototype;e=at._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,i,n,r,a,o,h,l){this.text=e,this.style=t,this.width=i,this.height=n,this.lines=r,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=h,this.fontProperties=l}static measureText(e,t,i,n=at._canvas){i=i??t.wordWrap;const r=t.toFontString(),a=at.measureFont(r);a.fontSize===0&&(a.fontSize=t.fontSize,a.ascent=t.fontSize);const o=n.getContext("2d",_c);o.font=r;const h=(i?at.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),l=new Array(h.length);let c=0;for(let p=0;p0&&(n?r-=t:r+=(at.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,i=at._canvas){const n=i.getContext("2d",_c);let r=0,a="",o="";const h=Object.create(null),{letterSpacing:l,whiteSpace:c}=t,u=at.collapseSpaces(c),d=at.collapseNewlines(c);let f=!u;const p=t.wordWrapWidth+l,m=at.tokenize(e);for(let g=0;gp)if(a!==""&&(o+=at.addLine(a),a="",r=0),at.canBreakWords(v,t.breakWords)){const y=at.wordWrapSplit(v);for(let w=0;wp&&(o+=at.addLine(a),f=!1,a="",r=0),a+=A,r+=R}}else{a.length>0&&(o+=at.addLine(a),a="",r=0);const y=g===m.length-1;o+=at.addLine(v,!y),f=!1,a="",r=0}else b+r>p&&(f=!1,o+=at.addLine(a),a="",r=0),(a.length>0||!at.isBreakingSpace(v)||f)&&(a+=v,r+=b)}return o+=at.addLine(a,!1),o}static addLine(e,t=!0){return e=at.trimRight(e),e=t?`${e} -`:e,e}static getFromCache(e,t,i,n){let r=i[e];return typeof r!="number"&&(r=at._measureText(e,t,n)+t,i[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const i=e[t];if(!at.isBreakingSpace(i))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:at._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:at._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let i="";if(typeof e!="string")return t;for(let n=0;no;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return e=>[...s.segment(e)].map(t=>t.segment)}return s=>[...s]})(),gn.experimentalLetterSpacing=!1,gn._fonts={},gn._newlines=[10,13],gn._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let Rr=gn;const sI=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],t1=class ll{constructor(e){this.styleID=0,this.reset(),df(this,e,e)}clone(){const e={};return df(e,this,ll.defaultStyle),new ll(e)}reset(){df(this,ll.defaultStyle,ll.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=uf(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=uf(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){nI(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=uf(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let i=t.length-1;i>=0;i--){let n=t[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!sI.includes(n)&&(n=`"${n}"`),t[i]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};t1.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Au.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let Wr=t1;function uf(s){const e=Wt.shared,t=i=>{const n=e.setValue(i);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(s)?s.map(t):t(s)}function nI(s,e){if(!Array.isArray(s)||!Array.isArray(e)||s.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const v=m+d,b=i.lineHeight*(f+1);let y=v;f+10}}function oI(s,e){var i;let t=!1;if((i=s==null?void 0:s._textures)!=null&&i.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(dI),this.registerFindHook(fI),this.registerFindHook(oI),this.registerFindHook(lI),this.registerFindHook(cI),this.registerUploadHook(hI),this.registerUploadHook(uI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,us.system.addOnce(this.tick,this,ka.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let i=0,n=this.uploadHooks.length;i=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&us.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};s1.uploadsPerFrame=4;let bm=s1;Object.defineProperties(We,{UPLOADS_PER_FRAME:{get(){return bm.uploadsPerFrame},set(s){Ot("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),bm.uploadsPerFrame=s}}});function r1(s,e){return e instanceof vt?(e._glTextures[s.CONTEXT_UID]||s.texture.bind(e),!0):!1}function mI(s,e){if(!(e instanceof vs))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:i}=t;for(let n=0;ni&&!e.autoResize&&(a=i);let o=e._buffers;o||(o=e._buffers=this.generateBuffers(e));const h=t[0]._texture.baseTexture,l=h.alphaMode>0;this.state.blendMode=Zx(e.blendMode,l),r.state.set(this.state);const c=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=jt.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,l).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=h,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=o.length&&o.push(this._generateOneMoreBuffer(e));const g=o[p];g.uploadDynamic(t,f,m);const v=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[a]=l,n[a+r]=l,n[a+r*2]=l,n[a+r*3]=l,a+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}Qb.extension={name:"particle",type:He.RendererPlugin};tt.add(Qb);var Tu=(s=>(s[s.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",s[s.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",s))(Tu||{});const Mc={willReadFrequently:!0},vn=class ot{static get experimentalLetterSpacingSupported(){let e=ot._experimentalLetterSpacingSupported;if(e!==void 0){const t=We.ADAPTER.getCanvasRenderingContext2D().prototype;e=ot._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,i,n,r,a,o,h,l){this.text=e,this.style=t,this.width=i,this.height=n,this.lines=r,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=h,this.fontProperties=l}static measureText(e,t,i,n=ot._canvas){i=i??t.wordWrap;const r=t.toFontString(),a=ot.measureFont(r);a.fontSize===0&&(a.fontSize=t.fontSize,a.ascent=t.fontSize);const o=n.getContext("2d",Mc);o.font=r;const h=(i?ot.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),l=new Array(h.length);let c=0;for(let p=0;p0&&(n?r-=t:r+=(ot.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,i=ot._canvas){const n=i.getContext("2d",Mc);let r=0,a="",o="";const h=Object.create(null),{letterSpacing:l,whiteSpace:c}=t,u=ot.collapseSpaces(c),d=ot.collapseNewlines(c);let f=!u;const p=t.wordWrapWidth+l,m=ot.tokenize(e);for(let g=0;gp)if(a!==""&&(o+=ot.addLine(a),a="",r=0),ot.canBreakWords(v,t.breakWords)){const y=ot.wordWrapSplit(v);for(let w=0;wp&&(o+=ot.addLine(a),f=!1,a="",r=0),a+=A,r+=R}}else{a.length>0&&(o+=ot.addLine(a),a="",r=0);const y=g===m.length-1;o+=ot.addLine(v,!y),f=!1,a="",r=0}else b+r>p&&(f=!1,o+=ot.addLine(a),a="",r=0),(a.length>0||!ot.isBreakingSpace(v)||f)&&(a+=v,r+=b)}return o+=ot.addLine(a,!1),o}static addLine(e,t=!0){return e=ot.trimRight(e),e=t?`${e} +`:e,e}static getFromCache(e,t,i,n){let r=i[e];return typeof r!="number"&&(r=ot._measureText(e,t,n)+t,i[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const i=e[t];if(!ot.isBreakingSpace(i))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:ot._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:ot._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let i="";if(typeof e!="string")return t;for(let n=0;no;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return e=>[...s.segment(e)].map(t=>t.segment)}return s=>[...s]})(),vn.experimentalLetterSpacing=!1,vn._fonts={},vn._newlines=[10,13],vn._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let Ir=vn;const iI=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],e1=class ol{constructor(e){this.styleID=0,this.reset(),uf(this,e,e)}clone(){const e={};return uf(e,this,ol.defaultStyle),new ol(e)}reset(){uf(this,ol.defaultStyle,ol.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=hf(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=hf(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){sI(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=hf(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let i=t.length-1;i>=0;i--){let n=t[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!iI.includes(n)&&(n=`"${n}"`),t[i]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};e1.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Tu.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let jr=e1;function hf(s){const e=jt.shared,t=i=>{const n=e.setValue(i);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(s)?s.map(t):t(s)}function sI(s,e){if(!Array.isArray(s)||!Array.isArray(e)||s.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const v=m+d,b=i.lineHeight*(f+1);let y=v;f+10}}function aI(s,e){var i;let t=!1;if((i=s==null?void 0:s._textures)!=null&&i.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(uI),this.registerFindHook(dI),this.registerFindHook(aI),this.registerFindHook(oI),this.registerFindHook(lI),this.registerUploadHook(cI),this.registerUploadHook(hI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,ds.system.addOnce(this.tick,this,Oa.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let i=0,n=this.uploadHooks.length;i=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&ds.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};i1.uploadsPerFrame=4;let xm=i1;Object.defineProperties(We,{UPLOADS_PER_FRAME:{get(){return xm.uploadsPerFrame},set(s){kt("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),xm.uploadsPerFrame=s}}});function n1(s,e){return e instanceof yt?(e._glTextures[s.CONTEXT_UID]||s.texture.bind(e),!0):!1}function fI(s,e){if(!(e instanceof ys))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:i}=t;for(let n=0;n1?tn.from(vI,gI,t):tn.from(Av,yI,t)}render(e){const t=this.renderer,i=this.quad;let n=i.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,a=e.uvRespectAnchor?e.anchor.y:0;n=i.uvs,n[0]=n[6]=-r,n[1]=n[3]=-a,n[2]=n[4]=1-r,n[5]=n[7]=1-a,i.invalidate();const o=e._texture,h=o.baseTexture,l=h.alphaMode>0,c=e.tileTransform.localTransform,u=e.uvMatrix;let d=h.isPowerOfTwo&&o.frame.width===h.width&&o.frame.height===h.height;d&&(h._glTextures[t.CONTEXT_UID]?d=h.wrapMode!==Js.CLAMP:h.wrapMode===Js.CLAMP&&(h.wrapMode=Js.REPEAT));const f=d?this.simpleShader:this.shader,p=o.width,m=o.height,g=e._width,v=e._height;Mc.set(c.a*p/g,c.b*p/v,c.c*m/g,c.d*m/v,c.tx/g,c.ty/v),Mc.invert(),d?Mc.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=Mc.toArray(!0),f.uniforms.uColor=Wt.shared.setValue(e.tint).premultiply(e.worldAlpha,l).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=o,t.shader.bind(f),t.geometry.bind(i),this.state.blendMode=Jx(e.blendMode,l),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}o1.extension={name:"tilingSprite",type:Ge.RendererPlugin};et.add(o1);const l1=class cl{constructor(e,t,i){this.linkedSheets=[],(e instanceof vt||e instanceof pt)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:n,data:r,resolutionFilename:a=null,cachePrefix:o=""}=e;this.cachePrefix=o,this._texture=n instanceof pt?n:null,this.baseTexture=n instanceof vt?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const h=this.baseTexture.resource;this.resolution=this._updateResolution(a||(h?h.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=mr(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=cl.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=cl.BATCH_SIZE;for(;t-e{this._batchIndex*cl.BATCH_SIZE{i[n]=e}),Object.keys(e.textures).forEach(n=>{i[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=wi.dirname(s[0]);e.linkedSheets.forEach((r,a)=>{Object.assign(i,c1([`${n}/${e.data.meta.related_multi_packs[a]}`],r,!0))})}return i}const wI={extension:Ge.Asset,cache:{test:s=>s instanceof Ev,getCacheableAssets:(s,e)=>c1(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&bI.includes(i)},parse:s=>{var t;const e=s.split(".");return{resolution:parseFloat(((t=We.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:Ge.LoadParser,priority:Es.Normal},async testParse(s,e){return wi.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){var c,u;const{texture:i,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let a=wi.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let o;if(i&&i.baseTexture)o=i;else{const d=_h(a+(n??s.meta.image),e.src);o=(await t.load([d]))[d]}const h=new Ev({texture:o.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:r});await h.parse();const l=(c=s==null?void 0:s.meta)==null?void 0:c.related_multi_packs;if(Array.isArray(l)){const d=[];for(const p of l){if(typeof p!="string")continue;let m=a+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=_h(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);h.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[h].concat(h.linkedSheets.filter(m=>m!==p))})}return h},unload(s){s.destroy(!0)}}};et.add(wI);class Ih{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class zc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const a=t[r].match(/^[a-z]+/gm)[0],o=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),h={};for(const l in o){const c=o[l].split("="),u=c[0],d=c[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;h[u]=p}i[a].push(h)}const n=new Ih;return i.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),i.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),i.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),i.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),i.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),i.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class wm{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new Ih,i=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),a=e.getElementsByTagName("char"),o=e.getElementsByTagName("kerning"),h=e.getElementsByTagName("distanceField");for(let l=0;l")?wm.test(We.ADAPTER.parseXML(e)):!1}static parse(e){return wm.parse(We.ADAPTER.parseXML(e))}}const ff=[zc,wm,Sm];function SI(s){for(let e=0;e=h-F*a){if(m===0)throw new Error(`[BitmapFont] textureHeight ${h}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${_}')`);--M,g=null,v=null,b=null,m=0,p=0,y=0;continue}if(y=Math.max(F+R.fontProperties.descent,y),I*a+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${_}')`);--M,m+=y*a,m=Math.ceil(m),p=0,y=0;continue}MI(g,v,R,p,m,a,u);const k=qc(R.text);f.char.push({id:k,page:w.length-1,x:p/a,y:m/a,width:I,height:F,xoffset:0,yoffset:0,xadvance:P-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(I+2*r)*a,p=Math.ceil(p)}if(!(i!=null&&i.skipKerning))for(let M=0,_=c.length;M<_;M++){const R=c[M];for(let P=0;P<_;P++){const F=c[P],I=v.measureText(R).width,k=v.measureText(F).width,B=v.measureText(R+F).width-(I+k);B&&f.kerning.push({first:qc(R),second:qc(F),amount:B})}}const A=new vn(f,w,!0);return vn.available[e]!==void 0&&vn.uninstall(e),vn.available[e]=A,A}};Ar.ALPHA=[["a","z"],["A","Z"]," "],Ar.NUMERIC=[["0","9"]],Ar.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],Ar.ASCII=[[" ","~"]],Ar.defaultOptions={resolution:1,textureWidth:512,textureHeight:512,padding:4,chars:Ar.ALPHANUMERIC},Ar.available={};let Er=Ar;var AI=`// Pixi texture info\r +`;const _c=new li;class a1 extends Su{constructor(e){super(e),e.runners.contextChange.add(this),this.quad=new ub,this.state=Un.for2d()}contextChange(){const e=this.renderer,t={globals:e.globalUniforms};this.simpleShader=cn.from(Tv,yI,t),this.shader=e.context.webGLVersion>1?cn.from(gI,pI,t):cn.from(Tv,vI,t)}render(e){const t=this.renderer,i=this.quad;let n=i.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,a=e.uvRespectAnchor?e.anchor.y:0;n=i.uvs,n[0]=n[6]=-r,n[1]=n[3]=-a,n[2]=n[4]=1-r,n[5]=n[7]=1-a,i.invalidate();const o=e._texture,h=o.baseTexture,l=h.alphaMode>0,c=e.tileTransform.localTransform,u=e.uvMatrix;let d=h.isPowerOfTwo&&o.frame.width===h.width&&o.frame.height===h.height;d&&(h._glTextures[t.CONTEXT_UID]?d=h.wrapMode!==an.CLAMP:h.wrapMode===an.CLAMP&&(h.wrapMode=an.REPEAT));const f=d?this.simpleShader:this.shader,p=o.width,m=o.height,g=e._width,v=e._height;_c.set(c.a*p/g,c.b*p/v,c.c*m/g,c.d*m/v,c.tx/g,c.ty/v),_c.invert(),d?_c.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=_c.toArray(!0),f.uniforms.uColor=jt.shared.setValue(e.tint).premultiply(e.worldAlpha,l).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=o,t.shader.bind(f),t.geometry.bind(i),this.state.blendMode=Zx(e.blendMode,l),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}a1.extension={name:"tilingSprite",type:He.RendererPlugin};tt.add(a1);const o1=class ll{constructor(e,t,i){this.linkedSheets=[],(e instanceof yt||e instanceof gt)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:n,data:r,resolutionFilename:a=null,cachePrefix:o=""}=e;this.cachePrefix=o,this._texture=n instanceof gt?n:null,this.baseTexture=n instanceof yt?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const h=this.baseTexture.resource;this.resolution=this._updateResolution(a||(h?h.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=pr(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=ll.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=ll.BATCH_SIZE;for(;t-e{this._batchIndex*ll.BATCH_SIZE{i[n]=e}),Object.keys(e.textures).forEach(n=>{i[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=wi.dirname(s[0]);e.linkedSheets.forEach((r,a)=>{Object.assign(i,l1([`${n}/${e.data.meta.related_multi_packs[a]}`],r,!0))})}return i}const bI={extension:He.Asset,cache:{test:s=>s instanceof Av,getCacheableAssets:(s,e)=>l1(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&xI.includes(i)},parse:s=>{var t;const e=s.split(".");return{resolution:parseFloat(((t=We.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:He.LoadParser,priority:Is.Normal},async testParse(s,e){return wi.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){var c,u;const{texture:i,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let a=wi.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let o;if(i&&i.baseTexture)o=i;else{const d=Mh(a+(n??s.meta.image),e.src);o=(await t.load([d]))[d]}const h=new Av({texture:o.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:r});await h.parse();const l=(c=s==null?void 0:s.meta)==null?void 0:c.related_multi_packs;if(Array.isArray(l)){const d=[];for(const p of l){if(typeof p!="string")continue;let m=a+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=Mh(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);h.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[h].concat(h.linkedSheets.filter(m=>m!==p))})}return h},unload(s){s.destroy(!0)}}};tt.add(bI);class Ih{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class zc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const a=t[r].match(/^[a-z]+/gm)[0],o=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),h={};for(const l in o){const c=o[l].split("="),u=c[0],d=c[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;h[u]=p}i[a].push(h)}const n=new Ih;return i.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),i.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),i.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),i.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),i.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),i.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class bm{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new Ih,i=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),a=e.getElementsByTagName("char"),o=e.getElementsByTagName("kerning"),h=e.getElementsByTagName("distanceField");for(let l=0;l")?bm.test(We.ADAPTER.parseXML(e)):!1}static parse(e){return bm.parse(We.ADAPTER.parseXML(e))}}const df=[zc,bm,wm];function wI(s){for(let e=0;e=h-F*a){if(m===0)throw new Error(`[BitmapFont] textureHeight ${h}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${_}')`);--T,g=null,v=null,b=null,m=0,p=0,y=0;continue}if(y=Math.max(F+R.fontProperties.descent,y),I*a+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${_}')`);--T,m+=y*a,m=Math.ceil(m),p=0,y=0;continue}MI(g,v,R,p,m,a,u);const k=qc(R.text);f.char.push({id:k,page:w.length-1,x:p/a,y:m/a,width:I,height:F,xoffset:0,yoffset:0,xadvance:P-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(I+2*r)*a,p=Math.ceil(p)}if(!(i!=null&&i.skipKerning))for(let T=0,_=c.length;T<_;T++){const R=c[T];for(let P=0;P<_;P++){const F=c[P],I=v.measureText(R).width,k=v.measureText(F).width,B=v.measureText(R+F).width-(I+k);B&&f.kerning.push({first:qc(R),second:qc(F),amount:B})}}const A=new yn(f,w,!0);return yn.available[e]!==void 0&&yn.uninstall(e),yn.available[e]=A,A}};Tr.ALPHA=[["a","z"],["A","Z"]," "],Tr.NUMERIC=[["0","9"]],Tr.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],Tr.ASCII=[[" ","~"]],Tr.defaultOptions={resolution:1,textureWidth:512,textureHeight:512,padding:4,chars:Tr.ALPHANUMERIC},Tr.available={};let Ar=Tr;var TI=`// Pixi texture info\r varying vec2 vTextureCoord;\r uniform sampler2D uSampler;\r \r @@ -1140,7 +1140,7 @@ void main(void) {\r // NPM Textures, NPM outputs\r gl_FragColor = vec4(uColor.rgb, coverage);\r }\r -`,EI=`// Mesh material default fragment\r +`,AI=`// Mesh material default fragment\r attribute vec2 aVertexPosition;\r attribute vec2 aTextureCoord;\r \r @@ -1156,17 +1156,17 @@ void main(void)\r \r vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r }\r -`;const Cv=[],Iv=[],Rv=[],CI=class u1 extends ji{constructor(e,t={}){super();const{align:i,tint:n,maxWidth:r,letterSpacing:a,fontName:o,fontSize:h}=Object.assign({},u1.styleDefaults,t);if(!Er.available[o])throw new Error(`Missing BitmapFont "${o}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=i,this._tintColor=new Wt(n),this._font=void 0,this._fontName=o,this._fontSize=h,this.text=e,this._maxWidth=r,this._maxLineHeight=0,this._letterSpacing=a,this._anchor=new ir(()=>{this.dirty=!0},this,0,0),this._roundPixels=We.ROUND_PIXELS,this.dirty=!0,this._resolution=We.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var I;const e=Er.available[this._fontName],t=this.fontSize,i=t/e.size,n=new Xt,r=[],a=[],o=[],h=this._text.replace(/(?:\r\n|\r)/g,` -`)||" ",l=h1(h),c=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?Cv:Iv;let d=null,f=0,p=0,m=0,g=-1,v=0,b=0,y=0,w=0;for(let k=0;k0&&n.x>c&&(++b,xo(r,1+g-b,1+k-g),k=g,g=-1,a.push(v),o.push(r.length>0?r[r.length-1].prevSpaces:0),p=Math.max(p,v),m++,n.x=0,n.y+=e.lineHeight,d=null,w=0)}const A=l[l.length-1];A!=="\r"&&A!==` -`&&(/(?:\s)/.test(A)&&(f=v),a.push(f),p=Math.max(p,f),o.push(-1));const M=[];for(let k=0;k<=m;k++){let B=0;this._align==="right"?B=p-a[k]:this._align==="center"?B=(p-a[k])/2:this._align==="justify"&&(B=o[k]<0?0:(p-a[k])/o[k]),M.push(B)}const _=r.length,R={},P=[],F=this._activePagesMeshData;u.push(...F);for(let k=0;k<_;k++){const B=r[k].texture,D=B.baseTexture.uid;if(!R[D]){let U=u.pop();if(!U){const N=new _p;let O,X;e.distanceFieldType==="none"?(O=new Ch(pt.EMPTY),X=dt.NORMAL):(O=new Ch(pt.EMPTY,{program:Pn.from(EI,AI),uniforms:{uFWidth:0}}),X=dt.NORMAL_NPM);const E=new Dl(N,O);E.blendMode=X,U={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:E,vertices:null,uvs:null,indices:null}}U.index=0,U.indexCount=0,U.vertexCount=0,U.uvsCount=0,U.total=0;const{_textureCache:L}=this;L[D]=L[D]||new pt(B.baseTexture),U.mesh.texture=L[D],U.mesh.tint=this._tintColor.value,P.push(U),R[D]=U}R[D].total++}for(let k=0;k6*D)||B.vertices.lengtht[n.mesh.texture.baseTexture.uid]).forEach(n=>{n.mesh.texture=pt.EMPTY});for(const n in t)t[n].destroy(),delete t[n];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(e)}};CI.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const II=[".xml",".fnt"],RI={extension:{type:Ge.LoadParser,priority:Es.Normal},name:"loadBitmapFont",test(s){return II.includes(wi.extname(s).toLowerCase())},async testParse(s){return zc.test(s)||Sm.test(s)},async parse(s,e,t){const i=zc.test(s)?zc.parse(s):Sm.parse(s),{src:n}=e,{page:r}=i,a=[];for(let l=0;lo[l]);return Er.install(i,h,!0)},async load(s,e){return(await We.ADAPTER.fetch(s)).text()},unload(s){s.destroy()}};et.add(RI);const _m=class oo extends Wr{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(e){return new oo(Object.keys(oo.defaultOptions).reduce((t,i)=>({...t,[i]:e[i]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(e=>{URL.revokeObjectURL(e.src),e.refs--,e.refs===0&&(e.fontFace&&document.fonts.delete(e.fontFace),delete oo.availableFonts[e.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(e,t={}){const{availableFonts:i}=oo;if(i[e]){const n=i[e];return this._fonts.push(n),n.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return We.ADAPTER.fetch(e).then(n=>n.blob()).then(async n=>new Promise((r,a)=>{const o=URL.createObjectURL(n),h=new FileReader;h.onload=()=>r([o,h.result]),h.onerror=a,h.readAsDataURL(n)})).then(async([n,r])=>{const a=Object.assign({family:wi.basename(e,wi.extname(e)),weight:"normal",style:"normal",display:"auto",src:n,dataSrc:r,refs:1,originalUrl:e,fontFace:null},t);i[e]=a,this._fonts.push(a),this.styleID++;const o=new FontFace(a.family,`url(${a.src})`,{weight:a.weight,style:a.style,display:a.display});a.fontFace=o,await o.load(),document.fonts.add(o),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...e){const t=e.filter(i=>!this._overrides.includes(i));t.length>0&&(this._overrides.push(...t),this.styleID++)}removeOverride(...e){const t=e.filter(i=>this._overrides.includes(i));t.length>0&&(this._overrides=this._overrides.filter(i=>!t.includes(i)),this.styleID++)}toCSS(e){return[`transform: scale(${e})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce((e,t)=>`${e} +`;const Ev=[],Cv=[],Iv=[],EI=class h1 extends ji{constructor(e,t={}){super();const{align:i,tint:n,maxWidth:r,letterSpacing:a,fontName:o,fontSize:h}=Object.assign({},h1.styleDefaults,t);if(!Ar.available[o])throw new Error(`Missing BitmapFont "${o}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=i,this._tintColor=new jt(n),this._font=void 0,this._fontName=o,this._fontSize=h,this.text=e,this._maxWidth=r,this._maxLineHeight=0,this._letterSpacing=a,this._anchor=new sr(()=>{this.dirty=!0},this,0,0),this._roundPixels=We.ROUND_PIXELS,this.dirty=!0,this._resolution=We.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var I;const e=Ar.available[this._fontName],t=this.fontSize,i=t/e.size,n=new Ut,r=[],a=[],o=[],h=this._text.replace(/(?:\r\n|\r)/g,` +`)||" ",l=c1(h),c=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?Ev:Cv;let d=null,f=0,p=0,m=0,g=-1,v=0,b=0,y=0,w=0;for(let k=0;k0&&n.x>c&&(++b,yo(r,1+g-b,1+k-g),k=g,g=-1,a.push(v),o.push(r.length>0?r[r.length-1].prevSpaces:0),p=Math.max(p,v),m++,n.x=0,n.y+=e.lineHeight,d=null,w=0)}const A=l[l.length-1];A!=="\r"&&A!==` +`&&(/(?:\s)/.test(A)&&(f=v),a.push(f),p=Math.max(p,f),o.push(-1));const T=[];for(let k=0;k<=m;k++){let B=0;this._align==="right"?B=p-a[k]:this._align==="center"?B=(p-a[k])/2:this._align==="justify"&&(B=o[k]<0?0:(p-a[k])/o[k]),T.push(B)}const _=r.length,R={},P=[],F=this._activePagesMeshData;u.push(...F);for(let k=0;k<_;k++){const B=r[k].texture,D=B.baseTexture.uid;if(!R[D]){let U=u.pop();if(!U){const N=new Sp;let O,X;e.distanceFieldType==="none"?(O=new Ch(gt.EMPTY),X=dt.NORMAL):(O=new Ch(gt.EMPTY,{program:kn.from(AI,TI),uniforms:{uFWidth:0}}),X=dt.NORMAL_NPM);const E=new Ll(N,O);E.blendMode=X,U={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:E,vertices:null,uvs:null,indices:null}}U.index=0,U.indexCount=0,U.vertexCount=0,U.uvsCount=0,U.total=0;const{_textureCache:L}=this;L[D]=L[D]||new gt(B.baseTexture),U.mesh.texture=L[D],U.mesh.tint=this._tintColor.value,P.push(U),R[D]=U}R[D].total++}for(let k=0;k6*D)||B.vertices.lengtht[n.mesh.texture.baseTexture.uid]).forEach(n=>{n.mesh.texture=gt.EMPTY});for(const n in t)t[n].destroy(),delete t[n];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(e)}};EI.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const CI=[".xml",".fnt"],II={extension:{type:He.LoadParser,priority:Is.Normal},name:"loadBitmapFont",test(s){return CI.includes(wi.extname(s).toLowerCase())},async testParse(s){return zc.test(s)||wm.test(s)},async parse(s,e,t){const i=zc.test(s)?zc.parse(s):wm.parse(s),{src:n}=e,{page:r}=i,a=[];for(let l=0;lo[l]);return Ar.install(i,h,!0)},async load(s,e){return(await We.ADAPTER.fetch(s)).text()},unload(s){s.destroy()}};tt.add(II);const Sm=class ao extends jr{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(e){return new ao(Object.keys(ao.defaultOptions).reduce((t,i)=>({...t,[i]:e[i]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(e=>{URL.revokeObjectURL(e.src),e.refs--,e.refs===0&&(e.fontFace&&document.fonts.delete(e.fontFace),delete ao.availableFonts[e.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(e,t={}){const{availableFonts:i}=ao;if(i[e]){const n=i[e];return this._fonts.push(n),n.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return We.ADAPTER.fetch(e).then(n=>n.blob()).then(async n=>new Promise((r,a)=>{const o=URL.createObjectURL(n),h=new FileReader;h.onload=()=>r([o,h.result]),h.onerror=a,h.readAsDataURL(n)})).then(async([n,r])=>{const a=Object.assign({family:wi.basename(e,wi.extname(e)),weight:"normal",style:"normal",display:"auto",src:n,dataSrc:r,refs:1,originalUrl:e,fontFace:null},t);i[e]=a,this._fonts.push(a),this.styleID++;const o=new FontFace(a.family,`url(${a.src})`,{weight:a.weight,style:a.style,display:a.display});a.fontFace=o,await o.load(),document.fonts.add(o),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...e){const t=e.filter(i=>!this._overrides.includes(i));t.length>0&&(this._overrides.push(...t),this.styleID++)}removeOverride(...e){const t=e.filter(i=>this._overrides.includes(i));t.length>0&&(this._overrides=this._overrides.filter(i=>!t.includes(i)),this.styleID++)}toCSS(e){return[`transform: scale(${e})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce((e,t)=>`${e} @font-face { font-family: "${t.family}"; src: url('${t.dataSrc}'); font-weight: ${t.weight}; font-style: ${t.style}; font-display: ${t.display}; - }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(e){this._stylesheet!==e&&(this._stylesheet=e,this.styleID++)}normalizeColor(e){return Array.isArray(e)&&(e=b2(e)),typeof e=="number"?x2(e):e}dropShadowToCSS(){let e=this.normalizeColor(this.dropShadowColor);const t=this.dropShadowAlpha,i=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),n=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);e.startsWith("#")&&t<1&&(e+=(t*255|0).toString(16).padStart(2,"0"));const r=`${i}px ${n}px`;return this.dropShadowBlur>0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,oo.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=We.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};_m.availableFonts={},_m.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let mf=_m;const Tc=class lo extends Zr{constructor(e="",t={}){super(pt.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,n=pt.from(i,{scaleMode:We.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new Tt,n.trim=new Tt,this.texture=n;const r="http://www.w3.org/2000/svg",a="http://www.w3.org/1999/xhtml",o=document.createElementNS(r,"svg"),h=document.createElementNS(r,"foreignObject"),l=document.createElementNS(a,"div"),c=document.createElementNS(a,"style");h.setAttribute("width","10000"),h.setAttribute("height","10000"),h.style.overflow="hidden",o.appendChild(h),this.maxWidth=lo.defaultMaxWidth,this.maxHeight=lo.defaultMaxHeight,this._domElement=l,this._styleElement=c,this._svgRoot=o,this._foreignObject=h,this._foreignObject.appendChild(c),this._foreignObject.appendChild(l),this._image=i,this._loadImage=new Image,this._autoResolution=lo.defaultAutoResolution,this._resolution=lo.defaultResolution??We.RESOLUTION,this.text=e,this.style=t}measureText(e){var c,u;const{text:t,style:i,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(n)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:a,height:o}=r;(a>this.maxWidth||o>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const h=Math.min(this.maxWidth,Math.ceil(a)),l=Math.min(this.maxHeight,Math.ceil(o));return this._svgRoot.setAttribute("width",h.toString()),this._svgRoot.setAttribute("height",l.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:(c=this._style)==null?void 0:c.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:h+i.padding*2,height:l+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:a}=this.measureText();i.width=n.width=Math.ceil(Math.max(1,r)),i.height=n.height=Math.ceil(Math.max(1,a)),this._updateID++;const o=this._updateID;await new Promise(h=>{n.onload=async()=>{if(o/gi,"

").replace(/
/gi,"
").replace(/ /gi," ")}};Tc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},Tc.defaultMaxWidth=2024,Tc.defaultMaxHeight=2024,Tc.defaultAutoResolution=!0;function Rh(s,e){const t=Math.max(0,Number(s)||0),i=Math.max(0,Number(e)||0);return{inner:Math.min(t,i),outer:Math.max(t,i)}}function d1(s){const e=Math.max(0,Number(s.outerRectW)||0),t=Math.max(0,Number(s.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(s.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(s.innerRectH)||0)),outerW:e,outerH:t}}function PI(s,e,t,i,n){if(s==="random")return n();const r=Math.max(1,Math.round(t)),a=Math.max(0,Math.round(e))%r;return i?a/r:r<=1?.5:a/(r-1)}function Pv(s,e,t,i){const n=Math.sqrt(s*s+i()*(e*e-s*s));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function kI(s,e){const{innerW:t,innerH:i,outerW:n,outerH:r}=d1(s),a=Math.max(0,(n-t)/2),o=Math.max(0,(r-i)/2),h=a*r,l=t*o,c=h*2+l*2;if(c<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,v;return mtypeof B=="object"&&B!==null?{...B}:B):k);i&&(s.innerRadius=0,s.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),s.innerRectW=0,s.innerRectH=0,s.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),s.outerRectH=Math.max(0,Number.isFinite(a)?a:e.outerRectH),s.coneDirection=Number.isFinite(o)?o:90,s.emissionAngleMode=Number.isFinite(h)&&h>0?"random":"fixed",l==="cone"&&(s.spread=Math.max(0,Number(s.coneAngle)||0)),s.shapeRangeVersion=1),s.shape==="orbit"&&(s.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(s.emissionAngleMode)||(s.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(s.shape)&&s.emissionAngleMode==="radial"&&(s.emissionAngleMode="fixed"),s.shape!=="path"&&(s.emissionAngleMode==="path-normal"||s.emissionAngleMode==="path-tangent")&&(s.emissionAngleMode="fixed"),s.spawnPathId=Math.max(0,Math.round(Number(s.spawnPathId)||0)),s.spawnPathDistribution!=="fixed"&&s.spawnPathDistribution!=="random"&&(s.spawnPathDistribution="fixed"),s.innerRadius=Math.max(0,Number(s.innerRadius)||0),s.outerRadius=Math.max(s.innerRadius,Number(s.outerRadius)||0),s.innerRectW=Math.max(0,Number(s.innerRectW)||0),s.innerRectH=Math.max(0,Number(s.innerRectH)||0),s.outerRectW=Math.max(s.innerRectW,Number(s.outerRectW)||0),s.outerRectH=Math.max(s.innerRectH,Number(s.outerRectH)||0);const P=Array.from(new Set((Array.isArray(s.collisionColliderIds)?s.collisionColliderIds:[]).map(I=>Math.round(Number(I))).filter(I=>Number.isFinite(I)&&I>0)));(P.length!==s.collisionColliderIds.length||P.some((I,k)=>I!==s.collisionColliderIds[k]))&&(s.collisionColliderIds=P),s.streamBehavior!=="normal"&&s.streamBehavior!=="loop"&&(s.streamBehavior="normal"),(u||!Number.isFinite(s.loopDurationFrames))&&(s.loopDurationFrames=Math.ceil(Math.max(1/30,Number(s.duration)||1)*30)),s.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(s.loopDurationFrames))),typeof s.generateLoopStartAnimation!="boolean"&&(s.generateLoopStartAnimation=!1),typeof s.generateLoopEndAnimation!="boolean"&&(s.generateLoopEndAnimation=!1),typeof s.loopStartUseCustomDuration!="boolean"&&(s.loopStartUseCustomDuration=!1),typeof s.loopEndUseCustomDuration!="boolean"&&(s.loopEndUseCustomDuration=!1),s.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopStartDurationFrames)||30))),s.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopEndDurationFrames)||30))),(!Array.isArray(s.imageResources)||s.imageResources.length===0)&&(s.imageResources=Nl().imageResources);for(const I of s.imageResources){!I.texture&&s.texture&&(I.texture=s.texture),I.textureName||(I.textureName="star"),I.previewUrl==="/particles/star.png"&&(I.previewUrl="/images/star.png"),I.previewUrl||(I.previewUrl=I.textureName==="star"?"/images/star.png":""),I.imageMode!=="fixed"&&I.imageMode!=="sequence"&&(I.imageMode="fixed"),I.sequencePlayback==="once"?I.sequencePlayback="once-hold":I.sequencePlayback==="loop"?I.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(I.sequencePlayback)||(I.sequencePlayback="loop-forward"),Number.isFinite(I.sequenceFps)||(I.sequenceFps=30),I.sequenceFps=Math.min(120,Math.max(1,Number(I.sequenceFps)||30)),Array.isArray(I.sequenceFrames)||(I.sequenceFrames=[]);for(const k of I.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.scale)||(I.scale=1),Number.isFinite(I.anchorX)||(I.anchorX=.5),Number.isFinite(I.anchorY)||(I.anchorY=.5),I.colorMode!=="fixed"&&I.colorMode!=="random"&&I.colorMode!=="lifetime"&&(I.colorMode=s.colorOverLife?"lifetime":"fixed"),I.colorStart||(I.colorStart=s.colorStart||"#ffffff"),I.colorEnd||(I.colorEnd=s.colorEnd||I.colorStart),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=[{position:0,color:I.colorStart},{position:1,color:I.colorEnd}]),Object.prototype.hasOwnProperty.call(Pr,I.blend)||(I.blend=s.blend||"normal"),["off","fixed","curve"].includes(I.independentAlpha)||(I.independentAlpha=s.independentAlpha||"off"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(s.alphaScale)?s.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(I.alphaCurveMode)||(I.alphaCurveMode=s.curveMode||"跟随导出"),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(s.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(s.imageResources.length===1)s.imageResources[0].weight=100,s.imageResources[0].locked=!1;else if(c){const I=100/s.imageResources.length;s.imageResources.forEach((k,B)=>{k.weight=B===s.imageResources.length-1?100-I*(s.imageResources.length-1):I,k.locked=!1})}if(s.imageWeightVersion=1,d){const I=Number.isFinite(f)&&f!==0?f:980;s.gravity=I,s.gravityMin=I,s.gravityMax=I}if(p){const I=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);s.windMin=I?Math.hypot(m,g):100,s.windMax=s.windMin,s.windDirection=I?Math.atan2(-g,m)*180/Math.PI:0}v&&(s.forceStrength=Number.isFinite(b)&&b!==0?b:10),y&&(s.trailConfigVersion=3,s.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],s.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],s.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],s.trailGridRows=4,s.trailGridCols=4),(w||!s.trailResources.length)&&(s.trailResources=[{id:1,texture:M||null,textureName:_,previewUrl:R,weight:100,locked:!1,rotation:0,colorMode:s.trailColorMode,color:s.trailColor,colorGradient:s.trailColorGradient.map(I=>({...I})),blend:"normal",alphaMode:s.trailAlphaMode,alpha:s.trailAlpha,alphaCurve:s.trailAlphaCurve.map(I=>({...I})),boneCount:s.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:s.trailLength,lengthMin:s.trailLength,lengthMax:s.trailLength,widthSizeMode:"fixed",width:s.trailWidth,widthMin:s.trailWidth,widthMax:s.trailWidth,widthMode:s.trailWidthMode,lifeLengthEnabled:s.trailLifeLengthEnabled,lifeLengthCurve:s.trailLifeLengthCurve.map(I=>({...I})),shapeEnabled:s.trailShapeEnabled,shapeCurve:s.trailShapeCurve.map(I=>({...I}))}]);for(const I of s.trailResources)I.textureName||(I.textureName="trail"),I.previewUrl==="/trails/trail.png"&&(I.previewUrl="/images/trail.png"),I.previewUrl||(I.previewUrl="/images/trail.png"),Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.rotation)||(I.rotation=0),["particle","fixed","curve"].includes(I.colorMode)||(I.colorMode=s.trailColorMode||"particle"),I.color||(I.color=s.trailColor||"#ffffff"),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=(s.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(Pr,I.blend)||(I.blend="normal"),["particle","fixed","curve"].includes(I.alphaMode)||(I.alphaMode=s.trailAlphaMode||"particle"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(s.trailAlpha)?s.trailAlpha:1),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(s.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(I.boneCount)||(I.boneCount=Number.isFinite(s.trailBoneCount)?s.trailBoneCount:3),Number.isFinite(I.trailRatio)||(I.trailRatio=100),I.trailRatio=Math.min(100,Math.max(0,I.trailRatio)),["fixed","random"].includes(I.lengthMode)||(I.lengthMode="fixed"),Number.isFinite(I.length)||(I.length=Number.isFinite(s.trailLength)?s.trailLength:100),Number.isFinite(I.lengthMin)||(I.lengthMin=I.length),Number.isFinite(I.lengthMax)||(I.lengthMax=I.length),["fixed","random"].includes(I.widthSizeMode)||(I.widthSizeMode="fixed"),Number.isFinite(I.width)||(I.width=Number.isFinite(s.trailWidth)?s.trailWidth:100),Number.isFinite(I.widthMin)||(I.widthMin=I.width),Number.isFinite(I.widthMax)||(I.widthMax=I.width),["particle","fixed"].includes(I.widthMode)||(I.widthMode=s.trailWidthMode||"particle"),typeof I.lifeLengthEnabled!="boolean"&&(I.lifeLengthEnabled=!!s.trailLifeLengthEnabled),(!Array.isArray(I.lifeLengthCurve)||I.lifeLengthCurve.length<2)&&(I.lifeLengthCurve=(s.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof I.shapeEnabled!="boolean"&&(I.shapeEnabled=!!s.trailShapeEnabled),(!Array.isArray(I.shapeCurve)||I.shapeCurve.length<2)&&(I.shapeCurve=(s.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(s.trailResources.length===1&&(s.trailResources[0].weight=100,s.trailResources[0].locked=!1),A)for(const I of s.trailResources)I.alphaCurve=((F=I.alphaCurve)==null?void 0:F.length)>=2?I.alphaCurve:[{x:0,y:1},{x:1,y:1}];return s.trailResourceVersion=6,s}const Pr={normal:0,add:1,multiply:2,screen:3},BI=400;class LI extends ji{constructor(t,i=BI){super();x(this,"pool",[]);x(this,"cfg");x(this,"accumulator",0);x(this,"burstTimer",0);x(this,"_spawnSerial",0);x(this,"_elapsed",0);x(this,"_attractionEnabledAt",0);x(this,"_attractionWasEnabled",!1);x(this,"_emitterPos",null);x(this,"states",[]);x(this,"rng",Math.random);x(this,"_lastSeed",-1);x(this,"trailDebugGfx",new vs);x(this,"colliders",[]);x(this,"followSpawnX",0);x(this,"followSpawnY",0);x(this,"followSpawnAngle",0);x(this,"spawnPathSampler",null);x(this,"spawnPathClosed",!1);x(this,"followExportCurveMode","线性");x(this,"simulationTransform",null);this.cfg=zr(t),this._ensurePool(i),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=gf(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),a=i==="force"||i==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const o=[];for(let p=0;p0){const O=Math.max(1e-4,Math.abs(n.rootScaleX)),X=Math.max(1e-4,Math.abs(n.rootScaleY)),E=-(((h=this.simulationTransform)==null?void 0:h.rotation)??n.rootRotation)*Math.PI/180,V=Math.cos(E),q=Math.sin(E),W=((l=this.simulationTransform)==null?void 0:l.centerX)??n.centerX,J=((c=this.simulationTransform)==null?void 0:c.centerY)??n.centerY,K=W+V*O*m.x-q*X*m.y,fe=-J+q*O*m.x+V*X*m.y,me=K,we=-fe,Ee=n.forceCenterX-me,ge=n.forceCenterY-we,Te=Math.hypot(Ee,ge);if(Te>1e-4&&Te<=n.forceRadius){let G=1;n.forceFalloff==="linear"?G=1-Te/n.forceRadius:n.forceFalloff==="inverse"&&(G=Math.min(10,n.forceRadius/Math.max(Te,n.forceRadius*.1)));const Z=n.forceStrength*G*10,z=Ee/Te*Z,j=ge/Te*Z,te=z,he=-j;m.vx+=(V*te+q*he)/O*t,m.vy+=(-q*te+V*he)/X*t}}if(!m.collisionPaused&&n.damping>0){const O=Math.max(0,1-n.damping*t);m.vx*=O,m.vy*=O}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const O=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?O>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const E=Za(n,m.x,m.y,this.simulationTransform),V=n.attractionCenterX,q=n.attractionCenterY,W=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(V-E.x,q-E.y)<=W){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=E.x,m.attractionStartWorldY=E.y}m.attractionElapsed+=t;const J=Math.max(1e-4,n.attractionDuration),K=Math.min(1,m.attractionElapsed/J);let fe=Yi(m.attractionStartWorldX,V,K),me=Yi(m.attractionStartWorldY,q,K);if(n.attractionPath==="curve"){const ge=V-m.attractionStartWorldX,Te=q-m.attractionStartWorldY,G=Math.hypot(ge,Te);if(G>1e-4){const Z=G*.25*m.attractionCurveSide,z=(m.attractionStartWorldX+V)*.5-Te/G*Z,j=(m.attractionStartWorldY+q)*.5+ge/G*Z,te=1-K;fe=te*te*m.attractionStartWorldX+2*te*K*z+K*K*V,me=te*te*m.attractionStartWorldY+2*te*K*j+K*K*q}}const we=Math.hypot(V-fe,q-me);if(K>=1||we<=W){this.kill(p);continue}const Ee=kv(n,fe,me,this.simulationTransform);m.x=Ee.x,m.y=Ee.y,m.vx=0,m.vy=0}}const v=g,b=m.sprite,y=n.imageResources.find(O=>O.id===m.resourceId);if(y){const O=this.imageFrameState(y,m.maxLife-m.life);m.imageFrameIndex=O.index,b.texture=this.imageFrameTexture(y,m.imageFrameIndex),b.visible=O.visible}if(n.speedOverLifeEnabled){const O=Ac(pf(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,v,m.speedScaleTarget),1),X=m.speedScale===0?O:O/m.speedScale;m.vx*=X,m.vy*=X,m.speedScale=O}let w=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(w=Yi(n.rotationSpeedMin,n.rotationSpeedMax,bn(n.rotationOverLifeCurve,v))),m.rotation+=w*t;let A=m.x,M=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const O=m.maxLife-m.life,X=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,E=O*Math.max(0,n.noiseSpeed)*Math.PI*2;A+=(Math.sin(m.noisePhaseX+E)-Math.sin(m.noisePhaseX))*X,M+=(Math.sin(m.noisePhaseY+E*.83)-Math.sin(m.noisePhaseY))*X}b.x=A,b.y=M,b.rotation=-m.rotation*Math.PI/180;let _=1,R=1;n.scaleOverLifeEnabled&&(_=pf(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,v,m.scaleOverLifeX),R=n.scaleOverLifeAxisMode==="separate"?pf(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,v,m.scaleOverLifeY):_),b.scale.set(Ac(m.scaleStartX*_,1),Ac(m.scaleStartY*R,1));const P=n.alphaMode==="curve"?bn(n.alphaCurve,v,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;b.alpha=Ac((y==null?void 0:y.independentAlpha)==="fixed"?y.alpha:(y==null?void 0:y.independentAlpha)==="curve"?bn(y.alphaCurve,v,this.resolveCurveMode(y.alphaCurveMode)):P,1);const F=(y==null?void 0:y.colorStart)||"#ffffff",I=(y==null?void 0:y.colorMode)==="lifetime"?vf(y.colorGradient,v):(y==null?void 0:y.colorMode)==="random"?m.colorSample:Mo(F);b.tint=I,b.blendMode=Pr[(y==null?void 0:y.blend)||"normal"];const k=this.updateTrail(m,A,M,v,b),B=Za(n,A,M,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,U=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),L=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),N=k?{...k,bones:k.bones.map(O=>{const X=Za(n,O.x,O.y,this.simulationTransform);return{...O,worldX:X.x,worldY:X.y,worldRotation:D-O.rotation}})}:void 0;o.push({boneName:m.boneName,spawnId:m.spawnId,x:A,y:M,rotation:m.rotation,scaleX:b.scale.x,scaleY:b.scale.y,worldX:B.x,worldY:B.y,worldRotation:D+m.rotation,worldScaleX:b.scale.x*U,worldScaleY:b.scale.y*L,alpha:b.alpha,colorHex:I,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:b.visible,trailState:N,active:!0})}return this.states=o,o}ensureTrailMesh(t){const i=this.cfg,n=i.trailResources.find(g=>g.id===t.trailResourceId)||i.trailResources[0],r=(n==null?void 0:n.texture)||pt.EMPTY,a=Number(n==null?void 0:n.rotation)||0,o=Math.max(2,Math.min(16,Math.round(i.trailGridRows))),h=Math.max(2,Math.min(32,Math.round(i.trailGridCols))),l=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),c=`${o}:${h}:${l}:${(n==null?void 0:n.id)??0}:${a}`;if(t.trailMesh&&t.trailMeshSignature===c)return t.trailMesh.texture!==r&&(t.trailMesh.texture=r),t.trailMesh;t.trailMesh&&(this.removeChild(t.trailMesh),t.trailMesh.destroy()),t.trailMeshSignature&&t.trailMeshSignature!==c&&(t.trailHistory.length=0,t.trailBones.length=0);const u=new Float32Array(o*h*2),d=new Float32Array(o*h*2),f=[],p=[];for(let g=0;g.05?t.trailHistory.unshift({x:i,y:n}):(a.x=i,a.y=n);const o=Math.max(1,r)*1.5;let h=0,l=t.trailHistory.length;for(let c=1;c=o||c>=239){l=c+1;break}t.trailHistory.length>l&&(t.trailHistory.length=l)}sampleTrailBones(t,i,n){const r=Math.max(2,Math.min(16,Math.round(n))),a=t.trailHistory,o=[];if(!a.length)return o;let h=0;for(let c=1;c=u&&v>1e-4){const b=(u-d)/v;f={x:Yi(m.x,g.x,b),y:Yi(m.y,g.y,b)};break}d+=v}o.push({boneName:`${t.boneName}_trail_${c}`,x:f.x,y:f.y,rotation:0})}for(let c=0;c1){const c=o[0].rotation,d=(o[o.length-1].rotation-c+540)%360-180;for(let f=0;fu.id===i.resourceId)||r.trailResources[0];if(!(a!=null&&a.texture)||i.bones.length<2){n.visible=!1;return}t.trailResourceId=a.id,n.texture!==a.texture&&(n.texture=a.texture);const o=Math.max(2,Math.min(16,Math.round(r.trailGridRows))),h=Math.max(2,Math.min(32,Math.round(r.trailGridCols))),l=n.vertices,c=[];for(let u=0;u.5&&i.alpha>0}updateTrail(t,i,n,r,a){const o=this.cfg;if(!o.trail||!t.trailEnabled||t.trailSampledLength<=0||t.trailSampledWidth<=0){t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1);return}this.ensureTrailMesh(t);const h=o.trailResources.find(f=>f.id===t.trailResourceId)||o.trailResources[0];this.appendTrailPoint(t,i,n,t.trailSampledLength);const l=h!=null&&h.lifeLengthEnabled?Math.max(0,bn(h.lifeLengthCurve,r)):1,c=Math.max(0,t.trailSampledLength)*l;t.trailBones=this.sampleTrailBones(t,c,(h==null?void 0:h.boneCount)??3),t.trailBones[0]&&(t.trailBones[0].x=i,t.trailBones[0].y=n);const u=(h==null?void 0:h.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;t.trailCurrentWidth=Math.max(0,t.trailSampledWidth)*u,t.trailCurrentAlpha=(h==null?void 0:h.alphaMode)==="particle"?a.alpha:(h==null?void 0:h.alphaMode)==="curve"?bn(h.alphaCurve,r):(h==null?void 0:h.alpha)??1,t.trailCurrentColor=(h==null?void 0:h.colorMode)==="particle"?a.tint:(h==null?void 0:h.colorMode)==="curve"?vf(h.colorGradient,r):Mo((h==null?void 0:h.color)||"#ffffff");const d={bones:t.trailBones.map(f=>({...f})),activeBoneCount:t.trailBones.length,width:t.trailCurrentWidth,alpha:Math.min(1,Math.max(0,t.trailCurrentAlpha)),colorHex:t.trailCurrentColor,resourceId:t.trailResourceId};return this.skinTrailMesh(t,d),d}drawTrailMeshDebug(t){const i=this.trailDebugGfx;if(i.clear(),!t||!this.cfg.trail)return;const n=Math.max(2,Math.min(16,Math.round(this.cfg.trailGridRows))),r=Math.max(2,Math.min(32,Math.round(this.cfg.trailGridCols)));i.lineStyle(1,3790847,.72);for(const a of this.pool){const o=a.trailMesh;if(!(o!=null&&o.visible))continue;const h=o.vertices,l=(c,u)=>{const d=(c*n+u)*2;return{x:h[d],y:h[d+1]}};for(let c=0;c0&&this.spawnPathSampler){const o=this.estimatedEmissionCount(),h=PI(t.spawnPathDistribution,this._spawnSerial,o,this.spawnPathClosed,this.rng),l=this.spawnPathSampler(h);if(l)return{...this.applyFollowToOrigin(l.x+i,l.y+n),radialAngle:0,pathAngle:l.angle}}const r=FI(t,this.rng);return{...this.applyFollowToOrigin(i+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,i){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),a=Math.sin(n);return{x:this.followSpawnX+r*t-a*i,y:this.followSpawnY+a*t+r*i}}spawnOne(){const t=this.cfg;let i=this.pool.findIndex(w=>!w.active);if(i===-1)return;const n=this.spawnOrigin(),{x:r,y:a}=n,o=Ja(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),h=Ja(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),l=OI(t,n,this.followSpawnAngle,this.rng),c=this.pool[i],u=this.pickImageResource(),d=this._spawnSerial++;c.spawnId=d;const f=this.pickTrailResource(oa(t.seed,d,1540483477));c.noisePhaseX=oa(t.seed,d,1757159915)*Math.PI*2,c.noisePhaseY=oa(t.seed,d,48610963)*Math.PI*2,c.gravityStrength=t.useGravity&&t.gravityMode==="random"?Yi(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,c.windStrength=t.wind&&t.windMode==="random"?Yi(t.windMin,t.windMax,this.rng()):t.windMin,c.attractionActive=!1,c.attractionElapsed=0,c.collisionPaused=!1,c.attractionCurveSide=oa(t.seed,d,2738958700)<.5?-1:1,c.trailHistory.length=0,c.trailBones.length=0,c.trailCurrentWidth=0,c.trailCurrentAlpha=0,c.trailCurrentColor=16777215,c.trailResourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,v=oa(t.seed,d,668265261)*100,b=(w,A,M,_,R)=>{if(w!=="random")return Math.max(0,Number(A)||0);const P=Math.max(0,Math.min(Number(M)||0,Number(_)||0)),F=Math.max(0,Math.max(Number(M)||0,Number(_)||0));return Yi(P,F,oa(t.seed,d,R))};c.trailSampledLength=b(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),c.trailSampledWidth=b(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),c.trailEnabled=t.trail&&(g||v0&&c.trailSampledWidth>0,c.trailMesh&&(c.trailMesh.visible=!1),c.active=!0,c.life=o,c.maxLife=o,c.x=r,c.y=a,c.trailEnabled&&c.trailHistory.push({x:r,y:a}),c.vx=Math.cos(l)*h,c.vy=Math.sin(l)*h,c.scaleStartX=Ja(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,c.scaleStartY=t.scaleAxisMode==="separate"?Ja(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:c.scaleStartX,c.alphaStart=t.alpha,c.alphaEnd=t.alphaEnd,c.rotation=t.initialRotationMode==="direction"?-Math.atan2(c.vy,c.vx)*180/Math.PI+t.initialRotationMin:Ja(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),c.rotationSpeed=t.rotationOverLifeEnabled?Ja(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,c.speedScale=1,c.speedScaleTarget=t.speedOverLifeMode==="random"?Yi(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,c.scaleOverLifeX=t.scaleOverLifeMode==="random"?Yi(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,c.scaleOverLifeY=t.scaleOverLifeMode==="random"?Yi(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,c.resourceId=u.id,c.colorSample=u.colorMode==="random"?vf(u.colorGradient,oa(t.seed,d,2654435769)):Mo(u.colorStart);const y=this.imageFrameState(u,0);c.imageFrameIndex=y.index,c.sprite.texture=this.imageFrameTexture(u,y.index),c.sprite.anchor.set(u.anchorX,u.anchorY),c.sprite.blendMode=Pr[u.blend],c.sprite.tint=c.colorSample,c.sprite.visible=!0}pickImageResource(){const t=this.cfg.imageResources.filter(r=>r.texture||r.sequenceFrames.some(a=>a.texture));if(!t.length)return{id:1,texture:this.cfg.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",blend:"normal",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]};const i=t.reduce((r,a)=>r+Math.max(0,a.weight),0);if(i<=0)return t[Math.floor(this.rng()*t.length)];let n=this.rng()*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}imageFrameState(t,i){if(t.imageMode!=="sequence"||t.sequenceFrames.length<=1)return{index:0,visible:!0};const n=Math.min(120,Math.max(1,Number(t.sequenceFps)||30)),r=Math.max(0,Math.floor(Math.max(0,i)*n)),a=t.sequenceFrames.length-1;return t.sequencePlayback==="once-hide"?{index:Math.min(a,r),visible:r<=a}:t.sequencePlayback==="once-hold"?{index:Math.min(a,r),visible:!0}:t.sequencePlayback==="loop-reverse"?{index:a-r%t.sequenceFrames.length,visible:!0}:{index:r%t.sequenceFrames.length,visible:!0}}imageFrameTexture(t,i){var n;return t.imageMode==="sequence"&&t.sequenceFrames.length?((n=t.sequenceFrames[Math.max(0,Math.min(t.sequenceFrames.length-1,i))])==null?void 0:n.texture)||t.texture||this.cfg.texture:t.texture||this.cfg.texture}pickTrailResource(t){const i=this.cfg.trailResources.filter(a=>a.texture);if(!i.length)return this.cfg.trailResources[0]||{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]};const n=i.reduce((a,o)=>a+Math.max(0,o.weight),0);if(n<=0)return i[Math.min(i.length-1,Math.floor(t*i.length))];let r=t*n;for(const a of i)if(r-=Math.max(0,a.weight),r<=0)return a;return i[i.length-1]}kill(t){const i=this.pool[t];i.active=!1,i.sprite.visible=!1,i.trailHistory.length=0,i.trailBones.length=0,i.trailMesh&&(i.trailMesh.visible=!1)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1)}get activeCount(){let t=0;for(const i of this.pool)i.active&&t++;return t}capture(){const t=[];for(const i of this.pool)i.active&&t.push({boneName:i.boneName,spawnId:i.spawnId,x:i.sprite.x,y:i.sprite.y,rotation:i.rotation,scaleX:i.sprite.scale.x,scaleY:i.sprite.scale.y,...this.captureWorldTransform(i),alpha:i.sprite.alpha,colorHex:i.sprite.tint,resourceId:i.resourceId,imageFrameIndex:i.imageFrameIndex,imageVisible:i.sprite.visible,active:!0,trailState:this.cfg.trail&&i.trailBones.length?{bones:i.trailBones.map(n=>{var a;const r=Za(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((a=this.simulationTransform)==null?void 0:a.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:i.trailBones.length,width:i.trailCurrentWidth,alpha:i.trailCurrentAlpha,colorHex:i.trailCurrentColor,resourceId:i.trailResourceId}:void 0});return t}captureWorldTransform(t){var r,a,o;const i=Za(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:i.x,worldY:i.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleY)??this.cfg.rootScaleY)}}apply(t){var n;const i=new Map;for(const r of t)i.set(r.boneName,r);for(const r of this.pool){const a=i.get(r.boneName);if(!a){r.active=!1,r.sprite.visible=!1,r.trailMesh&&(r.trailMesh.visible=!1);continue}r.active=a.active;const o=r.sprite;if(o.visible=a.active&&a.imageVisible!==!1,o.x=a.x,o.y=a.y,o.rotation=-a.rotation*Math.PI/180,o.scale.set(a.scaleX,a.scaleY),o.alpha=a.alpha,o.tint=a.colorHex,a.resourceId!=null){const h=this.cfg.imageResources.find(l=>l.id===a.resourceId);h&&(r.imageFrameIndex=a.imageFrameIndex??0,o.texture=this.imageFrameTexture(h,r.imageFrameIndex),o.anchor.set(h.anchorX,h.anchorY),o.blendMode=Pr[h.blend])}this.cfg.trail&&a.trailState?(r.trailResourceId=a.trailState.resourceId??((n=this.cfg.trailResources[0])==null?void 0:n.id)??1,r.trailBones=a.trailState.bones.map(h=>({...h})),r.trailCurrentWidth=a.trailState.width,r.trailCurrentAlpha=a.trailState.alpha,this.skinTrailMesh(r,a.trailState)):r.trailMesh&&(r.trailMesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=gf(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=gf(this.cfg.seed>>>0)}}function Yi(s,e,t){return s+(e-s)*t}function Ac(s,e){return Number.isFinite(s)?s:e}function Za(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=(i==null?void 0:i.centerX)??s.centerX,c=(i==null?void 0:i.centerY)??s.centerY,u=l+o*n*e-h*r*t,d=-c+h*n*e+o*r*t;return{x:u,y:-d}}function kv(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=e-((i==null?void 0:i.centerX)??s.centerX),c=-t+((i==null?void 0:i.centerY)??s.centerY);return{x:(o*l+h*c)/n,y:(-h*l+o*c)/r}}function DI(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=o*n*e-h*r*t,c=h*n*e+o*r*t;return{x:l,y:-c}}function NI(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=-t;return{x:(o*e+h*l)/n,y:(-h*e+o*l)/r}}function UI(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),a=Math.max(1e-4,Math.abs(s.scaleX??1)),o=Math.max(1e-4,Math.abs(s.scaleY??1)),h=e-s.x,l=t-s.y,c=(n*h+r*l)/a,u=(-r*h+n*l)/o,d=(M,_,R,P)=>{const F=R/a,I=P/o,k=Math.max(1e-4,Math.hypot(F,I)),B=F/k,D=I/k,U=n*B-r*D,L=r*B+n*D;return{x:s.x+n*M*a-r*_*o+U*.05,y:s.y+r*M*a+n*_*o+L*.05,nx:U,ny:L}};if(s.shape==="circle"){const M=Math.max(.001,s.radius),_=Math.hypot(c,u);if(_>=M)return null;const R=_>1e-4?c/_:1,P=_>1e-4?u/_:0;return d(R*M,P*M,R,P)}if(s.shape==="ellipse"){const M=Math.max(.001,s.radiusX),_=Math.max(.001,s.radiusY),R=Math.hypot(c/M,u/_);if(R>=1)return null;const P=R>1e-4?1/R:1,F=R>1e-4?c*P:M,I=R>1e-4?u*P:0,k=Math.max(1e-4,Math.hypot(F/(M*M),I/(_*_)));return d(F,I,F/(M*M)/k,I/(_*_)/k)}if(s.shape==="rect"){const M=Math.max(.001,s.width*.5),_=Math.max(.001,s.height*.5);if(Math.abs(c)>=M||Math.abs(u)>=_)return null;const R=M-Math.abs(c),P=_-Math.abs(u);if(R=0?1:-1;return d(I*M,u,I,0)}const F=u>=0?1:-1;return d(c,F*_,0,F)}const f=Math.max(3,Math.min(16,Math.round(s.sides||(s.shape==="custom"?5:6)))),p=Math.max(.001,s.width*.5),m=Math.max(.001,s.height*.5),g=Array.from({length:f},(M,_)=>{const R=Math.PI*.5+_/f*Math.PI*2;return{x:Math.cos(R)*p,y:Math.sin(R)*m}});let v=!1;for(let M=0,_=g.length-1;Mu!=P.y>u&&c<(P.x-R.x)*(u-R.y)/(P.y-R.y)+R.x&&(v=!v)}if(!v)return null;let b=g[0].x,y=g[0].y,w=1/0;for(let M=0;M>>0^Math.imul(e+1,2654435761)^t)>>>0;return i^=i>>>16,i=Math.imul(i,2146121005),i^=i>>>15,i=Math.imul(i,2221713035),i^=i>>>16,(i>>>0)/4294967296}function Ja(s,e,t,i,n){return s==="fixed"?e:s==="curve"?Yi(e,t,bn(i,n)):Yi(e,t,n)}function pf(s,e,t,i,n,r){return s==="curve"?Yi(e,t,bn(i,n)):s==="random"?r:e}function Fv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function bn(s,e,t="线性"){if(!Array.isArray(s)||s.length===0)return 1;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;if(e>=i[i.length-1].x)return i[i.length-1].y;for(let n=0;n=i[n].x&&e<=i[n+1].x){const r=i[n],a=i[n+1],o=a.x-r.x||1;if(t!=="贝塞尔")return Yi(r.y,a.y,(e-r.x)/o);const h=r.x+(r.outX??o/3),l=r.y+(r.outY??(a.y-r.y)/3),c=a.x+(a.inX??-o/3),u=a.y+(a.inY??-(a.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;Fv(r.x,h,c,a.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function Mo(s){let e=s.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function VI(s,e,t){const i=Ov(s),n=Ov(e),r=Math.round(i[0]+(n[0]-i[0])*t),a=Math.round(i[1]+(n[1]-i[1])*t),o=Math.round(i[2]+(n[2]-i[2])*t);return r<<16|a<<8|o}function vf(s,e){if(!Array.isArray(s)||s.length===0)return 16777215;const t=[...s].sort((i,n)=>i.position-n.position);if(e<=t[0].position)return Mo(t[0].color);if(e>=t[t.length-1].position)return Mo(t[t.length-1].color);for(let i=0;ir.position)continue;const a=(e-n.position)/Math.max(1e-4,r.position-n.position);return VI(n.color,r.color,a)}return Mo(t[t.length-1].color)}function Ov(s){let e=s.replace("#","");e.length===3&&(e=e.split("").map(i=>i+i).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}const Fa=new Map,Ca=new Map;function YI(s){return[...Fa.values()].some(e=>e===s)}function f1(s){if(!(YI(s)||(Ca.get(s)||0)>0)){Ca.delete(s);for(const e of s.textures)e.destroy(!0)}}function $I(s){const e=Ca.get(s)||0;e>1?Ca.set(s,e-1):Ca.delete(s),f1(s)}function GI(s){return Fa.get(s)||null}function Eu(s,e){ql(s),Fa.set(s,e)}function HI(s){const e=Fa.get(s);return e?(Ca.set(e,(Ca.get(e)||0)+1),e):null}function jI(s,e){const t=Fa.get(s);return t?(Eu(e,t),!0):!1}function ql(s){const e=Fa.get(s);e&&(Fa.delete(s),f1(e))}function ci(s){if(Array.isArray(s))return s.map(e=>ci(e));if(s&&typeof s=="object"){const e=Object.getPrototypeOf(s);if(e===Object.prototype||e===null){const t={};for(const[i,n]of Object.entries(s))t[i]=ci(n);return t}}return s}const m1=["3.8","4.0","4.1","4.2","4.3"];function Ph(s){const e=String(s||"").trim();return m1.find(t=>e===t||e.startsWith(`${t}.`))||null}function Mm(){return m1.join(" / ")}function WI(s){return s==="4.3"?"4.3":"4.2"}function Tp(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"linear",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function p1(s){const e=Object.assign(Tp(),s||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=Ph(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const Tm=30;function Kc(s,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(s)||e)))}function g1(s,e=30){const t=Math.max(0,Number(s.lifeMin)||0),i=Math.max(0,Number(s.lifeMax)||0),n=s.lifeMode==="fixed"?t:Math.max(t,i);return Kc(Math.ceil(n*Math.max(1,e)),Tm)}function Vr(s,e=30){const t=Kc(s.loopDurationFrames),i=g1(s,e),n=s.generateLoopStartAnimation?s.loopStartUseCustomDuration?Kc(s.loopStartDurationFrames,Tm):i:0,r=s.generateLoopEndAnimation?s.loopEndUseCustomDuration?Kc(s.loopEndDurationFrames,Tm):i:0;return{start:n,loop:t,end:r,total:n+t+r}}function v1(s,e){const t=Vr(s,e),n=Math.max(0,Math.ceil(Math.max(0,Number(s.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}function Zc(s,e,t){const i=Math.max(1,Math.floor(t)-1),n=Math.min(i-1,Math.max(0,Math.floor(Number(s)||0))),r=Math.min(i,Math.max(n+1,Math.floor(Number(e)||i)));return{start:n,end:r}}function zI(s,e,t){const i=Math.max(1,e-1),n=Math.max(1,t-1),r=s.end>=i?n:s.end;return Zc(s.start,r,t)}let Ec=1,Cc=1,Ic=1,Rc=1;function Pc(s,e){const t=new Set(e),i=`${s} Copy`;if(!t.has(i))return i;let n=2;for(;t.has(`${i} ${n}`);)n++;return`${i} ${n}`}const Kl=pT("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:Tp()}}),getters:{activeSystemCount:s=>s.systems.length},actions:{syncSceneSequences(){Ec=Math.max(Ec,...this.systems.map(s=>s.id+1),1),Cc=Math.max(Cc,...this.colliders.map(s=>s.id+1),1),Ic=Math.max(Ic,...this.paths.map(s=>s.id+1),1),Rc=Math.max(Rc,...this.spines.map(s=>s.id+1),1)},addSystem(s){const e=Nl();s!=null&&s.config&&Object.assign(e,s.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const o of this.systems){const h=/^ParticleSystem(\d+)$/.exec(o.config.name);h&&(r=Math.max(r,parseInt(h[1],10)))}e.name=`ParticleSystem${r+1}`;let a=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+a}`,a++}const i=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:Ec++,visible:!0,animation:i,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(s){var i;const e=this.systems.findIndex(n=>n.id===s);e>=0&&this.systems.splice(e,1),this.activeId===s&&(this.activeId=((i=this.systems[0])==null?void 0:i.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===s){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(s){this.activeId=s,this.activeObjectType="particle",this.activeObjectId=s;const e=this.systems.find(t=>t.id===s);e&&(this.timeline.animation=e.animation)},setSystemAnimation(s,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(i=>i.id===s);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const s=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;s.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const i=this.systems.find(n=>n.id===this.activeId);return i&&(i.animation=t),t},renameAnimation(s,e){const t=e.trim(),i=this.timeline.animations.indexOf(s);if(i<0||!t||t!==s&&this.timeline.animations.includes(t))return!1;this.timeline.animations[i]=t;for(const n of this.systems)n.animation===s&&(n.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},removeAnimation(s){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(s);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const i of this.systems)i.animation===s&&(i.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},addCollider(){const s=Cc++,e={id:s,name:`Collider${s}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const s=Ic++,e={id:s,name:`Path${s}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const s=Rc++,e={id:s,name:`SpineSkeleton${s}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",animations:[],bones:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const s=this.activeObjectId;if(!s)return null;if(this.activeObjectType==="particle"){const i=this.systems.find(r=>r.id===s);if(!i)return null;const n=ci(i);return n.id=Ec++,n.config.name=Pc(i.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const i=this.colliders.find(r=>r.id===s);if(!i)return null;const n=ci(i);return n.id=Cc++,n.name=Pc(i.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const i=this.paths.find(r=>r.id===s);if(!i)return null;const n=ci(i);return n.id=Ic++,n.name=Pc(i.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(i=>i.id===s);if(!e)return null;const t=ci(e);return t.id=Rc++,t.name=Pc(e.name,this.spines.map(i=>i.name)),t.selectedBone="",jI(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(s,e){if(this.activeObjectType=s,this.activeObjectId=e,s==="particle"){this.activeId=e;const t=this.systems.find(i=>i.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(s){var t;const e=this.colliders.findIndex(i=>i.id===s);e>=0&&this.colliders.splice(e,1);for(const i of this.systems){const n=zr(i.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==s)}if(this.activeObjectType==="collision"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"collision",this.activeObjectId=(i==null?void 0:i.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(s){var t;const e=this.paths.findIndex(i=>i.id===s);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"path",this.activeObjectId=(i==null?void 0:i.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(s){ql(s);const e=this.spines.findIndex(t=>t.id===s);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===s){const t=this.systems[0],i=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):i?(this.activeObjectType="collision",this.activeObjectId=i.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const s=Zc(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=s.end)&&(this.timeline.frame=s.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(s){this.timeline.frame=Math.max(0,Math.min(s,this.timeline.totalFrames-1))},setPlaybackStart(s){const e=Zc(s,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const s=this.timeline.fps||30;let e=0;for(const r of this.systems){const a=r.config,o=Math.max(0,Number(a.lifeMin)||0),h=Math.max(0,Number(a.lifeMax)||0),l=a.lifeMode==="fixed"?o:Math.max(o,h),c=a.mode==="stream"?a.streamBehavior==="loop"?Math.max(1/s,Math.ceil(Math.max(1,Number(a.loopDurationFrames)||1))/s):Math.max(1/s,Number(a.duration)||0):0;let u=Math.max(0,Number(a.delay)||0)+c+l;a.mode==="stream"&&a.streamBehavior==="loop"&&(u=Math.max(0,Number(a.delay)||0)+Vr(a,s).total/s),u>e&&(e=u)}for(const r of this.spines){const a=r.animations.find(h=>h.name===r.selectedAnimation);if(!a)continue;const o=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,a.duration||0);o>e&&(e=o)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const a=Math.max(0,Number(r.followDuration)||0);a>e&&(e=a)}const t=this.timeline.totalFrames,i=Math.max(2,Math.ceil(e*s)+1);this.timeline.totalFrames=i;const n=zI({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,i);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=i&&(this.timeline.frame=i-1),i}}}),y1="SpineParticle.SystemSettings",x1=1,yf="SpineParticle.SystemSettings.v1";function Zo(s,e,t,i){const n=Number(s);return Math.min(t,Math.max(e,Number.isFinite(n)?n:i))}function qI(s){return{parameterPanelOnRight:s.parameterPanelOnRight,undoLimit:s.undoLimit,showEmitter:s.showEmitter,showBones:s.showBones,bonePointDrawSize:s.bonePointDrawSize,boneAxisDrawSize:s.boneAxisDrawSize,showSkinMesh:s.showSkinMesh,tickEnabled:s.tickEnabled,axisFontSize:s.axisFontSize,tickWidth:s.tickWidth,showAxisLabels:s.showAxisLabels,axisColor:s.axisColor}}function KI(s,e){const t=n=>s[n]==null?!!e[n]:s[n]===!0,i=typeof s.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(s.axisColor)?s.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(Zo(s.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:Zo(s.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:Zo(s.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(Zo(s.axisFontSize,8,40,e.axisFontSize)),tickWidth:Zo(s.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:i}}function ZI(s){let e;try{e=JSON.parse(s)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==y1)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==x1)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function JI(s,e){Object.assign(s.settings,KI(e,s.settings))}let kc=null;function QI(s){kc==null||kc();try{const e=localStorage.getItem(yf);e&&JI(s,ZI(e).settings)}catch{try{localStorage.removeItem(yf)}catch{}}kc=ds(()=>qI(s.settings),e=>{const t={format:y1,version:x1,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(yf,JSON.stringify(t))}catch{}},{deep:!0})}function Bv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function Lv(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),a=Math.max(1e-4,Math.abs(s.scaleX??1)),o=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*a-r*t*o,y:s.y+r*e*a+n*t*o}}function xf(s,e){if(!s.points.length)return null;if(s.points.length===1)return{...Lv(s,s.points[0].x,s.points[0].y),angle:s.rotation};const t=s.closed?s.points.length:s.points.length-1,i=[];let n=0;for(let p=0;p0&&v===0)continue;const b=v/20,y=Bv(m.x,m.x+m.outX,g.x+g.inX,g.x,b),w=Bv(m.y,m.y+m.outY,g.y+g.inY,g.y,b),A=Lv(s,y,w),M=i[i.length-1];M&&(n+=Math.hypot(A.x-M.x,A.y-M.y)),i.push({...A,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let a=i.findIndex(p=>p.distance>=r);a<0&&(a=i.length-1);const o=i[a],h=i[Math.max(0,a-1)],l=i[Math.min(i.length-1,a+1)],c=h.distance,u=a>0?(r-c)/Math.max(1e-4,o.distance-c):0,d=h.x+(o.x-h.x)*Math.min(1,Math.max(0,u)),f=h.y+(o.y-h.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(l.y-h.y,l.x-h.x)*180/Math.PI}}function Ji(s){return s.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function eR(s){const e=new Map;for(const i of s)for(const n of i)e.has(n.boneName)||e.set(n.boneName,Ji([n])[0]);const t=[...e.keys()].sort((i,n)=>{const r=Number(i.replace(/^p_/,"")),a=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(a)?r-a:i.localeCompare(n)});for(let i=0;i[r.boneName,r]));s[i]=t.map(r=>{const a=n.get(r);return a||{...Ji([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function tR(s){s.length<2||(s[s.length-1]=Ji(s[0]))}function iR(s,e){const t=Math.max(0,s.length-1),i=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));i.push(Ji(s[r]||[]))}return i}function bf(s){return`${s.boneName}:${s.spawnId??"legacy"}`}function Dv(s){return{...Ji([s])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function sR(s,e,t,i){const n=Math.min(s.length,i+1),r=s.slice(Math.max(0,s.length-n)),a=new Map;for(const l of e){if(l.imageVisible===!1||l.alpha<=0)continue;const c=bf(l),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>bf(m)===c);if(p)d=!0,u.set(f,p);else if(d)break}a.set(c,u)}const o=Math.max(0,r.length-1),h=[];for(let l=0;l<=t;l++){const c=Math.min(o,Math.round(l/t*o));h.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Ji([u])[0];const d=(f=a.get(bf(u)))==null?void 0:f.get(c);return d?Ji([d])[0]:Dv(u)}))}return h[0]=h[0].map(Dv),h[h.length-1]=Ji(e),h}function Nv(s,e){const t=s.length?1:0;for(let i=t;i{const y=b?[[]]:[];e.reset();for(let w=0;w0&&e.restartEmissionCycle();for(let A=0;A0;w++)e.update(r,"off"),b.push(e.capture());(v=b[b.length-1])!=null&&v.length&&b.push([]),Nv(u,iR(b,o.end))}const g=Ji(u[u.length-1]||[]);for(u.length>i&&(u.length=i);u.lengtho.id===r)||(this.container.removeChild(a.root),a.root.destroy({children:!0}),this.entries.delete(r));for(const r of e){const a=GI(r.id);let o=this.entries.get(r.id);if(o&&o.assetVersion!==r.assetVersion&&!a&&(this.container.removeChild(o.root),o.root.destroy({children:!0}),this.entries.delete(r.id),o=void 0),(!o||o.assetVersion!==r.assetVersion)&&a){o&&(this.container.removeChild(o.root),o.root.destroy({children:!0}));const d=new ji,f=new a.SpineClass({skeletonData:a.skeletonData,autoUpdate:!1,darkTint:!1});a.skeletonData.defaultSkin&&f.skeleton.setSkin(a.skeletonData.defaultSkin),a.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),o={root:d,spine:f,runtimeVersion:a.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,o)}if(!o)continue;const h=o.root,l=o.spine,c=r.visible!==!1&&r.enabled;h.visible=c,h.renderable=c,h.position.set(r.x,-r.y),h.rotation=-r.rotation*Math.PI/180,h.scale.set(r.scaleX,r.scaleY),o.animation!==r.selectedAnimation&&(o.animation=r.selectedAnimation,o.runtimeVersion==="4.3"?l.skeleton.setupPose():l.skeleton.setToSetupPose(),l.state.clearTracks(),o.animation&&l.state.setAnimation(0,o.animation,!1));const u=o.runtimeVersion==="4.3"?l.state.getTrack(0):l.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,i)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}l.update(0)}}getBoneWorldTransform(e,t){const i=this.entries.get(e),n=i==null?void 0:i.spine.skeleton.findBone(t);if(!i||!n||!n.active)return null;const r=i.runtimeVersion==="4.3"?n.appliedPose:n,a=i.root,o=Math.cos(a.rotation),h=Math.sin(a.rotation),l=o*a.scale.x,c=-h*a.scale.y,u=h*a.scale.x,d=o*a.scale.y,f=l*r.a+c*r.c,p=l*r.b+c*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,v=a.position.x+l*r.worldX+c*r.worldY,b=a.position.y+u*r.worldX+d*r.worldY;return{x:v,y:-b,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())e.root.removeFromParent(),e.root.destroy({children:!0});this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let b1=class{constructor(){x(this,"entries",{});x(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Zi){return t.setFromString(e)}},x(Zi,"WHITE",new Zi(1,1,1,1)),x(Zi,"RED",new Zi(1,0,0,1)),x(Zi,"GREEN",new Zi(0,1,0,1)),x(Zi,"BLUE",new Zi(0,0,1,1)),x(Zi,"MAGENTA",new Zi(1,0,1,1)),Zi);var bi;let Ye=(bi=class{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*bi.degRad)}static sinDeg(e){return Math.sin(e*bi.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*bi.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return bi.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){let n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},x(bi,"PI",3.1415927),x(bi,"PI2",bi.PI*2),x(bi,"invPI2",1/bi.PI2),x(bi,"radiansToDegrees",180/bi.PI),x(bi,"radDeg",bi.radiansToDegrees),x(bi,"degreesToRadians",bi.PI/180),x(bi,"degRad",bi.degreesToRadians),bi);var zs;let $e=(zs=class{static arrayCopy(e,t,i,n,r){for(let a=t,o=n;a=t?e:zs.setArraySize(e,t,i)}static newArray(e,t){let i=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*o;let h=t.bone.skeleton,l=t.deform,c=this.vertices,u=this.bones;if(!u){l.length>0&&(c=l);let m=t.bone,g=m.worldX,v=m.worldY,b=m.a,y=m.b,w=m.c,A=m.d;for(let M=i,_=a;_=this.regions.length&&(i=this.regions.length-1);let n=this.regions[i];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let i=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return ar._nextID++}},x(ar,"_nextID",0),ar);var $i;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})($i||($i={}));const _1=[$i.hold,$i.once,$i.loop,$i.pingpong,$i.onceReverse,$i.loopReverse,$i.pingpongReverse];let Ap=class{constructor(e,t,i){x(this,"name");x(this,"timelines",[]);x(this,"timelineIds",new b1);x(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=i}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let l=this.timelines;for(let c=0,u=l.length;ct)return n-1;return i-1}static search(e,t,i){let n=e.length;for(let r=i;rt)return r-i;return n-i}},Un=class extends hi{constructor(t,i,n){super(t,n);x(this,"curves");this.curves=$e.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let i=this.getFrameCount()+t*18;if(this.curves.length>i){let n=$e.newFloatArray(i);$e.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,a,o,h,l,c,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[i]=2+p);let m=(r-o*2+l)*.03,g=(a-h*2+c)*.03,v=((o-l)*3-r+u)*.006,b=((h-c)*3-a+d)*.006,y=m*2+v,w=g*2+b,A=(o-r)*.3+m+v*.16666667,M=(h-a)*.3+g+b*.16666667,_=r+A,R=a+M;for(let P=p+18;pt){let c=this.frames[i],u=this.frames[i+n];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}let o=r+18;for(r+=2;r=t){let c=a[r-2],u=a[r-1];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}i+=this.getFrameEntries();let h=a[o-2],l=a[o-1];return l+(t-h)/(this.frames[i]-h)*(this.frames[i+n]-l)}},rn=class extends Un{constructor(e,t,i){super(e,t,[i])}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){let t=this.frames,i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}let n=this.curves[i>>1];switch(n){case 0:let r=t[i],a=t[i+1];return a+(e-r)/(t[i+2]-r)*(t[i+2+1]-a);case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r){if(e>2];switch(g){case 0:let v=c[m];d=c[m+1],f=c[m+2],p=c[m+3];let b=(n-v)/(c[m+4]-v);d+=(c[m+4+1]-d)*b,f+=(c[m+4+2]-f)*b,p+=(c[m+4+3]-p)*b;break;case 1:d=c[m+1],f=c[m+2],p=c[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(a==1)u.r=d,u.g=f,u.b=p;else{if(o==Ce.setup){let v=l.data.color;u.r=v.r,u.g=v.g,u.b=v.b}u.r+=(d-u.r)*a,u.g+=(f-u.g)*a,u.b+=(p-u.b)*a}}},L1=class extends rn{constructor(t,i,n){super(t,i,At.alpha+"|"+n);x(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.color;if(n>3];switch(A){case 0:let M=c[w];f=c[w+1],p=c[w+2],m=c[w+3],g=c[w+4],v=c[w+5],b=c[w+6],y=c[w+7];let _=(n-M)/(c[w+8]-M);f+=(c[w+8+1]-f)*_,p+=(c[w+8+2]-p)*_,m+=(c[w+8+3]-m)*_,g+=(c[w+8+4]-g)*_,v+=(c[w+8+5]-v)*_,b+=(c[w+8+6]-b)*_,y+=(c[w+8+7]-y)*_;break;case 1:f=c[w+1],p=c[w+2],m=c[w+3],g=c[w+4],v=c[w+5],b=c[w+6],y=c[w+7];break;default:f=this.getBezierValue(n,w,1,A-2),p=this.getBezierValue(n,w,2,A+18-2),m=this.getBezierValue(n,w,3,A+36-2),g=this.getBezierValue(n,w,4,A+54-2),v=this.getBezierValue(n,w,5,A+72-2),b=this.getBezierValue(n,w,6,A+90-2),y=this.getBezierValue(n,w,7,A+108-2)}if(a==1)u.set(f,p,m,g),d.r=v,d.g=b,d.b=y;else{if(o==Ce.setup){u.setFromColor(l.data.color);let M=l.data.darkColor;d.r=M.r,d.g=M.g,d.b=M.b}u.add((f-u.r)*a,(p-u.g)*a,(m-u.b)*a,(g-u.a)*a),d.r+=(v-d.r)*a,d.g+=(b-d.g)*a,d.b+=(y-d.b)*a}}},N1=class extends Un{constructor(t,i,n){super(t,i,[At.rgb+"|"+n,At.rgb2+"|"+n]);x(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,i,n,r,a,o,h,l){t*=7,this.frames[t]=i,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=a,this.frames[t+4]=o,this.frames[t+5]=h,this.frames[t+6]=l}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=this.frames,u=l.color,d=l.darkColor;if(nt){let l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}let a=r+18;for(r+=2;r=t){let l=n[r-2],c=n[r-1];return c+(t-l)/(n[r]-l)*(n[r+1]-c)}let o=n[a-2],h=n[a-1];return h+(1-h)*(t-o)/(this.frames[i+this.getFrameEntries()]-o)}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.getAttachment();if(!c||!(c instanceof gr)||c.timelineAttachment!=this.attachment)return;let u=l.deform;u.length==0&&(o=Ce.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let w=d[p.length-1];if(a==1)if(o==Ce.add){let A=c;if(A.bones)for(let M=0;Mn)this.apply(t,i,Number.MAX_VALUE,r,a,o,h),i=-1;else if(i>=l[c-1])return;if(n0&&l[u-1]==d;)u--}for(;u=l[u];u++)r.push(this.events[u])}},x(ba,"propertyIds",[""+At.event]),ba);var wa;let vl=(wa=class extends hi{constructor(t){super(t,wa.propertyIds);x(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,a,o,h){if(h==ts.mixOut){o==Ce.setup&&$e.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=c[p];u=c[p+1],d=c[p+2],f=c[p+3];let v=(n-g)/(c[p+4]-g);u+=(c[p+4+1]-u)*v,d+=(c[p+4+2]-d)*v,f+=(c[p+4+3]-f)*v;break;case 1:u=c[p+1],d=c[p+2],f=c[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(o==Ce.setup){let g=l.data;l.mixRotate=g.mixRotate+(u-g.mixRotate)*a,l.mixX=g.mixX+(d-g.mixX)*a,l.mixY=g.mixY+(f-g.mixY)*a}else l.mixRotate+=(u-l.mixRotate)*a,l.mixX+=(d-l.mixX)*a,l.mixY+=(f-l.mixY)*a}},Ua=class extends rn{constructor(t,i,n,r){super(t,i,r+"|"+n);x(this,"constraintIndex",0);this.constraintIndex=n}apply(t,i,n,r,a,o,h){let l;if(this.constraintIndex==-1){const c=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,a,o,this.get(u),this.setup(u),c))}else l=t.physicsConstraints[this.constraintIndex],l.active&&this.set(l,this.getAbsoluteValue(n,a,o,this.get(l),this.setup(l)))}},H1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},j1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},W1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},z1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},q1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},K1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},Z1=class extends Ua{constructor(e,t,i){super(e,t,i,At.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var Sa;let J1=(Sa=class extends hi{constructor(t,i){super(t,Sa.propertyIds);x(this,"constraintIndex");this.constraintIndex=i}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,a,o,h){let l;if(this.constraintIndex!=-1&&(l=t.physicsConstraints[this.constraintIndex],!l.active))return;const c=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],a,o,h),i=-1;else if(i>=c[c.length-1])return;if(!(n=c[hi.search1(c,i)+1]))if(l!=null)l.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},x(Sa,"propertyIds",[At.physicsConstraintReset.toString()]),Sa);var as;let Q1=(as=class extends hi{constructor(t,i,n){super(t,[At.sequence+"|"+i+"|"+n.sequence.id]);x(this,"slotIndex");x(this,"attachment");this.slotIndex=i,this.attachment=n}getFrameEntries(){return as.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,i,n,r,a){let o=this.frames;t*=as.ENTRIES,o[t]=i,o[t+as.MODE]=n|r<<4,o[t+as.DELAY]=a}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.attachment,u=this.attachment;if(c!=u&&(!(c instanceof gr)||c.timelineAttachment!=u))return;if(h==ts.mixOut){o==Ce.setup&&(l.sequenceIndex=-1);return}let d=this.frames;if(n>4,b=this.attachment.sequence.regions.length,y=_1[m&15];if(y!=$i.hold)switch(v+=(n-p)/g+1e-5|0,y){case $i.once:v=Math.min(b-1,v);break;case $i.loop:v%=b;break;case $i.pingpong:{let w=(b<<1)-2;v=w==0?0:v%w,v>=b&&(v=w-v);break}case $i.onceReverse:v=Math.max(b-1-v,0);break;case $i.loopReverse:v=b-1-v%b;break;case $i.pingpongReverse:{let w=(b<<1)-2;v=w==0?0:(v+b-1)%w,v>=b&&(v=w-v)}}l.sequenceIndex=v}},x(as,"ENTRIES",3),x(as,"MODE",1),x(as,"DELAY",2),as);var or;let aR=(or=class{constructor(e){x(this,"data");x(this,"tracks",new Array);x(this,"timeScale",1);x(this,"unkeyedState",0);x(this,"events",new Array);x(this,"listeners",new Array);x(this,"queue",new lR(this));x(this,"propertyIDs",new b1);x(this,"animationsChanged",!1);x(this,"trackEntryPool",new kh(()=>new oR));this.data=e}static emptyAnimation(){return or._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=a,r.delay>0)continue;a=-r.delay,r.delay=0}let o=r.next;if(o){let h=r.trackLast-o.delay;if(h>=0){for(o.delay=0,o.trackTime+=r.timeScale==0?0:(h/r.timeScale+e)*o.timeScale,r.trackTime+=a,this.setCurrent(i,o,!0);o.mixingFrom;)o.mixTime+=e,o=o.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let h=r.mixingFrom;for(r.mixingFrom=null,h&&(h.mixingTo=null);h;)this.queue.end(h),h=h.mixingFrom}r.trackTime+=a}this.queue.drain()}updateMixingFrom(e,t){let i=e.mixingFrom;if(!i)return!0;let n=this.updateMixingFrom(i,t);return i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((i.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),e.interruptAlpha=i.interruptAlpha,this.queue.end(i)),n):(i.trackTime+=t*i.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,i=this.tracks,n=!1;for(let d=0,f=i.length;d0)continue;n=!0;let m=d==0?Ce.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let v=g>=p.alphaAttachmentThreshold,b=p.animationLast,y=p.getAnimationTime(),w=y,A=t;p.reverse&&(w=p.animation.duration-w,A=null);let M=p.animation.timelines,_=M.length;if(d==0&&g==1||m==Ce.add){d==0&&(v=!0);for(let R=0;R<_;R++){var r=M[R];r instanceof ho?this.applyAttachmentTimeline(r,e,w,m,v):r.apply(e,b,w,A,g,m,ts.mixIn)}}else{let R=p.timelineMode,P=p.shortestRotation,F=!P&&p.timelinesRotation.length!=_<<1;F&&(p.timelinesRotation.length=_<<1);for(let I=0;I<_;I++){let k=M[I],B=R[I]==wf?m:Ce.setup;!P&&k instanceof Oh?this.applyRotateTimeline(k,e,w,g,B,p.timelinesRotation,I<<1,F):k instanceof ho?this.applyAttachmentTimeline(k,e,w,m,v):k.apply(e,b,w,A,g,B,ts.mixIn)}}this.queueEvents(p,y),t.length=0,p.nextAnimationLast=y,p.nextTrackLast=p.trackTime}for(var a=this.unkeyedState+Vv,o=e.slots,h=0,l=e.slots.length;h1&&(r=1),i!=Ce.first&&(i=n.mixBlend));let a=r=n.alphaAttachmentThreshold):(o&&A instanceof vl&&_==Ce.setup&&(M=ts.mixIn),A.apply(t,d,p,m,R,_,M))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){var a=t.slots[e.slotIndex];a.bone.active&&(i=0,y=m>=0;Math.abs(g)<=90&&Ye.signum(g)!=Ye.signum(p)&&(Math.abs(m-v)>180?(f+=360*Ye.signum(m),y=b):v!=0?f-=360*Ye.signum(m):y=b),y!=b&&(f+=360*Ye.signum(m)),a[o]=f}a[o+1]=p,l.rotation=u+f*n}queueEvents(e,t){let i=e.animationStart,n=e.animationEnd,r=n-i,a=e.trackLast%r,o=this.events,h=0,l=o.length;for(;hn||this.queue.event(e,u)}let c=!1;if(e.loop)if(r==0)c=!0;else{const u=Math.floor(e.trackTime/r);c=u>0&&u>Math.floor(e.trackLast/r)}else c=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){let n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,i){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,i)}setAnimationWith(e,t,i=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let a=this.trackEntry(e,t,i,r);return this.setCurrent(e,a,n),this.queue.drain(),a}addAnimation(e,t,i=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,i,n)}addAnimationWith(e,t,i=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let a=this.trackEntry(e,t,i,r);return r?(r.next=a,a.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-a.mixDuration,0))):(this.setCurrent(e,a,!0),this.queue.drain(),n<0&&(n=0)),a.delay=n,a}setEmptyAnimation(e,t=0){let i=this.setAnimationWith(e,or.emptyAnimation(),!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){let n=this.addAnimationWith(e,or.emptyAnimation(),!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0){r[h]=cR,a[h]=u;continue e}break}r[h]=Sf}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},x(or,"_emptyAnimation",new Ap("",[],0)),or),oR=class{constructor(){x(this,"animation",null);x(this,"previous",null);x(this,"next",null);x(this,"mixingFrom",null);x(this,"mixingTo",null);x(this,"listener",null);x(this,"trackIndex",0);x(this,"loop",!1);x(this,"holdPrevious",!1);x(this,"reverse",!1);x(this,"shortestRotation",!1);x(this,"eventThreshold",0);x(this,"mixAttachmentThreshold",0);x(this,"alphaAttachmentThreshold",0);x(this,"mixDrawOrderThreshold",0);x(this,"animationStart",0);x(this,"animationEnd",0);x(this,"animationLast",0);x(this,"nextAnimationLast",0);x(this,"delay",0);x(this,"trackTime",0);x(this,"trackLast",0);x(this,"nextTrackLast",0);x(this,"trackEnd",0);x(this,"timeScale",0);x(this,"alpha",0);x(this,"mixTime",0);x(this,"_mixDuration",0);x(this,"interruptAlpha",0);x(this,"totalAlpha",0);x(this,"mixBlend",Ce.replace);x(this,"timelineMode",new Array);x(this,"timelineHoldMix",new Array);x(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},lR=class{constructor(e){x(this,"objects",[]);x(this,"drainDisabled",!1);x(this,"animState");this.animState=e}start(e){this.objects.push(ms.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(ms.interrupt),this.objects.push(e)}end(e){this.objects.push(ms.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(ms.dispose),this.objects.push(e)}complete(e){this.objects.push(ms.complete),this.objects.push(e)}event(e,t){this.objects.push(ms.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{c.width=parseInt(i[1]),c.height=parseInt(i[2])},n.format=()=>{},n.filter=c=>{c.minFilter=$e.enumValue(Bi,i[1]),c.magFilter=$e.enumValue(Bi,i[2])},n.repeat=c=>{i[1].indexOf("x")!=-1&&(c.uWrap=hr.Repeat),i[1].indexOf("y")!=-1&&(c.vWrap=hr.Repeat)},n.pma=c=>{c.pma=i[1]=="true"};var r={};r.xy=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2])},r.size=c=>{c.width=parseInt(i[1]),c.height=parseInt(i[2])},r.bounds=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2]),c.width=parseInt(i[3]),c.height=parseInt(i[4])},r.offset=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2])},r.orig=c=>{c.originalWidth=parseInt(i[1]),c.originalHeight=parseInt(i[2])},r.offsets=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2]),c.originalWidth=parseInt(i[3]),c.originalHeight=parseInt(i[4])},r.rotate=c=>{let u=i[1];u=="true"?c.degrees=90:u!="false"&&(c.degrees=parseInt(u))},r.index=c=>{c.index=parseInt(i[1])};let a=t.readLine();for(;a&&a.trim().length==0;)a=t.readLine();for(;!(!a||a.trim().length==0||t.readEntry(i,a)==0);)a=t.readLine();let o=null,h=null,l=null;for(;a!==null;)if(a.trim().length==0)o=null,a=t.readLine();else if(o){let c=new nw(o,a);for(;;){let u=t.readEntry(i,a=t.readLine());if(u==0)break;let d=r[i[0]];if(d)d(c);else{h||(h=[]),l||(l=[]),h.push(i[0]);let f=[];for(let p=0;p0&&l&&l.length>0&&(c.names=h,c.values=l,h=null,l=null),c.u=c.x/o.width,c.v=c.y/o.height,c.degrees==90?(c.u2=(c.x+c.height)/o.width,c.v2=(c.y+c.width)/o.height):(c.u2=(c.x+c.width)/o.width,c.v2=(c.y+c.height)/o.height),this.regions.push(c)}else{for(o=new pR(a.trim());t.readEntry(i,a=t.readLine())!=0;){let c=n[i[0]];c&&c(o)}this.pages.push(o)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let i=t.indexOf(":");if(i==-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){let a=t.indexOf(",",r);if(a==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,a-r).trim(),r=a+1,n==4)return 4}}},pR=class{constructor(e){x(this,"name");x(this,"minFilter",Bi.Nearest);x(this,"magFilter",Bi.Nearest);x(this,"uWrap",hr.ClampToEdge);x(this,"vWrap",hr.ClampToEdge);x(this,"texture",null);x(this,"width",0);x(this,"height",0);x(this,"pma",!1);x(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},nw=class extends fR{constructor(t,i){super();x(this,"page");x(this,"name");x(this,"x",0);x(this,"y",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"originalWidth",0);x(this,"originalHeight",0);x(this,"index",0);x(this,"degrees",0);x(this,"names",null);x(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}},Zl=class Am extends gr{constructor(t,i){super(t);x(this,"region",null);x(this,"path");x(this,"regionUVs",[]);x(this,"uvs",[]);x(this,"triangles",[]);x(this,"color",new Mt(1,1,1,1));x(this,"width",0);x(this,"height",0);x(this,"hullLength",0);x(this,"edges",[]);x(this,"parentMesh",null);x(this,"sequence",null);x(this,"tempColor",new Mt(0,0,0,0));this.path=i}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=$e.newFloatArray(t.length));let i=this.uvs,n=this.uvs.length,r=this.region.u,a=this.region.v,o=0,h=0;if(this.region instanceof nw){let l=this.region,c=l.page,u=c.width,d=c.height;switch(l.degrees){case 90:r-=(l.originalHeight-l.offsetY-l.height)/u,a-=(l.originalWidth-l.offsetX-l.width)/d,o=l.originalHeight/u,h=l.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=i}};var pi;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(pi||(pi={}));let Yv=class{constructor(e,t,i){x(this,"data");x(this,"skeleton");x(this,"parent",null);x(this,"children",new Array);x(this,"x",0);x(this,"y",0);x(this,"rotation",0);x(this,"scaleX",0);x(this,"scaleY",0);x(this,"shearX",0);x(this,"shearY",0);x(this,"ax",0);x(this,"ay",0);x(this,"arotation",0);x(this,"ascaleX",0);x(this,"ascaleY",0);x(this,"ashearX",0);x(this,"ashearY",0);x(this,"a",0);x(this,"b",0);x(this,"c",0);x(this,"d",0);x(this,"worldY",0);x(this,"worldX",0);x(this,"inherit",pi.Normal);x(this,"sorted",!1);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=i,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,i,n,r,a,o){this.ax=e,this.ay=t,this.arotation=i,this.ascaleX=n,this.ascaleY=r,this.ashearX=a,this.ashearY=o;let h=this.parent;if(!h){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(i+a)*Ye.degRad,v=(i+90+o)*Ye.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(v)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(v)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let l=h.a,c=h.b,u=h.c,d=h.d;switch(this.worldX=l*e+c*t+h.worldX,this.worldY=u*e+d*t+h.worldY,this.inherit){case pi.Normal:{const f=(i+a)*Ye.degRad,p=(i+90+o)*Ye.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,v=Math.sin(f)*n,b=Math.sin(p)*r;this.a=l*m+c*v,this.b=l*g+c*b,this.c=u*m+d*v,this.d=u*g+d*b;return}case pi.OnlyTranslation:{const f=(i+a)*Ye.degRad,p=(i+90+o)*Ye.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case pi.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;l*=f,u*=p;let m=l*l+u*u,g=0;m>1e-4?(m=Math.abs(l*d*p-c*f*u)/m,c=u*m,d=l*m,g=Math.atan2(u,l)*Ye.radDeg):(l=0,u=0,g=90-Math.atan2(d,c)*Ye.radDeg);const v=(i+a-g)*Ye.degRad,b=(i+o-g+90)*Ye.degRad,y=Math.cos(v)*n,w=Math.cos(b)*r,A=Math.sin(v)*n,M=Math.sin(b)*r;this.a=l*y-c*A,this.b=l*w-c*M,this.c=u*y+d*A,this.d=u*w+d*M;break}case pi.NoScale:case pi.NoScaleOrReflection:{i*=Ye.degRad;const f=Math.cos(i),p=Math.sin(i);let m=(l*f+c*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,v=Math.sqrt(m*m+g*g);v>1e-5&&(v=1/v),m*=v,g*=v,v=Math.sqrt(m*m+g*g),this.inherit==pi.NoScale&&l*d-c*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v),i=Math.PI/2+Math.atan2(g,m);const b=Math.cos(i)*v,y=Math.sin(i)*v;a*=Ye.degRad,o=(90+o)*Ye.degRad;const w=Math.cos(a)*n,A=Math.cos(o)*r,M=Math.sin(a)*n,_=Math.sin(o)*r;this.a=m*w+b*M,this.b=m*A+b*_,this.c=g*w+y*M,this.d=g*A+y*_;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*Ye.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*Ye.radDeg;return}let t=e.a,i=e.b,n=e.c,r=e.d,a=1/(t*r-i*n),o=r*a,h=i*a,l=n*a,c=t*a,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*o-d*h,this.ay=d*c-u*l;let f,p,m,g;if(this.inherit==pi.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case pi.NoRotationOrReflection:{let A=Math.abs(t*r-i*n)/(t*t+n*n);i=-n*this.skeleton.scaleX*A/this.skeleton.scaleY,r=t*this.skeleton.scaleY*A/this.skeleton.scaleX,a=1/(t*r-i*n),o=r*a,h=i*a;break}case pi.NoScale:case pi.NoScaleOrReflection:let v=Ye.cosDeg(this.rotation),b=Ye.sinDeg(this.rotation);t=(t*v+i*b)/this.skeleton.scaleX,n=(n*v+r*b)/this.skeleton.scaleY;let y=Math.sqrt(t*t+n*n);y>1e-5&&(y=1/y),t*=y,n*=y,y=Math.sqrt(t*t+n*n),this.inherit==pi.NoScale&&a<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(y=-y);let w=Ye.PI/2+Math.atan2(n,t);i=Math.cos(w)*y,r=Math.sin(w)*y,a=1/(t*r-i*n),o=r*a,h=i*a,l=n*a,c=t*a}f=o*this.a-h*this.c,p=o*this.b-h*this.d,m=c*this.c-l*this.a,g=c*this.d-l*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let v=f*g-p*m;this.ascaleY=v/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,v)*Ye.radDeg,this.arotation=Math.atan2(m,f)*Ye.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*Ye.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*Ye.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*Ye.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),i=e.x-this.worldX,n=e.y-this.worldY;return e.x=i*this.d*t-n*this.b*t,e.y=n*this.a*t-i*this.c*t,e}localToWorld(e){let t=e.x,i=e.y;return e.x=t*this.a+i*this.b+this.worldX,e.y=t*this.c+i*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=Ye.sinDeg(e),i=Ye.cosDeg(e);return Math.atan2(this.a*t-this.c*i,this.d*i-this.b*t)*Ye.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=Ye.sinDeg(e),i=Ye.cosDeg(e);return Math.atan2(i*this.c+t*this.d,i*this.a+t*this.b)*Ye.radDeg}rotateWorld(e){e*=Ye.degRad;const t=Math.sin(e),i=Math.cos(e),n=this.a,r=this.b;this.a=i*n-t*this.c,this.b=i*r-t*this.d,this.c=t*n+i*this.c,this.d=t*r+i*this.d}},Iu=class{constructor(e,t,i){x(this,"name");x(this,"order");x(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=i}},cw=class{constructor(e,t){x(this,"data");x(this,"intValue",0);x(this,"floatValue",0);x(this,"stringValue",null);x(this,"time",0);x(this,"volume",0);x(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},hw=class{constructor(e){x(this,"name");x(this,"intValue",0);x(this,"floatValue",0);x(this,"stringValue",null);x(this,"audioPath",null);x(this,"volume",0);x(this,"balance",0);this.name=e}},gR=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"bendDirection",0);x(this,"compress",!1);x(this,"stretch",!1);x(this,"mix",1);x(this,"softness",0);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,v=e.ascaleY;if(n||r){switch(e.inherit){case pi.NoScale:case pi.NoScaleOrReflection:p=t-e.worldX,m=i-e.worldY}const b=e.data.length*g;if(b>1e-4){const y=p*p+m*m;if(n&&yb*b){const w=(Math.sqrt(y)/b-1)*o+1;g*=w,a&&(v*=w)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*o,g,v,e.ashearX,e.ashearY)}apply2(e,t,i,n,r,a,o,h,l){if(e.inherit!=pi.Normal||t.inherit!=pi.Normal)return;let c=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,v=0,b=0,y=0;d<0?(d=-d,v=180,y=-1):(v=0,y=1),f<0&&(f=-f,y=-y),g<0?(g=-g,b=180):b=0;let w=t.ax,A=0,M=0,_=0,R=e.a,P=e.b,F=e.c,I=e.d,k=Math.abs(d-f)<=1e-4;!k||a?(A=0,M=R*w+e.worldX,_=F*w+e.worldY):(A=t.ay,M=R*w+P*A+e.worldX,_=F*w+I*A+e.worldY);let B=e.parent;if(!B)throw new Error("IK parent must itself have a parent.");R=B.a,P=B.b,F=B.c,I=B.d;let D=R*I-P*F,U=M-B.worldX,L=_-B.worldY;D=Math.abs(D)<=1e-4?0:1/D;let N=(U*I-L*P)*D-c,O=(L*R-U*F)*D-u,X=Math.sqrt(N*N+O*O),E=t.data.length*g,V,q;if(X<1e-4){this.apply1(e,i,n,!1,a,!1,l),t.updateWorldTransformWith(w,A,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}U=i-B.worldX,L=n-B.worldY;let W=(U*I-L*P)*D-c,J=(L*R-U*F)*D-u,K=W*W+J*J;if(h!=0){h*=d*(g+1)*.5;let we=Math.sqrt(K),Ee=we-X-E*d+h;if(Ee>0){let ge=Math.min(1,Ee/(h*2))-1;ge=(Ee-h*(1-ge*ge))/we,W-=ge*W,J-=ge*J,K=W*W+J*J}}e:if(k){E*=d;let we=(K-X*X-E*E)/(2*X*E);we<-1?(we=-1,q=Math.PI*r):we>1?(we=1,q=0,a&&(R=(Math.sqrt(K)/(X+E)-1)*l+1,p*=R,o&&(m*=R))):q=Math.acos(we)*r,R=X+E*we,P=E*Math.sin(q),V=Math.atan2(J*R-W*P,W*R+J*P)}else{R=d*E,P=f*E;let we=R*R,Ee=P*P,ge=Math.atan2(J,W);F=Ee*X*X+we*K-we*Ee;let Te=-2*Ee*X,G=Ee-we;if(I=Te*Te-4*G*F,I>=0){let ae=Math.sqrt(I);Te<0&&(ae=-ae),ae=-(Te+ae)*.5;let Le=ae/G,Re=F/ae,Oe=Math.abs(Le)=0){L=Math.sqrt(Le)*r,V=ge-Math.atan2(L,Oe),q=Math.atan2(L/f,(Oe-X)/d);break e}}let Z=Ye.PI,z=X-R,j=z*z,te=0,he=0,ve=X+R,le=ve*ve,ye=0;F=-R*X/(we-Ee),F>=-1&&F<=1&&(F=Math.acos(F),U=R*Math.cos(F)+X,L=P*Math.sin(F),I=U*U+L*L,Ile&&(he=F,le=I,ve=U,ye=L)),K<=(j+le)*.5?(V=ge-Math.atan2(te*r,z),q=Z*r):(V=ge-Math.atan2(ye*r,ve),q=he*r)}let fe=Math.atan2(A,w)*y,me=e.arotation;V=(V-fe)*Ye.radDeg+v-me,V>180?V-=360:V<-180&&(V+=360),e.updateWorldTransformWith(c,u,me+V*l,p,m,0,0),me=t.arotation,q=((q+fe)*Ye.radDeg-t.ashearX)*y+b-me,q>180?q-=360:q<-180&&(q+=360),t.updateWorldTransformWith(w,A,me+q*l,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},uw=class extends Iu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"bendDirection",0);x(this,"compress",!1);x(this,"stretch",!1);x(this,"uniform",!1);x(this,"mix",0);x(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},dw=class extends Iu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"positionMode",Bn.Fixed);x(this,"spacingMode",Ri.Fixed);x(this,"rotateMode",Ia.Chain);x(this,"offsetRotation",0);x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var Bn;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(Bn||(Bn={}));var Ri;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(Ri||(Ri={}));var Ia;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Ia||(Ia={}));var Qi;let vR=(Qi=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"spaces",new Array);x(this,"positions",new Array);x(this,"world",new Array);x(this,"curves",new Array);x(this,"lengths",new Array);x(this,"segments",new Array);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){w=u/w*p;for(let M=1;M0?Ye.degRad:-.01745329277777778}for(let w=0,A=3;w0){let I=M.a,k=M.b,B=M.c,D=M.d,U=0,L=0,N=0;if(o?U=m[A-1]:d[w+1]==0?U=m[A+2]:U=Math.atan2(F,P),U-=Math.atan2(B,I),y){L=Math.cos(U),N=Math.sin(U);let O=M.data.length;g+=(O*(L*I-N*B)-P)*i,v+=(O*(N*I+L*B)-F)*i}else U+=b;U>Ye.PI?U-=Ye.PI2:U<-3.1415927&&(U+=Ye.PI2),U*=i,L=Math.cos(U),N=Math.sin(U),M.a=L*I-N*B,M.b=L*k-N*D,M.c=N*I+L*B,M.d=N*k+L*D}M.updateAppliedTransform()}}computeWorldPositions(e,t,i){let n=this.target,r=this.position,a=this.spaces,o=$e.setArraySize(this.positions,t*3+2),h=this.world,l=e.closed,c=e.worldVerticesLength,u=c/6,d=Qi.NONE;if(!e.constantSpeed){let O=e.lengths;u-=l?1:2;let X=O[u];this.data.positionMode==Bn.Percent&&(r*=X);let E;switch(this.data.spacingMode){case Ri.Percent:E=X;break;case Ri.Proportional:E=X/t;break;default:E=1}h=$e.setArraySize(this.world,8);for(let V=0,q=0,W=0;VX){d!=Qi.AFTER&&(d=Qi.AFTER,e.computeWorldVertices(n,c-6,4,h,0,2)),this.addAfterPosition(K-X,h,0,o,q);continue}for(;;W++){let fe=O[W];if(!(K>fe)){if(W==0)K/=fe;else{let me=O[W-1];K=(K-me)/(fe-me)}break}}W!=d&&(d=W,l&&W==u?(e.computeWorldVertices(n,c-4,4,h,0,2),e.computeWorldVertices(n,0,4,h,4,2)):e.computeWorldVertices(n,W*6+2,8,h,0,2)),this.addCurvePosition(K,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],o,q,i||V>0&&J==0)}return o}l?(c+=2,h=$e.setArraySize(this.world,c),e.computeWorldVertices(n,2,c-4,h,0,2),e.computeWorldVertices(n,0,2,h,c-4,2),h[c-2]=h[0],h[c-1]=h[1]):(u--,c-=4,h=$e.setArraySize(this.world,c),e.computeWorldVertices(n,2,c,h,0,2));let f=$e.setArraySize(this.curves,u),p=0,m=h[0],g=h[1],v=0,b=0,y=0,w=0,A=0,M=0,_=0,R=0,P=0,F=0,I=0,k=0,B=0,D=0;for(let O=0,X=2;Op){this.addAfterPosition(W-p,h,c-4,o,X);continue}for(;;E++){let J=f[E];if(!(W>J)){if(E==0)W/=J;else{let K=f[E-1];W=(W-K)/(J-K)}break}}if(E!=d){d=E;let J=E*6;for(m=h[J],g=h[J+1],v=h[J+2],b=h[J+3],y=h[J+4],w=h[J+5],A=h[J+6],M=h[J+7],_=(m-v*2+y)*.03,R=(g-b*2+w)*.03,P=((v-y)*3-m+A)*.006,F=((b-w)*3-g+M)*.006,I=_*2+P,k=R*2+F,B=(v-m)*.3+_+P*.16666667,D=(b-g)*.3+R+F*.16666667,N=Math.sqrt(B*B+D*D),L[0]=N,J=1;J<8;J++)B+=I,D+=k,I+=P,k+=F,N+=Math.sqrt(B*B+D*D),L[J]=N;B+=I,D+=k,N+=Math.sqrt(B*B+D*D),L[8]=N,B+=I+P,D+=k+F,N+=Math.sqrt(B*B+D*D),L[9]=N,V=0}for(W*=N;;V++){let J=L[V];if(!(W>J)){if(V==0)W/=J;else{let K=L[V-1];W=V+(W-K)/(J-K)}break}}this.addCurvePosition(W*.1,m,g,v,b,y,w,A,M,o,X,i||O>0&&q==0)}return o}addBeforePosition(e,t,i,n,r){let a=t[i],o=t[i+1],h=t[i+2]-a,l=t[i+3]-o,c=Math.atan2(l,h);n[r]=a+e*Math.cos(c),n[r+1]=o+e*Math.sin(c),n[r+2]=c}addAfterPosition(e,t,i,n,r){let a=t[i+2],o=t[i+3],h=a-t[i],l=o-t[i+1],c=Math.atan2(l,h);n[r]=a+e*Math.cos(c),n[r+1]=o+e*Math.sin(c),n[r+2]=c}addCurvePosition(e,t,i,n,r,a,o,h,l,c,u,d){if(e==0||isNaN(e)){c[u]=t,c[u+1]=i,c[u+2]=Math.atan2(r-i,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,v=g*m,b=m*e,y=b*3,w=m*y,A=y*e,M=t*v+n*w+a*A+h*p,_=i*v+r*w+o*A+l*p;c[u]=M,c[u+1]=_,d&&(e<.001?c[u+2]=Math.atan2(r-i,n-t):c[u+2]=Math.atan2(_-(i*g+r*b*2+o*f),M-(t*g+n*b*2+a*f)))}},x(Qi,"NONE",-1),x(Qi,"BEFORE",-2),x(Qi,"AFTER",-3),x(Qi,"epsilon",1e-5),Qi),yR=class{constructor(e,t){x(this,"data");x(this,"_bone",null);x(this,"inertia",0);x(this,"strength",0);x(this,"damping",0);x(this,"massInverse",0);x(this,"wind",0);x(this,"gravity",0);x(this,"mix",0);x(this,"_reset",!0);x(this,"ux",0);x(this,"uy",0);x(this,"cx",0);x(this,"cy",0);x(this,"tx",0);x(this,"ty",0);x(this,"xOffset",0);x(this,"xVelocity",0);x(this,"yOffset",0);x(this,"yVelocity",0);x(this,"rotateOffset",0);x(this,"rotateVelocity",0);x(this,"scaleOffset",0);x(this,"scaleVelocity",0);x(this,"active",!1);x(this,"skeleton");x(this,"remaining",0);x(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const i=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,a=this.data.scaleX>0,o=this.bone,h=o.data.length;switch(e){case Lr.none:return;case Lr.reset:this.reset();case Lr.update:const l=this.skeleton,c=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=c,this.lastTime=l.time;const u=o.worldX,d=o.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,v=-1,b=this.data.limit*c,y=b*Math.abs(l.scaleY);if(b*=Math.abs(l.scaleX),i||n){if(i){const w=(this.ux-u)*p;this.xOffset+=w>b?b:w<-b?-b:w,this.ux=u}if(n){const w=(this.uy-d)*p;this.yOffset+=w>y?y:w<-y?-y:w,this.uy=d}if(f>=m){v=Math.pow(this.damping,60*m);const w=this.massInverse*m,A=this.strength,M=this.wind*g*l.scaleX,_=this.gravity*g*l.scaleY;do i&&(this.xVelocity+=(M-this.xOffset*A)*w,this.xOffset+=this.xVelocity*m,this.xVelocity*=v),n&&(this.yVelocity-=(_+this.yOffset*A)*w,this.yOffset+=this.yVelocity*m,this.yVelocity*=v),f-=m;while(f>=m)}i&&(o.worldX+=this.xOffset*t*this.data.x),n&&(o.worldY+=this.yOffset*t*this.data.y)}if(r||a){let w=Math.atan2(o.c,o.a),A=0,M=0,_=0,R=this.cx-o.worldX,P=this.cy-o.worldY;if(R>b?R=b:R<-b&&(R=-b),P>y?P=y:P<-y&&(P=-y),r){_=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(P+this.ty,R+this.tx)-w-this.rotateOffset*_;this.rotateOffset+=(F-Math.ceil(F*Ye.invPI2-.5)*Ye.PI2)*p,F=this.rotateOffset*_+w,A=Math.cos(F),M=Math.sin(F),a&&(F=h*o.getWorldScaleX(),F>0&&(this.scaleOffset+=(R*A+P*M)*p/F))}else{A=Math.cos(w),M=Math.sin(w);const F=h*o.getWorldScaleX();F>0&&(this.scaleOffset+=(R*A+P*M)*p/F)}if(f=this.remaining,f>=m){v==-1&&(v=Math.pow(this.damping,60*m));const F=this.massInverse*m,I=this.strength,k=this.wind,B=Ip.yDown?-this.gravity:this.gravity,D=h/g;for(;;)if(f-=m,a&&(this.scaleVelocity+=(k*A-B*M-this.scaleOffset*I)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=v),r){if(this.rotateVelocity-=((k*M+B*A)*D+this.rotateOffset*I)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=v,f0){let f=0;this.data.rotate>0&&(f=l*this.data.rotate,c=Math.sin(f),u=Math.cos(f),d=o.b,o.b=u*d-c*o.d,o.d=c*d+u*o.d),f+=l*this.data.shearX,c=Math.sin(f),u=Math.cos(f),d=o.a,o.a=u*d-c*o.c,o.c=c*d+u*o.c}else l*=this.data.rotate,c=Math.sin(l),u=Math.cos(l),d=o.a,o.a=u*d-c*o.c,o.c=c*d+u*o.c,d=o.b,o.b=u*d-c*o.d,o.d=c*d+u*o.d}if(a){const l=1+this.scaleOffset*t*this.data.scaleX;o.a*=l,o.c*=l}e!=Lr.pose&&(this.tx=h*o.a,this.ty=h*o.c),o.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,i){const n=i*Ye.degRad,r=Math.cos(n),a=Math.sin(n),o=this.cx-e,h=this.cy-t;this.translate(o*r-h*a-o,o*a+h*r-h)}},xR=class{constructor(e,t){x(this,"data");x(this,"bone");x(this,"color");x(this,"darkColor",null);x(this,"attachment",null);x(this,"attachmentState",0);x(this,"sequenceIndex",-1);x(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new Mt,this.darkColor=e.darkColor?new Mt:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof gr)||!(this.attachment instanceof gr)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},bR=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0);x(this,"temp",new Fh);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?Ye.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,b=g.length;vYe.PI?R-=Ye.PI2:R<-3.1415927&&(R+=Ye.PI2),R*=e;let P=Math.cos(R),F=Math.sin(R);y.a=P*w-F*M,y.b=P*A-F*_,y.c=F*w+P*M,y.d=F*A+P*_}if(o){let w=this.temp;h.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),y.worldX+=(w.x-y.worldX)*t,y.worldY+=(w.y-y.worldY)*i}if(n!=0){let w=Math.sqrt(y.a*y.a+y.c*y.c);w!=0&&(w=(w+(Math.sqrt(l*l+u*u)-w+this.data.offsetScaleX)*n)/w),y.a*=w,y.c*=w}if(r!=0){let w=Math.sqrt(y.b*y.b+y.d*y.d);w!=0&&(w=(w+(Math.sqrt(c*c+d*d)-w+this.data.offsetScaleY)*r)/w),y.b*=w,y.d*=w}if(a>0){let w=y.b,A=y.d,M=Math.atan2(A,w),_=Math.atan2(d,c)-Math.atan2(u,l)-(M-Math.atan2(y.c,y.a));_>Ye.PI?_-=Ye.PI2:_<-3.1415927&&(_+=Ye.PI2),_=M+(_+m)*a;let R=Math.sqrt(w*w+A*A);y.b=Math.cos(_)*R,y.d=Math.sin(_)*R}y.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,a=this.mixShearY,o=t!=0||i!=0,h=this.target,l=h.a,c=h.b,u=h.c,d=h.d,f=l*d-c*u>0?Ye.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,b=g.length;vYe.PI?R-=Ye.PI2:R<-3.1415927&&(R+=Ye.PI2),R*=e;let P=Math.cos(R),F=Math.sin(R);y.a=P*w-F*M,y.b=P*A-F*_,y.c=F*w+P*M,y.d=F*A+P*_}if(o){let w=this.temp;h.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),y.worldX+=w.x*t,y.worldY+=w.y*i}if(n!=0){let w=(Math.sqrt(l*l+u*u)-1+this.data.offsetScaleX)*n+1;y.a*=w,y.c*=w}if(r!=0){let w=(Math.sqrt(c*c+d*d)-1+this.data.offsetScaleY)*r+1;y.b*=w,y.d*=w}if(a>0){let w=Math.atan2(d,c)-Math.atan2(u,l);w>Ye.PI?w-=Ye.PI2:w<-3.1415927&&(w+=Ye.PI2);let A=y.b,M=y.d;w=Math.atan2(M,A)+(w-Ye.PI/2+m)*a;let _=Math.sqrt(A*A+M*M);y.b=Math.cos(w)*_,y.d=Math.sin(w)*_}y.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,a=this.mixShearY,o=this.target,h=this.bones;for(let l=0,c=h.length;lt.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new Fh,i=new Fh;return this.getBounds(t,i,void 0,e),{x:t.x,y:t.y,width:i.x,height:i.y}}getBounds(e,t,i=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,a=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let c=0,u=r.length;c=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!i)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=i}};var Yr;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Yr||(Yr={}));let pw=class extends Iu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0);x(this,"offsetRotation",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"offsetScaleX",0);x(this,"offsetScaleY",0);x(this,"offsetShearY",0);x(this,"relative",!1);x(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},Im=class{constructor(e){x(this,"scale",1);x(this,"attachmentLoader");x(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,i=new Bh;i.name="";let n=new wR(e),r=n.readInt32(),a=n.readInt32();i.hash=a==0&&r==0?null:a.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;let o=n.readBoolean();o&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let h=0;h=n.readInt(!0);for(let c=0;c>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==Bn.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==Ri.Length||f.spacingMode==Ri.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),i.pathConstraints.push(f)}h=n.readInt(!0);for(let c=0,u;c>4,e.readFloat())}n.push(M);break}}}}}let a=e.readInt(!0);if(a>0){let l=new vl(a),c=i.slots.length;for(let u=0;u=0;b--)p[b]=-1;let m=$e.newArray(c-f,0),g=0,v=0;for(let b=0;b=0;b--)p[b]==-1&&(p[b]=m[--v]);l.setFrame(u,d,p)}n.push(l)}let o=e.readInt(!0);if(o>0){let l=new Cp(o);for(let c=0;c>>1^-(i&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},SR=class{constructor(e,t,i,n,r){x(this,"parent");x(this,"skinIndex");x(this,"slotIndex");x(this,"mesh");x(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.parent=n,this.inheritTimeline=r}},_R=class{constructor(e=null,t=null,i=0){x(this,"bones");x(this,"vertices");x(this,"length");this.bones=e,this.vertices=t,this.length=i}};var Wn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(Wn||(Wn={}));function Ki(s,e,t){let i=s.readFloat(),n=s.readFloat()*t;for(let r=0,a=0,o=e.getFrameCount()-1;e.setFrame(r,i,n),r!=o;r++){let h=s.readFloat(),l=s.readFloat()*t;switch(s.readByte()){case wn:e.setStepped(r);break;case Sn:Bt(s,e,a++,r,0,i,h,n,l,t)}i=h,n=l}return e}function _f(s,e,t){let i=s.readFloat(),n=s.readFloat()*t,r=s.readFloat()*t;for(let a=0,o=0,h=e.getFrameCount()-1;e.setFrame(a,i,n,r),a!=h;a++){let l=s.readFloat(),c=s.readFloat()*t,u=s.readFloat()*t;switch(s.readByte()){case wn:e.setStepped(a);break;case Sn:Bt(s,e,o++,a,0,i,l,n,c,t),Bt(s,e,o++,a,1,i,l,r,u,t)}i=l,n=c,r=u}return e}function Bt(s,e,t,i,n,r,a,o,h,l){e.setBezier(t,i,n,r,o,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,a,h)}const MR=0,TR=1,AR=2,ER=3,CR=4,IR=5,RR=6,PR=7,kR=8,FR=9,OR=10,BR=0,LR=1,DR=2,NR=3,UR=4,XR=5,VR=0,YR=1,$R=0,GR=1,HR=2,jR=0,WR=1,zR=2,qR=4,KR=5,ZR=6,JR=7,QR=8,wn=1,Sn=2;class ps{constructor(){x(this,"convexPolygons",new Array);x(this,"convexPolygonsIndices",new Array);x(this,"indicesArray",new Array);x(this,"isConcaveArray",new Array);x(this,"triangles",new Array);x(this,"polygonPool",new kh(()=>new Array));x(this,"polygonIndicesPool",new kh(()=>new Array))}triangulate(e){let t=e,i=e.length>>1,n=this.indicesArray;n.length=0;for(let o=0;o3;){let o=i-1,h=0,l=1;for(;;){e:if(!r[h]){let d=n[o]<<1,f=n[h]<<1,p=n[l]<<1,m=t[d],g=t[d+1],v=t[f],b=t[f+1],y=t[p],w=t[p+1];for(let A=(l+1)%i;A!=o;A=(A+1)%i){if(!r[A])continue;let M=n[A]<<1,_=t[M],R=t[M+1];if(ps.positiveArea(y,w,m,g,_,R)&&ps.positiveArea(m,g,v,b,_,R)&&ps.positiveArea(v,b,y,w,_,R))break e}break}if(l==0){do{if(!r[h])break;h--}while(h>0);break}o=h,h=l,l=(l+1)%i}a.push(n[(i+h-1)%i]),a.push(n[h]),a.push(n[(h+1)%i]),n.splice(h,1),r.splice(h,1),i--;let c=(i+h-1)%i,u=h==i?0:h;r[c]=ps.isConcave(c,i,t,n),r[u]=ps.isConcave(u,i,t,n)}return i==3&&(a.push(n[2]),a.push(n[0]),a.push(n[1])),a}decompose(e,t){let i=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let a=this.polygonIndicesPool.obtain();a.length=0;let o=this.polygonPool.obtain();o.length=0;let h=-1,l=0;for(let c=0,u=t.length;c0?(n.push(o),r.push(a)):(this.polygonPool.free(o),this.polygonIndicesPool.free(a)),o=this.polygonPool.obtain(),o.length=0,o.push(m),o.push(g),o.push(v),o.push(b),o.push(y),o.push(w),a=this.polygonIndicesPool.obtain(),a.length=0,a.push(d),a.push(f),a.push(p),l=ps.winding(m,g,v,b,y,w),h=d)}o.length>0&&(n.push(o),r.push(a));for(let c=0,u=n.length;c=0;c--)o=n[c],o.length==0&&(n.splice(c,1),this.polygonPool.free(o),a=r[c],r.splice(c,1),this.polygonIndicesPool.free(a));return n}static isConcave(e,t,i,n){let r=n[(t+e-1)%t]<<1,a=n[e]<<1,o=n[(e+1)%t]<<1;return!this.positiveArea(i[r],i[r+1],i[a],i[a+1],i[o],i[o+1])}static positiveArea(e,t,i,n,r,a){return e*(a-n)+i*(t-a)+r*(n-t)>=0}static winding(e,t,i,n,r,a){let o=i-e,h=n-t;return r*h-a*o+o*t-e*h>=0?1:-1}}class Lh{constructor(){x(this,"triangulator",new ps);x(this,"clippingPolygon",new Array);x(this,"clipOutput",new Array);x(this,"clippedVertices",new Array);x(this,"clippedUVs",new Array);x(this,"clippedTriangles",new Array);x(this,"scratch",new Array);x(this,"clipAttachment",null);x(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let i=t.worldVerticesLength,n=$e.setArraySize(this.clippingPolygon,i);t.computeWorldVertices(e,0,i,n,0,2);let r=this.clippingPolygon;Lh.makeClockwise(r);let a=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let o=0,h=a.length;o>1,M=this.clipOutput,_=$e.setArraySize(r,y+A*2);for(let P=0;P>1,q=this.clipOutput,W=$e.setArraySize(l,D+V*f);for(let K=0;K>1,X=this.clipOutput,E=$e.setArraySize(a,I+O*2),V=$e.setArraySize(o,I+O*2);for(let W=0;W=2?(u=h,h=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(i),u.push(n),u.push(r),u.push(a),u.push(e),u.push(t),h.length=0;let d=o.length-4,f=o;for(let p=0;;p+=2){let m=f[p],g=f[p+1],v=m-f[p+2],b=g-f[p+3],y=h.length,w=u;for(let M=0,_=u.length-2;M<_;){let R=w[M],P=w[M+1];M+=2;let F=w[M],I=w[M+1],k=b*(m-F)>v*(g-I),B=b*(m-R)-v*(g-P);if(B>0){if(k){h.push(F),h.push(I);continue}let D=F-R,U=I-P,L=B/(D*b-U*v);if(L>=0&&L<=1)h.push(R+D*L),h.push(P+U*L);else{h.push(F),h.push(I);continue}}else if(k){let D=F-R,U=I-P,L=B/(D*b-U*v);if(L>=0&&L<=1)h.push(R+D*L),h.push(P+U*L),h.push(F),h.push(I);else{h.push(F),h.push(I);continue}}c=!0}if(y==h.length)return l.length=0,!0;if(h.push(h[0]),h.push(h[1]),p==d)break;let A=h;h=u,h.length=0,u=A}if(l!=h){l.length=0;for(let p=0,m=h.length-2;p>1;l0){let c=i.findPhysicsConstraint(o);if(!c)throw new Error("Physics constraint not found: "+o);l=i.physicsConstraints.indexOf(c)}for(let c in h){let u=h[c],d=u[0];if(!d)continue;let f=u.length;if(c=="reset"){const m=new J1(f,l);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,re(d,"time",0));r.push(m);continue}let p;if(c=="inertia")p=new H1(f,f,l);else if(c=="strength")p=new j1(f,f,l);else if(c=="damping")p=new W1(f,f,l);else if(c=="mass")p=new z1(f,f,l);else if(c=="wind")p=new q1(f,f,l);else if(c=="gravity")p=new K1(f,f,l);else if(c=="mix")p=new Z1(f,f,l);else continue;r.push($s(u,p,0,1))}}if(e.attachments)for(let o in e.attachments){let h=e.attachments[o],l=i.findSkin(o);if(!l)throw new Error("Skin not found: "+o);for(let c in h){let u=h[c],d=i.findSlot(c);if(!d)throw new Error("Slot not found: "+c);let f=d.index;for(let p in u){let m=u[p],g=l.getAttachment(f,p);for(let v in m){let b=m[v],y=b[0];if(y){if(v=="deform"){let w=g.bones,A=g.vertices,M=w?A.length/3*2:A.length,_=new U1(b.length,b.length,f,g),R=re(y,"time",0);for(let P=0,F=0;;P++){let I,k=re(y,"vertices",null);if(!k)I=w?$e.newFloatArray(M):A;else{I=$e.newFloatArray(M);let L=re(y,"offset",0);if($e.arrayCopy(k,0,I,L,k.length),n!=1)for(let N=L,O=N+k.length;N=0;v--)d[v]==-1&&(d[v]=p[--g])}o.setFrame(l,re(u,"time",0),d)}r.push(o)}if(e.events){let o=new Cp(e.events.length),h=0;for(let l=0;l"u"&&(Math.fround=(function(s){return function(e){return s[0]=e,s[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let s=window.require;window.require=e=>{if(s)return s(e);if(e.startsWith("@pixi/"))return window.PIXI}}const qn=class qn extends dR{constructor(t){super(t.resource.source);x(this,"texture");this.texture=pt.from(t)}static from(t){return qn.textureMap.has(t)?qn.textureMap.get(t):new qn(t)}setFilters(t,i){this.texture.baseTexture.scaleMode=qn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=qn.toPixiMipMap(t)}setWraps(t,i){this.texture.baseTexture.wrapMode=qn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case Bi.Nearest:case Bi.MipMapNearestLinear:case Bi.MipMapNearestNearest:return qs.NEAREST;case Bi.Linear:case Bi.MipMapLinearLinear:case Bi.MipMapLinearNearest:return qs.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case Bi.Nearest:case Bi.Linear:return Us.OFF;case Bi.MipMapNearestLinear:case Bi.MipMapNearestNearest:case Bi.MipMapLinearLinear:case Bi.MipMapLinearNearest:return Us.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case hr.ClampToEdge:return Js.CLAMP;case hr.MirroredRepeat:return Js.MIRRORED_REPEAT;case hr.Repeat:return Js.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case Yr.Normal:return dt.NORMAL;case Yr.Additive:return dt.ADD;case Yr.Multiply:return dt.MULTIPLY;case Yr.Screen:return dt.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};x(qn,"textureMap",new Map);let Oa=qn;const Kn=class Kn extends Dl{constructor(){const t=new _p;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const i=new Ch(pt.EMPTY);super(t,i);x(this,"name","");x(this,"warnedTwoTint",!1)}updateFromSpineData(t,i,n,r,a,o,h,l){var v,b;this.texture=t.texture;const c=a/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==c&&(u.data=new Float32Array(c));const d=this.geometry.getBuffer("aVertexPosition");((b=d.data)==null?void 0:b.length)!==c&&(d.data=new Float32Array(c));let f=0,p=u.data,m=d.data;for(let y=0;y0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,ao.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=We.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};Sm.availableFonts={},Sm.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let ff=Sm;const Tc=class oo extends Zr{constructor(e="",t={}){super(gt.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,n=gt.from(i,{scaleMode:We.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new Tt,n.trim=new Tt,this.texture=n;const r="http://www.w3.org/2000/svg",a="http://www.w3.org/1999/xhtml",o=document.createElementNS(r,"svg"),h=document.createElementNS(r,"foreignObject"),l=document.createElementNS(a,"div"),c=document.createElementNS(a,"style");h.setAttribute("width","10000"),h.setAttribute("height","10000"),h.style.overflow="hidden",o.appendChild(h),this.maxWidth=oo.defaultMaxWidth,this.maxHeight=oo.defaultMaxHeight,this._domElement=l,this._styleElement=c,this._svgRoot=o,this._foreignObject=h,this._foreignObject.appendChild(c),this._foreignObject.appendChild(l),this._image=i,this._loadImage=new Image,this._autoResolution=oo.defaultAutoResolution,this._resolution=oo.defaultResolution??We.RESOLUTION,this.text=e,this.style=t}measureText(e){var c,u;const{text:t,style:i,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(n)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:a,height:o}=r;(a>this.maxWidth||o>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const h=Math.min(this.maxWidth,Math.ceil(a)),l=Math.min(this.maxHeight,Math.ceil(o));return this._svgRoot.setAttribute("width",h.toString()),this._svgRoot.setAttribute("height",l.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:(c=this._style)==null?void 0:c.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:h+i.padding*2,height:l+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:a}=this.measureText();i.width=n.width=Math.ceil(Math.max(1,r)),i.height=n.height=Math.ceil(Math.max(1,a)),this._updateID++;const o=this._updateID;await new Promise(h=>{n.onload=async()=>{if(o/gi,"
").replace(/
/gi,"
").replace(/ /gi," ")}};Tc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},Tc.defaultMaxWidth=2024,Tc.defaultMaxHeight=2024,Tc.defaultAutoResolution=!0;function Rh(s,e){const t=Math.max(0,Number(s)||0),i=Math.max(0,Number(e)||0);return{inner:Math.min(t,i),outer:Math.max(t,i)}}function u1(s){const e=Math.max(0,Number(s.outerRectW)||0),t=Math.max(0,Number(s.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(s.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(s.innerRectH)||0)),outerW:e,outerH:t}}function RI(s,e,t,i,n){if(s==="random")return n();const r=Math.max(1,Math.round(t)),a=Math.max(0,Math.round(e))%r;return i?a/r:r<=1?.5:a/(r-1)}function Rv(s,e,t,i){const n=Math.sqrt(s*s+i()*(e*e-s*s));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function PI(s,e){const{innerW:t,innerH:i,outerW:n,outerH:r}=u1(s),a=Math.max(0,(n-t)/2),o=Math.max(0,(r-i)/2),h=a*r,l=t*o,c=h*2+l*2;if(c<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,v;return mtypeof B=="object"&&B!==null?{...B}:B):k);i&&(s.innerRadius=0,s.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),s.innerRectW=0,s.innerRectH=0,s.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),s.outerRectH=Math.max(0,Number.isFinite(a)?a:e.outerRectH),s.coneDirection=Number.isFinite(o)?o:90,s.emissionAngleMode=Number.isFinite(h)&&h>0?"random":"fixed",l==="cone"&&(s.spread=Math.max(0,Number(s.coneAngle)||0)),s.shapeRangeVersion=1),s.shape==="orbit"&&(s.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(s.emissionAngleMode)||(s.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(s.shape)&&s.emissionAngleMode==="radial"&&(s.emissionAngleMode="fixed"),s.shape!=="path"&&(s.emissionAngleMode==="path-normal"||s.emissionAngleMode==="path-tangent")&&(s.emissionAngleMode="fixed"),s.spawnPathId=Math.max(0,Math.round(Number(s.spawnPathId)||0)),s.spawnPathDistribution!=="fixed"&&s.spawnPathDistribution!=="random"&&(s.spawnPathDistribution="fixed"),s.innerRadius=Math.max(0,Number(s.innerRadius)||0),s.outerRadius=Math.max(s.innerRadius,Number(s.outerRadius)||0),s.innerRectW=Math.max(0,Number(s.innerRectW)||0),s.innerRectH=Math.max(0,Number(s.innerRectH)||0),s.outerRectW=Math.max(s.innerRectW,Number(s.outerRectW)||0),s.outerRectH=Math.max(s.innerRectH,Number(s.outerRectH)||0);const P=Array.from(new Set((Array.isArray(s.collisionColliderIds)?s.collisionColliderIds:[]).map(I=>Math.round(Number(I))).filter(I=>Number.isFinite(I)&&I>0)));(P.length!==s.collisionColliderIds.length||P.some((I,k)=>I!==s.collisionColliderIds[k]))&&(s.collisionColliderIds=P),s.streamBehavior!=="normal"&&s.streamBehavior!=="loop"&&(s.streamBehavior="normal"),(u||!Number.isFinite(s.loopDurationFrames))&&(s.loopDurationFrames=Math.ceil(Math.max(1/30,Number(s.duration)||1)*30)),s.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(s.loopDurationFrames))),typeof s.generateLoopStartAnimation!="boolean"&&(s.generateLoopStartAnimation=!1),typeof s.generateLoopEndAnimation!="boolean"&&(s.generateLoopEndAnimation=!1),typeof s.loopStartUseCustomDuration!="boolean"&&(s.loopStartUseCustomDuration=!1),typeof s.loopEndUseCustomDuration!="boolean"&&(s.loopEndUseCustomDuration=!1),s.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopStartDurationFrames)||30))),s.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopEndDurationFrames)||30))),(!Array.isArray(s.imageResources)||s.imageResources.length===0)&&(s.imageResources=Dl().imageResources);for(const I of s.imageResources){!I.texture&&s.texture&&(I.texture=s.texture),I.textureName||(I.textureName="star"),I.previewUrl==="/particles/star.png"&&(I.previewUrl="/images/star.png"),I.previewUrl||(I.previewUrl=I.textureName==="star"?"/images/star.png":""),I.imageMode!=="fixed"&&I.imageMode!=="sequence"&&(I.imageMode="fixed"),I.sequencePlayback==="once"?I.sequencePlayback="once-hold":I.sequencePlayback==="loop"?I.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(I.sequencePlayback)||(I.sequencePlayback="loop-forward"),Number.isFinite(I.sequenceFps)||(I.sequenceFps=30),I.sequenceFps=Math.min(120,Math.max(1,Number(I.sequenceFps)||30)),Array.isArray(I.sequenceFrames)||(I.sequenceFrames=[]);for(const k of I.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.scale)||(I.scale=1),Number.isFinite(I.anchorX)||(I.anchorX=.5),Number.isFinite(I.anchorY)||(I.anchorY=.5),I.colorMode!=="fixed"&&I.colorMode!=="random"&&I.colorMode!=="lifetime"&&(I.colorMode=s.colorOverLife?"lifetime":"fixed"),I.colorStart||(I.colorStart=s.colorStart||"#ffffff"),I.colorEnd||(I.colorEnd=s.colorEnd||I.colorStart),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=[{position:0,color:I.colorStart},{position:1,color:I.colorEnd}]),Object.prototype.hasOwnProperty.call(Rr,I.blend)||(I.blend=s.blend||"normal"),["off","fixed","curve"].includes(I.independentAlpha)||(I.independentAlpha=s.independentAlpha||"off"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(s.alphaScale)?s.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(I.alphaCurveMode)||(I.alphaCurveMode=s.curveMode||"跟随导出"),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(s.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(s.imageResources.length===1)s.imageResources[0].weight=100,s.imageResources[0].locked=!1;else if(c){const I=100/s.imageResources.length;s.imageResources.forEach((k,B)=>{k.weight=B===s.imageResources.length-1?100-I*(s.imageResources.length-1):I,k.locked=!1})}if(s.imageWeightVersion=1,d){const I=Number.isFinite(f)&&f!==0?f:980;s.gravity=I,s.gravityMin=I,s.gravityMax=I}if(p){const I=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);s.windMin=I?Math.hypot(m,g):100,s.windMax=s.windMin,s.windDirection=I?Math.atan2(-g,m)*180/Math.PI:0}v&&(s.forceStrength=Number.isFinite(b)&&b!==0?b:10),y&&(s.trailConfigVersion=3,s.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],s.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],s.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],s.trailGridRows=4,s.trailGridCols=4),(w||!s.trailResources.length)&&(s.trailResources=[{id:1,texture:T||null,textureName:_,previewUrl:R,weight:100,locked:!1,rotation:0,colorMode:s.trailColorMode,color:s.trailColor,colorGradient:s.trailColorGradient.map(I=>({...I})),blend:"normal",alphaMode:s.trailAlphaMode,alpha:s.trailAlpha,alphaCurve:s.trailAlphaCurve.map(I=>({...I})),boneCount:s.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:s.trailLength,lengthMin:s.trailLength,lengthMax:s.trailLength,widthSizeMode:"fixed",width:s.trailWidth,widthMin:s.trailWidth,widthMax:s.trailWidth,widthMode:s.trailWidthMode,lifeLengthEnabled:s.trailLifeLengthEnabled,lifeLengthCurve:s.trailLifeLengthCurve.map(I=>({...I})),shapeEnabled:s.trailShapeEnabled,shapeCurve:s.trailShapeCurve.map(I=>({...I}))}]);for(const I of s.trailResources)I.textureName||(I.textureName="trail"),I.previewUrl==="/trails/trail.png"&&(I.previewUrl="/images/trail.png"),I.previewUrl||(I.previewUrl="/images/trail.png"),Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.rotation)||(I.rotation=0),["particle","fixed","curve"].includes(I.colorMode)||(I.colorMode=s.trailColorMode||"particle"),I.color||(I.color=s.trailColor||"#ffffff"),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=(s.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(Rr,I.blend)||(I.blend="normal"),["particle","fixed","curve"].includes(I.alphaMode)||(I.alphaMode=s.trailAlphaMode||"particle"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(s.trailAlpha)?s.trailAlpha:1),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(s.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(I.boneCount)||(I.boneCount=Number.isFinite(s.trailBoneCount)?s.trailBoneCount:3),Number.isFinite(I.trailRatio)||(I.trailRatio=100),I.trailRatio=Math.min(100,Math.max(0,I.trailRatio)),["fixed","random"].includes(I.lengthMode)||(I.lengthMode="fixed"),Number.isFinite(I.length)||(I.length=Number.isFinite(s.trailLength)?s.trailLength:100),Number.isFinite(I.lengthMin)||(I.lengthMin=I.length),Number.isFinite(I.lengthMax)||(I.lengthMax=I.length),["fixed","random"].includes(I.widthSizeMode)||(I.widthSizeMode="fixed"),Number.isFinite(I.width)||(I.width=Number.isFinite(s.trailWidth)?s.trailWidth:100),Number.isFinite(I.widthMin)||(I.widthMin=I.width),Number.isFinite(I.widthMax)||(I.widthMax=I.width),["particle","fixed"].includes(I.widthMode)||(I.widthMode=s.trailWidthMode||"particle"),typeof I.lifeLengthEnabled!="boolean"&&(I.lifeLengthEnabled=!!s.trailLifeLengthEnabled),(!Array.isArray(I.lifeLengthCurve)||I.lifeLengthCurve.length<2)&&(I.lifeLengthCurve=(s.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof I.shapeEnabled!="boolean"&&(I.shapeEnabled=!!s.trailShapeEnabled),(!Array.isArray(I.shapeCurve)||I.shapeCurve.length<2)&&(I.shapeCurve=(s.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(s.trailResources.length===1&&(s.trailResources[0].weight=100,s.trailResources[0].locked=!1),A)for(const I of s.trailResources)I.alphaCurve=((F=I.alphaCurve)==null?void 0:F.length)>=2?I.alphaCurve:[{x:0,y:1},{x:1,y:1}];return s.trailResourceVersion=6,s}const Rr={normal:0,add:1,multiply:2,screen:3},OI=400;class BI extends ji{constructor(t,i=OI){super();x(this,"pool",[]);x(this,"cfg");x(this,"accumulator",0);x(this,"burstTimer",0);x(this,"_spawnSerial",0);x(this,"_elapsed",0);x(this,"_attractionEnabledAt",0);x(this,"_attractionWasEnabled",!1);x(this,"_emitterPos",null);x(this,"states",[]);x(this,"rng",Math.random);x(this,"_lastSeed",-1);x(this,"trailDebugGfx",new ys);x(this,"colliders",[]);x(this,"followSpawnX",0);x(this,"followSpawnY",0);x(this,"followSpawnAngle",0);x(this,"spawnPathSampler",null);x(this,"spawnPathClosed",!1);x(this,"followExportCurveMode","线性");x(this,"simulationTransform",null);this.cfg=Wr(t),this._ensurePool(i),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=pf(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),a=i==="force"||i==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const o=[];for(let p=0;p0){const O=Math.max(1e-4,Math.abs(n.rootScaleX)),X=Math.max(1e-4,Math.abs(n.rootScaleY)),E=-(((h=this.simulationTransform)==null?void 0:h.rotation)??n.rootRotation)*Math.PI/180,V=Math.cos(E),q=Math.sin(E),W=((l=this.simulationTransform)==null?void 0:l.centerX)??n.centerX,J=((c=this.simulationTransform)==null?void 0:c.centerY)??n.centerY,K=W+V*O*m.x-q*X*m.y,fe=-J+q*O*m.x+V*X*m.y,me=K,we=-fe,Ee=n.forceCenterX-me,pe=n.forceCenterY-we,Ae=Math.hypot(Ee,pe);if(Ae>1e-4&&Ae<=n.forceRadius){let G=1;n.forceFalloff==="linear"?G=1-Ae/n.forceRadius:n.forceFalloff==="inverse"&&(G=Math.min(10,n.forceRadius/Math.max(Ae,n.forceRadius*.1)));const Z=n.forceStrength*G*10,z=Ee/Ae*Z,j=pe/Ae*Z,te=z,he=-j;m.vx+=(V*te+q*he)/O*t,m.vy+=(-q*te+V*he)/X*t}}if(!m.collisionPaused&&n.damping>0){const O=Math.max(0,1-n.damping*t);m.vx*=O,m.vy*=O}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const O=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?O>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const E=Za(n,m.x,m.y,this.simulationTransform),V=n.attractionCenterX,q=n.attractionCenterY,W=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(V-E.x,q-E.y)<=W){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=E.x,m.attractionStartWorldY=E.y}m.attractionElapsed+=t;const J=Math.max(1e-4,n.attractionDuration),K=Math.min(1,m.attractionElapsed/J);let fe=Vi(m.attractionStartWorldX,V,K),me=Vi(m.attractionStartWorldY,q,K);if(n.attractionPath==="curve"){const pe=V-m.attractionStartWorldX,Ae=q-m.attractionStartWorldY,G=Math.hypot(pe,Ae);if(G>1e-4){const Z=G*.25*m.attractionCurveSide,z=(m.attractionStartWorldX+V)*.5-Ae/G*Z,j=(m.attractionStartWorldY+q)*.5+pe/G*Z,te=1-K;fe=te*te*m.attractionStartWorldX+2*te*K*z+K*K*V,me=te*te*m.attractionStartWorldY+2*te*K*j+K*K*q}}const we=Math.hypot(V-fe,q-me);if(K>=1||we<=W){this.kill(p);continue}const Ee=Pv(n,fe,me,this.simulationTransform);m.x=Ee.x,m.y=Ee.y,m.vx=0,m.vy=0}}const v=g,b=m.sprite,y=n.imageResources.find(O=>O.id===m.resourceId);if(y){const O=this.imageFrameState(y,m.maxLife-m.life);m.imageFrameIndex=O.index,b.texture=this.imageFrameTexture(y,m.imageFrameIndex),b.visible=O.visible}if(n.speedOverLifeEnabled){const O=Ac(mf(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,v,m.speedScaleTarget),1),X=m.speedScale===0?O:O/m.speedScale;m.vx*=X,m.vy*=X,m.speedScale=O}let w=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(w=Vi(n.rotationSpeedMin,n.rotationSpeedMax,wn(n.rotationOverLifeCurve,v))),m.rotation+=w*t;let A=m.x,T=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const O=m.maxLife-m.life,X=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,E=O*Math.max(0,n.noiseSpeed)*Math.PI*2;A+=(Math.sin(m.noisePhaseX+E)-Math.sin(m.noisePhaseX))*X,T+=(Math.sin(m.noisePhaseY+E*.83)-Math.sin(m.noisePhaseY))*X}b.x=A,b.y=T,b.rotation=-m.rotation*Math.PI/180;let _=1,R=1;n.scaleOverLifeEnabled&&(_=mf(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,v,m.scaleOverLifeX),R=n.scaleOverLifeAxisMode==="separate"?mf(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,v,m.scaleOverLifeY):_),b.scale.set(Ac(m.scaleStartX*_,1),Ac(m.scaleStartY*R,1));const P=n.alphaMode==="curve"?wn(n.alphaCurve,v,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;b.alpha=Ac((y==null?void 0:y.independentAlpha)==="fixed"?y.alpha:(y==null?void 0:y.independentAlpha)==="curve"?wn(y.alphaCurve,v,this.resolveCurveMode(y.alphaCurveMode)):P,1);const F=(y==null?void 0:y.colorStart)||"#ffffff",I=(y==null?void 0:y.colorMode)==="lifetime"?gf(y.colorGradient,v):(y==null?void 0:y.colorMode)==="random"?m.colorSample:Mo(F);b.tint=I,b.blendMode=Rr[(y==null?void 0:y.blend)||"normal"];const k=this.updateTrail(m,A,T,v,b),B=Za(n,A,T,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,U=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),L=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),N=k?{...k,bones:k.bones.map(O=>{const X=Za(n,O.x,O.y,this.simulationTransform);return{...O,worldX:X.x,worldY:X.y,worldRotation:D-O.rotation}})}:void 0;o.push({boneName:m.boneName,spawnId:m.spawnId,x:A,y:T,rotation:m.rotation,scaleX:b.scale.x,scaleY:b.scale.y,worldX:B.x,worldY:B.y,worldRotation:D+m.rotation,worldScaleX:b.scale.x*U,worldScaleY:b.scale.y*L,alpha:b.alpha,colorHex:I,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:b.visible,trailState:N,active:!0})}return this.states=o,o}ensureTrailMesh(t){const i=this.cfg,n=i.trailResources.find(g=>g.id===t.trailResourceId)||i.trailResources[0],r=(n==null?void 0:n.texture)||gt.EMPTY,a=Number(n==null?void 0:n.rotation)||0,o=Math.max(2,Math.min(16,Math.round(i.trailGridRows))),h=Math.max(2,Math.min(32,Math.round(i.trailGridCols))),l=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),c=`${o}:${h}:${l}:${(n==null?void 0:n.id)??0}:${a}`;if(t.trailMesh&&t.trailMeshSignature===c)return t.trailMesh.texture!==r&&(t.trailMesh.texture=r),t.trailMesh;t.trailMesh&&(this.removeChild(t.trailMesh),t.trailMesh.destroy()),t.trailMeshSignature&&t.trailMeshSignature!==c&&(t.trailHistory.length=0,t.trailBones.length=0);const u=new Float32Array(o*h*2),d=new Float32Array(o*h*2),f=[],p=[];for(let g=0;g.05?t.trailHistory.unshift({x:i,y:n}):(a.x=i,a.y=n);const o=Math.max(1,r)*1.5;let h=0,l=t.trailHistory.length;for(let c=1;c=o||c>=239){l=c+1;break}t.trailHistory.length>l&&(t.trailHistory.length=l)}sampleTrailBones(t,i,n){const r=Math.max(2,Math.min(16,Math.round(n))),a=t.trailHistory,o=[];if(!a.length)return o;let h=0;for(let c=1;c=u&&v>1e-4){const b=(u-d)/v;f={x:Vi(m.x,g.x,b),y:Vi(m.y,g.y,b)};break}d+=v}o.push({boneName:`${t.boneName}_trail_${c}`,x:f.x,y:f.y,rotation:0})}for(let c=0;c1){const c=o[0].rotation,d=(o[o.length-1].rotation-c+540)%360-180;for(let f=0;fu.id===i.resourceId)||r.trailResources[0];if(!(a!=null&&a.texture)||i.bones.length<2){n.visible=!1;return}t.trailResourceId=a.id,n.texture!==a.texture&&(n.texture=a.texture);const o=Math.max(2,Math.min(16,Math.round(r.trailGridRows))),h=Math.max(2,Math.min(32,Math.round(r.trailGridCols))),l=n.vertices,c=[];for(let u=0;u.5&&i.alpha>0}updateTrail(t,i,n,r,a){const o=this.cfg;if(!o.trail||!t.trailEnabled||t.trailSampledLength<=0||t.trailSampledWidth<=0){t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1);return}this.ensureTrailMesh(t);const h=o.trailResources.find(f=>f.id===t.trailResourceId)||o.trailResources[0];this.appendTrailPoint(t,i,n,t.trailSampledLength);const l=h!=null&&h.lifeLengthEnabled?Math.max(0,wn(h.lifeLengthCurve,r)):1,c=Math.max(0,t.trailSampledLength)*l;t.trailBones=this.sampleTrailBones(t,c,(h==null?void 0:h.boneCount)??3),t.trailBones[0]&&(t.trailBones[0].x=i,t.trailBones[0].y=n);const u=(h==null?void 0:h.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;t.trailCurrentWidth=Math.max(0,t.trailSampledWidth)*u,t.trailCurrentAlpha=(h==null?void 0:h.alphaMode)==="particle"?a.alpha:(h==null?void 0:h.alphaMode)==="curve"?wn(h.alphaCurve,r):(h==null?void 0:h.alpha)??1,t.trailCurrentColor=(h==null?void 0:h.colorMode)==="particle"?a.tint:(h==null?void 0:h.colorMode)==="curve"?gf(h.colorGradient,r):Mo((h==null?void 0:h.color)||"#ffffff");const d={bones:t.trailBones.map(f=>({...f})),activeBoneCount:t.trailBones.length,width:t.trailCurrentWidth,alpha:Math.min(1,Math.max(0,t.trailCurrentAlpha)),colorHex:t.trailCurrentColor,resourceId:t.trailResourceId};return this.skinTrailMesh(t,d),d}drawTrailMeshDebug(t){const i=this.trailDebugGfx;if(i.clear(),!t||!this.cfg.trail)return;const n=Math.max(2,Math.min(16,Math.round(this.cfg.trailGridRows))),r=Math.max(2,Math.min(32,Math.round(this.cfg.trailGridCols)));i.lineStyle(1,3790847,.72);for(const a of this.pool){const o=a.trailMesh;if(!(o!=null&&o.visible))continue;const h=o.vertices,l=(c,u)=>{const d=(c*n+u)*2;return{x:h[d],y:h[d+1]}};for(let c=0;c0&&this.spawnPathSampler){const o=this.estimatedEmissionCount(),h=RI(t.spawnPathDistribution,this._spawnSerial,o,this.spawnPathClosed,this.rng),l=this.spawnPathSampler(h);if(l)return{...this.applyFollowToOrigin(l.x+i,l.y+n),radialAngle:0,pathAngle:l.angle}}const r=kI(t,this.rng);return{...this.applyFollowToOrigin(i+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,i){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),a=Math.sin(n);return{x:this.followSpawnX+r*t-a*i,y:this.followSpawnY+a*t+r*i}}spawnOne(){const t=this.cfg;let i=this.pool.findIndex(w=>!w.active);if(i===-1)return;const n=this.spawnOrigin(),{x:r,y:a}=n,o=Ja(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),h=Ja(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),l=FI(t,n,this.followSpawnAngle,this.rng),c=this.pool[i],u=this.pickImageResource(),d=this._spawnSerial++;c.spawnId=d;const f=this.pickTrailResource(ca(t.seed,d,1540483477));c.noisePhaseX=ca(t.seed,d,1757159915)*Math.PI*2,c.noisePhaseY=ca(t.seed,d,48610963)*Math.PI*2,c.gravityStrength=t.useGravity&&t.gravityMode==="random"?Vi(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,c.windStrength=t.wind&&t.windMode==="random"?Vi(t.windMin,t.windMax,this.rng()):t.windMin,c.attractionActive=!1,c.attractionElapsed=0,c.collisionPaused=!1,c.attractionCurveSide=ca(t.seed,d,2738958700)<.5?-1:1,c.trailHistory.length=0,c.trailBones.length=0,c.trailCurrentWidth=0,c.trailCurrentAlpha=0,c.trailCurrentColor=16777215,c.trailResourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,v=ca(t.seed,d,668265261)*100,b=(w,A,T,_,R)=>{if(w!=="random")return Math.max(0,Number(A)||0);const P=Math.max(0,Math.min(Number(T)||0,Number(_)||0)),F=Math.max(0,Math.max(Number(T)||0,Number(_)||0));return Vi(P,F,ca(t.seed,d,R))};c.trailSampledLength=b(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),c.trailSampledWidth=b(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),c.trailEnabled=t.trail&&(g||v0&&c.trailSampledWidth>0,c.trailMesh&&(c.trailMesh.visible=!1),c.active=!0,c.life=o,c.maxLife=o,c.x=r,c.y=a,c.trailEnabled&&c.trailHistory.push({x:r,y:a}),c.vx=Math.cos(l)*h,c.vy=Math.sin(l)*h,c.scaleStartX=Ja(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,c.scaleStartY=t.scaleAxisMode==="separate"?Ja(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:c.scaleStartX,c.alphaStart=t.alpha,c.alphaEnd=t.alphaEnd,c.rotation=t.initialRotationMode==="direction"?-Math.atan2(c.vy,c.vx)*180/Math.PI+t.initialRotationMin:Ja(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),c.rotationSpeed=t.rotationOverLifeEnabled?Ja(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,c.speedScale=1,c.speedScaleTarget=t.speedOverLifeMode==="random"?Vi(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,c.scaleOverLifeX=t.scaleOverLifeMode==="random"?Vi(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,c.scaleOverLifeY=t.scaleOverLifeMode==="random"?Vi(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,c.resourceId=u.id,c.colorSample=u.colorMode==="random"?gf(u.colorGradient,ca(t.seed,d,2654435769)):Mo(u.colorStart);const y=this.imageFrameState(u,0);c.imageFrameIndex=y.index,c.sprite.texture=this.imageFrameTexture(u,y.index),c.sprite.anchor.set(u.anchorX,u.anchorY),c.sprite.blendMode=Rr[u.blend],c.sprite.tint=c.colorSample,c.sprite.visible=!0}pickImageResource(){const t=this.cfg.imageResources.filter(r=>r.texture||r.sequenceFrames.some(a=>a.texture));if(!t.length)return{id:1,texture:this.cfg.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",blend:"normal",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]};const i=t.reduce((r,a)=>r+Math.max(0,a.weight),0);if(i<=0)return t[Math.floor(this.rng()*t.length)];let n=this.rng()*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}imageFrameState(t,i){if(t.imageMode!=="sequence"||t.sequenceFrames.length<=1)return{index:0,visible:!0};const n=Math.min(120,Math.max(1,Number(t.sequenceFps)||30)),r=Math.max(0,Math.floor(Math.max(0,i)*n)),a=t.sequenceFrames.length-1;return t.sequencePlayback==="once-hide"?{index:Math.min(a,r),visible:r<=a}:t.sequencePlayback==="once-hold"?{index:Math.min(a,r),visible:!0}:t.sequencePlayback==="loop-reverse"?{index:a-r%t.sequenceFrames.length,visible:!0}:{index:r%t.sequenceFrames.length,visible:!0}}imageFrameTexture(t,i){var n;return t.imageMode==="sequence"&&t.sequenceFrames.length?((n=t.sequenceFrames[Math.max(0,Math.min(t.sequenceFrames.length-1,i))])==null?void 0:n.texture)||t.texture||this.cfg.texture:t.texture||this.cfg.texture}pickTrailResource(t){const i=this.cfg.trailResources.filter(a=>a.texture);if(!i.length)return this.cfg.trailResources[0]||{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]};const n=i.reduce((a,o)=>a+Math.max(0,o.weight),0);if(n<=0)return i[Math.min(i.length-1,Math.floor(t*i.length))];let r=t*n;for(const a of i)if(r-=Math.max(0,a.weight),r<=0)return a;return i[i.length-1]}kill(t){const i=this.pool[t];i.active=!1,i.sprite.visible=!1,i.trailHistory.length=0,i.trailBones.length=0,i.trailMesh&&(i.trailMesh.visible=!1)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1)}get activeCount(){let t=0;for(const i of this.pool)i.active&&t++;return t}capture(){const t=[];for(const i of this.pool)i.active&&t.push({boneName:i.boneName,spawnId:i.spawnId,x:i.sprite.x,y:i.sprite.y,rotation:i.rotation,scaleX:i.sprite.scale.x,scaleY:i.sprite.scale.y,...this.captureWorldTransform(i),alpha:i.sprite.alpha,colorHex:i.sprite.tint,resourceId:i.resourceId,imageFrameIndex:i.imageFrameIndex,imageVisible:i.sprite.visible,active:!0,trailState:this.cfg.trail&&i.trailBones.length?{bones:i.trailBones.map(n=>{var a;const r=Za(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((a=this.simulationTransform)==null?void 0:a.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:i.trailBones.length,width:i.trailCurrentWidth,alpha:i.trailCurrentAlpha,colorHex:i.trailCurrentColor,resourceId:i.trailResourceId}:void 0});return t}captureWorldTransform(t){var r,a,o;const i=Za(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:i.x,worldY:i.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleY)??this.cfg.rootScaleY)}}apply(t){var n;const i=new Map;for(const r of t)i.set(r.boneName,r);for(const r of this.pool){const a=i.get(r.boneName);if(!a){r.active=!1,r.sprite.visible=!1,r.trailMesh&&(r.trailMesh.visible=!1);continue}r.active=a.active;const o=r.sprite;if(o.visible=a.active&&a.imageVisible!==!1,o.x=a.x,o.y=a.y,o.rotation=-a.rotation*Math.PI/180,o.scale.set(a.scaleX,a.scaleY),o.alpha=a.alpha,o.tint=a.colorHex,a.resourceId!=null){const h=this.cfg.imageResources.find(l=>l.id===a.resourceId);h&&(r.imageFrameIndex=a.imageFrameIndex??0,o.texture=this.imageFrameTexture(h,r.imageFrameIndex),o.anchor.set(h.anchorX,h.anchorY),o.blendMode=Rr[h.blend])}this.cfg.trail&&a.trailState?(r.trailResourceId=a.trailState.resourceId??((n=this.cfg.trailResources[0])==null?void 0:n.id)??1,r.trailBones=a.trailState.bones.map(h=>({...h})),r.trailCurrentWidth=a.trailState.width,r.trailCurrentAlpha=a.trailState.alpha,this.skinTrailMesh(r,a.trailState)):r.trailMesh&&(r.trailMesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,t.trailHistory.length=0,t.trailBones.length=0,t.trailMesh&&(t.trailMesh.visible=!1);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=pf(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=pf(this.cfg.seed>>>0)}}function Vi(s,e,t){return s+(e-s)*t}function Ac(s,e){return Number.isFinite(s)?s:e}function Za(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=(i==null?void 0:i.centerX)??s.centerX,c=(i==null?void 0:i.centerY)??s.centerY,u=l+o*n*e-h*r*t,d=-c+h*n*e+o*r*t;return{x:u,y:-d}}function Pv(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=e-((i==null?void 0:i.centerX)??s.centerX),c=-t+((i==null?void 0:i.centerY)??s.centerY);return{x:(o*l+h*c)/n,y:(-h*l+o*c)/r}}function LI(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=o*n*e-h*r*t,c=h*n*e+o*r*t;return{x:l,y:-c}}function DI(s,e,t,i=null){const n=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleX)??s.rootScaleX)),r=Math.max(1e-4,Math.abs((i==null?void 0:i.scaleY)??s.rootScaleY)),a=-((i==null?void 0:i.rotation)??s.rootRotation)*Math.PI/180,o=Math.cos(a),h=Math.sin(a),l=-t;return{x:(o*e+h*l)/n,y:(-h*e+o*l)/r}}function NI(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),a=Math.max(1e-4,Math.abs(s.scaleX??1)),o=Math.max(1e-4,Math.abs(s.scaleY??1)),h=e-s.x,l=t-s.y,c=(n*h+r*l)/a,u=(-r*h+n*l)/o,d=(T,_,R,P)=>{const F=R/a,I=P/o,k=Math.max(1e-4,Math.hypot(F,I)),B=F/k,D=I/k,U=n*B-r*D,L=r*B+n*D;return{x:s.x+n*T*a-r*_*o+U*.05,y:s.y+r*T*a+n*_*o+L*.05,nx:U,ny:L}};if(s.shape==="circle"){const T=Math.max(.001,s.radius),_=Math.hypot(c,u);if(_>=T)return null;const R=_>1e-4?c/_:1,P=_>1e-4?u/_:0;return d(R*T,P*T,R,P)}if(s.shape==="ellipse"){const T=Math.max(.001,s.radiusX),_=Math.max(.001,s.radiusY),R=Math.hypot(c/T,u/_);if(R>=1)return null;const P=R>1e-4?1/R:1,F=R>1e-4?c*P:T,I=R>1e-4?u*P:0,k=Math.max(1e-4,Math.hypot(F/(T*T),I/(_*_)));return d(F,I,F/(T*T)/k,I/(_*_)/k)}if(s.shape==="rect"){const T=Math.max(.001,s.width*.5),_=Math.max(.001,s.height*.5);if(Math.abs(c)>=T||Math.abs(u)>=_)return null;const R=T-Math.abs(c),P=_-Math.abs(u);if(R=0?1:-1;return d(I*T,u,I,0)}const F=u>=0?1:-1;return d(c,F*_,0,F)}const f=Math.max(3,Math.min(16,Math.round(s.sides||(s.shape==="custom"?5:6)))),p=Math.max(.001,s.width*.5),m=Math.max(.001,s.height*.5),g=Array.from({length:f},(T,_)=>{const R=Math.PI*.5+_/f*Math.PI*2;return{x:Math.cos(R)*p,y:Math.sin(R)*m}});let v=!1;for(let T=0,_=g.length-1;Tu!=P.y>u&&c<(P.x-R.x)*(u-R.y)/(P.y-R.y)+R.x&&(v=!v)}if(!v)return null;let b=g[0].x,y=g[0].y,w=1/0;for(let T=0;T>>0^Math.imul(e+1,2654435761)^t)>>>0;return i^=i>>>16,i=Math.imul(i,2146121005),i^=i>>>15,i=Math.imul(i,2221713035),i^=i>>>16,(i>>>0)/4294967296}function Ja(s,e,t,i,n){return s==="fixed"?e:s==="curve"?Vi(e,t,wn(i,n)):Vi(e,t,n)}function mf(s,e,t,i,n,r){return s==="curve"?Vi(e,t,wn(i,n)):s==="random"?r:e}function kv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function wn(s,e,t="线性"){if(!Array.isArray(s)||s.length===0)return 1;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;if(e>=i[i.length-1].x)return i[i.length-1].y;for(let n=0;n=i[n].x&&e<=i[n+1].x){const r=i[n],a=i[n+1],o=a.x-r.x||1;if(t!=="贝塞尔")return Vi(r.y,a.y,(e-r.x)/o);const h=r.x+(r.outX??o/3),l=r.y+(r.outY??(a.y-r.y)/3),c=a.x+(a.inX??-o/3),u=a.y+(a.inY??-(a.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;kv(r.x,h,c,a.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function Mo(s){let e=s.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function XI(s,e,t){const i=Fv(s),n=Fv(e),r=Math.round(i[0]+(n[0]-i[0])*t),a=Math.round(i[1]+(n[1]-i[1])*t),o=Math.round(i[2]+(n[2]-i[2])*t);return r<<16|a<<8|o}function gf(s,e){if(!Array.isArray(s)||s.length===0)return 16777215;const t=[...s].sort((i,n)=>i.position-n.position);if(e<=t[0].position)return Mo(t[0].color);if(e>=t[t.length-1].position)return Mo(t[t.length-1].color);for(let i=0;ir.position)continue;const a=(e-n.position)/Math.max(1e-4,r.position-n.position);return XI(n.color,r.color,a)}return Mo(t[t.length-1].color)}function Fv(s){let e=s.replace("#","");e.length===3&&(e=e.split("").map(i=>i+i).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}const Ba=new Map,Ra=new Map;function VI(s){return[...Ba.values()].some(e=>e===s)}function d1(s){if(!(VI(s)||(Ra.get(s)||0)>0)){Ra.delete(s);for(const e of s.textures)e.destroy(!0)}}function YI(s){const e=Ra.get(s)||0;e>1?Ra.set(s,e-1):Ra.delete(s),d1(s)}function $I(s){return Ba.get(s)||null}function Au(s,e){ql(s),Ba.set(s,e)}function GI(s){const e=Ba.get(s);return e?(Ra.set(e,(Ra.get(e)||0)+1),e):null}function HI(s,e){const t=Ba.get(s);return t?(Au(e,t),!0):!1}function ql(s){const e=Ba.get(s);e&&(Ba.delete(s),d1(e))}function hi(s){if(Array.isArray(s))return s.map(e=>hi(e));if(s&&typeof s=="object"){const e=Object.getPrototypeOf(s);if(e===Object.prototype||e===null){const t={};for(const[i,n]of Object.entries(s))t[i]=hi(n);return t}}return s}const f1=["3.8","4.0","4.1","4.2","4.3"];function Ph(s){const e=String(s||"").trim();return f1.find(t=>e===t||e.startsWith(`${t}.`))||null}function Mm(){return f1.join(" / ")}function jI(s){return s==="4.3"?"4.3":"4.2"}function _p(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"linear",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function m1(s){const e=Object.assign(_p(),s||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=Ph(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const _m=30;function Kc(s,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(s)||e)))}function p1(s,e=30){const t=Math.max(0,Number(s.lifeMin)||0),i=Math.max(0,Number(s.lifeMax)||0),n=s.lifeMode==="fixed"?t:Math.max(t,i);return Kc(Math.ceil(n*Math.max(1,e)),_m)}function Xr(s,e=30){const t=Kc(s.loopDurationFrames),i=p1(s,e),n=s.generateLoopStartAnimation?s.loopStartUseCustomDuration?Kc(s.loopStartDurationFrames,_m):i:0,r=s.generateLoopEndAnimation?s.loopEndUseCustomDuration?Kc(s.loopEndDurationFrames,_m):i:0;return{start:n,loop:t,end:r,total:n+t+r}}function g1(s,e){const t=Xr(s,e),n=Math.max(0,Math.ceil(Math.max(0,Number(s.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}function Zc(s,e,t){const i=Math.max(1,Math.floor(t)-1),n=Math.min(i-1,Math.max(0,Math.floor(Number(s)||0))),r=Math.min(i,Math.max(n+1,Math.floor(Number(e)||i)));return{start:n,end:r}}function WI(s,e,t){const i=Math.max(1,e-1),n=Math.max(1,t-1),r=s.end>=i?n:s.end;return Zc(s.start,r,t)}let Ec=1,Cc=1,Ic=1,Rc=1;function Pc(s,e){const t=new Set(e),i=`${s} Copy`;if(!t.has(i))return i;let n=2;for(;t.has(`${i} ${n}`);)n++;return`${i} ${n}`}const Kl=mT("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:_p()}}),getters:{activeSystemCount:s=>s.systems.length},actions:{syncSceneSequences(){Ec=Math.max(Ec,...this.systems.map(s=>s.id+1),1),Cc=Math.max(Cc,...this.colliders.map(s=>s.id+1),1),Ic=Math.max(Ic,...this.paths.map(s=>s.id+1),1),Rc=Math.max(Rc,...this.spines.map(s=>s.id+1),1)},addSystem(s){const e=Dl();s!=null&&s.config&&Object.assign(e,s.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const o of this.systems){const h=/^ParticleSystem(\d+)$/.exec(o.config.name);h&&(r=Math.max(r,parseInt(h[1],10)))}e.name=`ParticleSystem${r+1}`;let a=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+a}`,a++}const i=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:Ec++,visible:!0,animation:i,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(s){var i;const e=this.systems.findIndex(n=>n.id===s);e>=0&&this.systems.splice(e,1),this.activeId===s&&(this.activeId=((i=this.systems[0])==null?void 0:i.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===s){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(s){this.activeId=s,this.activeObjectType="particle",this.activeObjectId=s;const e=this.systems.find(t=>t.id===s);e&&(this.timeline.animation=e.animation)},setSystemAnimation(s,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(i=>i.id===s);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const s=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;s.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const i=this.systems.find(n=>n.id===this.activeId);return i&&(i.animation=t),t},renameAnimation(s,e){const t=e.trim(),i=this.timeline.animations.indexOf(s);if(i<0||!t||t!==s&&this.timeline.animations.includes(t))return!1;this.timeline.animations[i]=t;for(const n of this.systems)n.animation===s&&(n.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},removeAnimation(s){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(s);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const i of this.systems)i.animation===s&&(i.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},addCollider(){const s=Cc++,e={id:s,name:`Collider${s}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const s=Ic++,e={id:s,name:`Path${s}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const s=Rc++,e={id:s,name:`SpineSkeleton${s}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",animations:[],bones:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const s=this.activeObjectId;if(!s)return null;if(this.activeObjectType==="particle"){const i=this.systems.find(r=>r.id===s);if(!i)return null;const n=hi(i);return n.id=Ec++,n.config.name=Pc(i.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const i=this.colliders.find(r=>r.id===s);if(!i)return null;const n=hi(i);return n.id=Cc++,n.name=Pc(i.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const i=this.paths.find(r=>r.id===s);if(!i)return null;const n=hi(i);return n.id=Ic++,n.name=Pc(i.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(i=>i.id===s);if(!e)return null;const t=hi(e);return t.id=Rc++,t.name=Pc(e.name,this.spines.map(i=>i.name)),t.selectedBone="",HI(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(s,e){if(this.activeObjectType=s,this.activeObjectId=e,s==="particle"){this.activeId=e;const t=this.systems.find(i=>i.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(s){var t;const e=this.colliders.findIndex(i=>i.id===s);e>=0&&this.colliders.splice(e,1);for(const i of this.systems){const n=Wr(i.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==s)}if(this.activeObjectType==="collision"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"collision",this.activeObjectId=(i==null?void 0:i.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(s){var t;const e=this.paths.findIndex(i=>i.id===s);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"path",this.activeObjectId=(i==null?void 0:i.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(s){ql(s);const e=this.spines.findIndex(t=>t.id===s);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===s){const t=this.systems[0],i=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):i?(this.activeObjectType="collision",this.activeObjectId=i.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const s=Zc(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=s.end)&&(this.timeline.frame=s.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(s){this.timeline.frame=Math.max(0,Math.min(s,this.timeline.totalFrames-1))},setPlaybackStart(s){const e=Zc(s,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const s=this.timeline.fps||30;let e=0;for(const r of this.systems){const a=r.config,o=Math.max(0,Number(a.lifeMin)||0),h=Math.max(0,Number(a.lifeMax)||0),l=a.lifeMode==="fixed"?o:Math.max(o,h),c=a.mode==="stream"?a.streamBehavior==="loop"?Math.max(1/s,Math.ceil(Math.max(1,Number(a.loopDurationFrames)||1))/s):Math.max(1/s,Number(a.duration)||0):0;let u=Math.max(0,Number(a.delay)||0)+c+l;a.mode==="stream"&&a.streamBehavior==="loop"&&(u=Math.max(0,Number(a.delay)||0)+Xr(a,s).total/s),u>e&&(e=u)}for(const r of this.spines){const a=r.animations.find(h=>h.name===r.selectedAnimation);if(!a)continue;const o=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,a.duration||0);o>e&&(e=o)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const a=Math.max(0,Number(r.followDuration)||0);a>e&&(e=a)}const t=this.timeline.totalFrames,i=Math.max(2,Math.ceil(e*s)+1);this.timeline.totalFrames=i;const n=WI({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,i);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=i&&(this.timeline.frame=i-1),i}}}),v1="SpineParticle.SystemSettings",y1=1,vf="SpineParticle.SystemSettings.v1";function Ko(s,e,t,i){const n=Number(s);return Math.min(t,Math.max(e,Number.isFinite(n)?n:i))}function zI(s){return{parameterPanelOnRight:s.parameterPanelOnRight,undoLimit:s.undoLimit,showEmitter:s.showEmitter,showBones:s.showBones,bonePointDrawSize:s.bonePointDrawSize,boneAxisDrawSize:s.boneAxisDrawSize,showSkinMesh:s.showSkinMesh,tickEnabled:s.tickEnabled,axisFontSize:s.axisFontSize,tickWidth:s.tickWidth,showAxisLabels:s.showAxisLabels,axisColor:s.axisColor}}function qI(s,e){const t=n=>s[n]==null?!!e[n]:s[n]===!0,i=typeof s.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(s.axisColor)?s.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(Ko(s.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:Ko(s.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:Ko(s.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(Ko(s.axisFontSize,8,40,e.axisFontSize)),tickWidth:Ko(s.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:i}}function KI(s){let e;try{e=JSON.parse(s)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==v1)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==y1)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function ZI(s,e){Object.assign(s.settings,qI(e,s.settings))}let kc=null;function JI(s){kc==null||kc();try{const e=localStorage.getItem(vf);e&&ZI(s,KI(e).settings)}catch{try{localStorage.removeItem(vf)}catch{}}kc=fs(()=>zI(s.settings),e=>{const t={format:v1,version:y1,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(vf,JSON.stringify(t))}catch{}},{deep:!0})}function Ov(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function Bv(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),a=Math.max(1e-4,Math.abs(s.scaleX??1)),o=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*a-r*t*o,y:s.y+r*e*a+n*t*o}}function yf(s,e){if(!s.points.length)return null;if(s.points.length===1)return{...Bv(s,s.points[0].x,s.points[0].y),angle:s.rotation};const t=s.closed?s.points.length:s.points.length-1,i=[];let n=0;for(let p=0;p0&&v===0)continue;const b=v/20,y=Ov(m.x,m.x+m.outX,g.x+g.inX,g.x,b),w=Ov(m.y,m.y+m.outY,g.y+g.inY,g.y,b),A=Bv(s,y,w),T=i[i.length-1];T&&(n+=Math.hypot(A.x-T.x,A.y-T.y)),i.push({...A,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let a=i.findIndex(p=>p.distance>=r);a<0&&(a=i.length-1);const o=i[a],h=i[Math.max(0,a-1)],l=i[Math.min(i.length-1,a+1)],c=h.distance,u=a>0?(r-c)/Math.max(1e-4,o.distance-c):0,d=h.x+(o.x-h.x)*Math.min(1,Math.max(0,u)),f=h.y+(o.y-h.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(l.y-h.y,l.x-h.x)*180/Math.PI}}function Zi(s){return s.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function QI(s){const e=new Map;for(const i of s)for(const n of i)e.has(n.boneName)||e.set(n.boneName,Zi([n])[0]);const t=[...e.keys()].sort((i,n)=>{const r=Number(i.replace(/^p_/,"")),a=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(a)?r-a:i.localeCompare(n)});for(let i=0;i[r.boneName,r]));s[i]=t.map(r=>{const a=n.get(r);return a||{...Zi([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function eR(s){s.length<2||(s[s.length-1]=Zi(s[0]))}function tR(s,e){const t=Math.max(0,s.length-1),i=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));i.push(Zi(s[r]||[]))}return i}function xf(s){return`${s.boneName}:${s.spawnId??"legacy"}`}function Lv(s){return{...Zi([s])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function iR(s,e,t,i){const n=Math.min(s.length,i+1),r=s.slice(Math.max(0,s.length-n)),a=new Map;for(const l of e){if(l.imageVisible===!1||l.alpha<=0)continue;const c=xf(l),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>xf(m)===c);if(p)d=!0,u.set(f,p);else if(d)break}a.set(c,u)}const o=Math.max(0,r.length-1),h=[];for(let l=0;l<=t;l++){const c=Math.min(o,Math.round(l/t*o));h.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Zi([u])[0];const d=(f=a.get(xf(u)))==null?void 0:f.get(c);return d?Zi([d])[0]:Lv(u)}))}return h[0]=h[0].map(Lv),h[h.length-1]=Zi(e),h}function Dv(s,e){const t=s.length?1:0;for(let i=t;i{const y=b?[[]]:[];e.reset();for(let w=0;w0&&e.restartEmissionCycle();for(let A=0;A0;w++)e.update(r,"off"),b.push(e.capture());(v=b[b.length-1])!=null&&v.length&&b.push([]),Dv(u,tR(b,o.end))}const g=Zi(u[u.length-1]||[]);for(u.length>i&&(u.length=i);u.lengtho.id===r)||(this.container.removeChild(a.root),a.root.destroy({children:!0}),this.entries.delete(r));for(const r of e){const a=$I(r.id);let o=this.entries.get(r.id);if(o&&o.assetVersion!==r.assetVersion&&!a&&(this.container.removeChild(o.root),o.root.destroy({children:!0}),this.entries.delete(r.id),o=void 0),(!o||o.assetVersion!==r.assetVersion)&&a){o&&(this.container.removeChild(o.root),o.root.destroy({children:!0}));const d=new ji,f=new a.SpineClass({skeletonData:a.skeletonData,autoUpdate:!1,darkTint:!1});a.skeletonData.defaultSkin&&f.skeleton.setSkin(a.skeletonData.defaultSkin),a.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),o={root:d,spine:f,runtimeVersion:a.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,o)}if(!o)continue;const h=o.root,l=o.spine,c=r.visible!==!1&&r.enabled;h.visible=c,h.renderable=c,h.position.set(r.x,-r.y),h.rotation=-r.rotation*Math.PI/180,h.scale.set(r.scaleX,r.scaleY),o.animation!==r.selectedAnimation&&(o.animation=r.selectedAnimation,o.runtimeVersion==="4.3"?l.skeleton.setupPose():l.skeleton.setToSetupPose(),l.state.clearTracks(),o.animation&&l.state.setAnimation(0,o.animation,!1));const u=o.runtimeVersion==="4.3"?l.state.getTrack(0):l.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,i)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}l.update(0)}}getBoneWorldTransform(e,t){const i=this.entries.get(e),n=i==null?void 0:i.spine.skeleton.findBone(t);if(!i||!n||!n.active)return null;const r=i.runtimeVersion==="4.3"?n.appliedPose:n,a=i.root,o=Math.cos(a.rotation),h=Math.sin(a.rotation),l=o*a.scale.x,c=-h*a.scale.y,u=h*a.scale.x,d=o*a.scale.y,f=l*r.a+c*r.c,p=l*r.b+c*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,v=a.position.x+l*r.worldX+c*r.worldY,b=a.position.y+u*r.worldX+d*r.worldY;return{x:v,y:-b,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())e.root.removeFromParent(),e.root.destroy({children:!0});this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let x1=class{constructor(){x(this,"entries",{});x(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Ki){return t.setFromString(e)}},x(Ki,"WHITE",new Ki(1,1,1,1)),x(Ki,"RED",new Ki(1,0,0,1)),x(Ki,"GREEN",new Ki(0,1,0,1)),x(Ki,"BLUE",new Ki(0,0,1,1)),x(Ki,"MAGENTA",new Ki(1,0,1,1)),Ki);var bi;let $e=(bi=class{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*bi.degRad)}static sinDeg(e){return Math.sin(e*bi.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*bi.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return bi.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){let n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},x(bi,"PI",3.1415927),x(bi,"PI2",bi.PI*2),x(bi,"invPI2",1/bi.PI2),x(bi,"radiansToDegrees",180/bi.PI),x(bi,"radDeg",bi.radiansToDegrees),x(bi,"degreesToRadians",bi.PI/180),x(bi,"degRad",bi.degreesToRadians),bi);var tn;let Ge=(tn=class{static arrayCopy(e,t,i,n,r){for(let a=t,o=n;a=t?e:tn.setArraySize(e,t,i)}static newArray(e,t){let i=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*o;let h=t.bone.skeleton,l=t.deform,c=this.vertices,u=this.bones;if(!u){l.length>0&&(c=l);let m=t.bone,g=m.worldX,v=m.worldY,b=m.a,y=m.b,w=m.c,A=m.d;for(let T=i,_=a;_=this.regions.length&&(i=this.regions.length-1);let n=this.regions[i];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let i=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return or._nextID++}},x(or,"_nextID",0),or);var $i;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})($i||($i={}));const S1=[$i.hold,$i.once,$i.loop,$i.pingpong,$i.onceReverse,$i.loopReverse,$i.pingpongReverse];let Tp=class{constructor(e,t,i){x(this,"name");x(this,"timelines",[]);x(this,"timelineIds",new x1);x(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=i}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let l=this.timelines;for(let c=0,u=l.length;ct)return n-1;return i-1}static search(e,t,i){let n=e.length;for(let r=i;rt)return r-i;return n-i}},Xn=class extends ui{constructor(t,i,n){super(t,n);x(this,"curves");this.curves=Ge.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let i=this.getFrameCount()+t*18;if(this.curves.length>i){let n=Ge.newFloatArray(i);Ge.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,a,o,h,l,c,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[i]=2+p);let m=(r-o*2+l)*.03,g=(a-h*2+c)*.03,v=((o-l)*3-r+u)*.006,b=((h-c)*3-a+d)*.006,y=m*2+v,w=g*2+b,A=(o-r)*.3+m+v*.16666667,T=(h-a)*.3+g+b*.16666667,_=r+A,R=a+T;for(let P=p+18;pt){let c=this.frames[i],u=this.frames[i+n];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}let o=r+18;for(r+=2;r=t){let c=a[r-2],u=a[r-1];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}i+=this.getFrameEntries();let h=a[o-2],l=a[o-1];return l+(t-h)/(this.frames[i]-h)*(this.frames[i+n]-l)}},un=class extends Xn{constructor(e,t,i){super(e,t,[i])}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){let t=this.frames,i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}let n=this.curves[i>>1];switch(n){case 0:let r=t[i],a=t[i+1];return a+(e-r)/(t[i+2]-r)*(t[i+2+1]-a);case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r){if(e>2];switch(g){case 0:let v=c[m];d=c[m+1],f=c[m+2],p=c[m+3];let b=(n-v)/(c[m+4]-v);d+=(c[m+4+1]-d)*b,f+=(c[m+4+2]-f)*b,p+=(c[m+4+3]-p)*b;break;case 1:d=c[m+1],f=c[m+2],p=c[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(a==1)u.r=d,u.g=f,u.b=p;else{if(o==Ce.setup){let v=l.data.color;u.r=v.r,u.g=v.g,u.b=v.b}u.r+=(d-u.r)*a,u.g+=(f-u.g)*a,u.b+=(p-u.b)*a}}},B1=class extends un{constructor(t,i,n){super(t,i,Ct.alpha+"|"+n);x(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.color;if(n>3];switch(A){case 0:let T=c[w];f=c[w+1],p=c[w+2],m=c[w+3],g=c[w+4],v=c[w+5],b=c[w+6],y=c[w+7];let _=(n-T)/(c[w+8]-T);f+=(c[w+8+1]-f)*_,p+=(c[w+8+2]-p)*_,m+=(c[w+8+3]-m)*_,g+=(c[w+8+4]-g)*_,v+=(c[w+8+5]-v)*_,b+=(c[w+8+6]-b)*_,y+=(c[w+8+7]-y)*_;break;case 1:f=c[w+1],p=c[w+2],m=c[w+3],g=c[w+4],v=c[w+5],b=c[w+6],y=c[w+7];break;default:f=this.getBezierValue(n,w,1,A-2),p=this.getBezierValue(n,w,2,A+18-2),m=this.getBezierValue(n,w,3,A+36-2),g=this.getBezierValue(n,w,4,A+54-2),v=this.getBezierValue(n,w,5,A+72-2),b=this.getBezierValue(n,w,6,A+90-2),y=this.getBezierValue(n,w,7,A+108-2)}if(a==1)u.set(f,p,m,g),d.r=v,d.g=b,d.b=y;else{if(o==Ce.setup){u.setFromColor(l.data.color);let T=l.data.darkColor;d.r=T.r,d.g=T.g,d.b=T.b}u.add((f-u.r)*a,(p-u.g)*a,(m-u.b)*a,(g-u.a)*a),d.r+=(v-d.r)*a,d.g+=(b-d.g)*a,d.b+=(y-d.b)*a}}},D1=class extends Xn{constructor(t,i,n){super(t,i,[Ct.rgb+"|"+n,Ct.rgb2+"|"+n]);x(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,i,n,r,a,o,h,l){t*=7,this.frames[t]=i,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=a,this.frames[t+4]=o,this.frames[t+5]=h,this.frames[t+6]=l}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=this.frames,u=l.color,d=l.darkColor;if(nt){let l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}let a=r+18;for(r+=2;r=t){let l=n[r-2],c=n[r-1];return c+(t-l)/(n[r]-l)*(n[r+1]-c)}let o=n[a-2],h=n[a-1];return h+(1-h)*(t-o)/(this.frames[i+this.getFrameEntries()]-o)}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.getAttachment();if(!c||!(c instanceof vr)||c.timelineAttachment!=this.attachment)return;let u=l.deform;u.length==0&&(o=Ce.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let w=d[p.length-1];if(a==1)if(o==Ce.add){let A=c;if(A.bones)for(let T=0;Tn)this.apply(t,i,Number.MAX_VALUE,r,a,o,h),i=-1;else if(i>=l[c-1])return;if(n0&&l[u-1]==d;)u--}for(;u=l[u];u++)r.push(this.events[u])}},x(Sa,"propertyIds",[""+Ct.event]),Sa);var Ma;let gl=(Ma=class extends ui{constructor(t){super(t,Ma.propertyIds);x(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,a,o,h){if(h==es.mixOut){o==Ce.setup&&Ge.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=c[p];u=c[p+1],d=c[p+2],f=c[p+3];let v=(n-g)/(c[p+4]-g);u+=(c[p+4+1]-u)*v,d+=(c[p+4+2]-d)*v,f+=(c[p+4+3]-f)*v;break;case 1:u=c[p+1],d=c[p+2],f=c[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(o==Ce.setup){let g=l.data;l.mixRotate=g.mixRotate+(u-g.mixRotate)*a,l.mixX=g.mixX+(d-g.mixX)*a,l.mixY=g.mixY+(f-g.mixY)*a}else l.mixRotate+=(u-l.mixRotate)*a,l.mixX+=(d-l.mixX)*a,l.mixY+=(f-l.mixY)*a}},Xa=class extends un{constructor(t,i,n,r){super(t,i,r+"|"+n);x(this,"constraintIndex",0);this.constraintIndex=n}apply(t,i,n,r,a,o,h){let l;if(this.constraintIndex==-1){const c=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,a,o,this.get(u),this.setup(u),c))}else l=t.physicsConstraints[this.constraintIndex],l.active&&this.set(l,this.getAbsoluteValue(n,a,o,this.get(l),this.setup(l)))}},G1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},H1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},j1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},W1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},z1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},q1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},K1=class extends Xa{constructor(e,t,i){super(e,t,i,Ct.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var _a;let Z1=(_a=class extends ui{constructor(t,i){super(t,_a.propertyIds);x(this,"constraintIndex");this.constraintIndex=i}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,a,o,h){let l;if(this.constraintIndex!=-1&&(l=t.physicsConstraints[this.constraintIndex],!l.active))return;const c=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],a,o,h),i=-1;else if(i>=c[c.length-1])return;if(!(n=c[ui.search1(c,i)+1]))if(l!=null)l.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},x(_a,"propertyIds",[Ct.physicsConstraintReset.toString()]),_a);var os;let J1=(os=class extends ui{constructor(t,i,n){super(t,[Ct.sequence+"|"+i+"|"+n.sequence.id]);x(this,"slotIndex");x(this,"attachment");this.slotIndex=i,this.attachment=n}getFrameEntries(){return os.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,i,n,r,a){let o=this.frames;t*=os.ENTRIES,o[t]=i,o[t+os.MODE]=n|r<<4,o[t+os.DELAY]=a}apply(t,i,n,r,a,o,h){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let c=l.attachment,u=this.attachment;if(c!=u&&(!(c instanceof vr)||c.timelineAttachment!=u))return;if(h==es.mixOut){o==Ce.setup&&(l.sequenceIndex=-1);return}let d=this.frames;if(n>4,b=this.attachment.sequence.regions.length,y=S1[m&15];if(y!=$i.hold)switch(v+=(n-p)/g+1e-5|0,y){case $i.once:v=Math.min(b-1,v);break;case $i.loop:v%=b;break;case $i.pingpong:{let w=(b<<1)-2;v=w==0?0:v%w,v>=b&&(v=w-v);break}case $i.onceReverse:v=Math.max(b-1-v,0);break;case $i.loopReverse:v=b-1-v%b;break;case $i.pingpongReverse:{let w=(b<<1)-2;v=w==0?0:(v+b-1)%w,v>=b&&(v=w-v)}}l.sequenceIndex=v}},x(os,"ENTRIES",3),x(os,"MODE",1),x(os,"DELAY",2),os);var lr;let rR=(lr=class{constructor(e){x(this,"data");x(this,"tracks",new Array);x(this,"timeScale",1);x(this,"unkeyedState",0);x(this,"events",new Array);x(this,"listeners",new Array);x(this,"queue",new oR(this));x(this,"propertyIDs",new x1);x(this,"animationsChanged",!1);x(this,"trackEntryPool",new kh(()=>new aR));this.data=e}static emptyAnimation(){return lr._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=a,r.delay>0)continue;a=-r.delay,r.delay=0}let o=r.next;if(o){let h=r.trackLast-o.delay;if(h>=0){for(o.delay=0,o.trackTime+=r.timeScale==0?0:(h/r.timeScale+e)*o.timeScale,r.trackTime+=a,this.setCurrent(i,o,!0);o.mixingFrom;)o.mixTime+=e,o=o.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let h=r.mixingFrom;for(r.mixingFrom=null,h&&(h.mixingTo=null);h;)this.queue.end(h),h=h.mixingFrom}r.trackTime+=a}this.queue.drain()}updateMixingFrom(e,t){let i=e.mixingFrom;if(!i)return!0;let n=this.updateMixingFrom(i,t);return i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((i.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),e.interruptAlpha=i.interruptAlpha,this.queue.end(i)),n):(i.trackTime+=t*i.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,i=this.tracks,n=!1;for(let d=0,f=i.length;d0)continue;n=!0;let m=d==0?Ce.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let v=g>=p.alphaAttachmentThreshold,b=p.animationLast,y=p.getAnimationTime(),w=y,A=t;p.reverse&&(w=p.animation.duration-w,A=null);let T=p.animation.timelines,_=T.length;if(d==0&&g==1||m==Ce.add){d==0&&(v=!0);for(let R=0;R<_;R++){var r=T[R];r instanceof co?this.applyAttachmentTimeline(r,e,w,m,v):r.apply(e,b,w,A,g,m,es.mixIn)}}else{let R=p.timelineMode,P=p.shortestRotation,F=!P&&p.timelinesRotation.length!=_<<1;F&&(p.timelinesRotation.length=_<<1);for(let I=0;I<_;I++){let k=T[I],B=R[I]==bf?m:Ce.setup;!P&&k instanceof Oh?this.applyRotateTimeline(k,e,w,g,B,p.timelinesRotation,I<<1,F):k instanceof co?this.applyAttachmentTimeline(k,e,w,m,v):k.apply(e,b,w,A,g,B,es.mixIn)}}this.queueEvents(p,y),t.length=0,p.nextAnimationLast=y,p.nextTrackLast=p.trackTime}for(var a=this.unkeyedState+Xv,o=e.slots,h=0,l=e.slots.length;h1&&(r=1),i!=Ce.first&&(i=n.mixBlend));let a=r=n.alphaAttachmentThreshold):(o&&A instanceof gl&&_==Ce.setup&&(T=es.mixIn),A.apply(t,d,p,m,R,_,T))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){var a=t.slots[e.slotIndex];a.bone.active&&(i=0,y=m>=0;Math.abs(g)<=90&&$e.signum(g)!=$e.signum(p)&&(Math.abs(m-v)>180?(f+=360*$e.signum(m),y=b):v!=0?f-=360*$e.signum(m):y=b),y!=b&&(f+=360*$e.signum(m)),a[o]=f}a[o+1]=p,l.rotation=u+f*n}queueEvents(e,t){let i=e.animationStart,n=e.animationEnd,r=n-i,a=e.trackLast%r,o=this.events,h=0,l=o.length;for(;hn||this.queue.event(e,u)}let c=!1;if(e.loop)if(r==0)c=!0;else{const u=Math.floor(e.trackTime/r);c=u>0&&u>Math.floor(e.trackLast/r)}else c=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){let n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,i){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,i)}setAnimationWith(e,t,i=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let a=this.trackEntry(e,t,i,r);return this.setCurrent(e,a,n),this.queue.drain(),a}addAnimation(e,t,i=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,i,n)}addAnimationWith(e,t,i=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let a=this.trackEntry(e,t,i,r);return r?(r.next=a,a.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-a.mixDuration,0))):(this.setCurrent(e,a,!0),this.queue.drain(),n<0&&(n=0)),a.delay=n,a}setEmptyAnimation(e,t=0){let i=this.setAnimationWith(e,lr.emptyAnimation(),!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){let n=this.addAnimationWith(e,lr.emptyAnimation(),!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0){r[h]=lR,a[h]=u;continue e}break}r[h]=wf}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},x(lr,"_emptyAnimation",new Tp("",[],0)),lr),aR=class{constructor(){x(this,"animation",null);x(this,"previous",null);x(this,"next",null);x(this,"mixingFrom",null);x(this,"mixingTo",null);x(this,"listener",null);x(this,"trackIndex",0);x(this,"loop",!1);x(this,"holdPrevious",!1);x(this,"reverse",!1);x(this,"shortestRotation",!1);x(this,"eventThreshold",0);x(this,"mixAttachmentThreshold",0);x(this,"alphaAttachmentThreshold",0);x(this,"mixDrawOrderThreshold",0);x(this,"animationStart",0);x(this,"animationEnd",0);x(this,"animationLast",0);x(this,"nextAnimationLast",0);x(this,"delay",0);x(this,"trackTime",0);x(this,"trackLast",0);x(this,"nextTrackLast",0);x(this,"trackEnd",0);x(this,"timeScale",0);x(this,"alpha",0);x(this,"mixTime",0);x(this,"_mixDuration",0);x(this,"interruptAlpha",0);x(this,"totalAlpha",0);x(this,"mixBlend",Ce.replace);x(this,"timelineMode",new Array);x(this,"timelineHoldMix",new Array);x(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},oR=class{constructor(e){x(this,"objects",[]);x(this,"drainDisabled",!1);x(this,"animState");this.animState=e}start(e){this.objects.push(ps.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(ps.interrupt),this.objects.push(e)}end(e){this.objects.push(ps.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(ps.dispose),this.objects.push(e)}complete(e){this.objects.push(ps.complete),this.objects.push(e)}event(e,t){this.objects.push(ps.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{c.width=parseInt(i[1]),c.height=parseInt(i[2])},n.format=()=>{},n.filter=c=>{c.minFilter=Ge.enumValue(Bi,i[1]),c.magFilter=Ge.enumValue(Bi,i[2])},n.repeat=c=>{i[1].indexOf("x")!=-1&&(c.uWrap=ur.Repeat),i[1].indexOf("y")!=-1&&(c.vWrap=ur.Repeat)},n.pma=c=>{c.pma=i[1]=="true"};var r={};r.xy=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2])},r.size=c=>{c.width=parseInt(i[1]),c.height=parseInt(i[2])},r.bounds=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2]),c.width=parseInt(i[3]),c.height=parseInt(i[4])},r.offset=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2])},r.orig=c=>{c.originalWidth=parseInt(i[1]),c.originalHeight=parseInt(i[2])},r.offsets=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2]),c.originalWidth=parseInt(i[3]),c.originalHeight=parseInt(i[4])},r.rotate=c=>{let u=i[1];u=="true"?c.degrees=90:u!="false"&&(c.degrees=parseInt(u))},r.index=c=>{c.index=parseInt(i[1])};let a=t.readLine();for(;a&&a.trim().length==0;)a=t.readLine();for(;!(!a||a.trim().length==0||t.readEntry(i,a)==0);)a=t.readLine();let o=null,h=null,l=null;for(;a!==null;)if(a.trim().length==0)o=null,a=t.readLine();else if(o){let c=new sw(o,a);for(;;){let u=t.readEntry(i,a=t.readLine());if(u==0)break;let d=r[i[0]];if(d)d(c);else{h||(h=[]),l||(l=[]),h.push(i[0]);let f=[];for(let p=0;p0&&l&&l.length>0&&(c.names=h,c.values=l,h=null,l=null),c.u=c.x/o.width,c.v=c.y/o.height,c.degrees==90?(c.u2=(c.x+c.height)/o.width,c.v2=(c.y+c.width)/o.height):(c.u2=(c.x+c.width)/o.width,c.v2=(c.y+c.height)/o.height),this.regions.push(c)}else{for(o=new mR(a.trim());t.readEntry(i,a=t.readLine())!=0;){let c=n[i[0]];c&&c(o)}this.pages.push(o)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let i=t.indexOf(":");if(i==-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){let a=t.indexOf(",",r);if(a==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,a-r).trim(),r=a+1,n==4)return 4}}},mR=class{constructor(e){x(this,"name");x(this,"minFilter",Bi.Nearest);x(this,"magFilter",Bi.Nearest);x(this,"uWrap",ur.ClampToEdge);x(this,"vWrap",ur.ClampToEdge);x(this,"texture",null);x(this,"width",0);x(this,"height",0);x(this,"pma",!1);x(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},sw=class extends dR{constructor(t,i){super();x(this,"page");x(this,"name");x(this,"x",0);x(this,"y",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"originalWidth",0);x(this,"originalHeight",0);x(this,"index",0);x(this,"degrees",0);x(this,"names",null);x(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}},Zl=class Tm extends vr{constructor(t,i){super(t);x(this,"region",null);x(this,"path");x(this,"regionUVs",[]);x(this,"uvs",[]);x(this,"triangles",[]);x(this,"color",new _t(1,1,1,1));x(this,"width",0);x(this,"height",0);x(this,"hullLength",0);x(this,"edges",[]);x(this,"parentMesh",null);x(this,"sequence",null);x(this,"tempColor",new _t(0,0,0,0));this.path=i}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=Ge.newFloatArray(t.length));let i=this.uvs,n=this.uvs.length,r=this.region.u,a=this.region.v,o=0,h=0;if(this.region instanceof sw){let l=this.region,c=l.page,u=c.width,d=c.height;switch(l.degrees){case 90:r-=(l.originalHeight-l.offsetY-l.height)/u,a-=(l.originalWidth-l.offsetX-l.width)/d,o=l.originalHeight/u,h=l.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=i}};var gi;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(gi||(gi={}));let Vv=class{constructor(e,t,i){x(this,"data");x(this,"skeleton");x(this,"parent",null);x(this,"children",new Array);x(this,"x",0);x(this,"y",0);x(this,"rotation",0);x(this,"scaleX",0);x(this,"scaleY",0);x(this,"shearX",0);x(this,"shearY",0);x(this,"ax",0);x(this,"ay",0);x(this,"arotation",0);x(this,"ascaleX",0);x(this,"ascaleY",0);x(this,"ashearX",0);x(this,"ashearY",0);x(this,"a",0);x(this,"b",0);x(this,"c",0);x(this,"d",0);x(this,"worldY",0);x(this,"worldX",0);x(this,"inherit",gi.Normal);x(this,"sorted",!1);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=i,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,i,n,r,a,o){this.ax=e,this.ay=t,this.arotation=i,this.ascaleX=n,this.ascaleY=r,this.ashearX=a,this.ashearY=o;let h=this.parent;if(!h){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(i+a)*$e.degRad,v=(i+90+o)*$e.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(v)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(v)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let l=h.a,c=h.b,u=h.c,d=h.d;switch(this.worldX=l*e+c*t+h.worldX,this.worldY=u*e+d*t+h.worldY,this.inherit){case gi.Normal:{const f=(i+a)*$e.degRad,p=(i+90+o)*$e.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,v=Math.sin(f)*n,b=Math.sin(p)*r;this.a=l*m+c*v,this.b=l*g+c*b,this.c=u*m+d*v,this.d=u*g+d*b;return}case gi.OnlyTranslation:{const f=(i+a)*$e.degRad,p=(i+90+o)*$e.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case gi.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;l*=f,u*=p;let m=l*l+u*u,g=0;m>1e-4?(m=Math.abs(l*d*p-c*f*u)/m,c=u*m,d=l*m,g=Math.atan2(u,l)*$e.radDeg):(l=0,u=0,g=90-Math.atan2(d,c)*$e.radDeg);const v=(i+a-g)*$e.degRad,b=(i+o-g+90)*$e.degRad,y=Math.cos(v)*n,w=Math.cos(b)*r,A=Math.sin(v)*n,T=Math.sin(b)*r;this.a=l*y-c*A,this.b=l*w-c*T,this.c=u*y+d*A,this.d=u*w+d*T;break}case gi.NoScale:case gi.NoScaleOrReflection:{i*=$e.degRad;const f=Math.cos(i),p=Math.sin(i);let m=(l*f+c*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,v=Math.sqrt(m*m+g*g);v>1e-5&&(v=1/v),m*=v,g*=v,v=Math.sqrt(m*m+g*g),this.inherit==gi.NoScale&&l*d-c*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v),i=Math.PI/2+Math.atan2(g,m);const b=Math.cos(i)*v,y=Math.sin(i)*v;a*=$e.degRad,o=(90+o)*$e.degRad;const w=Math.cos(a)*n,A=Math.cos(o)*r,T=Math.sin(a)*n,_=Math.sin(o)*r;this.a=m*w+b*T,this.b=m*A+b*_,this.c=g*w+y*T,this.d=g*A+y*_;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*$e.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*$e.radDeg;return}let t=e.a,i=e.b,n=e.c,r=e.d,a=1/(t*r-i*n),o=r*a,h=i*a,l=n*a,c=t*a,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*o-d*h,this.ay=d*c-u*l;let f,p,m,g;if(this.inherit==gi.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case gi.NoRotationOrReflection:{let A=Math.abs(t*r-i*n)/(t*t+n*n);i=-n*this.skeleton.scaleX*A/this.skeleton.scaleY,r=t*this.skeleton.scaleY*A/this.skeleton.scaleX,a=1/(t*r-i*n),o=r*a,h=i*a;break}case gi.NoScale:case gi.NoScaleOrReflection:let v=$e.cosDeg(this.rotation),b=$e.sinDeg(this.rotation);t=(t*v+i*b)/this.skeleton.scaleX,n=(n*v+r*b)/this.skeleton.scaleY;let y=Math.sqrt(t*t+n*n);y>1e-5&&(y=1/y),t*=y,n*=y,y=Math.sqrt(t*t+n*n),this.inherit==gi.NoScale&&a<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(y=-y);let w=$e.PI/2+Math.atan2(n,t);i=Math.cos(w)*y,r=Math.sin(w)*y,a=1/(t*r-i*n),o=r*a,h=i*a,l=n*a,c=t*a}f=o*this.a-h*this.c,p=o*this.b-h*this.d,m=c*this.c-l*this.a,g=c*this.d-l*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let v=f*g-p*m;this.ascaleY=v/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,v)*$e.radDeg,this.arotation=Math.atan2(m,f)*$e.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*$e.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*$e.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*$e.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),i=e.x-this.worldX,n=e.y-this.worldY;return e.x=i*this.d*t-n*this.b*t,e.y=n*this.a*t-i*this.c*t,e}localToWorld(e){let t=e.x,i=e.y;return e.x=t*this.a+i*this.b+this.worldX,e.y=t*this.c+i*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=$e.sinDeg(e),i=$e.cosDeg(e);return Math.atan2(this.a*t-this.c*i,this.d*i-this.b*t)*$e.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=$e.sinDeg(e),i=$e.cosDeg(e);return Math.atan2(i*this.c+t*this.d,i*this.a+t*this.b)*$e.radDeg}rotateWorld(e){e*=$e.degRad;const t=Math.sin(e),i=Math.cos(e),n=this.a,r=this.b;this.a=i*n-t*this.c,this.b=i*r-t*this.d,this.c=t*n+i*this.c,this.d=t*r+i*this.d}},Cu=class{constructor(e,t,i){x(this,"name");x(this,"order");x(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=i}},lw=class{constructor(e,t){x(this,"data");x(this,"intValue",0);x(this,"floatValue",0);x(this,"stringValue",null);x(this,"time",0);x(this,"volume",0);x(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},cw=class{constructor(e){x(this,"name");x(this,"intValue",0);x(this,"floatValue",0);x(this,"stringValue",null);x(this,"audioPath",null);x(this,"volume",0);x(this,"balance",0);this.name=e}},pR=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"bendDirection",0);x(this,"compress",!1);x(this,"stretch",!1);x(this,"mix",1);x(this,"softness",0);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,v=e.ascaleY;if(n||r){switch(e.inherit){case gi.NoScale:case gi.NoScaleOrReflection:p=t-e.worldX,m=i-e.worldY}const b=e.data.length*g;if(b>1e-4){const y=p*p+m*m;if(n&&yb*b){const w=(Math.sqrt(y)/b-1)*o+1;g*=w,a&&(v*=w)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*o,g,v,e.ashearX,e.ashearY)}apply2(e,t,i,n,r,a,o,h,l){if(e.inherit!=gi.Normal||t.inherit!=gi.Normal)return;let c=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,v=0,b=0,y=0;d<0?(d=-d,v=180,y=-1):(v=0,y=1),f<0&&(f=-f,y=-y),g<0?(g=-g,b=180):b=0;let w=t.ax,A=0,T=0,_=0,R=e.a,P=e.b,F=e.c,I=e.d,k=Math.abs(d-f)<=1e-4;!k||a?(A=0,T=R*w+e.worldX,_=F*w+e.worldY):(A=t.ay,T=R*w+P*A+e.worldX,_=F*w+I*A+e.worldY);let B=e.parent;if(!B)throw new Error("IK parent must itself have a parent.");R=B.a,P=B.b,F=B.c,I=B.d;let D=R*I-P*F,U=T-B.worldX,L=_-B.worldY;D=Math.abs(D)<=1e-4?0:1/D;let N=(U*I-L*P)*D-c,O=(L*R-U*F)*D-u,X=Math.sqrt(N*N+O*O),E=t.data.length*g,V,q;if(X<1e-4){this.apply1(e,i,n,!1,a,!1,l),t.updateWorldTransformWith(w,A,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}U=i-B.worldX,L=n-B.worldY;let W=(U*I-L*P)*D-c,J=(L*R-U*F)*D-u,K=W*W+J*J;if(h!=0){h*=d*(g+1)*.5;let we=Math.sqrt(K),Ee=we-X-E*d+h;if(Ee>0){let pe=Math.min(1,Ee/(h*2))-1;pe=(Ee-h*(1-pe*pe))/we,W-=pe*W,J-=pe*J,K=W*W+J*J}}e:if(k){E*=d;let we=(K-X*X-E*E)/(2*X*E);we<-1?(we=-1,q=Math.PI*r):we>1?(we=1,q=0,a&&(R=(Math.sqrt(K)/(X+E)-1)*l+1,p*=R,o&&(m*=R))):q=Math.acos(we)*r,R=X+E*we,P=E*Math.sin(q),V=Math.atan2(J*R-W*P,W*R+J*P)}else{R=d*E,P=f*E;let we=R*R,Ee=P*P,pe=Math.atan2(J,W);F=Ee*X*X+we*K-we*Ee;let Ae=-2*Ee*X,G=Ee-we;if(I=Ae*Ae-4*G*F,I>=0){let le=Math.sqrt(I);Ae<0&&(le=-le),le=-(Ae+le)*.5;let Oe=le/G,Fe=F/le,Be=Math.abs(Oe)=0){L=Math.sqrt(Oe)*r,V=pe-Math.atan2(L,Be),q=Math.atan2(L/f,(Be-X)/d);break e}}let Z=$e.PI,z=X-R,j=z*z,te=0,he=0,xe=X+R,oe=xe*xe,ge=0;F=-R*X/(we-Ee),F>=-1&&F<=1&&(F=Math.acos(F),U=R*Math.cos(F)+X,L=P*Math.sin(F),I=U*U+L*L,Ioe&&(he=F,oe=I,xe=U,ge=L)),K<=(j+oe)*.5?(V=pe-Math.atan2(te*r,z),q=Z*r):(V=pe-Math.atan2(ge*r,xe),q=he*r)}let fe=Math.atan2(A,w)*y,me=e.arotation;V=(V-fe)*$e.radDeg+v-me,V>180?V-=360:V<-180&&(V+=360),e.updateWorldTransformWith(c,u,me+V*l,p,m,0,0),me=t.arotation,q=((q+fe)*$e.radDeg-t.ashearX)*y+b-me,q>180?q-=360:q<-180&&(q+=360),t.updateWorldTransformWith(w,A,me+q*l,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},hw=class extends Cu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"bendDirection",0);x(this,"compress",!1);x(this,"stretch",!1);x(this,"uniform",!1);x(this,"mix",0);x(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},uw=class extends Cu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"positionMode",Ln.Fixed);x(this,"spacingMode",ki.Fixed);x(this,"rotateMode",Pa.Chain);x(this,"offsetRotation",0);x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var Ln;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(Ln||(Ln={}));var ki;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(ki||(ki={}));var Pa;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Pa||(Pa={}));var Ji;let gR=(Ji=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"spaces",new Array);x(this,"positions",new Array);x(this,"world",new Array);x(this,"curves",new Array);x(this,"lengths",new Array);x(this,"segments",new Array);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){w=u/w*p;for(let T=1;T0?$e.degRad:-.01745329277777778}for(let w=0,A=3;w0){let I=T.a,k=T.b,B=T.c,D=T.d,U=0,L=0,N=0;if(o?U=m[A-1]:d[w+1]==0?U=m[A+2]:U=Math.atan2(F,P),U-=Math.atan2(B,I),y){L=Math.cos(U),N=Math.sin(U);let O=T.data.length;g+=(O*(L*I-N*B)-P)*i,v+=(O*(N*I+L*B)-F)*i}else U+=b;U>$e.PI?U-=$e.PI2:U<-3.1415927&&(U+=$e.PI2),U*=i,L=Math.cos(U),N=Math.sin(U),T.a=L*I-N*B,T.b=L*k-N*D,T.c=N*I+L*B,T.d=N*k+L*D}T.updateAppliedTransform()}}computeWorldPositions(e,t,i){let n=this.target,r=this.position,a=this.spaces,o=Ge.setArraySize(this.positions,t*3+2),h=this.world,l=e.closed,c=e.worldVerticesLength,u=c/6,d=Ji.NONE;if(!e.constantSpeed){let O=e.lengths;u-=l?1:2;let X=O[u];this.data.positionMode==Ln.Percent&&(r*=X);let E;switch(this.data.spacingMode){case ki.Percent:E=X;break;case ki.Proportional:E=X/t;break;default:E=1}h=Ge.setArraySize(this.world,8);for(let V=0,q=0,W=0;VX){d!=Ji.AFTER&&(d=Ji.AFTER,e.computeWorldVertices(n,c-6,4,h,0,2)),this.addAfterPosition(K-X,h,0,o,q);continue}for(;;W++){let fe=O[W];if(!(K>fe)){if(W==0)K/=fe;else{let me=O[W-1];K=(K-me)/(fe-me)}break}}W!=d&&(d=W,l&&W==u?(e.computeWorldVertices(n,c-4,4,h,0,2),e.computeWorldVertices(n,0,4,h,4,2)):e.computeWorldVertices(n,W*6+2,8,h,0,2)),this.addCurvePosition(K,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],o,q,i||V>0&&J==0)}return o}l?(c+=2,h=Ge.setArraySize(this.world,c),e.computeWorldVertices(n,2,c-4,h,0,2),e.computeWorldVertices(n,0,2,h,c-4,2),h[c-2]=h[0],h[c-1]=h[1]):(u--,c-=4,h=Ge.setArraySize(this.world,c),e.computeWorldVertices(n,2,c,h,0,2));let f=Ge.setArraySize(this.curves,u),p=0,m=h[0],g=h[1],v=0,b=0,y=0,w=0,A=0,T=0,_=0,R=0,P=0,F=0,I=0,k=0,B=0,D=0;for(let O=0,X=2;Op){this.addAfterPosition(W-p,h,c-4,o,X);continue}for(;;E++){let J=f[E];if(!(W>J)){if(E==0)W/=J;else{let K=f[E-1];W=(W-K)/(J-K)}break}}if(E!=d){d=E;let J=E*6;for(m=h[J],g=h[J+1],v=h[J+2],b=h[J+3],y=h[J+4],w=h[J+5],A=h[J+6],T=h[J+7],_=(m-v*2+y)*.03,R=(g-b*2+w)*.03,P=((v-y)*3-m+A)*.006,F=((b-w)*3-g+T)*.006,I=_*2+P,k=R*2+F,B=(v-m)*.3+_+P*.16666667,D=(b-g)*.3+R+F*.16666667,N=Math.sqrt(B*B+D*D),L[0]=N,J=1;J<8;J++)B+=I,D+=k,I+=P,k+=F,N+=Math.sqrt(B*B+D*D),L[J]=N;B+=I,D+=k,N+=Math.sqrt(B*B+D*D),L[8]=N,B+=I+P,D+=k+F,N+=Math.sqrt(B*B+D*D),L[9]=N,V=0}for(W*=N;;V++){let J=L[V];if(!(W>J)){if(V==0)W/=J;else{let K=L[V-1];W=V+(W-K)/(J-K)}break}}this.addCurvePosition(W*.1,m,g,v,b,y,w,A,T,o,X,i||O>0&&q==0)}return o}addBeforePosition(e,t,i,n,r){let a=t[i],o=t[i+1],h=t[i+2]-a,l=t[i+3]-o,c=Math.atan2(l,h);n[r]=a+e*Math.cos(c),n[r+1]=o+e*Math.sin(c),n[r+2]=c}addAfterPosition(e,t,i,n,r){let a=t[i+2],o=t[i+3],h=a-t[i],l=o-t[i+1],c=Math.atan2(l,h);n[r]=a+e*Math.cos(c),n[r+1]=o+e*Math.sin(c),n[r+2]=c}addCurvePosition(e,t,i,n,r,a,o,h,l,c,u,d){if(e==0||isNaN(e)){c[u]=t,c[u+1]=i,c[u+2]=Math.atan2(r-i,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,v=g*m,b=m*e,y=b*3,w=m*y,A=y*e,T=t*v+n*w+a*A+h*p,_=i*v+r*w+o*A+l*p;c[u]=T,c[u+1]=_,d&&(e<.001?c[u+2]=Math.atan2(r-i,n-t):c[u+2]=Math.atan2(_-(i*g+r*b*2+o*f),T-(t*g+n*b*2+a*f)))}},x(Ji,"NONE",-1),x(Ji,"BEFORE",-2),x(Ji,"AFTER",-3),x(Ji,"epsilon",1e-5),Ji),vR=class{constructor(e,t){x(this,"data");x(this,"_bone",null);x(this,"inertia",0);x(this,"strength",0);x(this,"damping",0);x(this,"massInverse",0);x(this,"wind",0);x(this,"gravity",0);x(this,"mix",0);x(this,"_reset",!0);x(this,"ux",0);x(this,"uy",0);x(this,"cx",0);x(this,"cy",0);x(this,"tx",0);x(this,"ty",0);x(this,"xOffset",0);x(this,"xVelocity",0);x(this,"yOffset",0);x(this,"yVelocity",0);x(this,"rotateOffset",0);x(this,"rotateVelocity",0);x(this,"scaleOffset",0);x(this,"scaleVelocity",0);x(this,"active",!1);x(this,"skeleton");x(this,"remaining",0);x(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const i=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,a=this.data.scaleX>0,o=this.bone,h=o.data.length;switch(e){case Br.none:return;case Br.reset:this.reset();case Br.update:const l=this.skeleton,c=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=c,this.lastTime=l.time;const u=o.worldX,d=o.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,v=-1,b=this.data.limit*c,y=b*Math.abs(l.scaleY);if(b*=Math.abs(l.scaleX),i||n){if(i){const w=(this.ux-u)*p;this.xOffset+=w>b?b:w<-b?-b:w,this.ux=u}if(n){const w=(this.uy-d)*p;this.yOffset+=w>y?y:w<-y?-y:w,this.uy=d}if(f>=m){v=Math.pow(this.damping,60*m);const w=this.massInverse*m,A=this.strength,T=this.wind*g*l.scaleX,_=this.gravity*g*l.scaleY;do i&&(this.xVelocity+=(T-this.xOffset*A)*w,this.xOffset+=this.xVelocity*m,this.xVelocity*=v),n&&(this.yVelocity-=(_+this.yOffset*A)*w,this.yOffset+=this.yVelocity*m,this.yVelocity*=v),f-=m;while(f>=m)}i&&(o.worldX+=this.xOffset*t*this.data.x),n&&(o.worldY+=this.yOffset*t*this.data.y)}if(r||a){let w=Math.atan2(o.c,o.a),A=0,T=0,_=0,R=this.cx-o.worldX,P=this.cy-o.worldY;if(R>b?R=b:R<-b&&(R=-b),P>y?P=y:P<-y&&(P=-y),r){_=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(P+this.ty,R+this.tx)-w-this.rotateOffset*_;this.rotateOffset+=(F-Math.ceil(F*$e.invPI2-.5)*$e.PI2)*p,F=this.rotateOffset*_+w,A=Math.cos(F),T=Math.sin(F),a&&(F=h*o.getWorldScaleX(),F>0&&(this.scaleOffset+=(R*A+P*T)*p/F))}else{A=Math.cos(w),T=Math.sin(w);const F=h*o.getWorldScaleX();F>0&&(this.scaleOffset+=(R*A+P*T)*p/F)}if(f=this.remaining,f>=m){v==-1&&(v=Math.pow(this.damping,60*m));const F=this.massInverse*m,I=this.strength,k=this.wind,B=Cp.yDown?-this.gravity:this.gravity,D=h/g;for(;;)if(f-=m,a&&(this.scaleVelocity+=(k*A-B*T-this.scaleOffset*I)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=v),r){if(this.rotateVelocity-=((k*T+B*A)*D+this.rotateOffset*I)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=v,f0){let f=0;this.data.rotate>0&&(f=l*this.data.rotate,c=Math.sin(f),u=Math.cos(f),d=o.b,o.b=u*d-c*o.d,o.d=c*d+u*o.d),f+=l*this.data.shearX,c=Math.sin(f),u=Math.cos(f),d=o.a,o.a=u*d-c*o.c,o.c=c*d+u*o.c}else l*=this.data.rotate,c=Math.sin(l),u=Math.cos(l),d=o.a,o.a=u*d-c*o.c,o.c=c*d+u*o.c,d=o.b,o.b=u*d-c*o.d,o.d=c*d+u*o.d}if(a){const l=1+this.scaleOffset*t*this.data.scaleX;o.a*=l,o.c*=l}e!=Br.pose&&(this.tx=h*o.a,this.ty=h*o.c),o.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,i){const n=i*$e.degRad,r=Math.cos(n),a=Math.sin(n),o=this.cx-e,h=this.cy-t;this.translate(o*r-h*a-o,o*a+h*r-h)}},yR=class{constructor(e,t){x(this,"data");x(this,"bone");x(this,"color");x(this,"darkColor",null);x(this,"attachment",null);x(this,"attachmentState",0);x(this,"sequenceIndex",-1);x(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new _t,this.darkColor=e.darkColor?new _t:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof vr)||!(this.attachment instanceof vr)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},xR=class{constructor(e,t){x(this,"data");x(this,"bones");x(this,"target");x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0);x(this,"temp",new Fh);x(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?$e.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,b=g.length;v$e.PI?R-=$e.PI2:R<-3.1415927&&(R+=$e.PI2),R*=e;let P=Math.cos(R),F=Math.sin(R);y.a=P*w-F*T,y.b=P*A-F*_,y.c=F*w+P*T,y.d=F*A+P*_}if(o){let w=this.temp;h.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),y.worldX+=(w.x-y.worldX)*t,y.worldY+=(w.y-y.worldY)*i}if(n!=0){let w=Math.sqrt(y.a*y.a+y.c*y.c);w!=0&&(w=(w+(Math.sqrt(l*l+u*u)-w+this.data.offsetScaleX)*n)/w),y.a*=w,y.c*=w}if(r!=0){let w=Math.sqrt(y.b*y.b+y.d*y.d);w!=0&&(w=(w+(Math.sqrt(c*c+d*d)-w+this.data.offsetScaleY)*r)/w),y.b*=w,y.d*=w}if(a>0){let w=y.b,A=y.d,T=Math.atan2(A,w),_=Math.atan2(d,c)-Math.atan2(u,l)-(T-Math.atan2(y.c,y.a));_>$e.PI?_-=$e.PI2:_<-3.1415927&&(_+=$e.PI2),_=T+(_+m)*a;let R=Math.sqrt(w*w+A*A);y.b=Math.cos(_)*R,y.d=Math.sin(_)*R}y.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,a=this.mixShearY,o=t!=0||i!=0,h=this.target,l=h.a,c=h.b,u=h.c,d=h.d,f=l*d-c*u>0?$e.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,b=g.length;v$e.PI?R-=$e.PI2:R<-3.1415927&&(R+=$e.PI2),R*=e;let P=Math.cos(R),F=Math.sin(R);y.a=P*w-F*T,y.b=P*A-F*_,y.c=F*w+P*T,y.d=F*A+P*_}if(o){let w=this.temp;h.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),y.worldX+=w.x*t,y.worldY+=w.y*i}if(n!=0){let w=(Math.sqrt(l*l+u*u)-1+this.data.offsetScaleX)*n+1;y.a*=w,y.c*=w}if(r!=0){let w=(Math.sqrt(c*c+d*d)-1+this.data.offsetScaleY)*r+1;y.b*=w,y.d*=w}if(a>0){let w=Math.atan2(d,c)-Math.atan2(u,l);w>$e.PI?w-=$e.PI2:w<-3.1415927&&(w+=$e.PI2);let A=y.b,T=y.d;w=Math.atan2(T,A)+(w-$e.PI/2+m)*a;let _=Math.sqrt(A*A+T*T);y.b=Math.cos(w)*_,y.d=Math.sin(w)*_}y.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,a=this.mixShearY,o=this.target,h=this.bones;for(let l=0,c=h.length;lt.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new Fh,i=new Fh;return this.getBounds(t,i,void 0,e),{x:t.x,y:t.y,width:i.x,height:i.y}}getBounds(e,t,i=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,a=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let c=0,u=r.length;c=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!i)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=i}};var Vr;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Vr||(Vr={}));let mw=class extends Cu{constructor(t){super(t,0,!1);x(this,"bones",new Array);x(this,"_target",null);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0);x(this,"offsetRotation",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"offsetScaleX",0);x(this,"offsetScaleY",0);x(this,"offsetShearY",0);x(this,"relative",!1);x(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},Cm=class{constructor(e){x(this,"scale",1);x(this,"attachmentLoader");x(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,i=new Bh;i.name="";let n=new bR(e),r=n.readInt32(),a=n.readInt32();i.hash=a==0&&r==0?null:a.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;let o=n.readBoolean();o&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let h=0;h=n.readInt(!0);for(let c=0;c>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==Ln.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==ki.Length||f.spacingMode==ki.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),i.pathConstraints.push(f)}h=n.readInt(!0);for(let c=0,u;c>4,e.readFloat())}n.push(T);break}}}}}let a=e.readInt(!0);if(a>0){let l=new gl(a),c=i.slots.length;for(let u=0;u=0;b--)p[b]=-1;let m=Ge.newArray(c-f,0),g=0,v=0;for(let b=0;b=0;b--)p[b]==-1&&(p[b]=m[--v]);l.setFrame(u,d,p)}n.push(l)}let o=e.readInt(!0);if(o>0){let l=new Ep(o);for(let c=0;c>>1^-(i&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},wR=class{constructor(e,t,i,n,r){x(this,"parent");x(this,"skinIndex");x(this,"slotIndex");x(this,"mesh");x(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.parent=n,this.inheritTimeline=r}},SR=class{constructor(e=null,t=null,i=0){x(this,"bones");x(this,"vertices");x(this,"length");this.bones=e,this.vertices=t,this.length=i}};var zn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(zn||(zn={}));function qi(s,e,t){let i=s.readFloat(),n=s.readFloat()*t;for(let r=0,a=0,o=e.getFrameCount()-1;e.setFrame(r,i,n),r!=o;r++){let h=s.readFloat(),l=s.readFloat()*t;switch(s.readByte()){case Sn:e.setStepped(r);break;case Mn:Ft(s,e,a++,r,0,i,h,n,l,t)}i=h,n=l}return e}function Sf(s,e,t){let i=s.readFloat(),n=s.readFloat()*t,r=s.readFloat()*t;for(let a=0,o=0,h=e.getFrameCount()-1;e.setFrame(a,i,n,r),a!=h;a++){let l=s.readFloat(),c=s.readFloat()*t,u=s.readFloat()*t;switch(s.readByte()){case Sn:e.setStepped(a);break;case Mn:Ft(s,e,o++,a,0,i,l,n,c,t),Ft(s,e,o++,a,1,i,l,r,u,t)}i=l,n=c,r=u}return e}function Ft(s,e,t,i,n,r,a,o,h,l){e.setBezier(t,i,n,r,o,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,a,h)}const MR=0,_R=1,TR=2,AR=3,ER=4,CR=5,IR=6,RR=7,PR=8,kR=9,FR=10,OR=0,BR=1,LR=2,DR=3,NR=4,UR=5,XR=0,VR=1,YR=0,$R=1,GR=2,HR=0,jR=1,WR=2,zR=4,qR=5,KR=6,ZR=7,JR=8,Sn=1,Mn=2;class gs{constructor(){x(this,"convexPolygons",new Array);x(this,"convexPolygonsIndices",new Array);x(this,"indicesArray",new Array);x(this,"isConcaveArray",new Array);x(this,"triangles",new Array);x(this,"polygonPool",new kh(()=>new Array));x(this,"polygonIndicesPool",new kh(()=>new Array))}triangulate(e){let t=e,i=e.length>>1,n=this.indicesArray;n.length=0;for(let o=0;o3;){let o=i-1,h=0,l=1;for(;;){e:if(!r[h]){let d=n[o]<<1,f=n[h]<<1,p=n[l]<<1,m=t[d],g=t[d+1],v=t[f],b=t[f+1],y=t[p],w=t[p+1];for(let A=(l+1)%i;A!=o;A=(A+1)%i){if(!r[A])continue;let T=n[A]<<1,_=t[T],R=t[T+1];if(gs.positiveArea(y,w,m,g,_,R)&&gs.positiveArea(m,g,v,b,_,R)&&gs.positiveArea(v,b,y,w,_,R))break e}break}if(l==0){do{if(!r[h])break;h--}while(h>0);break}o=h,h=l,l=(l+1)%i}a.push(n[(i+h-1)%i]),a.push(n[h]),a.push(n[(h+1)%i]),n.splice(h,1),r.splice(h,1),i--;let c=(i+h-1)%i,u=h==i?0:h;r[c]=gs.isConcave(c,i,t,n),r[u]=gs.isConcave(u,i,t,n)}return i==3&&(a.push(n[2]),a.push(n[0]),a.push(n[1])),a}decompose(e,t){let i=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let a=this.polygonIndicesPool.obtain();a.length=0;let o=this.polygonPool.obtain();o.length=0;let h=-1,l=0;for(let c=0,u=t.length;c0?(n.push(o),r.push(a)):(this.polygonPool.free(o),this.polygonIndicesPool.free(a)),o=this.polygonPool.obtain(),o.length=0,o.push(m),o.push(g),o.push(v),o.push(b),o.push(y),o.push(w),a=this.polygonIndicesPool.obtain(),a.length=0,a.push(d),a.push(f),a.push(p),l=gs.winding(m,g,v,b,y,w),h=d)}o.length>0&&(n.push(o),r.push(a));for(let c=0,u=n.length;c=0;c--)o=n[c],o.length==0&&(n.splice(c,1),this.polygonPool.free(o),a=r[c],r.splice(c,1),this.polygonIndicesPool.free(a));return n}static isConcave(e,t,i,n){let r=n[(t+e-1)%t]<<1,a=n[e]<<1,o=n[(e+1)%t]<<1;return!this.positiveArea(i[r],i[r+1],i[a],i[a+1],i[o],i[o+1])}static positiveArea(e,t,i,n,r,a){return e*(a-n)+i*(t-a)+r*(n-t)>=0}static winding(e,t,i,n,r,a){let o=i-e,h=n-t;return r*h-a*o+o*t-e*h>=0?1:-1}}class Lh{constructor(){x(this,"triangulator",new gs);x(this,"clippingPolygon",new Array);x(this,"clipOutput",new Array);x(this,"clippedVertices",new Array);x(this,"clippedUVs",new Array);x(this,"clippedTriangles",new Array);x(this,"scratch",new Array);x(this,"clipAttachment",null);x(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let i=t.worldVerticesLength,n=Ge.setArraySize(this.clippingPolygon,i);t.computeWorldVertices(e,0,i,n,0,2);let r=this.clippingPolygon;Lh.makeClockwise(r);let a=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let o=0,h=a.length;o>1,T=this.clipOutput,_=Ge.setArraySize(r,y+A*2);for(let P=0;P>1,q=this.clipOutput,W=Ge.setArraySize(l,D+V*f);for(let K=0;K>1,X=this.clipOutput,E=Ge.setArraySize(a,I+O*2),V=Ge.setArraySize(o,I+O*2);for(let W=0;W=2?(u=h,h=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(i),u.push(n),u.push(r),u.push(a),u.push(e),u.push(t),h.length=0;let d=o.length-4,f=o;for(let p=0;;p+=2){let m=f[p],g=f[p+1],v=m-f[p+2],b=g-f[p+3],y=h.length,w=u;for(let T=0,_=u.length-2;T<_;){let R=w[T],P=w[T+1];T+=2;let F=w[T],I=w[T+1],k=b*(m-F)>v*(g-I),B=b*(m-R)-v*(g-P);if(B>0){if(k){h.push(F),h.push(I);continue}let D=F-R,U=I-P,L=B/(D*b-U*v);if(L>=0&&L<=1)h.push(R+D*L),h.push(P+U*L);else{h.push(F),h.push(I);continue}}else if(k){let D=F-R,U=I-P,L=B/(D*b-U*v);if(L>=0&&L<=1)h.push(R+D*L),h.push(P+U*L),h.push(F),h.push(I);else{h.push(F),h.push(I);continue}}c=!0}if(y==h.length)return l.length=0,!0;if(h.push(h[0]),h.push(h[1]),p==d)break;let A=h;h=u,h.length=0,u=A}if(l!=h){l.length=0;for(let p=0,m=h.length-2;p>1;l0){let c=i.findPhysicsConstraint(o);if(!c)throw new Error("Physics constraint not found: "+o);l=i.physicsConstraints.indexOf(c)}for(let c in h){let u=h[c],d=u[0];if(!d)continue;let f=u.length;if(c=="reset"){const m=new Z1(f,l);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,re(d,"time",0));r.push(m);continue}let p;if(c=="inertia")p=new G1(f,f,l);else if(c=="strength")p=new H1(f,f,l);else if(c=="damping")p=new j1(f,f,l);else if(c=="mass")p=new W1(f,f,l);else if(c=="wind")p=new z1(f,f,l);else if(c=="gravity")p=new q1(f,f,l);else if(c=="mix")p=new K1(f,f,l);else continue;r.push(Ks(u,p,0,1))}}if(e.attachments)for(let o in e.attachments){let h=e.attachments[o],l=i.findSkin(o);if(!l)throw new Error("Skin not found: "+o);for(let c in h){let u=h[c],d=i.findSlot(c);if(!d)throw new Error("Slot not found: "+c);let f=d.index;for(let p in u){let m=u[p],g=l.getAttachment(f,p);for(let v in m){let b=m[v],y=b[0];if(y){if(v=="deform"){let w=g.bones,A=g.vertices,T=w?A.length/3*2:A.length,_=new N1(b.length,b.length,f,g),R=re(y,"time",0);for(let P=0,F=0;;P++){let I,k=re(y,"vertices",null);if(!k)I=w?Ge.newFloatArray(T):A;else{I=Ge.newFloatArray(T);let L=re(y,"offset",0);if(Ge.arrayCopy(k,0,I,L,k.length),n!=1)for(let N=L,O=N+k.length;N=0;v--)d[v]==-1&&(d[v]=p[--g])}o.setFrame(l,re(u,"time",0),d)}r.push(o)}if(e.events){let o=new Ep(e.events.length),h=0;for(let l=0;l"u"&&(Math.fround=(function(s){return function(e){return s[0]=e,s[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let s=window.require;window.require=e=>{if(s)return s(e);if(e.startsWith("@pixi/"))return window.PIXI}}const Kn=class Kn extends uR{constructor(t){super(t.resource.source);x(this,"texture");this.texture=gt.from(t)}static from(t){return Kn.textureMap.has(t)?Kn.textureMap.get(t):new Kn(t)}setFilters(t,i){this.texture.baseTexture.scaleMode=Kn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=Kn.toPixiMipMap(t)}setWraps(t,i){this.texture.baseTexture.wrapMode=Kn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case Bi.Nearest:case Bi.MipMapNearestLinear:case Bi.MipMapNearestNearest:return sn.NEAREST;case Bi.Linear:case Bi.MipMapLinearLinear:case Bi.MipMapLinearNearest:return sn.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case Bi.Nearest:case Bi.Linear:return Ys.OFF;case Bi.MipMapNearestLinear:case Bi.MipMapNearestNearest:case Bi.MipMapLinearLinear:case Bi.MipMapLinearNearest:return Ys.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case ur.ClampToEdge:return an.CLAMP;case ur.MirroredRepeat:return an.MIRRORED_REPEAT;case ur.Repeat:return an.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case Vr.Normal:return dt.NORMAL;case Vr.Additive:return dt.ADD;case Vr.Multiply:return dt.MULTIPLY;case Vr.Screen:return dt.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};x(Kn,"textureMap",new Map);let La=Kn;const Zn=class Zn extends Ll{constructor(){const t=new Sp;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const i=new Ch(gt.EMPTY);super(t,i);x(this,"name","");x(this,"warnedTwoTint",!1)}updateFromSpineData(t,i,n,r,a,o,h,l){var v,b;this.texture=t.texture;const c=a/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==c&&(u.data=new Float32Array(c));const d=this.geometry.getBuffer("aVertexPosition");((b=d.data)==null?void 0:b.length)!==c&&(d.data=new Float32Array(c));let f=0,p=u.data,m=d.data;for(let y=0;ynew Rm);x(this,"beforeUpdateWorldTransforms",()=>{});x(this,"afterUpdateWorldTransforms",()=>{});x(this,"_autoUpdate",!1);x(this,"_ticker",us.shared);x(this,"meshesCache",new Map);x(this,"lightColor",new Mt);x(this,"darkColor",new Mt);x(this,"_boundsProvider");x(this,"_boundsPoint",new Xt);x(this,"_boundsSpineID",-1);x(this,"_boundsSpineDirty",!0);x(this,"slotsObject",new Map);x(this,"verticesCache",$e.newFloatArray(1024));x(this,"clippingSlotToPixiMasks",{});x(this,"currentClippingSlot");const n=t instanceof Bh?t:t.skeletonData;this.skeleton=new Ip(n);const r=new uR(n);this.state=new aR(r),(t==null?void 0:t.darkTint)!==void 0||(i==null?void 0:i.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(a=>!!a.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new yl)):this.initializeMeshFactory(i==null?void 0:i.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??us.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const i=this.slotMeshFactory();i instanceof yl&&(this.darkTint=!0),i.destroy()}else for(let i=0;inew yl,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,i){this.hasNeverUpdated=!1;const n=i??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(Lr.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var i;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(i=this.clippingSlotToPixiMasks[n].mask)==null||i.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let i=this.meshesCache.get(t);return i.visible=!0,i}else{let i=this.slotMeshFactory();return this.addChild(i),this.meshesCache.set(t,i),i}}getSlotFromRef(t){let i;if(typeof t=="number"?i=this.skeleton.slots[t]:typeof t=="string"?i=this.skeleton.findSlot(t):i=t,!i)throw new Error(`No slot found with the given slot reference: ${t}`);return i}addSlotObject(t,i,n){var o;let r=this.getSlotFromRef(t);const a=(o=this.slotsObject.get(r))==null?void 0:o.container;if(!(a&&a===i)){for(const[h,{container:l}]of this.slotsObject)if(h!==r&&l===i){this.removeSlotObject(h,i);break}a&&this.removeChild(a),this.slotsObject.set(r,{container:i,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(i)}}getSlotObject(t){const i=this.slotsObject.get(this.getSlotFromRef(t));return i?i.container:void 0}removeSlotObject(t,i){var a;let n=this.getSlotFromRef(t),r=(a=this.slotsObject.get(n))==null?void 0:a.container;r&&(i&&i!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,i,n){const{container:r,followAttachmentTimeline:a}=t,o=a?!!i.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(i)&&o,r.visible){let h=i.bone;const l=r.localTransform;l.a=h.a,l.b=h.c,l.c=-h.b,l.d=-h.d,l.tx=h.worldX,l.ty=h.worldY,r.transform.setFromMatrix(l),r.zIndex=n,r.alpha=this.skeleton.color.a*i.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*i.color.r<<16|255*this.skeleton.color.g*i.color.g<<8|255*this.skeleton.color.b*i.color.b)}}setSlotObjectTint(t,i){const n=t;"tint"in n&&(n.tint=i);for(const r of n.children??[])this.setSlotObjectTint(r,i)}updateAndSetPixiMask(t,i){var o,h;const n=t.attachment;if(n&&n instanceof To){const l=(o=this.clippingSlotToPixiMasks)[h=t.data.name]||(o[h]={slot:t,vertices:new Array});l.maskComputed=!1,this.currentClippingSlot=l;return}let r=this.currentClippingSlot;const a=this.slotsObject.get(t);if(r&&a){let l=r.mask;if(l||(l=Gv.obtain(),r.mask=l,this.addChild(l)),!r.maskComputed){let c=r.slot,u=c.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(c,0,d,f,0,2),l.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}a.container.mask=l}else a!=null&&a.container.mask&&(a.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),i){for(const l in this.clippingSlotToPixiMasks){const c=this.clippingSlotToPixiMasks[l];(!(c.slot.attachment instanceof To)||!c.maskComputed)&&c.mask&&(this.removeChild(c.mask),Gv.free(c.mask),c.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,a;this.resetMeshes();let t=null,i=null;const n=this.skeleton.drawOrder;for(let o=0,h=n.length,l=0;o>1)*p,b>this.verticesCache.length&&(this.verticesCache=$e.newFloatArray(b)),y.computeWorldVertices(c,0,y.worldVerticesLength,this.verticesCache,0,p),t=y.triangles,i=y.uvs,v=(a=y.region)==null?void 0:a.texture}else if(m instanceof To){Yt.clipper.clipStart(c,m);continue}else{this.hasMeshForSlot(c)&&(this.getMeshForSlot(c).visible=!1),Yt.clipper.clipEndWithSlot(c);continue}if(v!=null){const w=c.bone.skeleton.color,A=c.color,M=w.a*A.a*g.a;this.lightColor.set(w.r*A.r*g.r,w.g*A.g*g.g,w.b*A.b*g.b,M),c.darkColor!=null?this.darkColor.set(c.darkColor.r,c.darkColor.g,c.darkColor.b,1):this.darkColor.set(0,0,0,1);let _,R,P,F;if(Yt.clipper.isClipping())Yt.clipper.clipTriangles(this.verticesCache,t,t.length,i,this.lightColor,this.darkColor,f),_=Yt.clipper.clippedVertices,R=_.length,P=Yt.clipper.clippedTriangles,F=P.length;else{const k=this.verticesCache;for(let B=2,D=0,U=b;Bnew vs);Ip.yDown=!0;const Fc="spineTextureAtlasLoader",aP={extension:Ge.Asset,resolver:{test:s=>xs(s,".atlas"),parse:s=>{var t,i;const e=s.split(".");return{resolution:parseFloat(((i=(t=We.RETINA_PREFIX)==null?void 0:t.exec(s))==null?void 0:i[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:Fc,extension:{type:Ge.LoadParser,priority:Es.Normal,name:Fc},test(s){return xs(s,".atlas")},async load(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${Fc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return await e.text()},testParse(s,e){const t=xs(e.src,".atlas"),i=typeof s=="string",n=e.loadParser===Fc;return Promise.resolve((t||n)&&i)},unload(s){s.dispose()},async parse(s,e,t){var h;const i=e.data||{};let n=wi.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new sw(s);if(i.images instanceof vt||typeof i.images=="string"){const l=i.images;i.images={},i.images[r.pages[0].name]=l}const a=[];let o=!0;for(const l of t.parsers)if(l.name=="loadTextures"){o=(h=l.config)==null?void 0:h.preferCreateImageBitmap;break}kn.setPreferences({preferCreateImageBitmap:!1});for(const l of r.pages){const c=l.name,u=i!=null&&i.images?i.images[c]:void 0;if(u instanceof vt)l.setTexture(Oa.from(u));else{const d=u??wi.normalize([...n.split(wi.sep),c].join(wi.sep)),f={src:_h(d,e.src),data:{...i.imageMetadata,alphaMode:l.pma?Ni.PMA:Ni.UNPACK}},p=t.load(f).then(m=>{l.setTexture(Oa.from(m.baseTexture))});a.push(p)}}return await Promise.all(a),kn.setPreferences({preferCreateImageBitmap:o}),r}}};et.add(aP);const Oc="spineSkeletonLoader";function oP(s){return s.hasOwnProperty("bones")}function lP(s){return s instanceof Uint8Array}const cP={extension:Ge.Asset,loader:{name:Oc,extension:{type:Ge.LoadParser,priority:Es.Normal,name:Oc},test(s){return xs(s,".skel")},async load(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${Oc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(s,e){const t=xs(e.src,".json")&&oP(s),i=xs(e.src,".skel")&&lP(s),n=e.loadParser===Oc;return Promise.resolve(t||i||n)}}};et.add(cP);class hP extends Dn{constructor(t=!1){super();x(this,"_buffer");x(this,"_indexBuffer");this._buffer=new ai(void 0,t,!1),this._indexBuffer=new ai(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,Qe.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,Qe.FLOAT).addAttribute("aColor",this._buffer,4,!0,Qe.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,Qe.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,Qe.FLOAT).addIndex(this._indexBuffer)}}const uP=` +`;class sP extends cn{constructor(t){const i={uSampler:t??gt.EMPTY,alpha:1,uTextureMatrix:li.IDENTITY,uColor:new Float32Array([1,1,1,1]),uDarkColor:new Float32Array([0,0,0,0])},n={tint:16777215,darkTint:0,alpha:1,pluginName:"darkTintBatch"};super(kn.from(tP,iP),i);x(this,"uvMatrix");x(this,"batchable");x(this,"pluginName");x(this,"_tintRGB");x(this,"_darkTintRGB");x(this,"_colorDirty");x(this,"_alpha");x(this,"_tintColor");x(this,"_darkTintColor");this._colorDirty=!1,this.uvMatrix=new gp(i.uSampler),this.batchable=!0,this.pluginName=n.pluginName,this._tintColor=new jt(n.tint),this._darkTintColor=new jt(n.darkTint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._alpha=n.alpha,this._colorDirty=!0}get texture(){return this.uniforms.uSampler}set texture(t){this.uniforms.uSampler!==t&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!t.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=t,this.uvMatrix.texture=t)}set alpha(t){t!==this._alpha&&(this._alpha=t,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(t){t!==this.tint&&(this._tintColor.setValue(t),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}set darkTint(t){t!==this.darkTint&&(this._darkTintColor.setValue(t),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._colorDirty=!0)}get darkTint(){return this._darkTintColor.value}get tintValue(){return this._tintColor.toNumber()}get darkTintValue(){return this._darkTintColor.toNumber()}update(){this._colorDirty&&(this._colorDirty=!1,jt.shared.setValue(this._tintColor).premultiply(this._alpha,!0).toArray(this.uniforms.uColor),jt.shared.setValue(this._darkTintColor).premultiply(this._alpha,!0).premultiply(1,!1).toArray(this.uniforms.uDarkColor)),this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class nP extends Ll{constructor(t){super(new eP,new sP(t),void 0,void 0);x(this,"_darkTintRGB",0)}get darkTint(){return"darkTint"in this.shader?this.shader.darkTint:null}set darkTint(t){this.shader.darkTint=t}get darkTintValue(){return this.shader.darkTintValue}_renderToBatch(t){const i=this.geometry,n=this.shader;n.uvMatrix&&(n.uvMatrix.update(),this.calculateUvs()),this.calculateVertices(),this.indices=i.indexBuffer.data,this._tintRGB=n._tintRGB,this._darkTintRGB=n._darkTintRGB,this._texture=n.texture;const r=this.material.pluginName;t.batch.setObjectRenderer(t.plugins[r]),t.plugins[r].render(this)}}const Ii=class Ii extends nP{constructor(){super();x(this,"name","")}updateFromSpineData(t,i,n,r,a,o,h,l){var v,b;this.texture=t.texture;const c=a/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==c&&(u.data=new Float32Array(c));const d=this.geometry.getBuffer("aVertexPosition");((b=d.data)==null?void 0:b.length)!==c&&(d.data=new Float32Array(c));let f=0,p=u.data,m=d.data;for(let y=0;ynew Im);x(this,"beforeUpdateWorldTransforms",()=>{});x(this,"afterUpdateWorldTransforms",()=>{});x(this,"_autoUpdate",!1);x(this,"_ticker",ds.shared);x(this,"meshesCache",new Map);x(this,"lightColor",new _t);x(this,"darkColor",new _t);x(this,"_boundsProvider");x(this,"_boundsPoint",new Ut);x(this,"_boundsSpineID",-1);x(this,"_boundsSpineDirty",!0);x(this,"slotsObject",new Map);x(this,"verticesCache",Ge.newFloatArray(1024));x(this,"clippingSlotToPixiMasks",{});x(this,"currentClippingSlot");const n=t instanceof Bh?t:t.skeletonData;this.skeleton=new Cp(n);const r=new hR(n);this.state=new rR(r),(t==null?void 0:t.darkTint)!==void 0||(i==null?void 0:i.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(a=>!!a.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new vl)):this.initializeMeshFactory(i==null?void 0:i.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??ds.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const i=this.slotMeshFactory();i instanceof vl&&(this.darkTint=!0),i.destroy()}else for(let i=0;inew vl,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,i){this.hasNeverUpdated=!1;const n=i??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(Br.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var i;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(i=this.clippingSlotToPixiMasks[n].mask)==null||i.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let i=this.meshesCache.get(t);return i.visible=!0,i}else{let i=this.slotMeshFactory();return this.addChild(i),this.meshesCache.set(t,i),i}}getSlotFromRef(t){let i;if(typeof t=="number"?i=this.skeleton.slots[t]:typeof t=="string"?i=this.skeleton.findSlot(t):i=t,!i)throw new Error(`No slot found with the given slot reference: ${t}`);return i}addSlotObject(t,i,n){var o;let r=this.getSlotFromRef(t);const a=(o=this.slotsObject.get(r))==null?void 0:o.container;if(!(a&&a===i)){for(const[h,{container:l}]of this.slotsObject)if(h!==r&&l===i){this.removeSlotObject(h,i);break}a&&this.removeChild(a),this.slotsObject.set(r,{container:i,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(i)}}getSlotObject(t){const i=this.slotsObject.get(this.getSlotFromRef(t));return i?i.container:void 0}removeSlotObject(t,i){var a;let n=this.getSlotFromRef(t),r=(a=this.slotsObject.get(n))==null?void 0:a.container;r&&(i&&i!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,i,n){const{container:r,followAttachmentTimeline:a}=t,o=a?!!i.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(i)&&o,r.visible){let h=i.bone;const l=r.localTransform;l.a=h.a,l.b=h.c,l.c=-h.b,l.d=-h.d,l.tx=h.worldX,l.ty=h.worldY,r.transform.setFromMatrix(l),r.zIndex=n,r.alpha=this.skeleton.color.a*i.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*i.color.r<<16|255*this.skeleton.color.g*i.color.g<<8|255*this.skeleton.color.b*i.color.b)}}setSlotObjectTint(t,i){const n=t;"tint"in n&&(n.tint=i);for(const r of n.children??[])this.setSlotObjectTint(r,i)}updateAndSetPixiMask(t,i){var o,h;const n=t.attachment;if(n&&n instanceof _o){const l=(o=this.clippingSlotToPixiMasks)[h=t.data.name]||(o[h]={slot:t,vertices:new Array});l.maskComputed=!1,this.currentClippingSlot=l;return}let r=this.currentClippingSlot;const a=this.slotsObject.get(t);if(r&&a){let l=r.mask;if(l||(l=$v.obtain(),r.mask=l,this.addChild(l)),!r.maskComputed){let c=r.slot,u=c.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(c,0,d,f,0,2),l.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}a.container.mask=l}else a!=null&&a.container.mask&&(a.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),i){for(const l in this.clippingSlotToPixiMasks){const c=this.clippingSlotToPixiMasks[l];(!(c.slot.attachment instanceof _o)||!c.maskComputed)&&c.mask&&(this.removeChild(c.mask),$v.free(c.mask),c.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,a;this.resetMeshes();let t=null,i=null;const n=this.skeleton.drawOrder;for(let o=0,h=n.length,l=0;o>1)*p,b>this.verticesCache.length&&(this.verticesCache=Ge.newFloatArray(b)),y.computeWorldVertices(c,0,y.worldVerticesLength,this.verticesCache,0,p),t=y.triangles,i=y.uvs,v=(a=y.region)==null?void 0:a.texture}else if(m instanceof _o){Yt.clipper.clipStart(c,m);continue}else{this.hasMeshForSlot(c)&&(this.getMeshForSlot(c).visible=!1),Yt.clipper.clipEndWithSlot(c);continue}if(v!=null){const w=c.bone.skeleton.color,A=c.color,T=w.a*A.a*g.a;this.lightColor.set(w.r*A.r*g.r,w.g*A.g*g.g,w.b*A.b*g.b,T),c.darkColor!=null?this.darkColor.set(c.darkColor.r,c.darkColor.g,c.darkColor.b,1):this.darkColor.set(0,0,0,1);let _,R,P,F;if(Yt.clipper.isClipping())Yt.clipper.clipTriangles(this.verticesCache,t,t.length,i,this.lightColor,this.darkColor,f),_=Yt.clipper.clippedVertices,R=_.length,P=Yt.clipper.clippedTriangles,F=P.length;else{const k=this.verticesCache;for(let B=2,D=0,U=b;Bnew ys);Cp.yDown=!0;const Fc="spineTextureAtlasLoader",rP={extension:He.Asset,resolver:{test:s=>bs(s,".atlas"),parse:s=>{var t,i;const e=s.split(".");return{resolution:parseFloat(((i=(t=We.RETINA_PREFIX)==null?void 0:t.exec(s))==null?void 0:i[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:Fc,extension:{type:He.LoadParser,priority:Is.Normal,name:Fc},test(s){return bs(s,".atlas")},async load(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${Fc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return await e.text()},testParse(s,e){const t=bs(e.src,".atlas"),i=typeof s=="string",n=e.loadParser===Fc;return Promise.resolve((t||n)&&i)},unload(s){s.dispose()},async parse(s,e,t){var h;const i=e.data||{};let n=wi.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new iw(s);if(i.images instanceof yt||typeof i.images=="string"){const l=i.images;i.images={},i.images[r.pages[0].name]=l}const a=[];let o=!0;for(const l of t.parsers)if(l.name=="loadTextures"){o=(h=l.config)==null?void 0:h.preferCreateImageBitmap;break}Fn.setPreferences({preferCreateImageBitmap:!1});for(const l of r.pages){const c=l.name,u=i!=null&&i.images?i.images[c]:void 0;if(u instanceof yt)l.setTexture(La.from(u));else{const d=u??wi.normalize([...n.split(wi.sep),c].join(wi.sep)),f={src:Mh(d,e.src),data:{...i.imageMetadata,alphaMode:l.pma?Ni.PMA:Ni.UNPACK}},p=t.load(f).then(m=>{l.setTexture(La.from(m.baseTexture))});a.push(p)}}return await Promise.all(a),Fn.setPreferences({preferCreateImageBitmap:o}),r}}};tt.add(rP);const Oc="spineSkeletonLoader";function aP(s){return s.hasOwnProperty("bones")}function oP(s){return s instanceof Uint8Array}const lP={extension:He.Asset,loader:{name:Oc,extension:{type:He.LoadParser,priority:Is.Normal,name:Oc},test(s){return bs(s,".skel")},async load(s){const e=await We.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${Oc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(s,e){const t=bs(e.src,".json")&&aP(s),i=bs(e.src,".skel")&&oP(s),n=e.loadParser===Oc;return Promise.resolve(t||i||n)}}};tt.add(lP);class cP extends Nn{constructor(t=!1){super();x(this,"_buffer");x(this,"_indexBuffer");this._buffer=new oi(void 0,t,!1),this._indexBuffer=new oi(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,et.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,et.FLOAT).addAttribute("aColor",this._buffer,4,!0,et.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,et.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,et.FLOAT).addIndex(this._indexBuffer)}}const hP=` precision highp float; attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; @@ -1221,7 +1221,7 @@ void main(void){ vDarkColor = aDarkColor * tint; } -`,dP=` +`,uP=` varying vec2 vTextureCoord; varying vec4 vColor; varying vec4 vDarkColor; @@ -1236,4 +1236,4 @@ void main(void){ gl_FragColor.a = color.a * vColor.a; gl_FragColor.rgb = ((color.a - 1.0) * vDarkColor.a + 1.0 - color.rgb) * vDarkColor.rgb + color.rgb * vColor.rgb; } -`;class gw extends Ir{constructor(e){super(e),this.shaderGenerator=new ob(uP,dP),this.geometryClass=hP,this.vertexSize=7}packInterleavedGeometry(e,t,i,n,r){const{uint32View:a,float32View:o}=t,h=n/this.vertexSize,l=e.uvs,c=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=Wt.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=Wt.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let a=function(l){return Promise.all(l.map(c=>Promise.resolve(c).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),h=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));n=a(t.map(l=>{if(l=vP(l),l in Hv)return;Hv[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":gP,c||(d.as="script"),d.crossOrigin="",d.href=l,h&&d.setAttribute("nonce",h),document.head.appendChild(d),c)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return n.then(a=>{for(const o of a||[])o.status==="rejected"&&r(o.reason);return e().catch(r)})};async function yw(){const[s,e]=await Promise.all([jv(()=>import("./index-B-woOuPC.js"),[]),jv(()=>import("./index-DPMVQNnV.js"),__vite__mapDeps([0,1]))]);return{core:s,pixi:e}}async function yP(s,e,t){const{core:i,pixi:n}=await yw(),r=new i.TextureAtlas(e);return Rp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonJson(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}async function xP(s,e,t){const{core:i,pixi:n}=await yw(),r=new i.TextureAtlas(e);return Rp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonBinary(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}function Dr(s,e,t){const i=Number(s[e]);return Number.isFinite(i)?i:t}function ys(s,e,t,i){s[e]==null&&(s[e]=Dr(s,t,i))}function Pp(s,e,t){if(typeof s.curve!="number")return;const i=Dr(s,"time",0),r=Dr(e,"time",0)-i,a=s.curve,o=Dr(s,"c2",0),h=Dr(s,"c3",1),l=Dr(s,"c4",1);s.curve=t.flatMap(([c,u])=>[i+r*a,c+(u-c)*o,i+r*h,c+(u-c)*l]),delete s.c2,delete s.c3,delete s.c4}function $r(s,e){if(Array.isArray(s))for(let t=0;t[Dr(i,r,a),Dr(n,r,a)]))}}function bP(s){if(Array.isArray(s))for(let e=0;eNumber.parseInt(i.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function Wv(s,e){if(Array.isArray(s))for(let t=0;t[o,a[h]]))}}function wP(s){for(const e of s.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of s.transform||[])ys(e,"mixRotate","rotateMix",1),ys(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),ys(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),ys(e,"mixShearY","shearMix",1);for(const e of s.path||[])ys(e,"mixRotate","rotateMix",1),ys(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function SP(s){for(const e of s.skins||[])for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&i.timelines==null&&i.deform!=null&&(i.timelines=i.deform)}function _P(s){for(const e of Object.values(s.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),Wv(e.rgba,!1),Wv(e.rgba2,!0)}function MP(s){for(const e of Object.values(s.bones||{})){for(const t of e.rotate||[])ys(t,"value","angle",0);$r(e.rotate,[{key:"value",fallback:0}]),$r(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),$r(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),$r(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function TP(s){for(const e of Object.values(s.ik||{}))$r(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function AP(s){for(const e of Object.values(s.transform||{})){for(const t of e)ys(t,"mixRotate","rotateMix",1),ys(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),ys(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),ys(t,"mixShearY","shearMix",1);$r(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function EP(s){for(const e of Object.values(s.path||{})){for(const i of["position","spacing"]){const n=e[i];for(const r of n||[])ys(r,"value",i,0);$r(n,[{key:"value",fallback:0}])}const t=e.mix;for(const i of t||[])ys(i,"mixRotate","rotateMix",1),ys(i,"mixX","translateMix",1),i.mixY==null&&(i.mixY=i.mixX);$r(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function CP(s){if(!s.deform)return;const e=s.attachments||(s.attachments={});for(const[t,i]of Object.entries(s.deform)){const n=e[t]||(e[t]={});for(const[r,a]of Object.entries(i)){const o=n[r]||(n[r]={});for(const[h,l]of Object.entries(a)){const c=o[h]||(o[h]={});c.deform=l,bP(l)}}}delete s.deform}function xw(s){wP(s),SP(s);for(const e of Object.values(s.animations||{}))_P(e),MP(e),TP(e),AP(e),EP(e),CP(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return s}function IP(s){return s.replace(/\\/g,"/").split("/").pop()||s}async function RP(s){const e=await Promise.all(s.map(async t=>{const i=URL.createObjectURL(t);try{return[IP(t.name).toLowerCase(),await pt.fromURL(i)]}finally{URL.revokeObjectURL(i)}}));return new Map(e)}function PP(s){const e=new Map;return s.bones.map(t=>{var r;const i=((r=t.parent)==null?void 0:r.name)||null,n=i?(e.get(i)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:i,depth:n}})}async function bw(s,e,t){var a;if(!/\.(json|skel)$/i.test(s.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const i=await e.text(),n=await RP(t),r=[...n.values()];try{let o,h,l=null,c;if(/\.skel$/i.test(s.name)){const u=await s.arrayBuffer();try{({skeletonData:o,SpineClass:h}=await xP(u,i,n)),c="4.3"}catch(d){try{({skeletonData:o,SpineClass:h}=pP(u,i,n)),c="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}l=Ph(o.version)}else{let u;try{u=JSON.parse(await s.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(l=Ph((a=u==null?void 0:u.skeleton)==null?void 0:a.spine),!l)throw new Error(`Spine JSON 版本不受支持,仅支持 ${Mm()}`);c=WI(l),l==="3.8"&&xw(u);const d=c==="4.3"?await yP(u,i,n):mP(u,i,n);o=d.skeletonData,h=d.SpineClass}if(!l)throw new Error(`Spine 数据版本不受支持,仅支持 ${Mm()}`);return{skeletonData:o,textures:r,runtimeVersion:c,SpineClass:h,dataVersion:l,animations:o.animations.map(u=>({name:u.name,duration:u.duration})),bones:PP(o)}}catch(o){for(const h of r)h.destroy(!0);throw o}}function Jc(s){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(i.error),i.readAsDataURL(s)})}async function kP(s,e,t){return{skeleton:{name:s.name,dataUrl:await Jc(s)},atlas:{name:e.name,dataUrl:await Jc(e)},textures:await Promise.all(t.map(async i=>({name:i.name,dataUrl:await Jc(i)})))}}async function Tf(s){const e=await fetch(s.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${s.name}`);return new File([await e.blob()],s.name)}async function FP(s){return{skeleton:await Tf(s.skeleton),atlas:await Tf(s.atlas),textures:await Promise.all(s.textures.map(Tf))}}const ww="SpineParticle.EditorConfig",Sw=1;function _w(s){return{backgroundX:s.backgroundX,backgroundY:s.backgroundY,backgroundOpacity:s.backgroundOpacity,backgroundImageName:s.backgroundImageName,backgroundImageData:s.backgroundImageData,showGrid:s.showGrid,exportSettings:ci(s.exportSettings)}}function OP(s){return JSON.parse(JSON.stringify(s,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function Mw(s){const e=ci(s);return delete e.tags,delete e.selectedTag,e}function BP(s){const e=_w(s.settings);return OP({format:ww,version:Sw,savedAt:new Date().toISOString(),editor:ci(s.editor),settings:e,timeline:{fps:s.timeline.fps,loop:s.timeline.loop,playbackStart:s.timeline.playbackStart,playbackEnd:s.timeline.playbackEnd,animations:[...s.timeline.animations]},selection:{type:s.activeObjectType,id:s.activeObjectId},scene:{systems:s.systems.map(t=>({...ci(t),frames:void 0})),colliders:s.colliders.map(Mw),paths:ci(s.paths),spines:ci(s.spines)}})}function LP(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function Tw(s){const e=BP(s),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");return n.href=i,n.download=LP(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),0),e}function Aw(s){let e;try{e=JSON.parse(s)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==ww)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==Sw)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function DP(s){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let a=e.get(r);return a||(a=pt.fromURL(r).then(o=>Nr(o)),e.set(r,a)),a},i=await t("/images/star.png");await Promise.all(s.map(async n=>{var a;const r=zr(n.config);r.texture=i,await Promise.all(r.imageResources.map(async o=>{o.texture=await t(o.previewUrl||"/images/star.png"),await Promise.all(o.sequenceFrames.map(async h=>{h.texture=await t(h.previewUrl||o.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async o=>{o.texture=await t(o.previewUrl||"/images/trail.png")})),r.trailTexture=((a=r.trailResources[0])==null?void 0:a.texture)||null,n.frames=[]}))}async function NP(s){const e=new Map;try{for(const t of s){if(!t.sourceBundle)continue;const i=await FP(t.sourceBundle);e.set(t.id,await bw(i.skeleton,i.atlas,i.textures))}return e}catch(t){for(const i of e.values())for(const n of i.textures)n.destroy(!0);throw t}}function UP(s,e){const t=(e==null?void 0:e.type)||"particle",i=Number(e==null?void 0:e.id)||0;(t==="particle"?s.systems.some(r=>r.id===i):t==="collision"?s.colliders.some(r=>r.id===i):t==="path"?s.paths.some(r=>r.id===i):s.spines.some(r=>r.id===i))?s.selectSceneObject(t,i):s.systems[0]?s.selectSceneObject("particle",s.systems[0].id):s.colliders[0]?s.selectSceneObject("collision",s.colliders[0].id):s.paths[0]?s.selectSceneObject("path",s.paths[0].id):s.spines[0]?s.selectSceneObject("spine",s.spines[0].id):(s.activeObjectType="particle",s.activeObjectId=0,s.activeId=0)}async function XP(s,e){var c,u,d,f,p,m,g;const t=Aw(JSON.stringify(e)),i=ci(t.scene.systems),n=t.scene.colliders.map(Mw),r=ci(t.scene.paths),a=ci(t.scene.spines);for(const v of a)v.sourceBundle==null&&(v.sourceBundle=null),v.dataVersion==null&&(v.dataVersion="");await DP(i);const o=await NP(a),h=new Map(s.spines.map(v=>[v.id,v.assetVersion]));for(const v of s.spines)ql(v.id);s.systems=i,s.colliders=n,s.paths=r,s.spines=a,Object.assign(s.editor,ci(t.editor||{}));const l=t.settings;if(l)for(const v of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(l,v)&&(s.settings[v]=l[v]);s.settings.exportSettings=p1((c=t.settings)==null?void 0:c.exportSettings),s.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(s.settings.undoLimit)||20))),s.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),s.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,s.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(v=>typeof v=="string"&&v.trim()).map(v=>v.trim()))]:["animation"];for(const v of s.spines){const b=o.get(v.id);if(v.assetVersion=Math.max(Number(v.assetVersion)||0,h.get(v.id)||0)+1,!b){v.status="empty",v.error=v.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",v.animations=[],v.bones=[],v.selectedAnimation="";continue}Eu(v.id,b),v.dataVersion=b.dataVersion,v.animations=b.animations,v.bones=b.bones,b.animations.some(y=>y.name===v.selectedAnimation)||(v.selectedAnimation=((p=b.animations[0])==null?void 0:p.name)||""),v.status="ready",v.error=""}s.syncSceneSequences(),UP(s,t.selection),s.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),s.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),s.timeline.frame=0,s.timeline.recorded=!1,s.timeline.playing=!0;for(const v of s.systems)s.timeline.animations.includes(v.animation)||(v.animation=s.timeline.animations[0]);return s.recalcTotalFrames(),s.timeline.frame=s.timeline.playbackStart,t}async function Ew(s,e){return XP(s,Aw(e))}async function VP(s,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return Ew(s,await e.text())}const Ru=Ba({undoCount:0});let Uh=null,sr=null,Gr=[],Jo=null,nr=null,Xh=!1;function kp(s){return{systems:s.systems.map(t=>{const i=ci(t);return i.frames=void 0,i}),colliders:ci(s.colliders),paths:ci(s.paths),spines:ci(s.spines),animations:[...s.timeline.animations],settings:_w(s.settings)}}function Fp(s){return JSON.stringify(s,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function Cw(s,e=kp(s),t=Fp(e)){const i=new Map;for(const n of e.spines){const r=HI(n.id);r&&i.set(n.id,r)}return{data:e,signature:t,spineAssets:i}}function Vh(s){if(s){for(const e of s.spineAssets.values())$I(e);s.spineAssets.clear()}}function Iw(s){for(;Gr.length>s;)Vh(Gr.shift()||null);Ru.undoCount=Gr.length}function Rw(){const s=Uh;if(!s||!sr||Xh)return;const e=kp(s),t=Fp(e);t!==sr.signature&&(Gr.push(sr),sr=Cw(s,e,t),Iw(s.settings.undoLimit))}function YP(){Xh||(nr&&clearTimeout(nr),nr=setTimeout(()=>{nr=null,Rw()},250))}function $P(s){const e=s.activeObjectId;return s.activeObjectType==="particle"?s.systems.some(t=>t.id===e):s.activeObjectType==="collision"?s.colliders.some(t=>t.id===e):s.activeObjectType==="path"?s.paths.some(t=>t.id===e):s.spines.some(t=>t.id===e)}function GP(s){var t,i;if(!$P(s)){const n=s.systems[0],r=s.colliders[0],a=s.paths[0],o=s.spines[0];n?(s.activeObjectType="particle",s.activeObjectId=n.id):r?(s.activeObjectType="collision",s.activeObjectId=r.id):a?(s.activeObjectType="path",s.activeObjectId=a.id):(s.activeObjectType="spine",s.activeObjectId=(o==null?void 0:o.id)||0)}const e=s.activeObjectType==="particle"?s.systems.find(n=>n.id===s.activeObjectId):s.systems.find(n=>n.id===s.activeId);s.activeId=(e==null?void 0:e.id)||((t=s.systems[0])==null?void 0:t.id)||0,s.timeline.animation=(e==null?void 0:e.animation)||((i=s.systems[0])==null?void 0:i.animation)||s.timeline.animations[0]||"animation"}function HP(s,e){const t=sr;Xh=!0;try{for(const i of s.spines)ql(i.id);s.systems=ci(e.data.systems),s.colliders=ci(e.data.colliders),s.paths=ci(e.data.paths),s.spines=ci(e.data.spines),s.timeline.animations=[...e.data.animations],Object.assign(s.settings,ci(e.data.settings));for(const[i,n]of e.spineAssets)Eu(i,n);for(const i of s.systems)i.frames=[];s.timeline.recorded=!1,s.timeline.playing=!1,GP(s),s.recalcTotalFrames(),sr=e}finally{Xh=!1,Vh(t)}}function jP(s){if(!(Uh===s&&Jo)){Jo==null||Jo(),nr&&clearTimeout(nr),Vh(sr);for(const e of Gr)Vh(e);Gr=[],Uh=s,sr=Cw(s),Ru.undoCount=0,Jo=ds(()=>Fp(kp(s)),YP,{flush:"post"})}}function WP(s,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));s.settings.undoLimit=t,Iw(t)}function Af(){const s=Uh;if(!s||!sr)return!1;nr&&(clearTimeout(nr),nr=null),Rw();const e=Gr.pop();return e?(HP(s,e),Ru.undoCount=Gr.length,!0):!1}function zP(s){const e=s instanceof HTMLElement?s:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function qP(s){function e(i){var r;const n=i.target instanceof Node?i.target:null;s.canvasFocused.value=!!n&&!!((r=s.canvasElement.value)!=null&&r.contains(n))}function t(i){const n=i.key.toLowerCase();if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="s"){i.preventDefault(),i.stopPropagation(),s.save();return}if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="z"){i.preventDefault(),i.stopPropagation(),s.undo();return}if(i.ctrlKey||i.metaKey||i.altKey||zP(i.target))return;if(n==="d"){i.preventDefault(),s.togglePlay();return}if(n==="s"){i.preventDefault(),s.toStart();return}if(!s.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(i.preventDefault(),s.setTool(r[n]))}La(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),Gl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const KP={class:"stage-wrap"},ZP={class:"topbar"},JP=["disabled"],QP={class:"tool-group"},ek={class:"tool-group"},tk={key:0,class:"background-panel"},ik=["disabled"],sk=["title"],nk={class:"background-position-row"},rk={class:"background-opacity-row"},ak={class:"zoom-pct"},ok={key:0,class:"settings-panel"},lk={class:"sp-head"},ck={class:"sp-switch-row"},hk={class:"sp-switch-control"},uk={class:"sp-row"},dk={class:"sp-chk"},fk={class:"sp-chk"},mk={class:"sp-row"},pk={class:"sp-row"},gk={class:"sp-chk"},vk={class:"sp-chk"},yk={class:"sp-row"},xk={class:"sp-row"},bk={class:"sp-row"},wk={class:"sp-hex"},Sk={class:"sp-chk"},_k={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},Mk={class:"help-head"},Tk={key:2,class:"hud"},Ak={class:"hud-number hud-system-count"},Ek={class:"hud-number hud-particle-count"},Ck=nn({__name:"Stage",setup(s){const e=Kl(),t=ht(null),i=ht(null),n=ht(!1),r=ht(!1),a=ht(!1),o=ht(null),h=gt(()=>e.settings.backgroundImageName),l=ht(""),c=ht(!1);function u(H){l.value=l.value===H?"":H}e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);function d(){e.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),e.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2))}qP({canvasElement:t,canvasFocused:c,undo:Af,save:()=>Tw(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:H=>{l.value=H}});let f=null,p=null,m=null,g=null,v=0,b=null,y=null,w=null,A=null,M=null,_=null,R=null,P=null,F=null,I=null,k=null,B=null,D=[],U=0,L=0,N=0,O=0,X=null,E=null;const V=new Map,q=new Map;let W=[];const J=new Map,K=new Set;let fe=!1;ds(()=>[e.activeObjectType,e.activeObjectId],()=>K.clear());async function me(){if(X&&E)return X;const[H,Y]=await Promise.all([pt.fromURL("/images/star.png"),pt.fromURL("/images/trail.png")]);return X=H,E=Y,X}function we(){p=new ji,f.stage.addChild(p),k=new ji,f.stage.addChild(k),m=new Zr(pt.EMPTY),m.anchor.set(.5),m.visible=!1,p.addChild(m),I=new vs,p.addChild(I),B=new rR,p.addChild(B.container),y=new vs,p.addChild(y),b=new vs,p.addChild(b),A=new vs,p.addChild(A),M=new vs,p.addChild(M),_=new vs,p.addChild(_),R=new vs,p.addChild(R),P=new vs,p.addChild(P),F=new vs,p.addChild(F),w=new vs,p.addChild(w)}function Ee(){r.value=!r.value,r.value&&(n.value=!1)}function ge(){a.value=!0,n.value=!1,r.value=!1}function Te(H){H.key==="Escape"&&a.value&&(a.value=!1)}function G(){n.value=!n.value,n.value&&(r.value=!1)}function Z(H){WP(e,Number(H.target.value))}async function z(H){var ne;const Y=H.target,ee=(ne=Y.files)==null?void 0:ne[0];if(ee)try{e.settings.backgroundImageData=await Jc(ee),e.settings.backgroundImageName=ee.name}catch(ue){console.error("背景图加载失败",ue)}finally{Y.value=""}}async function j(H){const Y=++v;if(!H){m&&(m.texture=pt.EMPTY,m.visible=!1),g&&g.destroy(!0),g=null;return}try{const ee=await pt.fromURL(H);if(Y!==v||!m){ee.destroy(!0);return}const ne=g;g=ee,m.texture=ee,m.visible=!0,ne&&ne.destroy(!0)}catch(ee){console.error("背景图恢复失败",ee)}}function te(H=!0){e.settings.backgroundImageData="",e.settings.backgroundImageName="",o.value&&(o.value.value=""),H&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}function he(H,Y=0){if(H<=0)return 1;const ee=Math.pow(10,Math.floor(Math.log10(H))),ne=[1,2,5,10,20,50,100];let ue=1;for(const pe of ne)if(pe*ee>=H){ue=pe*ee;break}return Math.max(ue,Y)}function ve(){if(!I)return;const H=I;H.clear();const Y=e.settings;if(!Y.tickEnabled){for(const Se of D)Se.visible=!1;return}const ee=0,ne=0,ue=f.screen.width/e.editor.viewScale,pe=f.screen.height/e.editor.viewScale,_e=+("0x"+Y.axisColor.replace("#",""));H.lineStyle(1.5,_e,.35),H.moveTo(-ue,ne),H.lineTo(ue,ne),H.moveTo(ee,-pe),H.lineTo(ee,pe);const Me=e.editor.viewScale,xe=he(50/Me),De=ue,Ie=pe,Be=Math.max(1,Y.tickWidth);if(Y.tickEnabled){for(let Se=0;Se<=ue;Se+=xe){const rt=Math.round(Se/xe)*xe;rt!==0&&(H.lineStyle(Be,_e,.25),H.moveTo(rt,ne-4),H.lineTo(rt,ne+4),H.moveTo(-rt,ne-4),H.lineTo(-rt,ne+4))}for(let Se=0;Se<=pe;Se+=xe)Math.round(Se/xe)*xe!==0&&(H.lineStyle(Be,_e,.25),H.moveTo(ee-4,Se),H.lineTo(ee+4,Se),H.moveTo(ee-4,-Se),H.lineTo(ee+4,-Se))}const Ae=f.screen.width/2+e.editor.viewX,He=f.screen.height*.5+e.editor.viewY,st=Y.axisFontSize,Ze=+("0x"+Y.axisColor.replace("#",""));for(;D.length<64;){const Se=new Mp("",{fontFamily:"monospace",fontSize:st,fill:Ze});Se.anchor.set(.5,.5),k.addChild(Se),D.push(Se)}let nt=0;const Je=Y.showAxisLabels&&Y.tickEnabled;for(let Se=0;Se<=ue;Se+=xe){const rt=Math.round(Se/xe)*xe;if(rt===0||!Je||rt>De)continue;const Pe=D[nt++];if(!Pe)break;Pe.style.fontSize=st,Pe.text=String(rt),Pe.position.set(Ae+rt*Me,He+9),Pe.visible=!0;const Et=D[nt++];if(!Et)break;Et.style.fontSize=st,Et.text=String(-rt),Et.position.set(Ae-rt*Me,He+9),Et.visible=!0}for(let Se=0;Se<=pe;Se+=xe){const rt=Math.round(Se/xe)*xe;if(rt===0||!Je||rt>Ie)continue;const Pe=D[nt++];if(!Pe)break;Pe.style.fontSize=st,Pe.text=String(rt),Pe.position.set(Ae+8,He-Se*Me),Pe.visible=!0;const Et=D[nt++];if(!Et)break;Et.style.fontSize=st,Et.text=String(-rt),Et.position.set(Ae+8,He+Se*Me),Et.visible=!0}for(;nt{e.editor.viewX=ne+(Me.clientX-Y),e.editor.viewY=ue+(Me.clientY-ee)},_e=()=>{window.removeEventListener("pointermove",pe),window.removeEventListener("pointerup",_e),window.removeEventListener("pointercancel",_e)};window.addEventListener("pointermove",pe),window.addEventListener("pointerup",_e),window.addEventListener("pointercancel",_e)}function ae(H,Y){const ee=t.value.getBoundingClientRect(),ne=Math.max(1e-4,e.editor.viewScale),ue=H-ee.left,pe=Y-ee.top;return{x:(ue-f.screen.width/2-e.editor.viewX)/ne,y:-(pe-f.screen.height*.5-e.editor.viewY)/ne}}function Le(H,Y,ee){const ne=H.rotation*Math.PI/180,ue=Math.cos(ne),pe=Math.sin(ne),_e=Math.max(1e-4,Math.abs(H.scaleX??1)),Me=Math.max(1e-4,Math.abs(H.scaleY??1));return{x:H.x+ue*Y*_e-pe*ee*Me,y:H.y+pe*Y*_e+ue*ee*Me}}function Re(H,Y,ee){const ne=H.rotation*Math.PI/180,ue=Math.cos(ne),pe=Math.sin(ne),_e=Math.max(1e-4,Math.abs(H.scaleX??1)),Me=Math.max(1e-4,Math.abs(H.scaleY??1)),xe=Y-H.x,De=ee-H.y;return{x:(ue*xe+pe*De)/_e,y:(-pe*xe+ue*De)/Me}}function Oe(){if(e.activeObjectType!=="path")return null;const H=e.paths.find(Y=>Y.id===e.activeObjectId)||null;return(H==null?void 0:H.visible)===!1?null:H}function tt(H,Y,ee){if(H.points.length<2)return H.points.length;const ne=H.closed?H.points.length:H.points.length-1;let ue=H.points.length,pe=1/0;for(let _e=0;_eMath.hypot(Me.x-ne.x,Me.y-ne.y)<=ue);if(pe>=0){Y.points.splice(pe,1),K.clear();return}const _e=tt(Y,ne.x,ne.y);Y.points.splice(_e,0,{x:ne.x,y:ne.y,inX:0,inY:0,outX:0,outY:0}),K.clear(),K.add(_e)}function Pt(H){const Y=Oe();if(!Y||!Y.enabled)return!1;const ee=ae(H.clientX,H.clientY),ne=Re(Y,ee.x,ee.y),ue=9/Math.max(.01,e.editor.viewScale);if(H.detail>=2){if(Y.points.findIndex(Ie=>Math.hypot(Ie.x-ne.x,Ie.y-ne.y)<=ue)>=0)return!0;const xe={x:ne.x,y:ne.y,inX:0,inY:0,outX:0,outY:0},De=tt(Y,ne.x,ne.y);return Y.points.splice(De,0,xe),K.clear(),K.add(De),fe=!0,wt(Ie=>{const Be=ae(Ie.clientX,Ie.clientY),Ae=Re(Y,Be.x,Be.y);xe.outX=Ae.x-xe.x,xe.outY=Ae.y-xe.y,xe.inX=-xe.outX,xe.inY=-xe.outY}),!0}let pe=null;for(const Me of K){const xe=Y.points[Me];xe&&(Math.hypot(xe.x+xe.inX-ne.x,xe.y+xe.inY-ne.y)<=ue&&(pe={index:Me,side:"in"}),Math.hypot(xe.x+xe.outX-ne.x,xe.y+xe.outY-ne.y)<=ue&&(pe={index:Me,side:"out"}))}if(pe){const Me=Y.points[pe.index],xe=pe.side==="in"?Math.hypot(Me.outX,Me.outY):Math.hypot(Me.inX,Me.inY);return wt(Ie=>{const Be=ae(Ie.clientX,Ie.clientY),Ae=Re(Y,Be.x,Be.y),He=Ae.x-Me.x,st=Ae.y-Me.y;if(pe.side==="in"?(Me.inX=He,Me.inY=st):(Me.outX=He,Me.outY=st),!Ie.altKey){const Ze=Math.max(1e-4,Math.hypot(He,st)),nt=Ie.shiftKey?Ze:xe;pe.side==="in"?(Me.outX=-He/Ze*nt,Me.outY=-st/Ze*nt):(Me.inX=-He/Ze*nt,Me.inY=-st/Ze*nt)}}),!0}const _e=Y.points.findIndex(Me=>Math.hypot(Me.x-ne.x,Me.y-ne.y)<=ue);if(_e>=0){if(H.altKey)return K.delete(_e),!0;H.ctrlKey||H.metaKey?K.add(_e):K.has(_e)||(K.clear(),K.add(_e));const Me=ne,xe=[...K].map(Ie=>({index:Ie,x:Y.points[Ie].x,y:Y.points[Ie].y}));return wt(Ie=>{const Be=ae(Ie.clientX,Ie.clientY),Ae=Re(Y,Be.x,Be.y);for(const He of xe)Y.points[He.index].x=He.x+Ae.x-Me.x,Y.points[He.index].y=He.y+Ae.y-Me.y}),!0}if(H.altKey&&!H.ctrlKey&&!H.metaKey)return K.clear(),!0;if(H.ctrlKey||H.metaKey||H.altKey){const Me=ne,xe=H.altKey,De=Ie=>{const Be=ae(Ie.clientX,Ie.clientY),Ae=Re(Y,Be.x,Be.y),He=Math.min(Me.x,Ae.x),st=Math.max(Me.x,Ae.x),Ze=Math.min(Me.y,Ae.y),nt=Math.max(Me.y,Ae.y);Y.points.forEach((Je,Se)=>{Je.x>=He&&Je.x<=st&&Je.y>=Ze&&Je.y<=nt&&(xe?K.delete(Se):K.add(Se))}),window.removeEventListener("pointerup",De),window.removeEventListener("pointercancel",De)};return window.addEventListener("pointerup",De),window.addEventListener("pointercancel",De),!0}return!1}function wt(H){const Y=()=>{window.removeEventListener("pointermove",H),window.removeEventListener("pointerup",Y),window.removeEventListener("pointercancel",Y)};window.addEventListener("pointermove",H),window.addEventListener("pointerup",Y),window.addEventListener("pointercancel",Y)}function Rt(H){if(e.activeObjectType!=="collision")return!1;const Y=e.colliders.find(nt=>nt.id===e.activeObjectId);if(!(Y!=null&&Y.enabled)||Y.visible===!1)return!1;const ee=ae(H.clientX,H.clientY),ne=Y.rotation*Math.PI/180,ue=Math.cos(ne),pe=Math.sin(ne),_e=Math.max(1e-4,Math.abs(Y.scaleX??1)),Me=Math.max(1e-4,Math.abs(Y.scaleY??1)),xe=ee.x-Y.x,De=ee.y-Y.y,Ie=(ue*xe+pe*De)/_e,Be=(-pe*xe+ue*De)/Me;if(!(Y.shape==="circle"?Math.hypot(Ie,Be)<=Y.radius:Y.shape==="ellipse"?Math.hypot(Ie/Math.max(1,Y.radiusX),Be/Math.max(1,Y.radiusY))<=1:Math.abs(Ie)<=Y.width*.5&&Math.abs(Be)<=Y.height*.5))return!1;const He=Y.x,st=Y.y,Ze=ee;return wt(nt=>{const Je=ae(nt.clientX,nt.clientY);Y.x=He+Je.x-Ze.x,Y.y=st+Je.y-Ze.y}),!0}function Zt(H){const Y=e.systems.find(De=>De.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return!1;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.forceField)||ee.forceRadius<=0)return!1;const ne=ae(H.clientX,H.clientY);if(Math.hypot(ne.x-ee.forceCenterX,ne.y-ee.forceCenterY)>ee.forceRadius)return!1;const pe=ee.forceCenterX,_e=ee.forceCenterY;t.value&&(t.value.style.cursor="grabbing");const Me=De=>{const Ie=ae(De.clientX,De.clientY);ee.forceCenterX=pe+Ie.x-ne.x,ee.forceCenterY=_e+Ie.y-ne.y},xe=()=>{t.value&&(t.value.style.cursor=""),window.removeEventListener("pointermove",Me),window.removeEventListener("pointerup",xe),window.removeEventListener("pointercancel",xe)};return window.addEventListener("pointermove",Me),window.addEventListener("pointerup",xe),window.addEventListener("pointercancel",xe),H.preventDefault(),!0}function Fi(H){const Y=e.systems.find(Ie=>Ie.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return!1;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.attraction))return!1;const ne=ae(H.clientX,H.clientY),ue=Math.max(ee.attractionRadius,12/Math.max(1e-4,e.editor.viewScale));if(Math.hypot(ne.x-ee.attractionCenterX,ne.y-ee.attractionCenterY)>ue)return!1;const _e=ee.attractionCenterX,Me=ee.attractionCenterY;t.value&&(t.value.style.cursor="grabbing");const xe=Ie=>{const Be=ae(Ie.clientX,Ie.clientY);ee.attractionCenterX=_e+Be.x-ne.x,ee.attractionCenterY=Me+Be.y-ne.y},De=()=>{t.value&&(t.value.style.cursor=""),window.removeEventListener("pointermove",xe),window.removeEventListener("pointerup",De),window.removeEventListener("pointercancel",De)};return window.addEventListener("pointermove",xe),window.addEventListener("pointerup",De),window.addEventListener("pointercancel",De),H.preventDefault(),!0}function Oi(){const H=e.activeObjectId;if(e.activeObjectType==="particle"){const ne=e.systems.find(pe=>pe.id===H);if(!ne||ne.visible===!1)return null;const ue=ne.config;return{x:ue.centerX,y:ue.centerY,rotation:ue.rootRotation,scaleX:ue.rootScaleX??1,scaleY:ue.rootScaleY??1,setPosition:(pe,_e)=>{ue.centerX=pe,ue.centerY=_e},setRotation:pe=>{ue.rootRotation=pe},setScale:(pe,_e)=>{ue.rootScaleX=pe,ue.rootScaleY=_e}}}const ee=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(ne=>ne.id===H);return!ee||ee.visible===!1?null:{x:Number(ee.x)||0,y:Number(ee.y)||0,rotation:Number(ee.rotation)||0,scaleX:Math.max(.05,Number(ee.scaleX)||1),scaleY:Math.max(.05,Number(ee.scaleY)||1),setPosition:(ne,ue)=>{ee.x=ne,ee.y=ue},setRotation:ne=>{ee.rotation=ne},setScale:(ne,ue)=>{ee.scaleX=ne,ee.scaleY=ue}}}function Wi(H){const Y=Oi();if(!Y)return;const ee=e.editor.viewScale,ne=t.value.getBoundingClientRect(),ue=ne.left+f.screen.width/2+e.editor.viewX+Y.x*ee,pe=ne.top+f.screen.height*.5+e.editor.viewY+-Y.y*ee,_e=H.clientX,Me=H.clientY,xe=l.value,De=Y.x,Ie=Y.y,Be=Y.rotation,Ae=Y.scaleX,He=Y.scaleY,st=Math.hypot(_e-ue,Me-pe)||1,Ze=Math.atan2(Me-pe,_e-ue),nt=Se=>{const rt=(Se.clientX-_e)/ee,Pe=(Se.clientY-Me)/ee;if(xe==="translate")Y.setPosition(De+rt,Ie-Pe);else if(xe==="rotate"){const Et=Math.atan2(Se.clientY-pe,Se.clientX-ue);Y.setRotation(Be-(Et-Ze)*180/Math.PI)}else if(xe==="scale"){const Vt=Math.hypot(Se.clientX-ue,Se.clientY-pe)/st;Y.setScale(Math.max(.05,Ae*Vt),Math.max(.05,He*Vt))}},Je=()=>{window.removeEventListener("pointermove",nt),window.removeEventListener("pointerup",Je),window.removeEventListener("pointercancel",Je)};window.addEventListener("pointermove",nt),window.addEventListener("pointerup",Je),window.addEventListener("pointercancel",Je)}function on(){ce(1.2)}function yi(){ce(1/1.2)}function ce(H){const Y=Math.max(.01,e.editor.viewScale*H);e.editor.viewScale=Y}function de(){e.editor.viewScale=1,e.editor.viewX=0,e.editor.viewY=0}function kt(){e.editor.viewScale=1,e.editor.viewX=0,e.editor.viewY=0}function zt(){e.settings.showGrid=!e.settings.showGrid}function Jt(){if(p){for(const[H,Y]of V){const ee=e.systems.find(ne=>ne.id===H);(!ee||q.get(H)!==ee.config)&&(p.removeChild(Y),Y.destroy({children:!0}),V.delete(H),q.delete(H))}for(const H of e.systems){X&&!H.config.texture&&(H.config.texture=X);const Y=zr(H.config);if(E)for(const ne of Y.trailResources)!ne.texture&&(ne.previewUrl==="/images/trail.png"||ne.previewUrl==="/trails/trail.png")&&(ne.texture=E);if(X)for(const ne of Y.imageResources)!ne.texture&&ne.textureName==="star"&&(ne.texture=X);if(V.has(H.id))continue;const ee=new LI(H.config);ee.setEmitterPos(()=>({x:H.config.centerX,y:H.config.centerY})),p.addChild(ee),V.set(H.id,ee),q.set(H.id,H.config)}}}function mt(){if(!b)return;const H=b;if(H.clear(),!!e.settings.showEmitter&&e.systems.length)for(const Y of e.systems){if(Y.visible===!1)continue;const ee=J.get(Y.id),ne=(ee==null?void 0:ee.x)??Y.config.centerX??0,ue=-((ee==null?void 0:ee.y)??Y.config.centerY??0),pe=e.activeObjectType==="particle"&&Y.id===e.activeId,_e=pe?16763955:9082040,Me=pe?.4:.2;H.lineStyle(1,_e,Me),H.drawCircle(ne,ue,10),H.beginFill(_e,pe?.8:.4),H.drawCircle(ne,ue,3),H.endFill(),H.lineStyle(1,_e,pe?.3:.15),H.moveTo(ne-16,ue),H.lineTo(ne+16,ue),H.moveTo(ne,ue-16),H.lineTo(ne,ue+16)}}function Cs(){var ee;if(!y)return;const H=y;(ee=H.parent)==null||ee.addChild(H),H.clear();const Y=new Map;for(const ne of e.spines)ne.visible===!1||!ne.selectedBone||ne.status!=="ready"||Y.set(`${ne.id}:${ne.selectedBone}`,{spineId:ne.id,boneName:ne.selectedBone});for(const ne of e.systems){if(ne.visible===!1)continue;const ue=ne.config;if(!ue.emitterFollow||ue.emitterFollowMode!=="bone"||!ue.emitterFollowSpineId||!ue.emitterFollowBoneName)continue;const pe=e.spines.find(_e=>_e.id===ue.emitterFollowSpineId);!pe||pe.visible===!1||Y.set(`${ue.emitterFollowSpineId}:${ue.emitterFollowBoneName}`,{spineId:ue.emitterFollowSpineId,boneName:ue.emitterFollowBoneName})}for(const ne of Y.values()){const ue=B==null?void 0:B.getBoneWorldTransform(ne.spineId,ne.boneName);if(!ue)continue;const pe=ue.x,_e=-ue.y;H.lineStyle(2,12881151,.95),H.beginFill(12881151,.2),H.drawCircle(pe,_e,8),H.endFill(),H.beginFill(15919103,1),H.drawCircle(pe,_e,3.5),H.endFill()}}function Xs(){if(!A)return;const H=A;if(H.clear(),!e.settings.showEmitter)return;const Y=e.systems.find(Ze=>Ze.id===e.activeId);if(!Y||Y.visible===!1)return;const ee=Y.config,ne=J.get(Y.id),ue=(ne==null?void 0:ne.x)??ee.centerX??0,pe=-((ne==null?void 0:ne.y)??ee.centerY??0),_e=ee.shape;if(_e==="point"||_e==="path")return;const Me=ee.rootScaleX??1,xe=ee.rootScaleY??1,De=-((ne==null?void 0:ne.rotation)??ee.rootRotation??0)*Math.PI/180,Ie=Math.cos(De),Be=Math.sin(De),Ae=ee.offsetX??0,He=ee.offsetY??0,st=(Ze,nt)=>{const Je=Ze+Ae,Se=-nt-He,rt=Je*Me,Pe=Se*xe;return[ue+rt*Ie-Pe*Be,pe+(rt*Be+Pe*Ie)]};if(_e==="circle"){const Ze=Rh(ee.innerRadius,ee.outerRadius);H.lineStyle(2,3991658,.7);const nt=48;for(const Je of[Ze.outer,Ze.inner])if(!(Je<=0))for(let Se=0;Se<=nt;Se++){const rt=Se/nt*Math.PI*2,[Pe,Et]=st(Math.cos(rt)*Je,Math.sin(rt)*Je);Se===0?H.moveTo(Pe,Et):H.lineTo(Pe,Et)}}else if(_e==="rect"){const Ze=d1(ee);H.lineStyle(2,4885759,.7);for(const[nt,Je]of[[Ze.outerW,Ze.outerH],[Ze.innerW,Ze.innerH]]){if(nt<=0||Je<=0)continue;const Se=nt/2,rt=Je/2,Pe=st(-Se,-rt),Et=st(Se,-rt),Vt=st(Se,rt),ui=st(-Se,rt);H.moveTo(Pe[0],Pe[1]),H.lineTo(Et[0],Et[1]),H.lineTo(Vt[0],Vt[1]),H.lineTo(ui[0],ui[1]),H.lineTo(Pe[0],Pe[1])}}else if(_e==="cone"){const Ze=Rh(ee.innerRadius,ee.outerRadius),nt=ee.coneAngle/2*Math.PI/180,Je=ee.coneDirection*Math.PI/180,Se=st(Math.cos(Je-nt)*Ze.inner,Math.sin(Je-nt)*Ze.inner),rt=st(Math.cos(Je+nt)*Ze.inner,Math.sin(Je+nt)*Ze.inner),Pe=st(Math.cos(Je-nt)*Ze.outer,Math.sin(Je-nt)*Ze.outer),Et=st(Math.cos(Je+nt)*Ze.outer,Math.sin(Je+nt)*Ze.outer);H.lineStyle(2,3991658,.7),H.moveTo(Se[0],Se[1]),H.lineTo(Pe[0],Pe[1]),H.moveTo(rt[0],rt[1]),H.lineTo(Et[0],Et[1]),H.lineStyle(1,3991658,.5);const Vt=24;for(const ui of[Ze.outer,Ze.inner])if(!(ui<=0))for(let Xi=0;Xi<=Vt;Xi++){const ns=Je-nt+2*nt*Xi/Vt,[$,S]=st(Math.cos(ns)*ui,Math.sin(ns)*ui);Xi===0?H.moveTo($,S):H.lineTo($,S)}}}function Ui(){if(!M)return;const H=M;H.clear();const Y=e.systems.find(_e=>_e.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.forceField)||ee.forceRadius<=0)return;const ne=ee.forceCenterX,ue=-ee.forceCenterY,pe=ee.forceStrength>=0?5818367:16739194;H.lineStyle(2,pe,.85),H.beginFill(pe,.08),H.drawCircle(ne,ue,ee.forceRadius),H.endFill(),H.lineStyle(1,pe,.7),H.moveTo(ne-9,ue),H.lineTo(ne+9,ue),H.moveTo(ne,ue-9),H.lineTo(ne,ue+9),H.beginFill(pe,.95),H.drawCircle(ne,ue,4),H.endFill()}function Is(){if(!_)return;const H=_;H.clear();const Y=e.systems.find(Me=>Me.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.attraction))return;const ne=ee.attractionCenterX,ue=-ee.attractionCenterY,pe=Math.max(0,ee.attractionRadius),_e=16731487;pe>0&&(H.lineStyle(2,_e,.95),H.beginFill(_e,.09),H.drawCircle(ne,ue,pe),H.endFill()),H.lineStyle(1,_e,.85),H.moveTo(ne-10,ue),H.lineTo(ne+10,ue),H.moveTo(ne,ue-10),H.lineTo(ne,ue+10),H.beginFill(_e,1),H.drawCircle(ne,ue,pe>0?4:6),H.endFill()}function xr(){if(!F)return;const H=F;if(H.clear(),!l.value)return;const Y=Oi();if(!Y)return;const ee=Y.x,ne=-Y.y,ue=Y.scaleX,pe=Y.scaleY,_e=-Y.rotation*Math.PI/180,Me=Math.cos(_e),xe=Math.sin(_e),De=(Ae,He)=>{const st=Ae*ue,Ze=-He*pe;return[ee+st*Me-Ze*xe,ne+(st*xe+Ze*Me)]},Ie=(Ae,He,st,Ze)=>{const nt=De(Ae,He),Je=De(st,Ze);H.moveTo(nt[0],nt[1]),H.lineTo(Je[0],Je[1])},Be=26;if(H.lineStyle(2,3526911,.9),H.beginFill(3526911,.25),H.drawCircle(ee,ne,6),H.endFill(),l.value==="translate")H.lineStyle(2,3526911,.9),Ie(-Be,0,Be,0),Ie(0,-Be,0,Be),Ie(Be-6,-4,Be,0),Ie(Be,0,Be-6,4),Ie(-20,-4,-Be,0),Ie(-Be,0,-20,4),Ie(-4,Be-6,0,Be),Ie(0,Be,4,Be-6),Ie(-4,-20,0,-Be),Ie(0,-Be,4,-20);else if(l.value==="rotate"){H.lineStyle(2,3526911,.8);const Ae=48;for(let Ze=0;Ze<=Ae;Ze++){const nt=Ze/Ae*Math.PI*2,[Je,Se]=De(Math.cos(nt)*Be,Math.sin(nt)*Be);Ze===0?H.moveTo(Je,Se):H.lineTo(Je,Se)}const[He,st]=De(0,Be);H.beginFill(3526911,.95),H.drawCircle(He,st,4),H.endFill()}else if(l.value==="scale"){H.lineStyle(2,3526911,.9);const He=[[-Be,-Be],[Be,-Be],[Be,Be],[-Be,Be]].map(([st,Ze])=>De(st,Ze));H.moveTo(He[0][0],He[0][1]),H.lineTo(He[1][0],He[1][1]),H.lineTo(He[2][0],He[2][1]),H.lineTo(He[3][0],He[3][1]),H.lineTo(He[0][0],He[0][1]),H.beginFill(3526911,.9);for(const st of He)H.drawRect(st[0]-3,st[1]-3,6,6);H.endFill()}}function ln(H,Y,ee,ne){var _e;const ue=Number.isFinite(Y.worldX)&&Number.isFinite(Y.worldY),pe=Number.isFinite(Y.worldRotation);H.push({boneName:Y.boneName,x:ue?Y.worldX:Y.x,y:ue?-Y.worldY:Y.y,rotation:pe?-Y.worldRotation:-Y.rotation,parentX:ee,parentY:ne}),(_e=Y.trailState)!=null&&_e.bones.length&&Y.trailState.bones.forEach(Me=>{const xe=Number.isFinite(Me.worldX)&&Number.isFinite(Me.worldY),De=Number.isFinite(Me.worldRotation);H.push({boneName:Me.boneName,x:xe?Me.worldX:Me.x,y:xe?-Me.worldY:Me.y,rotation:De?-Me.worldRotation:Me.rotation,parentX:ee,parentY:ne,trail:!0})})}function zi(H,Y,ee,ne,ue,pe,_e,Me){const xe=pe*.62,De=Y+ne*pe,Ie=ee+ue*pe,Be=Math.max(2.5,pe*.32),Ae=Math.max(1.7,pe*.22),He=De-ne*Be,st=Ie-ue*Be,Ze=-ue,nt=ne;H.lineStyle(_e,Me,.95),H.moveTo(Y-ne*xe,ee-ue*xe),H.lineTo(He,st),H.lineStyle(0),H.beginFill(Me,.95),H.drawPolygon([De,Ie,He+Ze*Ae,st+nt*Ae,He-Ze*Ae,st-nt*Ae]),H.endFill()}function Ya(H){if(!w)return;const Y=w;if(Y.clear(),!e.settings.showBones)return;const ee=0,ne=0,ue=Math.max(.25,Math.abs(e.editor.viewScale)||1),pe=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),_e=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),Me=2.5*pe/ue,xe=4.5*_e/ue,De=Math.max(.65,_e*.625)/ue;for(const Ie of H){const Be=Ie.trail?16731533:16747610;Y.lineStyle(1,Be,Ie.trail?.65:.35),Y.moveTo(Ie.parentX??ee,Ie.parentY??ne),Y.lineTo(Ie.x,Ie.y);const Ae=Ie.rotation*Math.PI/180,He=Math.cos(Ae),st=Math.sin(Ae);zi(Y,Ie.x,Ie.y,He,st,xe,De,15684432),zi(Y,Ie.x,Ie.y,st,-He,xe,De,5622123),Y.beginFill(Be,.9),Y.drawCircle(Ie.x,Ie.y,Me),Y.endFill()}}function $a(H,Y=16777215){const ee=Number.parseInt(H.replace("#",""),16);return Number.isFinite(ee)?ee:Y}function Qr(){if(!R)return;const H=R;H.clear();for(const Y of W){if(Y.visible===!1)continue;const ee=e.activeObjectType==="collision"&&e.activeObjectId===Y.id,ne=Y.enabled?ee?16735858:13911899:5792116,ue=Y.rotation*Math.PI/180,pe=Math.cos(ue),_e=Math.sin(ue),Me=Math.max(1e-4,Math.abs(Y.scaleX??1)),xe=Math.max(1e-4,Math.abs(Y.scaleY??1)),De=(Ae,He)=>({x:Y.x+pe*Ae*Me-_e*He*xe,y:-(Y.y+_e*Ae*Me+pe*He*xe)});let Ie=[];if(Y.shape==="circle"||Y.shape==="ellipse"){const Ae=Y.shape==="circle"?Y.radius:Y.radiusX,He=Y.shape==="circle"?Y.radius:Y.radiusY;Ie=Array.from({length:49},(st,Ze)=>{const nt=Ze/48*Math.PI*2;return De(Math.cos(nt)*Ae,Math.sin(nt)*He)})}else if(Y.shape==="rect"){const Ae=Y.width*.5,He=Y.height*.5;Ie=[De(-Ae,-He),De(Ae,-He),De(Ae,He),De(-Ae,He),De(-Ae,-He)]}else{const Ae=Math.max(3,Math.min(16,Math.round(Y.sides)));Ie=Array.from({length:Ae+1},(He,st)=>{const Ze=Math.PI*.5+st%Ae/Ae*Math.PI*2;return De(Math.cos(Ze)*Y.width*.5,Math.sin(Ze)*Y.height*.5)})}if(!Ie.length)continue;H.lineStyle(ee?2.5:1.5,ne,Y.enabled?.95:.45),H.beginFill(ne,ee?.12:.055),H.moveTo(Ie[0].x,Ie[0].y);for(let Ae=1;Ae{const Ie=Le(Y,xe,De);return{x:Ie.x,y:-Ie.y}},pe=Y.points[0],_e=ue(pe.x,pe.y);H.lineStyle(ee?2.5:1.8,ne,ee?1:.75),H.moveTo(_e.x,_e.y);const Me=Y.closed?Y.points.length:Y.points.length-1;for(let xe=0;xe{const Ie=ue(xe.x,xe.y),Be=ue(xe.x+xe.inX,xe.y+xe.inY),Ae=ue(xe.x+xe.outX,xe.y+xe.outY),He=Math.hypot(xe.inX,xe.inY)>.01,st=Math.hypot(xe.outX,xe.outY)>.01;H.lineStyle(1,11121867,.65),He&&(H.moveTo(Ie.x,Ie.y),H.lineTo(Be.x,Be.y)),st&&(H.moveTo(Ie.x,Ie.y),H.lineTo(Ae.x,Ae.y)),He&&(H.beginFill(14015724,.95),H.drawCircle(Be.x,Be.y,3),H.endFill()),st&&(H.beginFill(14015724,.95),H.drawCircle(Ae.x,Ae.y,3),H.endFill()),H.beginFill(K.has(De)?16777215:ne,1),H.lineStyle(1.5,K.has(De)?6126847:16777215,.95),H.drawCircle(Ie.x,Ie.y,K.has(De)?5:4),H.endFill()})}}function bs(H,Y,ee="linear"){if(!H.length)return Y;const ne=[...H].sort((ue,pe)=>ue.x-pe.x);if(Y<=ne[0].x)return ne[0].y;for(let ue=1;ue{if(!Y.followPath||!Y.followPathId)return Y;const ee=e.paths.find(De=>De.id===Y.followPathId&&De.enabled);if(!(ee!=null&&ee.points.length))return Y;const ne=Math.max(.05,Number(Y.followDuration)||2),ue=Math.min(1,Math.max(0,H/ne)),pe=Array.isArray(Y.followCurve)?Y.followCurve:[{x:0,y:0},{x:1,y:1}],_e=Y.followCurveMode==="跟随导出"?e.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":Y.followCurveMode==="贝塞尔"?"bezier":"linear",Me=Math.min(1,Math.max(0,bs(pe,ue,_e))),xe=xf(ee,Me);return xe?{...Y,x:xe.x,y:xe.y,rotation:Y.rotation+(Y.followPathRotation?xe.angle:0)}:Y})}function un(H,Y,ee,ne=Math.max(1e-4,Math.abs(H.rootScaleX)),ue=Math.max(1e-4,Math.abs(H.rootScaleY))){const pe=-H.rootRotation*Math.PI/180,_e=Math.cos(pe),Me=Math.sin(pe),xe=Y-H.centerX,De=-ee+H.centerY;return{x:(_e*xe+Me*De)/ne,y:(-Me*xe+_e*De)/ue}}function Ga(H,Y,ee){const ne=xf(Y,ee);if(!ne)return null;const ue=un(H,ne.x,ne.y),pe=ne.angle*Math.PI/180,_e=un(H,ne.x+Math.cos(pe),ne.y+Math.sin(pe)),Me=Math.atan2(_e.y-ue.y,_e.x-ue.x)*180/Math.PI;return{...ue,angle:Me}}function br(){var ee,ne,ue;O=requestAnimationFrame(br);const H=performance.now()/1e3;let Y=H-U;if(U=H,Y>.1&&(Y=.1),f&&p){p.scale.set(e.editor.viewScale),p.position.set(f.screen.width/2+e.editor.viewX,f.screen.height*.5+e.editor.viewY),m&&(m.position.set(Number(e.settings.backgroundX)||0,-(Number(e.settings.backgroundY)||0)),m.alpha=Math.min(1,Math.max(0,Number(e.settings.backgroundOpacity)||0))),ve(),Jt();const pe=Math.max(1,e.timeline.fps),_e=e.timeline.frame,Me=_e/pe;B==null||B.sync(e.spines,_e,pe),Xn(Me);for(const Je of e.systems){const Se=V.get(Je.id);if(!Se)continue;Se.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const rt=Je.visible!==!1;Se.visible=rt,Se.renderable=rt;const Pe=Je.config;Se.scale.set(Pe.rootScaleX,Pe.rootScaleY);const Et=new Set(Pe.collisionColliderIds);Se.setColliders(Pe.collision?W.filter(It=>Et.has(It.id)):[]),Se.setEmitterFollowSpawn(0,0,0);let Vt={x:Pe.centerX,y:Pe.centerY,rotation:Pe.rootRotation};const ui=Pe.emitterFollow&&Pe.emitterFollowMode==="bone"?e.spines.find(It=>It.id===Pe.emitterFollowSpineId&&It.enabled&&It.status==="ready"):null,Xi=ui&&(B==null?void 0:B.getBoneWorldTransform(ui.id,Pe.emitterFollowBoneName))||null,ns=Pe.emitterFollow&&Pe.emitterFollowMode==="path"?e.paths.find(It=>It.id===Pe.emitterFollowPathId&&It.enabled):null,$=Math.max(.05,Pe.emitterFollowDuration),S=Math.min(1,Math.max(0,Me/$)),C=Math.min(1,Math.max(0,bs(Pe.emitterFollowCurve,S))),Q=Math.min(1,Math.max(0,Pe.emitterFollowOffset)),Fe=Pe.emitterFollowDirection==="reverse"?(1-Q)*(1-C):Q+(1-Q)*C,ct=ns?xf(ns,Fe):null;if(Xi){const It=Pe.emitterFollowBoneOffsetX,Ht=Pe.emitterFollowBoneOffsetY,qi=Xi.x+It,Ha=Xi.y+Ht,tc=Pe.rootRotation+Pe.emitterFollowBoneRotation,Vo=Math.max(1e-4,Math.abs(Pe.rootScaleX*Pe.emitterFollowBoneScaleX)),Yo=Math.max(1e-4,Math.abs(Pe.rootScaleY*Pe.emitterFollowBoneScaleY));if(Vt={x:qi,y:Ha,rotation:tc},Pe.emitterFollowSpace==="local")Se.position.set(qi,-Ha),Se.rotation=-tc*Math.PI/180,Se.scale.set(Vo,Yo),Se.setSimulationTransform(qi,Ha,tc,Vo,Yo);else{Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.scale.set(Vo,Yo),Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation,Vo,Yo);const Yp=un(Pe,qi,Ha,Vo,Yo),ES=-(tc-Pe.rootRotation);Se.setEmitterFollowSpawn(Yp.x,Yp.y,ES)}}else if(ct){const It=ct.angle+(Pe.emitterFollowDirection==="reverse"?180:0),Ht=Pe.emitterAngleMode==="direction"?It:Pe.rootRotation;if(Vt={x:ct.x,y:ct.y,rotation:Ht},Pe.emitterFollowSpace==="local")Se.position.set(ct.x,-ct.y),Se.rotation=-Ht*Math.PI/180,Se.setSimulationTransform(ct.x,ct.y,Ht);else{Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation);const qi=un(Pe,ct.x,ct.y),Ha=Pe.emitterAngleMode==="direction"?-(It-Pe.rootRotation):0;Se.setEmitterFollowSpawn(qi.x,qi.y,Ha)}}else Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation);const Ct=Pe.shape==="path"&&Pe.spawnPathId>0&&e.paths.find(It=>It.id===Pe.spawnPathId&&It.enabled&&It.points.length>0)||null;Se.setSpawnPathSampler(Ct?It=>Ga(Pe,Ct,It):null,(Ct==null?void 0:Ct.closed)===!0),J.set(Je.id,Vt)}let xe=0;const De=[],Ie=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,Be=(Je,Se,rt)=>{!Je||Je.id!==Ie||Je.visible===!1||ln(De,rt,Se.position.x,Se.position.y)},Ae=e.timeline,He=Ae.fps,st=1/Math.max(1,He);let Ze=N,nt=0;if(Ae.playing?(L+=Y,nt=Math.floor(L/st),nt>0&&(L-=nt*st)):L=0,Ae.playing&&nt>0)for(let Je=0;JeVt.id===e.activeId),rt=(Se==null?void 0:Se.config.mode)==="stream"&&Se.config.streamBehavior==="loop"?v1(Se.config,He):null,Et=Ae.loop&&(rt==null?void 0:rt.start)===Ae.playbackStart&&rt.end===Ae.playbackEnd?Ae.playbackEnd-1:Ae.playbackEnd;if(Ae.frame>Et)if(Ae.loop)Ae.frame=Ae.playbackStart;else{Ae.frame=Ae.playbackEnd,Ae.playing=!1;break}}else{if(Ae.frame===0)for(const Se of e.systems){const rt=V.get(Se.id);rt&&(Se.config.mode==="stream"&&Se.config.streamBehavior==="loop"?nR(Se,rt,He,Ae.totalFrames):rt.reset())}for(const[Se,rt]of V){const Pe=e.systems.find(ns=>ns.id===Se),Et=(Pe==null?void 0:Pe.config.mode)==="stream"&&Pe.config.streamBehavior==="loop",Vt=Et?(ee=Pe.frames)==null?void 0:ee[Ae.frame]:void 0,ui=Ae.frame===0&&!Et,Xi=ui?[]:Vt||rt.update(st);if(ui?rt.apply([]):Vt&&rt.apply(Vt),(Pe==null?void 0:Pe.visible)!==!1)for(const ns of Xi)ns.active&&Be(Pe,rt,ns);xe+=Xi.length}for(const Se of e.systems){if(!Se.config.texture)continue;Se.frames=Se.frames||[];const rt=V.get(Se.id);rt&&!(Se.config.mode==="stream"&&Se.config.streamBehavior==="loop")&&(Se.frames[Ae.frame]=rt.capture())}Ae.frame++,Ae.frame>=Ae.totalFrames&&(Ae.frame=Ae.playbackStart,Ae.recorded=!0)}else{Ae.playing||(Ze=Ae.frame);for(const Je of e.systems){const Se=V.get(Je.id),rt=Ae.playing?N:Ae.frame,Pe=(ue=Je.frames)==null?void 0:ue[rt],Et=Je.config.mode==="stream"&&Je.config.streamBehavior==="loop"&&!!Pe;if((Ae.recorded||Et)&&Se&&Pe){Se.apply(Pe);for(const Vt of Pe)Vt.active&&(Be(Je,Se,Vt),xe++)}else if(Se){const Vt=Ae.frame===0?[]:Se.update(0);if(Ae.frame===0&&Se.apply([]),Je.visible!==!1)for(const ui of Vt)ui.active&&Be(Je,Se,ui);xe+=Se.activeCount}}}N=Ze,B==null||B.sync(e.spines,Ze,He);for(const[,Je]of V)Je.drawTrailMeshDebug(e.settings.showSkinMesh);Qr(),cn(),Cs(),mt(),Xs(),Ui(),Is(),xr(),Ya(De),i.value&&(i.value.systems=e.systems.length,i.value.particles=xe)}}return La(async()=>{window.addEventListener("keydown",Te);const H=t.value;f=new $b({width:H.clientWidth||800,height:H.clientHeight||600,backgroundAlpha:0,antialias:!0}),H.appendChild(f.view),we(),ds(()=>e.settings.backgroundImageData,j,{immediate:!0}),await me();const Y=X;for(const ee of e.systems){ee.config.texture=Y;const ne=zr(ee.config);if(E)for(const ue of ne.trailResources)!ue.texture&&(ue.previewUrl==="/images/trail.png"||ue.previewUrl==="/trails/trail.png")&&(ue.texture=E);for(const ue of ne.imageResources)!ue.texture&&ue.textureName==="star"&&(ue.texture=Y)}i.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,L=0,N=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const ee of e.systems)ee.frames=[];e.recalcTotalFrames(),U=performance.now()/1e3,br(),ds(()=>e.systems.map(ee=>JSON.stringify(ee.config,(ne,ue)=>ne==="texture"||ne==="trailTexture"||ne==="previewUrl"?void 0:ue)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const ee of e.systems)ee.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),jP(e)}),Gl(()=>{window.removeEventListener("keydown",Te),cancelAnimationFrame(O),B==null||B.destroy(),B=null,v++,g&&g.destroy(!0),g=null,m=null,f&&(f.destroy(!0,{children:!0}),f=null)}),(H,Y)=>(ie(),oe("div",KP,[T("div",{ref_key:"holder",ref:t,class:ot(["stage-holder",{grid:ke(e).settings.showGrid}]),tabindex:"0",onWheel:xt(le,["prevent"]),onPointerdown:ye,onDblclick:xt(St,["prevent"])},null,34),T("div",ZP,[T("button",{class:"settings-btn",onClick:G,title:"系统设置"},"系统设置"),T("button",{class:"undo-btn",disabled:ke(Ru).undoCount===0,onClick:Y[0]||(Y[0]=(...ee)=>ke(Af)&&ke(Af)(...ee)),title:"撤回上一步 (Ctrl+Z)"},"↶",8,JP),T("div",QP,[T("button",{class:ot(["tool-btn",{on:l.value===""}]),onClick:Y[1]||(Y[1]=ee=>u("")),title:"拖动画布 (Q)"},"✋",2),T("button",{class:ot(["tool-btn",{on:l.value==="translate"}]),onClick:Y[2]||(Y[2]=ee=>u("translate")),title:"位移 (W)"},"✥",2),T("button",{class:ot(["tool-btn",{on:l.value==="rotate"}]),onClick:Y[3]||(Y[3]=ee=>u("rotate")),title:"旋转 (E)"},"⟳",2),T("button",{class:ot(["tool-btn",{on:l.value==="scale"}]),onClick:Y[4]||(Y[4]=ee=>u("scale")),title:"缩放 (R)"},"⤢",2)]),T("div",ek,[T("button",{class:"tool-btn",onClick:on,title:"放大"},"+"),T("button",{class:"tool-btn",onClick:yi,title:"缩小"},"-"),T("button",{class:"tool-btn",onClick:de,title:"适配画布"},"⤢"),T("button",{class:ot(["tool-btn",{on:ke(e).settings.showGrid}]),onClick:zt,title:"切换网格"},"▦",2),T("button",{class:"tool-btn",onClick:kt,title:"重置视图"},"⟳")]),T("div",{class:"background-menu",onClick:Y[10]||(Y[10]=xt(()=>{},["stop"]))},[T("button",{class:ot(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:Ee},"背景图",2),r.value?(ie(),oe("div",tk,[T("button",{class:"background-upload",onClick:Y[5]||(Y[5]=ee=>{var ne;return(ne=o.value)==null?void 0:ne.click()})},je(h.value?"更换图像":"上传图像"),1),T("button",{class:"background-clear",disabled:!h.value,onClick:Y[6]||(Y[6]=ee=>te())},"清除背景",8,ik),T("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:z},null,544),T("div",{class:"background-file-name",title:h.value},je(h.value||"未上传图像"),9,sk),T("div",nk,[T("label",null,[Y[28]||(Y[28]=T("span",null,"X",-1)),be(T("input",{"onUpdate:modelValue":Y[7]||(Y[7]=ee=>ke(e).settings.backgroundX=ee),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[ut,ke(e).settings.backgroundX,void 0,{number:!0}]])]),T("label",null,[Y[29]||(Y[29]=T("span",null,"Y",-1)),be(T("input",{"onUpdate:modelValue":Y[8]||(Y[8]=ee=>ke(e).settings.backgroundY=ee),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[ut,ke(e).settings.backgroundY,void 0,{number:!0}]])])]),T("label",rk,[Y[30]||(Y[30]=T("span",null,"透明度",-1)),be(T("input",{"onUpdate:modelValue":Y[9]||(Y[9]=ee=>ke(e).settings.backgroundOpacity=ee),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[ut,ke(e).settings.backgroundOpacity,void 0,{number:!0}]]),T("b",null,je(Math.round(ke(e).settings.backgroundOpacity*100))+"%",1)])])):Xe("",!0)]),T("button",{class:ot(["help-btn",{on:a.value}]),title:"查看使用说明",onClick:ge},"使用说明",2),T("span",ak,je(Math.round(ke(e).editor.viewScale*100))+"%",1)]),n.value?(ie(),oe("div",ok,[T("div",lk,[Y[31]||(Y[31]=ri("系统设置 ",-1)),T("button",{class:"sp-close",onClick:Y[11]||(Y[11]=ee=>n.value=!1)},"✕")]),Y[45]||(Y[45]=T("div",{class:"sp-section-title"},"界面布局",-1)),T("label",ck,[Y[33]||(Y[33]=T("span",null,"参数面板位置",-1)),T("span",hk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[12]||(Y[12]=ee=>ke(e).settings.parameterPanelOnRight=ee),"aria-label":"参数面板显示在右侧"},null,512),[[ei,ke(e).settings.parameterPanelOnRight]]),Y[32]||(Y[32]=T("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),T("b",null,je(ke(e).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),Y[46]||(Y[46]=T("div",{class:"sp-divider"},null,-1)),Y[47]||(Y[47]=T("div",{class:"sp-section-title"},"操作历史",-1)),T("label",uk,[Y[34]||(Y[34]=T("span",null,"最大撤回步数",-1)),be(T("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":Y[13]||(Y[13]=ee=>ke(e).settings.undoLimit=ee),"aria-label":"最大撤回步数",onChange:Z},null,544),[[ut,ke(e).settings.undoLimit,void 0,{number:!0}]])]),Y[48]||(Y[48]=T("div",{class:"sp-divider"},null,-1)),Y[49]||(Y[49]=T("div",{class:"sp-section-title"},"画布辅助显示",-1)),T("label",dk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[14]||(Y[14]=ee=>ke(e).settings.showEmitter=ee)},null,512),[[ei,ke(e).settings.showEmitter]]),Y[35]||(Y[35]=ri("发射点",-1))]),T("label",fk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[15]||(Y[15]=ee=>ke(e).settings.showBones=ee)},null,512),[[ei,ke(e).settings.showBones]]),Y[36]||(Y[36]=ri("骨骼连线",-1))]),ke(e).settings.showBones?(ie(),oe(Ke,{key:0},[T("label",mk,[Y[37]||(Y[37]=T("span",null,"骨骼点绘制大小",-1)),be(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":Y[16]||(Y[16]=ee=>ke(e).settings.bonePointDrawSize=ee),"aria-label":"骨骼点绘制大小",onChange:d},null,544),[[ut,ke(e).settings.bonePointDrawSize,void 0,{number:!0}]])]),T("label",pk,[Y[38]||(Y[38]=T("span",null,"坐标轴绘制大小",-1)),be(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":Y[17]||(Y[17]=ee=>ke(e).settings.boneAxisDrawSize=ee),"aria-label":"坐标轴绘制大小",onChange:d},null,544),[[ut,ke(e).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):Xe("",!0),T("label",gk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[18]||(Y[18]=ee=>ke(e).settings.showSkinMesh=ee)},null,512),[[ei,ke(e).settings.showSkinMesh]]),Y[39]||(Y[39]=ri("蒙皮网格",-1))]),Y[50]||(Y[50]=T("div",{class:"sp-divider"},null,-1)),T("label",vk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[19]||(Y[19]=ee=>ke(e).settings.tickEnabled=ee)},null,512),[[ei,ke(e).settings.tickEnabled]]),Y[40]||(Y[40]=ri("启用刻度",-1))]),ke(e).settings.tickEnabled?(ie(),oe(Ke,{key:1},[T("label",yk,[Y[41]||(Y[41]=T("span",null,"刻度文字大小",-1)),be(T("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":Y[20]||(Y[20]=ee=>ke(e).settings.axisFontSize=ee)},null,512),[[ut,ke(e).settings.axisFontSize,void 0,{number:!0}]]),be(T("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":Y[21]||(Y[21]=ee=>ke(e).settings.axisFontSize=ee),class:"sp-num"},null,512),[[ut,ke(e).settings.axisFontSize,void 0,{number:!0}]])]),T("label",xk,[Y[42]||(Y[42]=T("span",null,"刻度线粗细",-1)),be(T("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":Y[22]||(Y[22]=ee=>ke(e).settings.tickWidth=ee)},null,512),[[ut,ke(e).settings.tickWidth,void 0,{number:!0}]]),be(T("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":Y[23]||(Y[23]=ee=>ke(e).settings.tickWidth=ee),class:"sp-num"},null,512),[[ut,ke(e).settings.tickWidth,void 0,{number:!0}]])]),T("label",bk,[Y[43]||(Y[43]=T("span",null,"坐标轴颜色",-1)),be(T("input",{type:"color","onUpdate:modelValue":Y[24]||(Y[24]=ee=>ke(e).settings.axisColor=ee),class:"sp-colr"},null,512),[[ut,ke(e).settings.axisColor]]),T("span",wk,je(ke(e).settings.axisColor),1)]),T("label",Sk,[be(T("input",{type:"checkbox","onUpdate:modelValue":Y[25]||(Y[25]=ee=>ke(e).settings.showAxisLabels=ee)},null,512),[[ei,ke(e).settings.showAxisLabels]]),Y[44]||(Y[44]=ri("显示刻度数值",-1))])],64)):Xe("",!0),Y[51]||(Y[51]=T("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):Xe("",!0),a.value?(ie(),oe("div",{key:1,class:"help-overlay",role:"presentation",onClick:Y[27]||(Y[27]=xt(ee=>a.value=!1,["self"]))},[T("section",_k,[T("header",Mk,[Y[52]||(Y[52]=T("div",null,[T("h2",{id:"help-title"},"使用说明"),T("p",null,"从创建粒子到保存、导出的快速入门")],-1)),T("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:Y[26]||(Y[26]=ee=>a.value=!1)},"✕")]),Y[53]||(Y[53]=io('

快速开始

  1. 创建对象:在左侧“场景对象”中添加粒子、碰撞、路径或 Spine。
  2. 编辑粒子:选中粒子系统,依次调整发射、形状、属性、外观资源和修改器。
  3. 查看效果:使用底部时间轴播放、暂停或拖动到指定帧;修改参数后会自动重新计算。
  4. 保存成果:配置文件用于继续编辑;“导出 Spine Json”支持 Spine 3.8、4.0、4.1、4.2 和 4.3。

常用功能

小眼睛
单独显示或隐藏场景对象;隐藏的粒子系统不会导出。
+Copy
完整复制当前选中对象,方便对比不同参数效果。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面与辅助显示,并自动保存在当前浏览器中。
配置管理
保存当前项目数据、加载配置,或直接使用预设文件;不包含系统设置。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需要先点击画布。光标位于输入框时,单键快捷键不会触发。

配置与导出有什么区别?

保存配置会保存编辑器中的全部对象和参数,之后可以继续修改;导出 Spine Json只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。

',1))])])):Xe("",!0),i.value?(ie(),oe("div",Tk,[Y[54]||(Y[54]=ri(" 系统: ",-1)),T("b",Ak,je(i.value.systems),1),Y[55]||(Y[55]=ri(" · 粒子(骨骼): ",-1)),T("b",Ek,je(i.value.particles),1),Y[56]||(Y[56]=ri(" · 根骨骼: ",-1)),Y[57]||(Y[57]=T("b",null,"root",-1)),Y[58]||(Y[58]=T("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):Xe("",!0)]))}}),an=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},Ik=an(Ck,[["__scopeId","data-v-94c32e62"]]),Rk={class:"ns-label"},Pk=["min","max","step","value","disabled"],kk=["min","max","step","value","disabled"],Fk=nn({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=ht(String(t.modelValue));ds(()=>t.modelValue,h=>{n.value=String(h)});function r(h){const l=parseFloat(h.target.value);Number.isNaN(l)||i("update:modelValue",l)}function a(h){n.value=h.target.value;const l=parseFloat(n.value);Number.isNaN(l)||i("update:modelValue",l)}function o(){const h=parseFloat(n.value);Number.isNaN(h)&&(n.value=String(t.modelValue))}return(h,l)=>(ie(),oe("div",{class:ot(["ns",{disabled:s.disabled}])},[T("span",Rk,je(s.label),1),T("input",{type:"range",class:"ns-range",min:s.min,max:s.max,step:s.step,value:s.modelValue,disabled:s.disabled,onInput:r},null,40,Pk),T("input",{type:"number",class:"ns-num",min:s.min,max:s.max,step:s.step,value:n.value,disabled:s.disabled,onInput:a,onBlur:o},null,40,kk)],2))}}),qe=an(Fk,[["__scopeId","data-v-7c2fbed0"]]),Ok={class:"ce"},Bk={class:"ce-editor"},Lk={class:"ce-grid"},Dk=["x1","x2","y2"],Nk=["y1","x2","y2"],Uk=["x","y","width","height"],Xk=["d"],Vk={key:0,class:"ce-handles"},Yk=["x1","y1","x2","y2"],$k=["cx","cy","onPointerdown"],Gk=["x1","y1","x2","y2"],Hk=["cx","cy","onPointerdown"],jk=["cx","cy"],Wk=["cx","cy","onPointerdown","onDblclick"],zk={class:"ce-nav"},qk={class:"ce-tip"},Mr=8,Kk=nn({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=ht(null),r=ht(300),a=ht(110);let o=null;function h(){if(!n.value)return;const I=n.value.getBoundingClientRect();r.value=I.width,a.value=I.height}function l(I){return Mr+I*(r.value-Mr*2)}function c(I){return Mr+(1-I)*(a.value-Mr*2)}function u(){return[...t.modelValue].sort((I,k)=>I.x-k.x)}function d(I){i("update:modelValue",[...I].sort((k,B)=>k.x-B.x))}function f(){d(t.defaultValue.map(I=>({...I})))}const p=gt(()=>u());function m(I){const k=p.value[I],B=p.value[Math.max(0,I-1)];return{x:k.x-(k.x-B.x)/3,y:k.y-(k.y-B.y)/3}}function g(I){const k=p.value[I],B=p.value[Math.min(p.value.length-1,I+1)];return{x:k.x+(B.x-k.x)/3,y:k.y+(B.y-k.y)/3}}function v(I){const k=p.value[I],B=m(I);return{x:k.x+(k.inX??B.x-k.x),y:k.y+(k.inY??B.y-k.y)}}function b(I){const k=p.value[I],B=g(I);return{x:k.x+(k.outX??B.x-k.x),y:k.y+(k.outY??B.y-k.y)}}const y=gt(()=>{if(!p.value.length)return"";let I=`M ${l(p.value[0].x)} ${c(p.value[0].y)}`;for(let k=1;kMath.abs(U.x-k)>.02);D.push({x:k,y:B}),d(D)}let _={t:0,i:-1,x:0,y:0};function R(I,k){I.stopPropagation();const B=u().findIndex(N=>Math.abs(N.x-p.value[k].x)<1e-6&&Math.abs(N.y-p.value[k].y)<1e-6);if(B<0)return;const D=Date.now();if(D-_.t<300&&_.i===k&&Math.abs(I.clientX-_.x)<8&&Math.abs(I.clientY-_.y)<8){_={t:0,i:-1,x:0,y:0},F(k);return}_={t:D,i:k,x:I.clientX,y:I.clientY};const U=N=>{(Math.abs(N.clientX-I.clientX)>8||Math.abs(N.clientY-I.clientY)>8)&&(_={t:0,i:-1,x:0,y:0});const{x:O,y:X}=w(N.clientX,N.clientY),E=u();E[B]={x:O,y:X},d(E)},L=()=>{window.removeEventListener("pointermove",U),window.removeEventListener("pointerup",L)};window.addEventListener("pointermove",U),window.addEventListener("pointerup",L)}function P(I,k,B){I.stopPropagation();const D=L=>{const N=w(L.clientX,L.clientY),O=u(),X=O[k],E=B==="in"?O[Math.max(0,k-1)].x:X.x,V=B==="in"?X.x:O[Math.min(O.length-1,k+1)].x,q=Math.min(V,Math.max(E,N.x)),W=Math.round((q-X.x)*100)/100,J=Math.round((N.y-X.y)*100)/100;O[k]=B==="in"?{...X,inX:W,inY:J}:{...X,outX:W,outY:J},d(O)},U=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",U)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",U)}function F(I,k){k==null||k.stopPropagation();const B=u();B.length<=2||(A=Date.now(),d(B.filter((D,U)=>U!==I)))}return La(()=>{h(),o=new ResizeObserver(h),n.value&&o.observe(n.value)}),Gl(()=>{o==null||o.disconnect()}),(I,k)=>(ie(),oe("div",Ok,[T("div",Bk,[(ie(),oe("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:M},[T("g",Lk,[(ie(),oe(Ke,null,li([.25,.5,.75],B=>T("line",{key:"v"+B,x1:l(B),y1:"0",x2:l(B),y2:c(0)},null,8,Dk)),64)),(ie(),oe(Ke,null,li([.25,.5,.75],B=>T("line",{key:"h"+B,x1:"0",y1:c(B),x2:l(1),y2:c(B)},null,8,Nk)),64))]),T("rect",{x:l(0),y:c(1),width:l(1)-l(0),height:c(0)-c(1),class:"ce-frame",fill:"none"},null,8,Uk),T("path",{d:y.value,class:"ce-line",fill:"none"},null,8,Xk),s.mode==="bezier"?(ie(),oe("g",Vk,[(ie(!0),oe(Ke,null,li(p.value,(B,D)=>(ie(),oe(Ke,{key:"handles-"+D},[D>0?(ie(),oe("line",{key:0,x1:l(B.x),y1:c(B.y),x2:l(v(D).x),y2:c(v(D).y)},null,8,Yk)):Xe("",!0),D>0?(ie(),oe("circle",{key:1,cx:l(v(D).x),cy:c(v(D).y),r:"4",onPointerdown:U=>P(U,D,"in")},null,40,$k)):Xe("",!0),DP(U,D,"out")},null,40,Hk)):Xe("",!0)],64))),128))])):Xe("",!0),(ie(!0),oe(Ke,null,li(p.value,(B,D)=>(ie(),oe("g",{key:D},[T("circle",{cx:l(B.x),cy:c(B.y),r:"5",class:"ce-node"},null,8,jk),T("circle",{cx:l(B.x),cy:c(B.y),r:"9",class:"ce-hit",onPointerdown:U=>R(U,D),onDblclick:U=>F(D,U)},null,40,Wk)]))),128))],544)),T("div",zk,[T("span",qk,je(s.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),T("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),yn=an(Kk,[["__scopeId","data-v-9bfb7b31"]]),Zk={class:"pac"},Jk={class:"pac-head"},Qk={class:"pac-label"},eF={key:0,class:"pac-modes"},tF=["onClick"],iF={class:"pac-range"},sF={class:"pac-curve"},nF={class:"pac-axis"},rF=nn({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(s){const e=s,t=gt(()=>{const i=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&i.push({label:"曲线",value:"curve"}),e.allowDirection&&i.push({label:"发射方向",value:"direction"}),i});return(i,n)=>(ie(),oe("div",Zk,[T("div",Jk,[T("span",Qk,je(s.label),1),s.showModes?(ie(),oe("div",eF,[(ie(!0),oe(Ke,null,li(t.value,r=>(ie(),oe("button",{key:r.value,class:ot(["pac-mode",{on:s.mode===r.value}]),onClick:a=>i.$emit("update:mode",r.value)},je(r.label),11,tF))),128))])):Xe("",!0)]),s.mode==="fixed"||s.mode==="direction"?(ie(),Qt(qe,{key:0,label:s.mode==="direction"?"角度偏移":"数值",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>i.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):s.mode==="random"?(ie(),oe(Ke,{key:1},[Ue(qe,{label:"下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),Ue(qe,{label:"上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(ie(),oe(Ke,{key:2},[T("div",iF,[Ue(qe,{label:"范围下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),Ue(qe,{label:"范围上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),T("div",sF,[Ue(yn,{"model-value":s.curve,"default-value":s.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>i.$emit("update:curve",r))},null,8,["model-value","default-value"]),T("div",nF,[n[6]||(n[6]=T("span",null,"0",-1)),T("span",null,je(s.curveLabel),1),n[7]||(n[7]=T("span",null,"1",-1))])])],64))]))}}),Hn=an(rF,[["__scopeId","data-v-238f838c"]]),aF={class:"gradient-editor"},oF=["title","onClick","onDblclick","onPointerdown"],lF={key:0,class:"gradient-controls"},cF=["value"],hF=["value"],uF={class:"gradient-position"},dF=["value"],fF=["disabled"],mF=nn({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=ht(null),r=ht(0),a=gt(()=>t.modelValue[r.value]||null),o=gt(()=>[...t.modelValue].sort((R,P)=>R.position-P.position)),h=gt(()=>{const R=o.value;return R.length?`linear-gradient(90deg, ${R.map(P=>`${P.color} ${l(P.position)*100}%`).join(", ")})`:"#ffffff"});ds(()=>t.modelValue.length,R=>{r.value>=R&&(r.value=Math.max(0,R-1))});function l(R){return Math.min(1,Math.max(0,Number(R)||0))}function c(){return t.modelValue.map(R=>({position:l(R.position),color:R.color}))}function u(R,P){const F=c();F[R]&&(F[R]={...F[R],...P},i("update:modelValue",F))}function d(R){u(r.value,{color:R.target.value})}function f(R){var I;const P=R.target,F=_(P.value,((I=a.value)==null?void 0:I.color)||"#ffffff");P.value=F,u(r.value,{color:F})}function p(R){const P=R.target;f(R),P.blur()}function m(R){const P=Number(R.target.value);Number.isFinite(P)&&u(r.value,{position:l(P/100)})}function g(R){const P=c();P.push({position:l(R),color:A(P,R)}),r.value=P.length-1,i("update:modelValue",P)}function v(R){if(!n.value)return;const P=n.value.getBoundingClientRect();g((R.clientX-P.left)/Math.max(1,P.width))}function b(){const R=o.value;let P=.5;if(R.length>1){let F=-1;for(let I=0;IF&&(F=k,P=(R[I].position+R[I+1].position)/2)}}g(P)}function y(R){if(t.modelValue.length<=2||R<0)return;const P=c().filter((F,I)=>I!==R);r.value=Math.min(R,P.length-1),i("update:modelValue",P)}function w(R,P){if(!n.value)return;r.value=P;const F=k=>{const B=n.value.getBoundingClientRect();u(P,{position:l((k.clientX-B.left)/Math.max(1,B.width))})},I=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",I),window.removeEventListener("pointercancel",I)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",I),window.addEventListener("pointercancel",I),R.preventDefault()}function A(R,P){const F=[...R].sort((I,k)=>I.position-k.position);if(!F.length)return"#ffffff";if(P<=F[0].position)return F[0].color;if(P>=F[F.length-1].position)return F[F.length-1].color;for(let I=0;IB.position)continue;const D=(P-k.position)/Math.max(1e-4,B.position-k.position);return M(k.color,B.color,D)}return F[F.length-1].color}function M(R,P,F){const I=U=>{const L=parseInt(U.replace("#","").padEnd(6,"0").slice(0,6),16);return[L>>16&255,L>>8&255,L&255]},k=I(R),B=I(P),D=U=>Math.round(k[U]+(B[U]-k[U])*F);return`#${[D(0),D(1),D(2)].map(U=>U.toString(16).padStart(2,"0")).join("")}`}function _(R,P){let F=R.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(I=>I+I).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:P}return(R,P)=>(ie(),oe("div",aF,[T("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:Li({background:h.value}),title:"双击色带添加色标",onDblclick:v},[(ie(!0),oe(Ke,null,li(s.modelValue,(F,I)=>(ie(),oe("button",{key:I,type:"button",class:ot(["gradient-stop",{selected:I===r.value}]),style:Li({left:`${l(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(l(F.position)*100)}% · ${F.color}`,onClick:xt(k=>r.value=I,["stop"]),onDblclick:xt(k=>y(I),["stop"]),onPointerdown:xt(k=>w(k,I),["stop"])},null,46,oF))),128))],36),a.value?(ie(),oe("div",lF,[T("input",{type:"color",class:"gradient-color",value:a.value.color,"aria-label":"色标颜色",onInput:d},null,40,cF),T("input",{type:"text",class:"gradient-hex-input",value:a.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:Ta(p,["enter"])},null,40,hF),T("label",uF,[T("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(l(a.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,dF),P[1]||(P[1]=T("span",null,"%",-1))]),T("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:b},"+"),T("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:s.modelValue.length<=2,onClick:P[0]||(P[0]=F=>y(r.value))},"×",8,fF)])):Xe("",!0),P[2]||(P[2]=T("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),zv=an(mF,[["__scopeId","data-v-f6ab10bf"]]),pF={class:"image-card"},gF={class:"imgrow"},vF=["title"],yF=["src","alt"],xF={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},bF={class:"img-fields"},wF={key:0,class:"row"},SF={class:"row"},_F=["placeholder"],MF={class:"img-actions"},TF=["title"],AF=["disabled"],EF={class:"thumb-note"},CF={key:0,class:"row"},IF={class:"row"},RF={class:"row"},PF={class:"sequence-note"},kF={class:"resource-weight-row"},FF=["disabled","title"],OF={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},BF={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},LF=nn({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(s,{emit:e}){const t=s,i=e,n=gt(()=>{var l,c;if(t.resource.imageMode==="sequence"){const u=t.resource.sequenceFrames||[];if(!u.length)return"未选择序列帧";const d=((l=u[0])==null?void 0:l.name)||"第 1 帧",f=((c=u[u.length-1])==null?void 0:c.name)||d;return u.length===1?`1 帧 · ${d}`:`${u.length} 帧 · ${d} → ${f}`}const h=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return h.includes(".")?h:`${h}.png`}),r=gt(()=>{var h,l;return t.resource.imageMode==="sequence"?((l=(h=t.resource.sequenceFrames)==null?void 0:h[0])==null?void 0:l.previewUrl)||"":t.resource.previewUrl}),a=gt(()=>{var u,d;const h=t.resource.sequenceFrames||[];if(!h.length)return"未选择序列帧";const l=((u=h[0])==null?void 0:u.name)||"第一张图片",c=((d=h[h.length-1])==null?void 0:d.name)||"最后一张图片";return`已选择 ${h.length} 帧,按 ${l}-${c} 顺序播放`});function o(){t.supportsSequence&&t.resource.imageMode==="sequence"?i("pickSequence",t.resource.id):i("pick",t.resource.id)}return(h,l)=>(ie(),oe("div",pF,[T("div",gF,[T("button",{class:"img-thumb",title:s.supportsSequence&&s.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:o},[r.value?(ie(),oe("img",{key:0,src:r.value,alt:s.resource.textureName},null,8,yF)):(ie(),oe("svg",xF,[...l[10]||(l[10]=[T("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),T("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),T("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,vF),T("div",bF,[s.showFolder?(ie(),oe("label",wF,[l[11]||(l[11]=T("span",null,"子文件夹",-1)),be(T("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>s.resource.textureFolder=c),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[ut,s.resource.textureFolder]])])):Xe("",!0),T("label",SF,[l[12]||(l[12]=T("span",null,"名称",-1)),be(T("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>s.resource.textureName=c),type:"text",class:"inp",placeholder:s.namePlaceholder},null,8,_F),[[ut,s.resource.textureName]])])]),T("div",MF,[T("button",{class:"mini-btn2",title:`恢复 ${s.defaultFile}`,onClick:l[2]||(l[2]=c=>h.$emit("reset",s.resource.id))},"⟳",8,TF),T("button",{class:"mini-btn2",title:"删除图片资源",disabled:s.resourceCount===1,onClick:l[3]||(l[3]=c=>h.$emit("remove",s.resource.id))},"🗑",8,AF)])]),T("div",EF,je(n.value),1),s.supportsSequence?(ie(),oe("label",CF,[l[14]||(l[14]=T("span",null,"图片模式",-1)),be(T("select",{"onUpdate:modelValue":l[4]||(l[4]=c=>s.resource.imageMode=c),class:"inp"},[...l[13]||(l[13]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"sequence"},"序列帧",-1)])],512),[[jt,s.resource.imageMode]])])):Xe("",!0),s.supportsSequence&&s.resource.imageMode==="sequence"?(ie(),oe(Ke,{key:1},[T("label",IF,[l[16]||(l[16]=T("span",null,"播放模式",-1)),be(T("select",{"onUpdate:modelValue":l[5]||(l[5]=c=>s.resource.sequencePlayback=c),class:"inp"},[...l[15]||(l[15]=[T("option",{value:"once-hide"},"单次-尾帧消失",-1),T("option",{value:"once-hold"},"单次-尾帧固定",-1),T("option",{value:"loop-forward"},"正向循环",-1),T("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[jt,s.resource.sequencePlayback]])]),T("label",RF,[l[17]||(l[17]=T("span",null,"播放帧率",-1)),be(T("input",{"onUpdate:modelValue":l[6]||(l[6]=c=>s.resource.sequenceFps=c),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[ut,s.resource.sequenceFps,void 0,{number:!0}]])]),T("button",{class:"sequence-pick",onClick:l[7]||(l[7]=c=>h.$emit("pickSequence",s.resource.id))},"选择序列帧(多选)"),T("div",PF,je(a.value),1)],64)):Xe("",!0),T("div",kF,[Ue(qe,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":s.resource.weight,disabled:s.resource.locked||s.resourceCount===1,"onUpdate:modelValue":l[8]||(l[8]=c=>h.$emit("updateWeight",s.resource.id,c))},null,8,["model-value","disabled"]),T("button",{class:ot(["weight-lock",{on:s.resource.locked}]),disabled:s.resourceCount===1,title:s.resource.locked?"解除占比锁定":"锁定当前占比",onClick:l[9]||(l[9]=c=>h.$emit("toggleLock",s.resource.id))},[s.resource.locked?(ie(),oe("svg",OF,[...l[18]||(l[18]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(ie(),oe("svg",BF,[...l[19]||(l[19]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,FF)]),V_(h.$slots,"default",{},void 0)]))}}),qv=an(LF,[["__scopeId","data-v-68ff5314"]]),DF={class:"spine-editor"},NF={class:"field wide"},UF={class:"grid three"},XF={class:"field"},VF={class:"field"},YF={class:"field"},$F={class:"grid three"},GF={class:"field"},HF={class:"field"},jF={class:"field"},WF=["disabled"],zF={class:"asset-row"},qF=["title"],KF={class:"asset-row"},ZF=["title"],JF={class:"asset-row"},QF=["title"],e3={class:"asset-actions"},t3=["disabled"],i3={class:"runtime-note"},s3={key:0},n3={key:0,class:"error"},r3={class:"section-box"},a3={key:0,class:"empty"},o3={key:1,class:"field wide"},l3=["value"],c3={class:"section-box"},h3={class:"tree-title-row"},u3=["disabled","title"],d3={key:0,class:"empty"},f3={key:1,class:"bone-search"},m3={key:2,class:"empty"},p3={key:3,class:"bone-tree"},g3=["onClick","onKeydown"],v3=["title","onClick"],y3={key:1,class:"bone-leaf"},x3={class:"bone-name"},b3=nn({__name:"SpineObjectPanel",props:{spineObject:{}},setup(s){const e=s,t=Kl(),i=ht(null),n=ht(null),r=ht(null),a=ht(null),o=ht(new Set),h=ht(""),l=ht(null),c=ht(null),u=ht([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const d=gt(()=>{var N;return((N=l.value)==null?void 0:N.name)||e.spineObject.skeletonFileName}),f=gt(()=>{var N;return((N=c.value)==null?void 0:N.name)||e.spineObject.atlasFileName}),p=gt(()=>u.value.length?u.value.map(N=>N.name):e.spineObject.textureFileNames),m=gt(()=>p.value.length?`${p.value.length} 张:${p.value.join(", ")}`:"PNG / JPEG / WebP..."),g=gt(()=>new Set(e.spineObject.bones.map(N=>N.parent).filter(N=>!!N))),v=gt(()=>new Map(e.spineObject.bones.map(N=>[N.name,N]))),b=gt(()=>e.spineObject.bones.filter(N=>{var E;const O=h.value.trim().toLocaleLowerCase();if(O)return N.name.toLocaleLowerCase().includes(O);let X=N.parent;for(;X;){if(o.value.has(X))return!1;X=((E=v.value.get(X))==null?void 0:E.parent)||null}return!0})),y=gt(()=>g.value.size>0&&[...g.value].every(N=>o.value.has(N)));function w(N){const O=e.spineObject.selectedBone===N;for(const X of t.spines)X.selectedBone="";O||(e.spineObject.selectedBone=N)}function A(N){o.value.has(N)?o.value.delete(N):o.value.add(N)}function M(){o.value=y.value?new Set:new Set(g.value)}function _(N){var O;return((O=N.target.files)==null?void 0:O[0])||null}function R(N){l.value=_(N)}function P(N){c.value=_(N)}function F(N){u.value=Array.from(N.target.files||[])}function I(N){return N.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function k(N){const O=Array.from(N.target.files||[]);if(!O.length)return;const X=O.filter(K=>/\.(json|skel)$/i.test(K.name)),E=O.filter(K=>/\.atlas$/i.test(K.name)),V=O.filter(K=>/\.(png|jpe?g|webp|wepb)$/i.test(K.name)),q=E.map(K=>({atlas:K,skeleton:X.find(fe=>I(fe)===I(K))})).find(K=>K.skeleton),W=(q==null?void 0:q.skeleton)||X[0]||null,J=(q==null?void 0:q.atlas)||E[0]||null;if(l.value=W,c.value=J,u.value=V,!W||!J||!V.length){const K=[!W&&"JSON / SKEL",!J&&"Atlas",!V.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${K}`;return}await U()}function B(){t.recalcTotalFrames()}function D(){B(),t.timeline.frame=0}async function U(){var X;const N=l.value,O=c.value;if(!N||!O||!u.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const E=await bw(N,O,u.value);Eu(e.spineObject.id,E),e.spineObject.skeletonFileName=N.name,e.spineObject.atlasFileName=O.name,e.spineObject.textureFileNames=u.value.map(V=>V.name),e.spineObject.dataVersion=E.dataVersion,e.spineObject.animations=E.animations,e.spineObject.bones=E.bones,e.spineObject.selectedBone="",h.value="",o.value=new Set,e.spineObject.selectedAnimation=((X=E.animations[0])==null?void 0:X.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",B(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await kP(N,O,u.value)}catch(V){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",V)}}catch(E){e.spineObject.status="error",e.spineObject.error=E instanceof Error?E.message:String(E)}}function L(){ql(e.spineObject.id),l.value=null,c.value=null,u.value=[],i.value&&(i.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),a.value&&(a.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.selectedBone="",h.value="",o.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",B()}return(N,O)=>(ie(),oe("div",DF,[O[30]||(O[30]=T("div",{class:"editor-title"},"Spine 属性",-1)),T("label",NF,[O[15]||(O[15]=T("span",null,"Spine 名称",-1)),be(T("input",{"onUpdate:modelValue":O[0]||(O[0]=X=>s.spineObject.name=X)},null,512),[[ut,s.spineObject.name]])]),T("div",UF,[T("label",XF,[O[16]||(O[16]=T("span",null,"X 位置",-1)),be(T("input",{"onUpdate:modelValue":O[1]||(O[1]=X=>s.spineObject.x=X),type:"number"},null,512),[[ut,s.spineObject.x,void 0,{number:!0}]])]),T("label",VF,[O[17]||(O[17]=T("span",null,"Y 位置",-1)),be(T("input",{"onUpdate:modelValue":O[2]||(O[2]=X=>s.spineObject.y=X),type:"number"},null,512),[[ut,s.spineObject.y,void 0,{number:!0}]])]),T("label",YF,[O[18]||(O[18]=T("span",null,"旋转",-1)),be(T("input",{"onUpdate:modelValue":O[3]||(O[3]=X=>s.spineObject.rotation=X),type:"number"},null,512),[[ut,s.spineObject.rotation,void 0,{number:!0}]])])]),T("div",$F,[T("label",GF,[O[19]||(O[19]=T("span",null,"Scale X",-1)),be(T("input",{"onUpdate:modelValue":O[4]||(O[4]=X=>s.spineObject.scaleX=X),type:"number",step:"0.05"},null,512),[[ut,s.spineObject.scaleX,void 0,{number:!0}]])]),T("label",HF,[O[20]||(O[20]=T("span",null,"Scale Y",-1)),be(T("input",{"onUpdate:modelValue":O[5]||(O[5]=X=>s.spineObject.scaleY=X),type:"number",step:"0.05"},null,512),[[ut,s.spineObject.scaleY,void 0,{number:!0}]])]),T("label",jF,[O[21]||(O[21]=T("span",null,"开始时间",-1)),be(T("input",{"onUpdate:modelValue":O[6]||(O[6]=X=>s.spineObject.timeOffset=X),type:"number",min:"0",step:"0.033333",onChange:B},null,544),[[ut,s.spineObject.timeOffset,void 0,{number:!0}]])])]),O[31]||(O[31]=T("div",{class:"divider"},null,-1)),O[32]||(O[32]=T("div",{class:"section-title"},"Spine 资源",-1)),T("input",{ref_key:"skeletonInput",ref:i,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:R},null,544),T("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:P},null,544),T("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:F},null,544),T("input",{ref_key:"folderInput",ref:a,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:k},null,544),T("button",{class:"folder-select",disabled:s.spineObject.status==="loading",onClick:O[7]||(O[7]=X=>{var E;return(E=a.value)==null?void 0:E.click()})},"选择文件夹并加载",8,WF),O[33]||(O[33]=T("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),T("div",zF,[T("div",{class:"asset-name",title:d.value},je(d.value||"JSON / SKEL..."),9,qF),T("button",{onClick:O[8]||(O[8]=X=>{var E;return(E=i.value)==null?void 0:E.click()})},"选择")]),T("div",KF,[T("div",{class:"asset-name",title:f.value},je(f.value||"Atlas..."),9,ZF),T("button",{onClick:O[9]||(O[9]=X=>{var E;return(E=n.value)==null?void 0:E.click()})},"选择")]),T("div",JF,[T("div",{class:"asset-name",title:p.value.join(", ")},je(m.value),9,QF),T("button",{onClick:O[10]||(O[10]=X=>{var E;return(E=r.value)==null?void 0:E.click()})},"选择(多选)")]),T("div",e3,[T("button",{class:"load",disabled:s.spineObject.status==="loading",onClick:U},je(s.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,t3),T("button",{class:"clear",onClick:L},"清除")]),T("div",i3,[O[22]||(O[22]=ri(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),s.spineObject.dataVersion?(ie(),oe("span",s3," · 当前资源 "+je(s.spineObject.dataVersion),1)):Xe("",!0)]),s.spineObject.error?(ie(),oe("div",n3,je(s.spineObject.error),1)):Xe("",!0),T("div",r3,[O[25]||(O[25]=T("div",{class:"section-title"},"Spine 动画",-1)),s.spineObject.animations.length?(ie(),oe("label",o3,[O[24]||(O[24]=T("span",null,"时间轴播放动画",-1)),be(T("select",{"onUpdate:modelValue":O[11]||(O[11]=X=>s.spineObject.selectedAnimation=X),onChange:D},[O[23]||(O[23]=T("option",{value:""},"无",-1)),(ie(!0),oe(Ke,null,li(s.spineObject.animations,X=>(ie(),oe("option",{key:X.name,value:X.name},je(X.name)+"("+je(X.duration.toFixed(2))+"s) ",9,l3))),128))],544),[[jt,s.spineObject.selectedAnimation]])])):(ie(),oe("div",a3,"无可用动画"))]),T("div",c3,[T("div",h3,[O[29]||(O[29]=T("div",{class:"section-title"},"层级树",-1)),T("button",{class:ot(["selected-bone",{active:s.spineObject.selectedBone}]),disabled:!s.spineObject.selectedBone,title:s.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:O[12]||(O[12]=X=>s.spineObject.selectedBone="")},[s.spineObject.selectedBone?(ie(),oe(Ke,{key:0},[O[26]||(O[26]=ri("清除选中骨骼:",-1)),T("strong",null,je(s.spineObject.selectedBone),1)],64)):(ie(),oe(Ke,{key:1},[O[27]||(O[27]=ri("当前骨骼:",-1)),O[28]||(O[28]=T("strong",null,"未选择",-1))],64))],10,u3),s.spineObject.bones.length?(ie(),oe("button",{key:0,class:"tree-action",onClick:M},je(y.value?"全部展开":"全部折叠"),1)):Xe("",!0)]),s.spineObject.bones.length?(ie(),oe("div",f3,[be(T("input",{"onUpdate:modelValue":O[13]||(O[13]=X=>h.value=X),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[ut,h.value,void 0,{trim:!0}]]),h.value?(ie(),oe("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:O[14]||(O[14]=X=>h.value="")},"✕")):Xe("",!0)])):(ie(),oe("div",d3,"未加载 Spine")),s.spineObject.bones.length&&!b.value.length?(ie(),oe("div",m3,"未找到匹配的骨骼")):s.spineObject.bones.length?(ie(),oe("div",p3,[(ie(!0),oe(Ke,null,li(b.value,X=>(ie(),oe("div",{key:X.name,class:ot(["bone",{selected:s.spineObject.selectedBone===X.name}]),style:Li({paddingLeft:`${6+X.depth*16}px`}),role:"button",tabindex:"0",onClick:E=>w(X.name),onKeydown:Ta(xt(E=>w(X.name),["prevent"]),["enter"])},[g.value.has(X.name)?(ie(),oe("button",{key:0,class:"bone-toggle",title:o.value.has(X.name)?"展开子骨骼":"折叠子骨骼",onClick:xt(E=>A(X.name),["stop"])},je(o.value.has(X.name)?"▸":"▾"),9,v3)):(ie(),oe("span",y3,"•")),T("span",x3,je(X.name),1)],46,g3))),128))])):Xe("",!0)])]))}}),w3=an(b3,[["__scopeId","data-v-9257fb45"]]),xi=Ba({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let Bc=0;function S3(s){return new Promise(e=>window.setTimeout(e,s))}function Kv(s,e){const t=++Bc,i=performance.now();Object.assign(xi,{visible:!0,title:s,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(a,o)=>{t===Bc&&(xi.indeterminate=a==null,a!=null&&(xi.progress=Math.min(100,Math.max(0,a))),o&&(xi.detail=o))},r=async(a,o)=>{if(t!==Bc)return;xi.failed=a,xi.indeterminate=!1,xi.progress=a?xi.progress:100,xi.detail=o,await S3(Math.max(180,(a?850:450)-(performance.now()-i))),t===Bc&&(xi.visible=!1)};return{update:n,paint:()=>new Promise(a=>requestAnimationFrame(()=>a())),finish:(a="已完成")=>r(!1,a),fail:(a="操作失败")=>r(!0,a)}}async function _3(s,e){if(!s.body)return e(null),s.text();const t=Number(s.headers.get("content-length")),i=Number.isFinite(t)&&t>0,n=s.body.getReader(),r=new TextDecoder;let a=0,o="";for(e(i?0:null);;){const{done:h,value:l}=await n.read();if(h)break;a+=l.byteLength,o+=r.decode(l,{stream:!0}),e(i?Math.min(1,a/t):null)}return o+=r.decode(),i&&e(1),o}const M3="3.8";function Bs(s,e,t){s[e]==null&&s[t]!=null&&(s[e]=s[t]),delete s[t]}function Pm(s){if(!s||typeof s!="object")return;if(Array.isArray(s)){for(const t of s)Pm(t);return}const e=s;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))Pm(t)}function T3(s){for(const e of s.bones)Bs(e,"transform","inherit");for(const e of s.transform||[])Bs(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),Bs(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of s.path||[])Bs(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of s.skins)for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&Bs(i,"deform","timelines")}function A3(s){for(const e of Object.values(s.slots||{}))Bs(e,"color","rgba"),Bs(e,"twoColor","rgba2")}function E3(s){for(const e of Object.values(s.bones||{}))for(const t of e.rotate||[])Bs(t,"angle","value")}function C3(s){for(const e of Object.values(s.transform||{}))for(const t of e)Bs(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),Bs(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function I3(s){for(const e of Object.values(s.path||{})){for(const t of["position","spacing"])for(const i of e[t]||[])Bs(i,t,"value");for(const t of e.mix||[])Bs(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function R3(s){if(!s.attachments)return;const e=s.deform||(s.deform={});for(const[t,i]of Object.entries(s.attachments)){const n=e[t]||(e[t]={});for(const[r,a]of Object.entries(i)){const o=n[r]||(n[r]={});for(const[h,l]of Object.entries(a))l.deform&&(o[h]=l.deform)}}delete s.attachments}function P3(s){s.skeleton.spine=M3,T3(s);for(const e of Object.values(s.animations))A3(e),E3(e),C3(e),I3(e),R3(e);return Pm(s.animations),s}function k3(s,e,t,i){const n=t.frame-e.frame,r=n<=0?0:(s.frame-e.frame)/n;let a=0;for(let o=0;o[...i].sort((a,o)=>a-o);let r=!0;for(;r;){r=!1;const a=n();for(let o=0;ou&&(u=f,c=d)}c>=0&&(i.add(c),r=!0)}}return n().map(a=>s[a])}function Zv(s,e,t,i,n){const r=t-e+1;if(r<2)return 0;const a=n?e:t,o=n?e+1:t-1,h=n?e+2:t-2,l=Math.abs(s[o].frame-s[a].frame);if(r>=3&&l>0&&Math.abs(Math.abs(s[h].frame-s[o].frame)-l)<1e-6){const u=s[a].values[i],d=s[o].values[i],f=s[h].values[i];return n?(-3*u+4*d-f)/(2*l):(3*u-4*d+f)/(2*l)}const c=s[o].frame-s[a].frame;return c?(s[o].values[i]-s[a].values[i])/c:0}function Jv(s,e,t){const i=s[t].frame-s[e].frame,n=[];for(let r=0;rd.values[r])),l=Math.max(...s.slice(e,t+1).map(d=>d.values[r])),c=a+Zv(s,e,t,r,!0)*i/3,u=o-Zv(s,e,t,r,!1)*i/3;n.push([Math.max(h,Math.min(l,c)),Math.max(h,Math.min(l,u))])}return{values:n}}function F3(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function O3(s,e,t,i,n){const r=t.frame-e.frame,a=r<=0?0:(s.frame-e.frame)/r;let o=0;for(let h=0;h[...i].sort((o,h)=>o-h);let r=!0;for(;r;){r=!1;const o=n();for(let h=0;hf&&(f=m,d=p)}d>=0&&(i.add(d),r=!0)}}const a=n();return{samples:a.map(o=>s[o]),controls:a.slice(0,-1).map((o,h)=>Jv(s,o,a[h+1]))}}function B3(s){if(!s.length)return[];const e=[s[0]];for(let t=1;t180;)i-=360;for(;i-e[t-1]<-180;)i+=360;e.push(i)}return e}function Mi(s){if(!Number.isFinite(s))return 0;const e=Math.round(s*1e5)/1e5;return Object.is(e,-0)?0:e}function L3(s,e,t,i){const n=Math.max(2,Math.min(16,Math.round(Number(s.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(s.trailGridCols)||2))),a=Math.max(2,t.length),o=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),h=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),l=(Number(e.rotation)||0)*Math.PI/180,c=Math.cos(l),u=Math.sin(l),d=[],f=[],p=[],m=[],g=[];for(let y=0;y=0;y--)g.push({col:y,row:n-1});for(let y=n-2;y>=1;y--)g.push({col:0,row:y});const v=g.length;for(let y=1;y|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function Fw(s,e){let t=s,i=2;for(;e.has(t);)t=`${s}_${i++}`;return e.add(t),t}function N3(s){return s.replace(/\.[^./\\]+$/,"")}function Ow(s,e){return N3([s,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function U3(s){var i,n;const e=Number(((i=s==null?void 0:s.orig)==null?void 0:i.width)??(s==null?void 0:s.width))||0,t=Number(((n=s==null?void 0:s.orig)==null?void 0:n.height)??(s==null?void 0:s.height))||0;return{width:e,height:t}}function Dc(s){return Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function sy(s,e){return[(s>>16&255)/255,(s>>8&255)/255,(s&255)/255,Math.max(0,Math.min(1,e))]}function xl(s,e){return Mi(s/e)}function X3(s,e){const t=s.config,i=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+i:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+i:r=n+Vr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function Yh(s,e){return e?s.boneName:`${s.spawnId??"legacy"}_${s.boneName}`}function V3(s,e,t){const i=new Set;for(const n of s)for(const r of n)i.add(Yh(r,e));return[...i].sort().map((n,r)=>({key:n,name:Fw(`_particle_${String(r).padStart(3,"0")}`,t),states:s.map(a=>a.find(o=>Yh(o,e)===n)||null)}))}function Y3(s,e,t,i){const n=e*t/i,r=Math.min(s.states.length-1,Math.max(0,Math.floor(n))),a=Math.min(s.states.length-1,r+1),o=s.states[r],h=s.states[a];if(!o||!h||Yh(o,!0)!==Yh(h,!0)||o.spawnId!==h.spawnId)return o;const l=n-r;if(l<=1e-6)return o;const c=(d,f)=>(d??0)+((f??d??0)-(d??0))*l,u=o.trailState&&h.trailState&&o.trailState.resourceId===h.trailState.resourceId?{...o.trailState,width:c(o.trailState.width,h.trailState.width),alpha:c(o.trailState.alpha,h.trailState.alpha),bones:o.trailState.bones.map((d,f)=>{const p=h.trailState.bones[f]||d;return{...d,worldX:c(d.worldX??d.x,p.worldX??p.x),worldY:c(d.worldY??d.y,p.worldY??p.y),worldRotation:c(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:o.trailState;return{...o,worldX:c(o.worldX,h.worldX),worldY:c(o.worldY,h.worldY),worldRotation:c(o.worldRotation,h.worldRotation),worldScaleX:c(o.worldScaleX,h.worldScaleX),worldScaleY:c(o.worldScaleY,h.worldScaleY),alpha:c(o.alpha,h.alpha),trailState:u}}function ny(s,e){return!s||s==="跟随导出"?e.keyframeCurve:s==="贝塞尔"?"bezier":"linear"}function eo(s,e,t,i,n,r=new Set,a=n.keyframeCurve){if(!s.length)return[];const o=a==="bezier"&&n.spineVersion!=="3.8"?kw(s,i,r):{samples:Pw(s,i,r),controls:[]},h=o.samples.map(l=>{const c={time:xl(l.frame,e)};return t.forEach((u,d)=>{c[u]=Mi(l.values[d])}),c});for(let l=0;l0&&n&&e.add(t-1),i&&e.add(t))}return e}function G3(s){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),i&&e.add(t))}return e}function H3(s,e){var i;if(!s.shapeEnabled||!((i=s.shapeCurve)!=null&&i.length))return 1;const t=[...s.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{r!==n&&(i.push(t(r,a)),n=r)}),i}function W3(s,e,t){const i=s.imageMode==="sequence"?s.sequenceFrames[e]:void 0,n=(i==null?void 0:i.name)||s.textureName||`image_${s.id}`,r=(i==null?void 0:i.texture)||s.texture,a=U3(r);(!a.width||!a.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const o=a.width||1,h=a.height||1;return{path:Ow(s.textureFolder,n),x:Mi((.5-s.anchorX)*o),y:Mi((s.anchorY-.5)*h),width:Mi(o),height:Mi(h)}}function z3(s,e,t,i,n=i.keyframeCurve){if(!s.length)return[];const r=new Set;for(let c=1;c({frame:u,values:c})),o=1/255,h=n==="bezier"&&i.spineVersion!=="3.8"?kw(a,[o,o,o,.01],r):{samples:Pw(a,[o,o,o,.01],r),controls:[]},l=h.samples.map(c=>({time:xl(c.frame,t),color:`${Dc(c.values[0])}${Dc(c.values[1])}${Dc(c.values[2])}${Dc(c.values[3])}`}));if(h.controls.length)for(let c=0;c({time:xl(d,n),name:u??null}));h.length&&(o.attachment=h);const l=z3(i,t,n,r,a);l.length&&(o.rgba=l)}function ay(s){var p;const e=s.settings,t=Math.max(1,Number(s.timeline.fps)||30),i=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?i:t,r=[],a=s.systems.filter(m=>m.visible!==!1),o={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(o.skeleton.fps=i);const h=o.skins[0].attachments,l=new Set(["root"]),c=[...new Set([...s.timeline.animations.length?s.timeline.animations:["animation"],...a.map(m=>m.animation||"animation")])],u=new Map;for(const m of a){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,X3(m,t)),v=(m.frames||[]).slice(0,g);v.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const b=Fw(D3(m.config.name,`system_${m.id}`),l);o.bones.push({name:b,parent:"root"});const y=V3(v,e.bonePool,l),w=Math.max(0,(g-1)/t),A=Math.max(1,Math.ceil(w*n)+1),M=u.get(m.animation)||[];M.push({system:m,tracks:y,targetFrames:A}),u.set(m.animation,M);for(const _ of y){o.bones.push({name:_.name,parent:b});const R=new Set(m.config.imageResources.map(k=>k.blend));for(const k of R){const B=`${_.name}_image_${k}`;o.slots.push({name:B,bone:_.name,color:"ffffff00",blend:Qv[k]});const D=h[B]||(h[B]={});for(const U of m.config.imageResources.filter(L=>L.blend===k)){const L=U.imageMode==="sequence"?Math.max(1,U.sequenceFrames.length):1;for(let N=0;N{var X;return((X=O==null?void 0:O.trailState)==null?void 0:X.resourceId)===k.id}))continue;const B=Math.max(2,Math.min(16,Math.round(k.boneCount||3))),D=[];for(let O=0;Oo.bones.findIndex(X=>X.name===O)),N=Ow("",k.textureName||`trail_${k.id}`);(h[U]||(h[U]={}))[`trail_${k.id}`]=L3(m.config,k,L,N),k.texture||r.push({code:"missing-image",message:`拖尾图片“${k.textureName||k.id}”缺失,已保留路径。`})}const P=`${_.name}_image_`,F=`${_.name}_trail_`,I=o.slots.filter(k=>String(k.name).startsWith(P)||String(k.name).startsWith(F));I.length&&(o.slots=o.slots.filter(k=>!I.includes(k)),o.slots.push(...I.filter(k=>String(k.name).startsWith(F)),...I.filter(k=>String(k.name).startsWith(P))))}}for(const m of c){const g=u.get(m)||[],v={bones:{},slots:{}};let b=!1;for(const{system:y,tracks:w,targetFrames:A}of g)for(const M of w){const _=Array.from({length:A},(E,V)=>Y3(M,V,t,n)),R=_.map(E=>!!(E!=null&&E.active)),P=[],F=[],I=[];_.forEach((E,V)=>{E!=null&&E.active&&(P.push({frame:V,values:[E.worldX??E.x,E.worldY??E.y]}),F.push(E.worldRotation??E.rotation),I.push({frame:V,values:[E.worldScaleX??E.scaleX,E.worldScaleY??E.scaleY]}))});const k=B3(F),B=P.map((E,V)=>({frame:E.frame,values:[k[V]??0]})),D=$3(_),U={},L=eo(P,n,["x","y"],[ey,ey],e,D),N=eo(B,n,["value"],[iy],e,D),O=eo(I,n,["x","y"],[Lc,Lc],e,D);L.length&&(U.translate=L),N.length&&(U.rotate=N),O.length&&(U.scale=O),Object.keys(U).length&&(v.bones[M.name]=U,b=!0);const X=new Set(y.config.imageResources.map(E=>E.blend));for(const E of X){const V=[],q=[];let W=16777215;for(let me=0;meTe.id===we.resourceId):void 0,ge=!!we&&R[me]&&we.imageVisible!==!1&&(Ee==null?void 0:Ee.blend)===E;we&&(Ee==null?void 0:Ee.blend)===E&&(W=we.colorHex),V.push(ge?`image_${Ee.id}_${we.imageFrameIndex??0}`:null),q.push(sy(W,ge?we.alpha:0))}const K=y.config.imageResources.filter(me=>me.blend===E).filter(me=>me.independentAlpha==="curve").map(me=>ny(me.alphaCurveMode,e)),fe=K.length?K.includes("bezier")?"bezier":"linear":ny(y.config.alphaMode==="curve"?y.config.curveMode:void 0,e);ry(v,`${M.name}_image_${E}`,V,q,n,e,fe),V.some(Boolean)&&(b=!0)}if(y.config.trail)for(const E of y.config.trailResources){const V=Math.max(2,Math.min(16,Math.round(E.boneCount||3))),q=_.map(Te=>{var G;return((G=Te==null?void 0:Te.trailState)==null?void 0:G.resourceId)===E.id?Te.trailState:void 0}),W=q.find(Te=>!!Te);if(!W)continue;const J=G3(q),K=E.widthSizeMode==="random"?Math.max(1,Number(E.widthMin)||0,Number(E.widthMax)||0):Math.max(.001,Number(E.width)||100);let fe=W;const me=q.map(Te=>(Te&&(fe=Te),fe));for(let Te=0;Te{const Oe=Le==null?void 0:Le.bones[Math.min(Le.bones.length-1,Te)];if(!Oe)return;const tt={x:Oe.worldX??Oe.x,y:Oe.worldY??Oe.y,rotation:Oe.worldRotation??-Oe.rotation};G.push({frame:Re,values:[tt.x,tt.y]}),Z.push({frame:Re,values:[tt.rotation]}),z.push({frame:Re,values:[1,Math.max(0,Le.width/K)*te]})});const he=`${M.name}_trail_${E.id}_${Te}`,ve={},le=eo(G,n,["x","y"],[ty,ty],e,j),ye=eo(Z,n,["value"],[iy],e,j),ae=eo(z,n,["x","y"],[Lc,Lc],e,j);le.length&&(ve.translate=le),ye.length&&(ve.rotate=ye),ae.length&&(ve.scale=ae),Object.keys(ve).length&&(v.bones[he]=ve)}const we=q.map(()=>`trail_${E.id}`);let Ee=W.colorHex;const ge=q.map(Te=>(Te&&(Ee=Te.colorHex),sy(Ee,Te?Te.alpha:0)));ry(v,`${M.name}_trail_${E.id}`,we,ge,n,e),b=!0}}(b||!e.excludeEmptyAnimations)&&(o.animations[m]=v)}!Object.keys(o.animations).length&&!e.excludeEmptyAnimations&&(o.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?P3(o):o,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:a.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function q3(s,e){const t=new Blob([s.text],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");n.href=i,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}class w8{constructor(){x(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class K3{constructor(){x(this,"entries",{});x(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new _s){return t.setFromString(e)}};x(_s,"WHITE",new _s(1,1,1,1)),x(_s,"RED",new _s(1,0,0,1)),x(_s,"GREEN",new _s(0,1,0,1)),x(_s,"BLUE",new _s(0,0,1,1)),x(_s,"MAGENTA",new _s(1,0,1,1));let bt=_s;const di=class di{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*di.degRad)}static sinDeg(e){return Math.sin(e*di.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*di.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return di.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){const n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};x(di,"epsilon",1e-5),x(di,"epsilon2",di.epsilon*di.epsilon),x(di,"PI",3.1415927),x(di,"PI2",di.PI*2),x(di,"invPI2",1/di.PI2),x(di,"radiansToDegrees",180/di.PI),x(di,"radDeg",di.radiansToDegrees),x(di,"degreesToRadians",di.PI/180),x(di,"degRad",di.degreesToRadians);let Ve=di;const Ps=class Ps{apply(e,t,i){return t===void 0||i===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(i)}};x(Ps,"linear",new class extends Ps{applyInternal(e){return e}}),x(Ps,"smooth",new class extends Ps{applyInternal(e){return e*e*(3-2*e)}}),x(Ps,"slowFast",new class extends Ps{applyInternal(e){return e*e}}),x(Ps,"fastSlow",new class extends Ps{applyInternal(e){return(e-1)*(e-1)*-1+1}}),x(Ps,"circle",new class extends Ps{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let Ao=Ps;class Z3 extends Ao{constructor(t){super();x(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class S8 extends Z3{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const Fr=class Fr{static arrayCopy(e,t,i,n,r){for(let a=t,o=n;a=t?e:Fr.setArraySize(e,t,i)}static newArray(e,t){const i=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class T8{constructor(e=32){x(this,"values");x(this,"addedValues",0);x(this,"lastValue",0);x(this,"mean",0);x(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{c.width=parseInt(i[1]),c.height=parseInt(i[2])},n.format=()=>{},n.filter=c=>{c.minFilter=lt.enumValue(Ro,i[1]),c.magFilter=lt.enumValue(Ro,i[2])},n.repeat=c=>{i[1].indexOf("x")!==-1&&(c.uWrap=Po.Repeat),i[1].indexOf("y")!==-1&&(c.vWrap=Po.Repeat)},n.pma=c=>{c.pma=i[1]==="true"};var r={};r.xy=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2])},r.size=c=>{c.width=parseInt(i[1]),c.height=parseInt(i[2])},r.bounds=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2]),c.width=parseInt(i[3]),c.height=parseInt(i[4])},r.offset=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2])},r.orig=c=>{c.originalWidth=parseInt(i[1]),c.originalHeight=parseInt(i[2])},r.offsets=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2]),c.originalWidth=parseInt(i[3]),c.originalHeight=parseInt(i[4])},r.rotate=c=>{const u=i[1];u==="true"?c.degrees=90:u!=="false"&&(c.degrees=parseInt(u))},r.index=c=>{c.index=parseInt(i[1])};let a=t.readLine();for(;a&&a.trim().length===0;)a=t.readLine();for(;!(!a||a.trim().length===0||t.readEntry(i,a)===0);)a=t.readLine();let o=null,h=null,l=null;for(;a!==null;)if(a.trim().length===0)o=null,a=t.readLine();else if(o){const c=new Lw(o,a);for(;;){const u=t.readEntry(i,a=t.readLine());if(u===0)break;const d=r[i[0]];if(d)d(c);else{h||(h=[]),l||(l=[]),h.push(i[0]);const f=[];for(let p=0;p0&&l&&l.length>0&&(c.names=h,c.values=l,h=null,l=null),c.u=c.x/o.width,c.v=c.y/o.height,c.degrees===90?(c.u2=(c.x+c.height)/o.width,c.v2=(c.y+c.width)/o.height):(c.u2=(c.x+c.width)/o.width,c.v2=(c.y+c.height)/o.height),this.regions.push(c)}else{for(o=new tO(a.trim());t.readEntry(i,a=t.readLine())!==0;){const c=n[i[0]];c&&c(o)}this.pages.push(o)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const i=t.indexOf(":");if(i===-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){const a=t.indexOf(",",r);if(a===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,a-r).trim(),r=a+1,n===4)return 4}}}class tO{constructor(e){x(this,"name");x(this,"minFilter",Ro.Nearest);x(this,"magFilter",Ro.Nearest);x(this,"uWrap",Po.ClampToEdge);x(this,"vWrap",Po.ClampToEdge);x(this,"texture",null);x(this,"width",0);x(this,"height",0);x(this,"pma",!1);x(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class Lw extends Bw{constructor(t,i){super();x(this,"page");x(this,"name");x(this,"x",0);x(this,"y",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"originalWidth",0);x(this,"originalHeight",0);x(this,"index",0);x(this,"degrees",0);x(this,"names",null);x(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}}const qh=class qh{constructor(e){x(this,"name");x(this,"timelineAttachment");x(this,"timelineSlots",qh.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,i){let n=e[t];if(n.bone.isActive()){const r=(i?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,a=this.timelineSlots.length;r>1)*h;const l=i.appliedPose.deform;let c=this.vertices;const u=this.bones;if(!u){l.length>0&&(c=l);const m=i.bone.appliedPose,g=m.worldX,v=m.worldY,b=m.a,y=m.b,w=m.c,A=m.d;for(let M=n,_=o;_=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let i=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return uo._nextID++}};x(uo,"_nextID",0);let Fo=uo;var Gi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(Gi||(Gi={}));const Dw=[Gi.hold,Gi.once,Gi.loop,Gi.pingpong,Gi.onceReverse,Gi.loopReverse,Gi.pingpongReverse];class Op{constructor(e,t,i){x(this,"name");x(this,"timelines",[]);x(this,"timelineIds");x(this,"bones");x(this,"color",new bt(1,1,1,1));x(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=i,this.timelineIds=new K3,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const i=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-i;return n-i}};function iO(s){return typeof s=="object"&&s!==null&&typeof s.slotIndex=="number"}class Xa extends ii{constructor(t,i,...n){super(t,...n);x(this,"curves");this.curves=lt.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const i=this.getFrameCount()+t*18;if(this.curves.length>i){const n=lt.newFloatArray(i);lt.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,a,o,h,l,c,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[i]=2+p);const m=(r-o*2+l)*.03,g=(a-h*2+c)*.03,v=((o-l)*3-r+u)*.006,b=((h-c)*3-a+d)*.006;let y=m*2+v,w=g*2+b,A=(o-r)*.3+m+v*.16666667,M=(h-a)*.3+g+b*.16666667,_=r+A,R=a+M;for(let P=p+18;pt){const c=this.frames[i],u=this.frames[i+n];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}const o=r+18;for(r+=2;r=t){const c=a[r-2],u=a[r-1];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}i+=this.getFrameEntries();const h=a[o-2],l=a[o-1];return l+(t-h)/(this.frames[i]-h)*(this.frames[i+n]-l)}}class rr extends Xa{constructor(e,t,i){super(e,t,i)}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){const t=this.frames;let i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}const n=this.curves[i>>1];switch(n){case 0:{const r=t[i],a=t[i+1];return a+(e-r)/(t[i+2]-r)*(t[i+2+1]-a)}case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r,a){if(e>2];switch(f){case 0:{const p=u[d];h=u[d+1],l=u[d+2],c=u[d+3];const m=(i-p)/(u[d+4]-p);h+=(u[d+4+1]-h)*m,l+=(u[d+4+2]-l)*m,c+=(u[d+4+3]-c)*m;break}case 1:h=u[d+1],l=u[d+2],c=u[d+3];break;default:h=this.getBezierValue(i,d,1,f-2),l=this.getBezierValue(i,d,2,f+18-2),c=this.getBezierValue(i,d,3,f+36-2)}if(n!==1)if(r===it.setup){const p=e.data.setupPose.color;h=p.r+(h-p.r)*n,l=p.g+(l-p.g)*n,c=p.b+(c-p.b)*n}else h=o.r+(h-o.r)*n,l=o.g+(l-o.g)*n,c=o.b+(c-o.b)*n;o.r=h<0?0:h>1?1:h,o.g=l<0?0:l>1?1:l,o.b=c<0?0:c>1?1:c}}class Kw extends rr{constructor(t,i,n){super(t,i,`${yt.alpha}|${n}`);x(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,a,o,h,l,c){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(c?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class Zw extends Pu{constructor(e,t,i){super(e,t,i,`${yt.rgb}|${i}`,`${yt.alpha}|${i}`,`${yt.rgb2}|${i}`)}getFrameEntries(){return 8}setFrame(e,t,i,n,r,a,o,h,l){e<<=3,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=a,this.frames[e+5]=o,this.frames[e+6]=h,this.frames[e+7]=l}apply1(e,t,i,n,r,a){const o=t.color,h=t.darkColor;let l=0,c=0,u=0;const d=this.frames;if(i>3];switch(b){case 0:{const y=d[v];f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],c=d[v+6],u=d[v+7];const w=(i-y)/(d[v+8]-y);f+=(d[v+8+1]-f)*w,p+=(d[v+8+2]-p)*w,m+=(d[v+8+3]-m)*w,g+=(d[v+8+4]-g)*w,l+=(d[v+8+5]-l)*w,c+=(d[v+8+6]-c)*w,u+=(d[v+8+7]-u)*w;break}case 1:f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],c=d[v+6],u=d[v+7];break;default:f=this.getBezierValue(i,v,1,b-2),p=this.getBezierValue(i,v,2,b+18-2),m=this.getBezierValue(i,v,3,b+36-2),g=this.getBezierValue(i,v,4,b+54-2),l=this.getBezierValue(i,v,5,b+72-2),c=this.getBezierValue(i,v,6,b+90-2),u=this.getBezierValue(i,v,7,b+108-2)}if(n===1)o.set(f,p,m,g);else if(r===it.setup){const y=e.data.setupPose;let w=y.color;o.set(w.r+(f-w.r)*n,w.g+(p-w.g)*n,w.b+(m-w.b)*n,w.a+(g-w.a)*n),w=y.darkColor,l=w.r+(l-w.r)*n,c=w.g+(c-w.g)*n,u=w.b+(u-w.b)*n}else o.add((f-o.r)*n,(p-o.g)*n,(m-o.b)*n,(g-o.a)*n),l=h.r+(l-h.r)*n,c=h.g+(c-h.g)*n,u=h.b+(u-h.b)*n;h.r=l<0?0:l>1?1:l,h.g=c<0?0:c>1?1:c,h.b=u<0?0:u>1?1:u}}class Jw extends Pu{constructor(e,t,i){super(e,t,i,`${yt.rgb}|${i}`,`${yt.rgb2}|${i}`)}getFrameEntries(){return 7}setFrame(e,t,i,n,r,a,o,h){e*=7,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=a,this.frames[e+5]=o,this.frames[e+6]=h}apply1(e,t,i,n,r,a){const o=t.color,h=t.darkColor;let l=0,c=0,u=0,d=0,f=0,p=0;const m=this.frames;if(i1?1:l,o.g=c<0?0:c>1?1:c,o.b=u<0?0:u>1?1:u,h.r=d<0?0:d>1?1:d,h.g=f<0?0:f>1?1:f,h.b=p<0?0:p>1?1:p}}class bl extends ii{constructor(t,i){super(t,`${yt.attachment}|${i}`);x(this,"slotIndex",0);x(this,"attachmentNames");this.slotIndex=i,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.attachmentNames[t]=n}apply(t,i,n,r,a,o,h,l,c){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=c?u.appliedPose:u.pose;l||nt){const l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}const a=r+18;for(r+=2;r=t){const l=n[r-2],c=n[r-1];return c+(t-l)/(n[r]-l)*(n[r+1]-c)}const o=n[a-2],h=n[a-1];return h+(1-h)*(t-o)/(this.frames[i+this.getFrameEntries()]-o)}apply(t,i,n,r,a,o,h,l,c){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,c))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const b=ii.search(f,n);g=this.getCurvePercent(n,b),p=this.vertices[b],m=this.vertices[b+1]}const v=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],c,p,m,g,v,a,o,h);for(const b of d)this.applyToSlot(u[b],c,p,m,g,v,a,o,h)}applyBeforeFirst(t,i,n,r){if(!t.bone.active)return;const a=i?t.appliedPose:t.pose;if(a.attachment==null||a.attachment.timelineAttachment!==this.attachment)return;const o=a.deform;switch(o.length===0&&(r=it.setup),r){case it.setup:o.length=0;break;case it.first:{if(n===1){o.length=0;return}const h=this.vertices[0].length;o.length=h;const l=o,c=a.attachment;if(c.bones===null){const u=c.vertices;for(let d=0;d>4,c=h.attachment.sequence.regions.length;const u=Dw[a&15];if(u!==Gi.hold)switch(l+=(n-r)/o+1e-5|0,u){case Gi.once:l=Math.min(c-1,l);break;case Gi.loop:l%=c;break;case Gi.pingpong:{const d=(c<<1)-2;l=d===0?0:l%d,l>=c&&(l=d-l);break}case Gi.onceReverse:l=Math.max(c-1-l,0);break;case Gi.loopReverse:l=c-1-l%c;break;case Gi.pingpongReverse:{const d=(c<<1)-2;l=d===0?0:(l+c-1)%d,l>=c&&(l=d-l)}}h.sequenceIndex=l}};x(ks,"ENTRIES",3),x(ks,"MODE",1),x(ks,"DELAY",2);let Hh=ks;const Zh=class Zh extends ii{constructor(t){super(t,...Zh.propertyIds);x(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i.time,this.events[t]=i}apply(t,i,n,r,a,o,h,l,c){if(!r)return;const u=this.frames,d=this.frames.length;if(i>n)this.apply(null,i,Number.MAX_VALUE,r,0,o,!1,!1,!1),i=-1;else if(i>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};x(Zh,"propertyIds",[`${yt.event}`]);let Xl=Zh;const fo=class fo extends ii{constructor(t){super(t,...fo.propertyIds);x(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,a,o,h,l,c){const u=c?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(l||n>2];switch(b){case 0:{const w=f[v];p=f[v+1],m=f[v+2],g=f[v+3];const A=(n-w)/(f[v+4]-w);p+=(f[v+4+1]-p)*A,m+=(f[v+4+2]-m)*A,g+=(f[v+4+3]-g)*A;break}case 1:p=f[v+1],m=f[v+2],g=f[v+3];break;default:p=this.getBezierValue(n,v,1,b-2),m=this.getBezierValue(n,v,2,b+18-2),g=this.getBezierValue(n,v,3,b+36-2)}const y=o===it.setup?u.data.setupPose:d;h?(d.mixRotate=y.mixRotate+p*a,d.mixX=y.mixX+m*a,d.mixY=y.mixY+g*a):(d.mixRotate=y.mixRotate+(p-y.mixRotate)*a,d.mixX=y.mixX+(m-y.mixX)*a,d.mixY=y.mixY+(g-y.mixY)*a)}}class Jr extends Jl{constructor(e,t,i,n){super(e,t,i,n)}apply(e,t,i,n,r,a,o,h,l){if(o&&!this.additive&&(o=!1),this.constraintIndex===-1){const c=i>=this.frames[0]?this.getCurveValue(i):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=l?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(i,r,a,o,this.get(f),this.get(d.data.setupPose),c))}}else{const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;this.set(u,this.getAbsoluteValue(i,r,a,o,this.get(u),this.get(c.data.setupPose)))}}}}class rS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class aS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class oS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class lS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class cS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class hS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class uS extends Jr{constructor(e,t,i){super(e,t,i,yt.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Jh=class Jh extends ii{constructor(t,i){super(t,...Jh.propertyIds);x(this,"constraintIndex");this.constraintIndex=i,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,a,o,h,l,c){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],a,o,!1,!1,!1),i=-1;else if(i>=d[d.length-1])return;if(!(n=d[ii.search(d,i)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};x(Jh,"propertyIds",[yt.physicsConstraintReset.toString()]);let jh=Jh;class dS extends Jl{constructor(e,t,i){super(e,t,i,yt.sliderTime)}apply(e,t,i,n,r,a,o,h,l){const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;u.time=this.getAbsoluteValue(i,r,a,o,u.time,c.data.setupPose.time)}}}class fS extends Jl{constructor(e,t,i){super(e,t,i,yt.sliderMix),this.additive=!0}apply(e,t,i,n,r,a,o,h,l){const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;u.mix=this.getAbsoluteValue(i,r,a,o,u.mix,c.data.setupPose.mix)}}}const _l=class _l{constructor(e){x(this,"data");x(this,"tracks",[]);x(this,"timeScale",1);x(this,"unkeyedState",0);x(this,"events",[]);x(this,"listeners",[]);x(this,"queue",new aO(this));x(this,"propertyIds",new Map);x(this,"animationsChanged",!1);x(this,"trackEntryPool",new J3(()=>new rO));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=a,r.delay>0)continue;a=-r.delay,r.delay=0}let o=r.next;if(o){const h=r.trackLast-o.delay;if(h>=0){for(o.delay=0,o.trackTime+=r.timeScale===0?0:(h/r.timeScale+e)*o.timeScale,r.trackTime+=a,this.setTrack(i,o,!0);o.mixingFrom;)o.mixTime+=e,o=o.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let h=r.mixingFrom;for(r.mixingFrom=null,h&&(h.mixingTo=null);h;)this.queue.end(h),h=h.mixingFrom}r.trackTime+=a}this.queue.drain()}updateMixingFrom(e,t){const i=e.mixingFrom;if(!i)return!0;const n=this.updateMixingFrom(i,t);if(i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(i.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),i.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(i)}return n}return i.trackTime+=t*i.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,i=this.tracks;let n=!1;for(let o=0,h=i.length;o0)continue;n=!0;let c=l.alpha;l.mixingFrom?c*=this.applyMixingFrom(l,e):l.trackTime>=l.trackEnd&&!l.next&&(c=0);let u=l.animationLast,d=l.getAnimationTime(),f=d,p=t;l.reverse&&(f=l.animation.duration-f,p=null);const m=l.animation.timelines,g=m.length;if(o===0&&c===1)for(let v=0;v=l.alphaAttachmentThreshold,y=l.additive,w=y||l.shortestRotation,A=!w&&l.timelinesRotation.length!==g<<1;A&&(l.timelinesRotation.length=g<<1);for(let M=0;M0?h/o:a,c=i.animation.timelines,u=c.length,d=i.timelineMode,f=i.timelineHoldMix,p=r=i.alphaAttachmentThreshold);else{const B=!m||!(P instanceof Hr)||I===it.current;P.apply(t,w,M,_,k,I,g,B,!1)}}return i.reverse&&r0&&this.queueEvents(i,A),this.events.length=0,i.nextAnimationLast=A,i.nextTrackLast=i.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){const a=t.slots[e.slotIndex];if(!a.bone.active||!r&&a.attachmentState===this.unkeyedState+fy)return;let o=i=0,A=v>=0;Math.abs(b)<=90&&Ve.signum(b)!==Ve.signum(g)&&(Math.abs(v-y)>180?(m+=360*Ve.signum(v),A=w):y!==0?m-=360*Ve.signum(v):A=w),A!==w&&(m+=360*Ve.signum(v)),a[o]=m}a[o+1]=g,c.rotation=f+m*n}queueEvents(e,t){const i=e.animationStart,n=e.animationEnd,r=n-i,a=e.reverse;let o=e.trackLast%r;a&&(o=r-o);const h=this.events;let l=0,c=h.length;for(;l=i&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=i&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,i){const n=e.animation.duration,r=n-t,a=n-i,o=e.animation.timelines;for(let h=0,l=e.animation.timelines.length;h=a){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=a);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){const n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,i){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){return typeof t=="string"?this.setAnimation1(e,t,i):this.setAnimation2(e,t,i)}setAnimation1(e,t,i=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,i)}setAnimation2(e,t,i=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const a=this.trackEntry(e,t,i,r);return this.setTrack(e,a,n),this.queue.drain(),a}addAnimation(e,t,i=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,i,n):this.addAnimation2(e,t,i,n)}addAnimation1(e,t,i=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,i,n)}addAnimation2(e,t,i=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const a=this.trackEntry(e,t,i,r);return r?(r.next=a,a.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-a.mixDuration,0))):(this.setTrack(e,a,!0),this.queue.drain(),n<0&&(n=0)),a.delay=n,a}setEmptyAnimation(e,t=0){const i=this.setAnimation(e,_l.emptyAnimation,!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){const n=this.addAnimation(e,_l.emptyAnimation,!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0&&(a[d]=v);break}}h&&(g=g&~Nc|r[d]&Nc),r[d]=g}}from(e,t,i){const n=this.propertyIds;let r=oO;for(let a=0,o=i.length;a= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};x(_l,"emptyAnimation",new Op("",[],0));let ly=_l;class rO{constructor(){x(this,"animation",null);x(this,"previous",null);x(this,"next",null);x(this,"mixingFrom",null);x(this,"mixingTo",null);x(this,"listener",null);x(this,"trackIndex",0);x(this,"loop",!1);x(this,"additive",!1);x(this,"reverse",!1);x(this,"shortestRotation",!1);x(this,"keepHold",!1);x(this,"eventThreshold",0);x(this,"mixAttachmentThreshold",0);x(this,"alphaAttachmentThreshold",0);x(this,"mixDrawOrderThreshold",0);x(this,"animationStart",0);x(this,"animationEnd",0);x(this,"animationLast",0);x(this,"nextAnimationLast",0);x(this,"delay",0);x(this,"trackTime",0);x(this,"trackLast",0);x(this,"nextTrackLast",0);x(this,"trackEnd",0);x(this,"timeScale",0);x(this,"alpha",0);x(this,"mixTime",0);x(this,"mixDuration",0);x(this,"totalAlpha",0);x(this,"mixInterpolation",Ao.linear);x(this,"timelineMode",[]);x(this,"timelineHoldMix",[]);x(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===Ao.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=Ao.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class aO{constructor(e){x(this,"objects",[]);x(this,"drainDisabled",!1);x(this,"animState");this.animState=e}start(e){this.objects.push(gs.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(gs.interrupt),this.objects.push(e)}end(e){this.objects.push(gs.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(gs.dispose),this.objects.push(e)}complete(e){this.objects.push(gs.complete),this.objects.push(e)}event(e,t){this.objects.push(gs.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,i,n,r,a;if(!this.drainDisabled){this.drainDisabled=!0;for(let o=0;o= 0.");if(!i)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const i=new Fu(this.index,this.name,t);return i.length=this.length,i.setupPose.set(this.setupPose),i}}var mi;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(mi||(mi={}));class km{constructor(){x(this,"bone");x(this,"x",0);x(this,"y",0);x(this,"rotation",0);x(this,"scaleX",0);x(this,"scaleY",0);x(this,"shearX",0);x(this,"shearY",0);x(this,"inherit",mi.Normal);x(this,"a",0);x(this,"b",0);x(this,"c",0);x(this,"d",0);x(this,"worldY",0);x(this,"worldX",0);x(this,"world",0);x(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,i=this.scaleX,n=this.scaleY,r=this.shearX,a=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ve.degRad,m=(t+90+a)*Ve.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const o=this.bone.parent.appliedPose;let h=o.a,l=o.b,c=o.c,u=o.d;switch(this.worldX=h*this.x+l*this.y+o.worldX,this.worldY=c*this.x+u*this.y+o.worldY,this.inherit){case mi.Normal:{const d=(t+r)*Ve.degRad,f=(t+90+a)*Ve.degRad,p=Math.cos(d)*i,m=Math.cos(f)*n,g=Math.sin(d)*i,v=Math.sin(f)*n;this.a=h*p+l*g,this.b=h*m+l*v,this.c=c*p+u*g,this.d=c*m+u*v;return}case mi.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ve.degRad,m=(t+90+a)*Ve.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f;break}case mi.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;h*=p,c*=m;let g=h*h+c*c,v=0;g>Ve.epsilon2?(g=Math.abs(h*u*m-l*p*c)/g,l=c*g,u=h*g,v=t-Ve.atan2Deg(c,h)):(h=0,c=0,v=t-90+Ve.atan2Deg(u,l));const b=(v+r)*Ve.degRad,y=(v+a+90)*Ve.degRad,w=Math.cos(b)*i,A=Math.cos(y)*n,M=Math.sin(b)*i,_=Math.sin(y)*n;this.a=(h*w-l*M)*d,this.b=(h*A-l*_)*d,this.c=(c*w+u*M)*f,this.d=(c*A+u*_)*f;break}case mi.NoScale:case mi.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ve.degRad,v=Math.cos(g),b=Math.sin(g);let y=(h*v+l*b)*p,w=(c*v+u*b)*m;const A=1/Math.sqrt(y*y+w*w);y*=A,w*=A;let M=-w,_=y;this.inherit===mi.NoScale&&h*u-l*c<0!=(d<0!=f<0)&&(M=-M,_=-_);const R=r*Ve.degRad,P=(90+a)*Ve.degRad,F=Math.cos(R)*i,I=Math.cos(P)*n,k=Math.sin(R)*i,B=Math.sin(P)*n;this.a=(y*F+M*k)*d,this.b=(y*I+M*B)*d,this.c=(w*F+_*k)*f,this.d=(w*I+_*B)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,i=e.scaleY;if(!this.bone.parent){const v=1/t,b=1/i;this.x=(this.worldX-e.x)*v,this.y=(this.worldY-e.y)*b,this.set5(this.a*v,this.b*v,this.c*b,this.d*b,0);return}const n=this.bone.parent.appliedPose;let r=n.a,a=n.b,o=n.c,h=n.d;const l=r*h-a*o,c=1/(r*h-a*o),u=h*c,d=a*c,f=o*c,p=r*c,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case mi.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case mi.OnlyTranslation:{const v=1/t,b=1/i;this.set5(this.a*v,this.b*v,this.c*b,this.d*b,0);break}case mi.NoRotationOrReflection:{const v=1/t,b=1/i;r*=v,o*=b;const y=this.a*v,w=this.b*v,A=this.c*b,M=this.d*b,_=1/(r*r+o*o),R=1/Math.abs(l*v*b);this.set5((r*y+o*A)*_,(r*w+o*M)*_,(r*A-o*y)*R,(r*M-o*w)*R,Ve.atan2Deg(o,r));break}case mi.NoScale:case mi.NoScaleOrReflection:{const v=1/t,b=1/i,y=this.a*v,w=this.b*v,A=this.c*b,M=this.d*b;let _=h*this.a-a*this.c,R=r*this.c-o*this.a;l<0&&(_=-_,R=-R);let P=Ve.atan2Deg(R,_);this.rotation=P,P*=Ve.degRad;const F=Math.cos(P),I=Math.sin(P);let k=(r*F+a*I)*v,B=(o*F+h*I)*b;const D=1/Math.sqrt(k*k+B*B);k*=D,B*=D;const U=this.inherit===mi.NoScale&&l<0!=(t<0!=i<0)?-1:1;this.set4(k*y+B*A,k*w+B*M,(k*A-B*y)*U,(k*M-B*w)*U)}}}set4(e,t,i,n){const r=e*e+i*i,a=t*t+n*n;r>Ve.epsilon2?(this.shearX=Ve.atan2Deg(i,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(a),a>Ve.epsilon2?(this.shearY=Ve.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,i,n,r){this.shearX=0;const a=e*e+i*i,o=t*t+n*n;if(a>Ve.epsilon2){const h=Ve.atan2Deg(i,e);this.rotation=h+r,this.scaleX=Math.sqrt(a),this.scaleY=Math.sqrt(o),o>Ve.epsilon2?(this.shearY=Ve.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90-h):this.shearY-=90+h,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(o),this.shearY=0,this.rotation=o>Ve.epsilon2?Ve.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const i=this.bone.children;for(let n=0,r=i.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,i,n,r,a,o,h,l,c,u){typeof n=="number"?kr.apply1(t,i,n,r,a,o,h,l):kr.apply2(t,i,n,r,a,o,h,l,c,u)}static apply1(t,i,n,r,a,o,h,l){i.modifyLocal(t);const c=i.bone.parent.appliedPose;let u=c.a,d=c.b,f=c.c,p=c.d,m=-i.shearX-i.rotation,g=0,v=0;switch(i.inherit){case mi.OnlyTranslation:g=(n-i.worldX)*Ve.signum(t.scaleX),v=(r-i.worldY)*Ve.signum(t.scaleY);break;case mi.NoRotationOrReflection:{const b=Math.abs(u*p-d*f)/Math.max(Ve.epsilon,u*u+f*f),y=u/t.scaleX,w=f/t.scaleY;d=-w*b*t.scaleX,p=y*b*t.scaleY,m+=Ve.atan2Deg(w,y)}default:{const b=n-c.worldX,y=r-c.worldY,w=u*p-d*f;Math.abs(w)<=Ve.epsilon?(g=0,v=0):(g=(b*p-y*d)/w-i.x,v=(y*u-b*f)/w-i.y)}}if(m+=Ve.atan2Deg(v,g),i.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),i.rotation+=m*l,a||o){switch(i.inherit){case mi.NoScale:case mi.NoScaleOrReflection:g=n-i.worldX,v=r-i.worldY}const b=i.bone.data.length*i.scaleX;if(b>Ve.epsilon){const y=g*g+v*v;if(a&&yb*b){const w=(Math.sqrt(y)/b-1)*l+1;switch(i.scaleX*=w,h){case cs.Uniform:i.scaleY*=w;break;case cs.Volume:i.scaleY/=w<.7?.25+.642857*w:w}}}}}static apply2(t,i,n,r,a,o,h,l,c,u){if(i.inherit!==mi.Normal||n.inherit!==mi.Normal)return;i.modifyLocal(t),n.modifyLocal(t);let d=i.x,f=i.y,p=i.scaleX,m=i.scaleY,g=n.scaleX,v=0,b=0,y=0;p<0?(p=-p,v=180,y=-1):(v=0,y=1),m<0&&(m=-m,y=-y),g<0?(g=-g,b=180):b=0;let w=0,A=0,M=i.a,_=i.b,R=i.c,P=i.d;const F=Math.abs(p-m)<=Ve.epsilon;!F||h?(n.y=0,w=M*n.x+i.worldX,A=R*n.x+i.worldY):(w=M*n.x+_*n.y+i.worldX,A=R*n.x+P*n.y+i.worldY);const I=i.bone.parent.appliedPose;M=I.a,_=I.b,R=I.c,P=I.d;let k=M*P-_*R,B=w-I.worldX,D=A-I.worldY;k=Math.abs(k)<=Ve.epsilon?0:1/k;const U=(B*P-D*_)*k-d,L=(D*M-B*R)*k-f;let N=Math.sqrt(U*U+L*L),O=n.bone.data.length*g,X,E;if(N0){let me=Math.min(1,fe/(c*2))-1;me=(fe-c*(1-me*me))/K,V-=me*V,q-=me*q,W=V*V+q*q}}e:if(F){O*=p;let K=(W-N*N-O*O)/(2*N*O);if(K<-1)K=-1,E=Math.PI*o;else if(K>1){if(K=1,E=0,h)switch(M=(Math.sqrt(W)/(N+O)-1)*u+1,i.scaleX*=M,l){case cs.Uniform:i.scaleY*=M;break;case cs.Volume:i.scaleY/=M<.7?.25+.642857*M:M}}else E=Math.acos(K)*o;M=N+O*K,_=O*Math.sin(E),X=Math.atan2(q*M-V*_,V*M+q*_)}else{M=p*O,_=m*O;const K=M*M,fe=_*_,me=Math.atan2(q,V);R=fe*N*N+K*W-K*fe;const we=-2*fe*N,Ee=fe-K;if(P=we*we-4*Ee*R,P>=0){let ve=Math.sqrt(P);we<0&&(ve=-ve),ve=-(we+ve)*.5;let le=ve/Ee,ye=R/ve;const ae=Math.abs(le)=0){D=Math.sqrt(le)*o,X=me-Math.atan2(D,ae),E=Math.atan2(D/m,(ae-N)/p);break e}}let ge=Ve.PI,Te=N-M,G=Te*Te,Z=0,z=0,j=N+M,te=j*j,he=0;R=-M*N/(K-fe),R>=-1&&R<=1&&(R=Math.acos(R),B=M*Math.cos(R)+N,D=_*Math.sin(R),P=B*B+D*D,Pte&&(z=R,te=P,j=B,he=D)),W<=(G+te)*.5?(X=me-Math.atan2(Z*o,Te),E=ge*o):(X=me-Math.atan2(he*o,j),E=z*o)}const J=Math.atan2(n.y,n.x)*y;X=(X-J)*Ve.radDeg+v-i.rotation,X>180?X-=360:X<=-180&&(X+=360),i.rotation+=X*u,E=((E+J)*Ve.radDeg-n.shearX)*y+b-n.rotation,E>180?E-=360:E<=-180&&(E+=360),n.rotation+=E*u}}class Qc extends ec{constructor(t){super(t,new Fm);x(this,"bones",[]);x(this,"_target",null);x(this,"_scaleYMode",cs.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new kr(this,t)}}class Om{constructor(){x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class eh extends ec{constructor(t){super(t,new Om);x(this,"bones",[]);x(this,"_slot",null);x(this,"positionMode",Ln.Fixed);x(this,"spacingMode",Pi.Fixed);x(this,"rotateMode",Ra.Chain);x(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new Bm(this,t)}}var Ln;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(Ln||(Ln={}));var Pi;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(Pi||(Pi={}));var Ra;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Ra||(Ra={}));const js=class js extends Ql{constructor(t,i){super(t,new Om,new Om);x(this,"data");x(this,"bones");x(this,"slot");x(this,"spaces",[]);x(this,"positions",[]);x(this,"world",[]);x(this,"curves",[]);x(this,"lengths",[]);x(this,"segments",[]);if(!i)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(i.bones[n.index].constrainedPose);this.slot=i.slots[t.slot.index]}copy(t){var i=new js(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.slot.appliedPose.attachment;if(!(n instanceof Vl))return;const r=this.appliedPose,a=r.mixRotate,o=r.mixX,h=r.mixY;if(a===0&&o===0&&h===0)return;const l=this.data,c=l.rotateMode===Ra.Tangent,u=l.rotateMode===Ra.ChainScale,d=this.bones,f=d.length,p=c?f:f+1,m=lt.setArraySize(this.spaces,p),g=u?this.lengths=lt.setArraySize(this.lengths,f):[],v=r.spacing;switch(l.spacingMode){case Pi.Percent:if(u)for(let _=0,R=p-1;_0){_=p/_*v;for(let R=1;R0?Ve.degRad:-Ve.degRad}for(let _=0,R=3;_0){let D=P.a,U=P.b,L=P.c,N=P.d,O=0,X=0,E=0;if(c?O=b[R-1]:m[_+1]===0?O=b[R+2]:O=Math.atan2(B,k),O-=Math.atan2(L,D),M){X=Math.cos(O),E=Math.sin(O);const V=P.bone.data.length;y+=(V*(X*D-E*L)-k)*a,w+=(V*(E*D+X*L)-B)*a}else O+=A;O>Ve.PI?O-=Ve.PI2:O<-Ve.PI&&(O+=Ve.PI2),O*=a,X=Math.cos(O),E=Math.sin(O),P.a=X*D-E*L,P.b=X*U-E*N,P.c=E*D+X*L,P.d=E*U+X*N}}}computeWorldPositions(t,i,n,r){const a=this.slot;let o=this.appliedPose.position,h=this.spaces,l=lt.setArraySize(this.positions,n*3+2),c=this.world;const u=i.closed;let d=i.worldVerticesLength,f=d/6,p=js.NONE;if(!i.constantSpeed){const E=i.lengths;f-=u?1:2;const V=E[f];this.data.positionMode===Ln.Percent&&(o*=V);let q;switch(this.data.spacingMode){case Pi.Percent:q=V;break;case Pi.Proportional:q=V/n;break;default:q=1}c=lt.setArraySize(this.world,8);for(let W=0,J=0,K=0;WV){p!==js.AFTER&&(p=js.AFTER,i.computeWorldVertices(t,a,d-6,4,c,0,2)),this.addAfterPosition(me-V,c,0,l,J);continue}for(;;K++){const we=E[K];if(!(me>we)){if(K===0)me/=we;else{const Ee=E[K-1];me=(me-Ee)/(we-Ee)}break}}K!==p&&(p=K,u&&K===f?(i.computeWorldVertices(t,a,d-4,4,c,0,2),i.computeWorldVertices(t,a,0,4,c,4,2)):i.computeWorldVertices(t,a,K*6+2,8,c,0,2)),this.addCurvePosition(me,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],l,J,r||W>0&&fe===0)}return l}u?(d+=2,c=lt.setArraySize(this.world,d),i.computeWorldVertices(t,a,2,d-4,c,0,2),i.computeWorldVertices(t,a,0,2,c,d-4,2),c[d-2]=c[0],c[d-1]=c[1]):(f--,d-=4,c=lt.setArraySize(this.world,d),i.computeWorldVertices(t,a,2,d,c,0,2));const m=lt.setArraySize(this.curves,f);let g=0,v=c[0],b=c[1],y=0,w=0,A=0,M=0,_=0,R=0,P=0,F=0,I=0,k=0,B=0,D=0,U=0,L=0;for(let E=0,V=2;Eg){this.addAfterPosition(K-g,c,d-4,l,V);continue}for(;;q++){const fe=m[q];if(!(K>fe)){if(q===0)K/=fe;else{const me=m[q-1];K=(K-me)/(fe-me)}break}}if(q!==p){p=q;let fe=q*6;for(v=c[fe],b=c[fe+1],y=c[fe+2],w=c[fe+3],A=c[fe+4],M=c[fe+5],_=c[fe+6],R=c[fe+7],P=(v-y*2+A)*.03,F=(b-w*2+M)*.03,I=((y-A)*3-v+_)*.006,k=((w-M)*3-b+R)*.006,B=P*2+I,D=F*2+k,U=(y-v)*.3+P+I*.16666667,L=(w-b)*.3+F+k*.16666667,X=Math.sqrt(U*U+L*L),O[0]=X,fe=1;fe<8;fe++)U+=B,L+=D,B+=I,D+=k,X+=Math.sqrt(U*U+L*L),O[fe]=X;U+=B,L+=D,X+=Math.sqrt(U*U+L*L),O[8]=X,U+=B+I,L+=D+k,X+=Math.sqrt(U*U+L*L),O[9]=X,W=0}for(K*=X;;W++){const fe=O[W];if(!(K>fe)){if(W===0)K/=fe;else{const me=O[W-1];K=W+(K-me)/(fe-me)}break}}this.addCurvePosition(K*.1,v,b,y,w,A,M,_,R,l,V,r||E>0&&J===0)}return l}addBeforePosition(t,i,n,r,a){const o=i[n],h=i[n+1],l=i[n+2]-o,c=i[n+3]-h,u=Math.atan2(c,l);r[a]=o+t*Math.cos(u),r[a+1]=h+t*Math.sin(u),r[a+2]=u}addAfterPosition(t,i,n,r,a){const o=i[n+2],h=i[n+3],l=o-i[n],c=h-i[n+1],u=Math.atan2(c,l);r[a]=o+t*Math.cos(u),r[a+1]=h+t*Math.sin(u),r[a+2]=u}addCurvePosition(t,i,n,r,a,o,h,l,c,u,d,f){if(t===0||Number.isNaN(t)){u[d]=i,u[d+1]=n,u[d+2]=Math.atan2(a-n,r-i);return}const p=t*t,m=p*t,g=1-t,v=g*g,b=v*g,y=g*t,w=y*3,A=g*w,M=w*t,_=i*b+r*A+o*M+l*m,R=n*b+a*A+h*M+c*m;u[d]=_,u[d+1]=R,f&&(t<.001?u[d+2]=Math.atan2(a-n,r-i):u[d+2]=Math.atan2(R-(n*v+a*y*2+h*p),_-(i*v+r*y*2+o*p)))}sort(t){const i=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,i,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,i,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,a=this.bones.length;for(let o=0;o0,o=this.data.y>0,h=this.data.rotate>0||this.data.shearX>0,l=this.data.scaleX>0,c=this.bone;let u=c.bone.data.length,d=this.data.step,f=0;if(i!==ga.none){switch(c.modifyWorld(t),i){case ga.reset:this.reset(t);case ga.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=c.worldX,v=c.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=v;else{let b=this.remaining,y=n.inertia,w=t.data.referenceScale,A=-1,M=0,_=0,R=this.data.limit*p,P=R*Math.abs(t.scaleY);if(R*=Math.abs(t.scaleX),a||o){if(a){const F=(this.ux-g)*y;this.xOffset+=F>R?R:F<-R?-R:F,this.ux=g}if(o){const F=(this.uy-v)*y;this.yOffset+=F>P?P:F<-P?-P:F,this.uy=v}if(b>=d){const F=this.xOffset,I=this.yOffset;A=n.damping**(60*d),M=d*n.massInverse,_=n.strength;const k=w*n.wind,B=w*n.gravity,D=(k*t.windX+B*t.gravityX)*t.scaleX,U=(k*t.windY+B*t.gravityY)*t.scaleY;do a&&(this.xVelocity+=(D-this.xOffset*_)*M,this.xOffset+=this.xVelocity*d,this.xVelocity*=A),o&&(this.yVelocity-=(U+this.yOffset*_)*M,this.yOffset+=this.yVelocity*d,this.yVelocity*=A),b-=d;while(b>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-I}f=Math.max(0,1-b/d),a&&(c.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),o&&(c.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(h||l){let F=Math.atan2(c.c,c.a),I=0,k=0,B=0,D=this.cx-c.worldX,U=this.cy-c.worldY;if(D>R?D=R:D<-R&&(D=-R),U>P?U=P:U<-P&&(U=-P),b=this.remaining,h){B=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let L=Math.atan2(U+this.ty,D+this.tx)-F-(this.rotateOffset-f)*B;this.rotateOffset+=(L-Math.ceil(L*Ve.invPI2-.5)*Ve.PI2)*y,L=(this.rotateOffset-f)*B+F,I=Math.cos(L),k=Math.sin(L),l&&(L=u*c.getWorldScaleX(),L>0&&(this.scaleOffset+=(D*I+U*k)*y/L))}else{I=Math.cos(F),k=Math.sin(F);const L=u*c.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);L>0&&(this.scaleOffset+=(D*I+U*k)*y/L)}if(b>=d){A===-1&&(A=n.damping**(60*d),M=d*n.massInverse,_=n.strength);const L=n.wind*t.windX+n.gravity*t.gravityX,N=(n.wind*t.windY+n.gravity*t.gravityY)*Nm.yDir,O=this.rotateOffset,X=this.scaleOffset,E=u/w;for(;;)if(b-=d,l&&(this.scaleVelocity+=(L*I-N*k-this.scaleOffset*_)*M,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=A),h){if(this.rotateVelocity-=((L*k+N*I)*E+this.rotateOffset*_)*M,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=A,b0){let b=0;this.data.rotate>0&&(b=p*this.data.rotate,m=Math.sin(b),g=Math.cos(b),v=c.b,c.b=g*v-m*c.d,c.d=m*v+g*c.d),b+=p*this.data.shearX,m=Math.sin(b),g=Math.cos(b),v=c.a,c.a=g*v-m*c.c,c.c=m*v+g*c.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),v=c.a,c.a=g*v-m*c.c,c.c=m*v+g*c.c,v=c.b,c.b=g*v-m*c.d,c.d=m*v+g*c.d}if(l){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(c.a*=p,c.c*=p,this.data.scaleYMode){case cs.Uniform:c.b*=p,c.d*=p;break;case cs.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,c.b*=p,c.d*=p}}i!==ga.pose&&(this.tx=u*c.a,this.ty=u*c.c)}}sort(t){const i=this.bone.bone;t.sortBone(i),t._updateCache.push(this),t.sortReset(i.children),t.constrained(i)}isSourceActive(){return this.bone.bone.active}}class th extends ec{constructor(t){super(t,new Lm);x(this,"_bone",null);x(this,"x",0);x(this,"y",0);x(this,"rotate",0);x(this,"scaleX",0);x(this,"shearX",0);x(this,"limit",0);x(this,"step",0);x(this,"inertiaGlobal",!1);x(this,"strengthGlobal",!1);x(this,"dampingGlobal",!1);x(this,"massGlobal",!1);x(this,"windGlobal",!1);x(this,"gravityGlobal",!1);x(this,"mixGlobal",!1);x(this,"_scaleYMode",cs.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new Ou(this,t)}}typeof Math.fround>"u"&&(Math.fround=(s=>e=>(s[0]=e,s[0]))(new Float32Array(1)));class Um{constructor(){x(this,"time",0);x(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const Ml=class Ml extends Ql{constructor(t,i){super(t,new Um,new Um);x(this,"bone",null);if(!i)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=i.bones[t.bone.index])}copy(t){var i=new Ml(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,a=r.animation,o=this.bone;if(o!==null){if(!o.active)return;r.local&&o.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,o.appliedPose,r.local,Ml.offsets)-r.property.offset)*r.scale,r.loop?n.time=a.duration+n.time%a.duration:n.time=Math.max(0,n.time)}const h=t.bones,l=a.bones;for(let c=0,u=a.bones.length;c=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let i=0;i= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Wh;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Wh||(Wh={}));class Ym{constructor(){x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Vp extends Ql{constructor(t,i){super(t,new Ym,new Ym);x(this,"bones");x(this,"source");if(!i)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(i.bones[r.index].constrainedPose);const n=i.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var i=new Vp(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,a=r.localSource,o=r.localTarget,h=r.additive,l=r.clamp,c=r.offsets,u=this.source.appliedPose;a&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[Gt.ROTATION]:-n[Gt.ROTATION]);return o<0&&(o+=360),o}}class xS extends Xo{mix(e){return e.mixRotate}apply(e,t,i,n,r,a){if(r)i.rotation+=(a?n:n-i.rotation)*t.mixRotate;else{const o=e.scaleX,h=e.scaleY,l=1/o,c=1/h,u=i.a*l,d=i.b*l,f=i.c*c,p=i.d*c;n*=Ve.degRad,a||(n-=Math.atan2(f,u)),n>Ve.PI?n-=Ve.PI2:n<-Ve.PI&&(n+=Ve.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);i.a=(m*u-g*f)*o,i.b=(m*d-g*p)*o,i.c=(g*u+m*f)*h,i.d=(g*d+m*p)*h}}}class Gm extends Uo{value(e,t,i,n){return i?t.x+n[Gt.X]:(n[Gt.X]*t.a+n[Gt.Y]*t.b+t.worldX)/e.scaleX}}class bS extends Xo{mix(e){return e.mixX}apply(e,t,i,n,r,a){r?i.x+=(a?n:n-i.x)*t.mixX:(a||(n-=i.worldX/e.scaleX),i.worldX+=n*t.mixX*e.scaleX)}}class Hm extends Uo{value(e,t,i,n){return i?t.y+n[Gt.Y]:(n[Gt.X]*t.c+n[Gt.Y]*t.d+t.worldY)/e.scaleY}}class wS extends Xo{mix(e){return e.mixY}apply(e,t,i,n,r,a){r?i.y+=(a?n:n-i.y)*t.mixY:(a||(n-=i.worldY/e.scaleY),i.worldY+=n*t.mixY*e.scaleY)}}class jm extends Uo{value(e,t,i,n){if(i)return t.scaleX+n[Gt.SCALEX];const r=t.a/e.scaleX,a=t.c/e.scaleY;return Math.sqrt(r*r+a*a)+n[Gt.SCALEX]}}class SS extends Xo{mix(e){return e.mixScaleX}apply(e,t,i,n,r,a){if(r)a?i.scaleX*=1+(n-1)*t.mixScaleX:i.scaleX!==0&&(i.scaleX+=(n-i.scaleX)*t.mixScaleX);else if(a){const o=1+(n-1)*t.mixScaleX;i.a*=o,i.c*=o}else{let o=i.a/e.scaleX,h=i.c/e.scaleY,l=Math.sqrt(o*o+h*h);l!==0&&(l=1+(n-l)*t.mixScaleX/l,i.a*=l,i.c*=l)}}}class Wm extends Uo{value(e,t,i,n){if(i)return t.scaleY+n[Gt.SCALEY];const r=t.b/e.scaleX,a=t.d/e.scaleY;return Math.sqrt(r*r+a*a)+n[Gt.SCALEY]}}class _S extends Xo{mix(e){return e.mixScaleY}apply(e,t,i,n,r,a){if(r)a?i.scaleY*=1+(n-1)*t.mixScaleY:i.scaleY!==0&&(i.scaleY+=(n-i.scaleY)*t.mixScaleY);else if(a){const o=1+(n-1)*t.mixScaleY;i.b*=o,i.d*=o}else{let o=i.b/e.scaleX,h=i.d/e.scaleY,l=Math.sqrt(o*o+h*h);l!==0&&(l=1+(n-l)*t.mixScaleY/l,i.b*=l,i.d*=l)}}}class zm extends Uo{value(e,t,i,n){if(i)return t.shearY+n[Gt.SHEARY];const r=1/e.scaleX,a=1/e.scaleY;return(Math.atan2(t.d*a,t.b*r)-Math.atan2(t.c*a,t.a*r))*Ve.radDeg-90+n[Gt.SHEARY]}}class MS extends Xo{mix(e){return e.mixShearY}apply(e,t,i,n,r,a){if(r)a||(n-=i.shearY),i.shearY+=n*t.mixShearY;else{const o=e.scaleX,h=e.scaleY,l=i.b/o,c=i.d/h,u=Math.atan2(c,l);n=(n+90)*Ve.degRad,a?n-=Ve.PI/2:(n-=u-Math.atan2(i.c/h,i.a/o),n>Ve.PI?n-=Ve.PI2:n<-Ve.PI&&(n+=Ve.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(l*l+c*c);i.b=Math.cos(n)*d*o,i.d=Math.sin(n)*d*h}}}class P8{constructor(e){x(this,"scale",1);x(this,"attachmentLoader");x(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new vS;i.name="";const n=new cO(e),r=n.readInt32(),a=n.readInt32();i.hash=a===0&&r===0?null:a.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;const o=n.readBoolean();o&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let h=0;h=n.readInt(!0);for(let p=0;p>5;for(let w=0,A;w>1&1,v.spacingMode=b>>2&3,v.rotateMode=b>>4&3,(b&128)!==0&&(v.offsetRotation=n.readFloat());const y=v.setupPose;y.position=n.readFloat(),v.positionMode===Ln.Fixed&&(y.position*=t),y.spacing=n.readFloat(),(v.spacingMode===Pi.Length||v.spacingMode===Pi.Fixed)&&(y.spacing*=t),y.mixRotate=n.readFloat(),y.mixX=n.readFloat(),y.mixY=n.readFloat(),c.push(v);break}case FO:{const v=new th(m);v.bone=l[n.readInt(!0)];let b=n.readByte();if(v.skinRequired=(b&1)!==0,(b&2)!==0&&(v.x=n.readFloat()),(b&4)!==0&&(v.y=n.readFloat()),(b&8)!==0&&(v.rotate=n.readFloat()),(b&16)!==0){let w=n.readFloat();w<-2?(v.scaleYMode=cs.Volume,w=-2-w):w<0&&(v.scaleYMode=cs.Uniform,w=-1-w),v.scaleX=w}(b&32)!==0&&(v.shearX=n.readFloat()),v.limit=((b&64)!==0?n.readFloat():5e3)*t,v.step=1/n.readUnsignedByte();const y=v.setupPose;y.inertia=n.readFloat(),y.strength=n.readFloat(),y.damping=n.readFloat(),y.massInverse=(b&128)!==0?n.readFloat():1,y.wind=n.readFloat(),y.gravity=n.readFloat(),b=n.readByte(),(b&1)!==0&&(v.inertiaGlobal=!0),(b&2)!==0&&(v.strengthGlobal=!0),(b&4)!==0&&(v.dampingGlobal=!0),(b&8)!==0&&(v.massGlobal=!0),(b&16)!==0&&(v.windGlobal=!0),(b&32)!==0&&(v.gravityGlobal=!0),(b&64)!==0&&(v.mixGlobal=!0),y.mix=(b&128)!==0?n.readFloat():1,c.push(v);break}case OO:{const v=new ya(m),b=n.readByte();if(v.skinRequired=(b&1)!==0,v.loop=(b&2)!==0,v.additive=(b&4)!==0,(b&8)!==0){const y=n.readFloat();o&&(b&64)!==0?v.max=y:v.setupPose.time=y}if((b&16)!==0&&(v.setupPose.mix=(b&32)!==0?n.readFloat():1),(b&64)!==0){v.local=(b&128)!==0,v.bone=l[n.readInt(!0)];const y=n.readFloat();let w=1;switch(n.readByte()){case 0:v.property=new $m;break;case 1:{w=t,v.property=new Gm;break}case 2:{w=t,v.property=new Hm;break}case 3:v.property=new jm;break;case 4:v.property=new Wm;break;case 5:v.property=new zm;break;default:continue}v.property.offset=y*w,v.offset=n.readFloat(),v.scale=n.readFloat()/w}c.push(v);break}}}const d=this.readSkin(n,i,!0,o);d&&(i.defaultSkin=d,i.skins.push(d));{let p=i.skins.length;for(lt.setArraySize(i.skins,h=p+n.readInt(!0));p0){b=[];for(let _=0;_>4,e.readFloat())}r.push(F);break}}}}}const o=i.slots.length,h=e.readInt(!0);if(h>0){const f=new Hr(h);for(let p=0;p0){const f=new Xl(c);for(let p=0;p>>1^-(i&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let hO=class{constructor(e,t,i,n,r,a){x(this,"source");x(this,"skinIndex");x(this,"slotIndex");x(this,"sourceIndex");x(this,"mesh");x(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.sourceIndex=n,this.source=r,this.inheritTimelines=a}};class py{constructor(e=null,t,i=0){x(this,"bones");x(this,"vertices");x(this,"length");this.bones=e,this.vertices=t,this.length=i}}var zn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(zn||(zn={}));function _i(s,e,t,i){t instanceof rr?uO(s,e,t,i):dO(s,e,t,i)}function uO(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i;for(let a=0,o=0,h=t.getFrameCount()-1;t.setFrame(a,n,r),a!==h;a++){const l=s.readFloat(),c=s.readFloat()*i;switch(s.readByte()){case _n:t.setStepped(a);break;case Mn:Lt(s,t,o++,a,0,n,l,r,c,i)}n=l,r=c}e.push(t)}function dO(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i,a=s.readFloat()*i;for(let o=0,h=0,l=t.getFrameCount()-1;t.setFrame(o,n,r,a),o!==l;o++){const c=s.readFloat(),u=s.readFloat()*i,d=s.readFloat()*i;switch(s.readByte()){case _n:t.setStepped(o);break;case Mn:Lt(s,t,h++,o,0,n,c,r,u,i),Lt(s,t,h++,o,1,n,c,a,d,i)}n=c,r=u,a=d}e.push(t)}function gy(s,e){const t=s.readInt(!0);if(t===0)return null;const i=new Array(e).fill(-1),n=new Array(e-t);let r=0,a=0;for(let o=0;o=0;o--)i[o]===-1&&(i[o]=n[--a]);return i}function Lt(s,e,t,i,n,r,a,o,h,l){e.setBezier(t,i,n,r,o,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,a,h)}const fO=0,mO=1,pO=2,gO=3,vO=4,yO=5,xO=6,bO=7,wO=8,SO=9,_O=10,MO=0,TO=1,AO=2,EO=3,CO=4,IO=5,RO=0,PO=1,kO=2,FO=3,OO=4,BO=0,LO=1,DO=0,NO=1,UO=2,XO=0,VO=1,YO=2,$O=4,GO=5,HO=6,jO=7,WO=8,zO=0,qO=1,_n=1,Mn=2;class KO{constructor(e){x(this,"attachmentLoader");x(this,"scale",1);x(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new vS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(i.hash=r.hash,i.version=r.spine,i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height,i.referenceScale=se(r,"referenceScale",100)*t,i.fps=r.fps,i.imagesPath=r.images??null,i.audioPath=r.audio??null),n.bones)for(let a=0;a0&&l.properties.push(M)}l.offsets[Gt.ROTATION]=se(a,"rotation",0),l.offsets[Gt.X]=se(a,"x",0)*t,l.offsets[Gt.Y]=se(a,"y",0)*t,l.offsets[Gt.SCALEX]=se(a,"scaleX",0),l.offsets[Gt.SCALEY]=se(a,"scaleY",0),l.offsets[Gt.SHEARY]=se(a,"shearY",0);const y=l.setupPose;d&&(y.mixRotate=se(a,"mixRotate",1)),f&&(y.mixX=se(a,"mixX",1)),p&&(y.mixY=se(a,"mixY",y.mixX)),m&&(y.mixScaleX=se(a,"mixScaleX",1)),g&&(y.mixScaleY=se(a,"mixScaleY",y.mixScaleX)),v&&(y.mixShearY=se(a,"mixShearY",1)),i.constraints.push(l);break}case"path":{const l=new eh(o);l.skinRequired=h;for(let f=0;f0){const d=i.findConstraint(l,th);if(!d)throw new Error(`Physics constraint not found: ${l}`);u=i.constraints.indexOf(d)}for(const d in c){const f=c[d];let p=f[0];if(!p)continue;const m=f.length;let g,v=0;if(d==="reset"){const b=new jh(m,u);for(let y=0;p!=null;p=f[y+1],y++)b.setFrame(y,se(p,"time",0));r.push(b);continue}switch(d){case"inertia":g=new rS(m,m,u);break;case"strength":g=new aS(m,m,u);break;case"damping":g=new oS(m,m,u);break;case"mass":g=new lS(m,m,u);break;case"wind":g=new cS(m,m,u);break;case"gravity":g=new hS(m,m,u);break;case"mix":{v=1,g=new uS(m,m,u);break}default:continue}ws(r,f,g,v,1)}}if(e.slider)for(const l in e.slider){const c=e.slider[l],u=i.findConstraint(l,ya);if(!u)throw new Error(`Slider not found: ${l}`);const d=i.constraints.indexOf(u);for(const f in c){const p=c[f];if(!p[0])continue;const g=p.length;switch(f){case"time":ws(r,p,new dS(g,g,d),1,1);break;case"mix":ws(r,p,new fS(g,g,d),1,1);break}}}if(e.attachments)for(const l in e.attachments){const c=e.attachments[l],u=i.findSkin(l);if(!u)throw new Error(`Skin not found: ${l}`);for(const d in c){const f=c[d],p=i.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const v=f[g],b=u.getAttachment(m,g);if(!b)throw new Error(`Timeline attachment not found: ${g}`);for(const y in v){const w=v[y];let A=w[0];if(A){if(y==="deform"){const M=b.bones,_=b.vertices,R=M?_.length/3*2:_.length,P=new Qw(w.length,w.length,m,b);let F=se(A,"time",0);for(let I=0,k=0;;I++){let B;const D=se(A,"vertices",null);if(!D)B=M?lt.newFloatArray(R):_;else{B=lt.newFloatArray(R);const O=se(A,"offset",0);if(lt.arrayCopy(D,0,B,O,D.length),n!==1)for(let X=O,E=X+D.length;X=0;l--)r[l]===-1&&(r[l]=a[--h]);return r}function Ut(s,e,t,i,n,r,a,o,h,l){if(s==="stepped")return e.setStepped(i),t;const c=n<<2,u=s[c],d=s[c+1]*l,f=s[c+2],p=s[c+3]*l;return e.setBezier(t,i,n,r,o,u,d,f,p,a,h),t+1}function se(s,e,t){return s[e]!==void 0?s[e]:t}class JO{newRegionAttachment(e,t,i,n){return new Cu(t,i)}newMeshAttachment(e,t,i,n){return new Zl(t,i)}newBoundingBoxAttachment(e,t){return new ew(t)}newPathAttachment(e,t){return new Ul(t)}newPointAttachment(e,t){return new aw(t)}newClippingAttachment(e,t){return new To(t)}}class QO{sequence(e){for(let t=0;t!Number.isInteger(c)||c<0||c>=a))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const o=Number(s.hull)||0;if(!Number.isInteger(o)||o<0||o>a)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(s.edges)&&s.edges.some(c=>!Number.isInteger(c)||c<0||c>=a*2||c%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===i.length)return;let h=0,l=0;for(;h=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);l++}if(h!==n.length||l!==a)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function iB(s,e){var r,a,o,h;const t=Array.isArray(s.bones)?s.bones:[],i=new Map(t.map(l=>[String(l.name||""),l])),n=new Set;for(const l of t){if(l.inherit!=null&&!eB.has(l.inherit))throw new Error(`骨骼“${l.name||""}”的 inherit 值“${l.inherit}”不符合 Spine ${e} JSON 格式`);if(/_particle_\d+_trail_/.test(String(l.name||""))){const c=i.get(String(l.parent||""));if(!c||/_particle_\d+_trail_/.test(String(c.name||"")))throw new Error(`拖尾骨骼“${l.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const l of Array.isArray(s.skins)?s.skins:[]){const c=(l==null?void 0:l.attachments)||{};for(const u of Object.keys(c))for(const d of Object.keys(c[u]||{})){const f=c[u][d];(f==null?void 0:f.type)==="mesh"&&(tB(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((a=f.uvs)==null?void 0:a.length)&&n.add(u))}}for(const l of Object.values(s.animations||{}))for(const c of n){const u=(h=(o=l==null?void 0:l.slots)==null?void 0:o[c])==null?void 0:h.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${c}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function sB(s){var e;if(String(((e=s==null?void 0:s.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of s.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(s.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const i=[t];for(;i.length;){const n=i.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");i.push(...Object.values(n))}}}}function yy(s,e){var a;const t=JSON.parse(s),i=Ph((a=t==null?void 0:t.skeleton)==null?void 0:a.spine);if(!i)throw new Error(`导出版本不受支持,仅支持 Spine ${Mm()}`);if(e&&i!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${i}`);iB(t,i),i==="3.8"&&sB(t);const n=i==="3.8"?xw(JSON.parse(JSON.stringify(t))):t,r=i==="4.3"?new KO(new QO).readSkeletonData(n):new Dh(new JO).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:i,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const TS="http://127.0.0.1:27843";class zh extends Error{constructor(t,i="CONNECTOR_ERROR",n){super(t);x(this,"code");x(this,"pairUrl");this.name="SpineConnectorError",this.code=i,this.pairUrl=n}}function qm(s,e){return String(s||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function nB(s,e){const t=/\.([a-z0-9]{2,5})$/i.exec(s);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function rB(s,e,t){const i=String(s||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>qm(r,"images")),n=qm(e.replace(/\.[^./\\]+$/,""),"image");return[...i,`${n}${nB(e,t)}`].join("/")}async function Cf(s,e,t){if(!s)return null;const i=await fetch(s);if(!i.ok)throw new Error(`无法读取导出图片:${t}`);const n=await i.blob(),r=new Uint8Array(await n.arrayBuffer());let a="";const o=32768;for(let h=0;ha.finally(()=>{i++,e==null||e(i,t.length)});for(const a of s.filter(o=>o.visible!==!1)){for(const o of a.config.imageResources)if(o.imageMode==="sequence"&&o.sequenceFrames.length)for(const h of o.sequenceFrames)t.push(n(Cf(h.previewUrl,o.textureFolder,h.name||o.textureName)));else t.push(n(Cf(o.previewUrl,o.textureFolder,o.textureName)));if(a.config.trail)for(const o of a.config.trailResources)t.push(n(Cf(o.previewUrl,"",o.textureName)))}const r=new Map;for(const a of await Promise.all(t))a&&!r.has(a.path)&&r.set(a.path,a);return[...r.values()]}async function aB(){try{const s=await fetch(`${TS}/v1/health`,{cache:"no-store"});if(!s.ok)throw new Error(`HTTP ${s.status}`);return{available:!0,...await s.json()}}catch(s){return{available:!1,authorized:!1,error:s instanceof Error?s.message:String(s)}}}async function oB(s,e){const t=await AS(s.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),i=JSON.stringify({schemaVersion:1,projectName:s.projectName,spineVersion:s.spineVersion,skeletonJson:s.skeletonJson,images:t});return new Promise((n,r)=>{const a=new XMLHttpRequest;a.open("POST",`${TS}/v1/convert`),a.responseType="blob",a.setRequestHeader("Content-Type","application/json"),a.upload.onprogress=o=>{e==null||e({phase:"upload",progress:o.lengthComputable&&o.total>0?o.loaded/o.total:null})},a.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),a.onprogress=o=>{e==null||e({phase:"download",progress:o.lengthComputable&&o.total>0?o.loaded/o.total:null})},a.onerror=()=>r(new zh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),a.onload=async()=>{const o=a.response;if(a.status<200||a.status>=300){let c={};try{c=JSON.parse(await o.text())}catch{}r(new zh(c.message||`Spine 连接器返回错误:HTTP ${a.status}`,c.code,c.pairUrl));return}const h=a.getResponseHeader("X-Spine-File-Name");let l=`${qm(s.projectName,"SpineParticle")}.zip`;if(h)try{l=decodeURIComponent(h)}catch{}n({blob:o,fileName:l,spineEditorVersion:a.getResponseHeader("X-Spine-Editor-Version")||s.spineVersion,imageCount:t.length})},a.send(i)})}function lB(s,e){const t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.download=/\.zip$/i.test(e)?e:`${e}.zip`,i.style.display="none",document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const cB=Array.from({length:256},(s,e)=>{let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function hB(s){let e=4294967295;for(const t of s)e=cB[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function uB(s){const e=String(s||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function dB(s=new Date){const e=Math.max(1980,s.getFullYear());return{time:s.getHours()<<11|s.getMinutes()<<5|Math.floor(s.getSeconds()/2),date:e-1980<<9|s.getMonth()+1<<5|s.getDate()}}function If(s){const e=new Uint8Array(s);return{bytes:e,view:new DataView(e.buffer)}}function xy(s){const e=new Uint8Array(s.reduce((i,n)=>i+n.length,0));let t=0;for(const i of s)e.set(i,t),t+=i.length;return e}function fB(s){const e=new TextEncoder,t=[],i=[],n=dB();let r=0;for(const h of s){const l=e.encode(uB(h.name)),c=hB(h.data),u=If(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,c,!0),u.view.setUint32(18,h.data.length,!0),u.view.setUint32(22,h.data.length,!0),u.view.setUint16(26,l.length,!0),t.push(u.bytes,l,h.data);const d=If(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,c,!0),d.view.setUint32(20,h.data.length,!0),d.view.setUint32(24,h.data.length,!0),d.view.setUint16(28,l.length,!0),d.view.setUint32(42,r,!0),i.push(d.bytes,l),r+=u.bytes.length+l.length+h.data.length}const a=xy(i),o=If(22);return o.view.setUint32(0,101010256,!0),o.view.setUint16(8,s.length,!0),o.view.setUint16(10,s.length,!0),o.view.setUint32(12,a.length,!0),o.view.setUint32(16,r,!0),new Blob([xy([...t,a,o.bytes])],{type:"application/zip"})}function mB(s){const e=atob(s),t=new Uint8Array(e.length);for(let i=0;ii===".."||/^[a-z]+:/i.test(i))?"images":t.join("/")}function gB(s){return String(s||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function vB(s){const e=await AS(s.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=pB(s.imagesPath);return{blob:fB(e.map(n=>({name:`${t}/${n.path}`,data:mB(n.dataBase64)}))),imageCount:e.length,folder:t}}function yB(s,e){const t=`${gB(e)}-images.zip`,i=URL.createObjectURL(s),n=document.createElement("a");return n.href=i,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3),t}const xB={class:"panel"},bB={class:"panel-scroll"},wB={class:"group config-management"},SB={class:"caret"},_B={class:"group-body config-management-body"},MB={class:"config-toolbar"},TB=["disabled"],AB={value:""},EB=["value"],CB={class:"group"},IB={class:"caret"},RB={class:"scene-actions"},PB=["disabled"],kB={class:"group-body"},FB={class:"tree scene-tree"},OB=["onClick"],BB={class:"tlabel"},LB=["title","aria-label","onClick"],DB={viewBox:"0 0 24 24","aria-hidden":"true"},NB={key:0,class:"eye-slash",d:"M4 4l16 16"},UB=["onClick"],XB=["onClick"],VB={class:"tlabel"},YB=["title","aria-label","onClick"],$B={viewBox:"0 0 24 24","aria-hidden":"true"},GB={key:0,class:"eye-slash",d:"M4 4l16 16"},HB=["onClick"],jB=["onClick"],WB={class:"tlabel"},zB=["title","aria-label","onClick"],qB={viewBox:"0 0 24 24","aria-hidden":"true"},KB={key:0,class:"eye-slash",d:"M4 4l16 16"},ZB=["onClick"],JB=["onClick"],QB={class:"tlabel"},eL=["title","aria-label","onClick"],tL={viewBox:"0 0 24 24","aria-hidden":"true"},iL={key:0,class:"eye-slash",d:"M4 4l16 16"},sL=["onClick"],nL={key:0,class:"empty"},rL={class:"row"},aL={class:"seed-row scene-seed"},oL={class:"field-block"},lL={class:"field-grid"},cL={class:"field-block"},hL={class:"field-block check-field"},uL={class:"field-grid"},dL={class:"compact-field"},fL={class:"compact-field"},mL={class:"field-grid"},pL={class:"compact-field"},gL={class:"compact-field"},vL={key:1,class:"field-grid"},yL={class:"compact-field"},xL={class:"compact-field"},bL={key:2,class:"field-grid"},wL={class:"compact-field"},SL={class:"compact-field"},_L={class:"field-block"},ML={key:4,class:"field-grid"},TL={class:"compact-field"},AL={class:"compact-field"},EL={class:"collider-follow-section"},CL={class:"follow-path"},IL={class:"field-block"},RL=["value"],PL={class:"field-grid"},kL={class:"compact-field"},FL={class:"compact-field"},OL={class:"follow-path"},BL={class:"field-block"},LL={class:"field-grid"},DL={class:"compact-field"},NL={class:"compact-field"},UL={class:"field-grid"},XL={class:"compact-field"},VL={class:"compact-field"},YL={class:"setting-line"},$L={class:"setting-line"},GL={class:"field-block"},HL={key:4,class:"panel-hint"},jL={class:"group"},WL={class:"caret"},zL={class:"group-body"},qL={class:"segs"},KL={class:"segs stream-behavior-segs"},ZL={key:2,class:"stream-loop-options"},JL={class:"loop-section-row"},QL={class:"switch-row"},eD=["checked"],tD={key:0,class:"loop-duration-control"},iD={class:"switch-row loop-duration-toggle"},sD=["checked"],nD={class:"loop-section-duration"},rD=["value"],aD={key:1},oD={key:2,class:"loop-auto-duration"},lD={class:"loop-section-row"},cD={class:"switch-row"},hD=["checked"],uD={key:0,class:"loop-duration-control"},dD={class:"switch-row loop-duration-toggle"},fD=["checked"],mD={class:"loop-section-duration"},pD=["value"],gD={key:1},vD={key:2,class:"loop-auto-duration"},yD={key:3,class:"modifier-hint stream-loop-hint"},xD={class:"group"},bD={class:"caret"},wD={class:"group-body"},SD={class:"row"},_D={class:"row"},MD=["value","disabled"],TD={key:0,class:"row"},AD={class:"row"},ED={key:0,value:"radial"},CD={key:1,value:"path-normal"},ID={key:2,value:"path-tangent"},RD={class:"group"},PD={class:"caret"},kD={class:"group-body attr-body"},FD={class:"attr-axis-head"},OD={class:"axis-modes"},BD={class:"life-item"},LD={class:"switch-row"},DD={class:"life-item"},ND={class:"switch-row"},UD={class:"axis-modes life-axis"},XD={class:"life-item"},VD={class:"switch-row"},YD={class:"group"},$D={class:"caret"},GD={class:"group-body"},HD={class:"seg"},jD={class:"row"},WD={class:"curve-wrap"},zD={class:"row"},qD=["onUpdate:modelValue"],KD=["onUpdate:modelValue"],ZD={class:"row resource-color-row"},JD=["onUpdate:modelValue"],QD=["onUpdate:modelValue"],eN={key:0,class:"row resource-color-picker"},tN=["onUpdate:modelValue"],iN=["value","onChange","onKeydown"],sN={key:0,class:"random-color-hint"},nN={class:"resource-alpha-head"},rN={class:"alpha-modes"},aN=["onClick"],oN=["onClick"],lN=["onClick"],cN={class:"row"},hN=["onUpdate:modelValue"],uN={class:"resource-alpha-curve"},dN={class:"group"},fN={class:"caret"},mN={class:"group-body"},pN={class:"modifier-item"},gN={class:"switch-row modifier-switch"},vN={key:0,class:"modifier-params"},yN={class:"modifier-item"},xN={class:"switch-row modifier-switch"},bN={key:0,class:"modifier-params gravity-params"},wN={class:"modifier-mode-row"},SN={class:"modifier-item"},_N={class:"switch-row modifier-switch"},MN={key:0,class:"modifier-params gravity-params"},TN={class:"modifier-mode-row"},AN={class:"modifier-item"},EN={class:"switch-row modifier-switch"},CN={key:0,class:"modifier-params"},IN={class:"row"},RN={class:"modifier-item"},PN={class:"switch-row modifier-switch"},kN={key:0,class:"modifier-params"},FN={class:"row"},ON={class:"row"},BN={class:"modifier-item"},LN={class:"switch-row modifier-switch"},DN={key:0,class:"modifier-params trail-params"},NN={class:"row"},UN=["onUpdate:modelValue"],XN={class:"row"},VN=["onUpdate:modelValue"],YN={class:"row"},$N=["onUpdate:modelValue"],GN={class:"switch-row trail-sub-switch"},HN=["onUpdate:modelValue"],jN={class:"switch-row trail-sub-switch"},WN=["onUpdate:modelValue"],zN={class:"trail-mode-head"},qN={class:"alpha-modes"},KN=["onClick"],ZN=["onClick"],JN=["onClick"],QN={class:"row"},e5=["onUpdate:modelValue"],t5={key:6,class:"row trail-fixed-color"},i5=["onUpdate:modelValue"],s5=["value","onChange","onKeydown"],n5={class:"trail-mode-head"},r5={class:"alpha-modes"},a5=["onClick"],o5=["onClick"],l5=["onClick"],c5={class:"trail-grid-row"},h5={class:"modifier-item"},u5={class:"switch-row modifier-switch"},d5=["disabled"],f5={key:0,class:"modifier-params emitter-follow-params"},m5={class:"field-block"},p5=["value"],g5={key:0,value:"bone"},v5={class:"field-block"},y5=["value"],x5={class:"field-block"},b5={class:"field-grid follow-grid"},w5={class:"compact-field"},S5={class:"compact-field"},_5={class:"field-block"},M5={key:0,class:"bone-follow-target"},T5={key:1,class:"bone-follow-missing"},A5={class:"field-block"},E5={class:"field-grid follow-grid"},C5={class:"compact-field"},I5={class:"compact-field"},R5={class:"bone-follow-transform-grid"},P5={class:"compact-field"},k5={class:"compact-field"},F5={class:"compact-field"},O5={class:"modifier-item"},B5={class:"switch-row modifier-switch"},L5={key:0,class:"modifier-params collision-filter-params"},D5={class:"collision-filter-tags"},N5=["title"],U5=["aria-label","onClick"],X5=["disabled","title"],V5={key:0,class:"collision-filter-empty"},Y5={key:1,class:"collision-filter-picker"},$5=["onClick"],G5={class:"group"},H5={class:"caret"},j5={class:"group-body export-settings"},W5={class:"export-field"},z5={class:"export-field"},q5={class:"export-field"},K5={key:0,class:"export-help"},Z5={class:"export-fps-row"},J5={class:"export-field export-fps-field"},Q5={class:"export-checkbox"},e4={class:"export-switches"},t4={class:"switch-row export-switch"},i4={class:"switch-row export-switch"},s4={class:"switch-row export-switch export-switch-last"},n4={class:"spine-export-actions"},r4=["disabled","title"],a4=["disabled"],o4=["disabled","title"],l4={key:0},c4=["href"],h4=["href"],u4=nn({__name:"ParticlePanel",setup(s){const e=Kl();e.settings.exportSettings=p1(e.settings.exportSettings);const t=gt(()=>e.settings.exportSettings),i=ht(null),n=ht(""),r=ht([]),a=ht(!1),o=ht(""),h=ht(!1),l=ht(!1),c=ht(null),u=ht(""),d=ht(!1),f=ht(null),p=ht(""),m=ht(""),g=gt(()=>{const $=f.value;return $?$.available?$.spineFound?$.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),v=gt(()=>{var $,S,C,Q,Fe,ct;return{ready:!!(($=f.value)!=null&&$.available)&&!!((S=f.value)!=null&&S.spineFound)&&!!((C=f.value)!=null&&C.authorized),warning:!!((Q=f.value)!=null&&Q.available)&&(!((Fe=f.value)!=null&&Fe.spineFound)||!((ct=f.value)!=null&&ct.authorized))}}),b=gt(()=>{var $,S,C;return!!(($=f.value)!=null&&$.available)&&!!((S=f.value)!=null&&S.spineFound)&&!!((C=f.value)!=null&&C.authorized)}),y=gt(()=>{const $=f.value;return!($!=null&&$.available)||!$.spineFound||$.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),w=gt(()=>{const $=f.value;return $?$.available?$.spineFound?$.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),A=gt(()=>l.value?"正在重新计算并生成 Spine 工程":w.value?`暂不可用:${w.value}`:`调用本机 Spine 自动生成 ${t.value.spineVersion} 工程`);function M($){return $==="跟随导出"?t.value.keyframeCurve==="bezier"?"bezier":"linear":$==="贝塞尔"?"bezier":"linear"}e.systems.length||e.addSystem();function _(){Tw(e),h.value=!1,o.value="配置已保存到本地"}async function R($){var Q;const S=$.target,C=(Q=S.files)==null?void 0:Q[0];if(C){o.value="正在加载配置…",h.value=!1;try{await VP(e,C),o.value=`已加载:${C.name}`}catch(Fe){h.value=!0,o.value=Fe instanceof Error?Fe.message:String(Fe)}finally{S.value=""}}}async function P(){try{const $=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!$.ok)throw new Error("无法读取预设列表");const S=await $.json();r.value=Array.isArray(S)?S.filter(C=>!!C&&typeof C.name=="string"&&typeof C.file=="string"):[]}catch{r.value=[]}}async function F(){const $=n.value;if(!$)return;a.value=!0,h.value=!1,o.value="正在加载预设…";const S=Kv("加载预设",`正在下载 ${$}…`);try{await S.paint();const C=await fetch(`/Preset/${encodeURIComponent($)}`,{cache:"no-store"});if(!C.ok)throw new Error(`无法读取预设:${$}`);const Q=await _3(C,Fe=>{S.update(Fe==null?null:Fe*55,`正在下载 ${$}…`)});S.update(58,"正在解析预设配置…"),S.update(70,"正在解析并恢复预设资源…"),await Ew(e,Q),o.value=`已加载预设:${$.replace(/\.json$/i,"")}`,await S.finish("预设加载完成")}catch(C){h.value=!0;const Q=C instanceof Error?C.message:String(C);o.value=`${Q},请检查预设文件命名`,await S.fail(Q)}finally{a.value=!1,n.value=""}}La(()=>{P(),B(),I=window.setInterval(B,3e3)});let I,k=0;du(()=>{I!==void 0&&window.clearInterval(I)});async function B(){const $=++k,S=await aB();if($!==k)return;f.value=S;const C=m.value;(C==="CONNECTOR_OFFLINE"?S.available:C==="SPINE_NOT_FOUND"?S.available&&S.spineFound:C==="ORIGIN_NOT_ALLOWED"?S.available&&S.spineFound&&S.authorized:!!C&&S.available&&S.spineFound&&S.authorized)&&(m.value="",p.value="",d.value&&(d.value=!1,u.value=""))}function D(){return new Promise($=>requestAnimationFrame(()=>$()))}async function U($){e.timeline.playing=!1,e.timeline.frame=0,e.timeline.recorded=!1;for(const Q of e.systems)Q.frames=void 0;e.recalcTotalFrames(),await D(),e.timeline.playing=!0;const S=e.timeline.totalFrames/Math.max(1,e.timeline.fps)*1e3,C=performance.now()+Math.max(8e3,S*2.5+3e3);for(;!e.timeline.recorded;){if(performance.now()>C)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");$==null||$(Math.min(.98,e.timeline.frame/Math.max(1,e.timeline.totalFrames-1))),await new Promise(Q=>setTimeout(Q,50))}$==null||$(1)}async function L(){if(!l.value){l.value=!0,c.value="json",d.value=!1,m.value="",p.value="",u.value="正在重新计算粒子动画…";try{await U();const $=ay({systems:e.systems,timeline:e.timeline,settings:t.value});yy($.text,t.value.spineVersion),q3($,t.value.fileName);const S=$.warnings.length?`;${$.warnings.length} 条资源提示(缺图仍已导出)`:"";u.value=`已导出 Spine ${t.value.spineVersion}:${$.particleSystemCount} 个粒子系统、${$.animationCount} 个动画、${$.boneCount} 根骨骼${S}`}catch($){d.value=!0,u.value=$ instanceof Error?$.message:String($)}finally{l.value=!1,c.value=null}}}async function N(){if(l.value)return;l.value=!0,c.value="spine",d.value=!1,m.value="",p.value="",u.value="正在重新计算粒子动画…";const $=Kv("导出 Spine 包","正在重新计算粒子动画…");try{await $.paint(),await U(Fe=>$.update(Fe*18,"正在重新计算粒子动画…")),$.update(20,"正在生成 Spine JSON…");const S=ay({systems:e.systems,timeline:e.timeline,settings:t.value});yy(S.text,t.value.spineVersion),u.value="正在整理图片并调用本机 Spine…";const C=t.value.fileName.replace(/\.json$/i,"")||"SpineParticle",Q=await oB({projectName:C,spineVersion:t.value.spineVersion,skeletonJson:S.text,systems:e.systems},({phase:Fe,progress:ct})=>{Fe==="images"?$.update(ct==null?null:22+ct*18,"正在整理工程图片…"):Fe==="upload"?$.update(ct==null?null:40+ct*30,"正在上传数据到 Spine 连接器…"):Fe==="processing"?$.update(null,"Spine 正在转换工程,请稍候…"):$.update(ct==null?null:82+ct*16,"正在下载生成的 Spine 工程包…")});$.update(99,"正在交给浏览器下载…"),lB(Q.blob,Q.fileName),u.value=`已生成 ${Q.fileName}:包含 .spine 工程和 ${Q.imageCount} 张图片,Spine ${Q.spineEditorVersion}`,await B(),await $.finish("Spine 工程包已开始下载")}catch(S){const C=S instanceof Error?S.message:String(S);d.value=!0,m.value=S instanceof zh?S.code:"",S instanceof zh&&S.pairUrl&&(p.value=S.pairUrl),u.value=C,await B(),await $.fail(C)}finally{l.value=!1,c.value=null}}async function O(){if(!l.value){l.value=!0,c.value="images",d.value=!1,m.value="",p.value="",u.value="正在整理当前粒子系统使用的图片…";try{const $=await vB({systems:e.systems,imagesPath:t.value.imagesPath}),S=yB($.blob,t.value.fileName);u.value=`已生成 ${S}:${$.folder}/ 内包含 ${$.imageCount} 张图片`}catch($){d.value=!0,u.value=$ instanceof Error?$.message:String($)}finally{l.value=!1,c.value=null}}}const X=gt(()=>{const $=e.systems.findIndex(S=>S.id===e.activeId);return $>=0?$:0}),E=gt(()=>e.systems[X.value]||null),V=gt(()=>E.value?g1(E.value.config,e.timeline.fps):30),q=gt(()=>{var S;const $=(S=E.value)==null?void 0:S.config;return $?Math.max(1,Math.ceil(Number($.loopDurationFrames)||1)):1}),W=gt(()=>e.activeObjectType),J=gt(()=>e.activeObjectType==="collision"&&e.colliders.find($=>$.id===e.activeObjectId)||null),K=gt(()=>e.activeObjectType==="path"&&e.paths.find($=>$.id===e.activeObjectId)||null),fe=gt(()=>e.activeObjectType==="spine"&&e.spines.find($=>$.id===e.activeObjectId)||null),me=gt(()=>e.activeObjectType==="particle"?e.systems.some($=>$.id===e.activeObjectId):e.activeObjectType==="collision"?e.colliders.some($=>$.id===e.activeObjectId):e.activeObjectType==="path"?e.paths.some($=>$.id===e.activeObjectId):e.spines.some($=>$.id===e.activeObjectId)),we=gt(()=>{const $=e.spines.find(S=>S.selectedBone&&S.bones.some(C=>C.name===S.selectedBone));return $?{spine:$,boneName:$.selectedBone}:null}),Ee=gt(()=>{var C;const $=(C=E.value)==null?void 0:C.config;if(!$||$.emitterFollowMode!=="bone")return null;const S=e.spines.find(Q=>Q.id===$.emitterFollowSpineId);return!S||!S.bones.some(Q=>Q.name===$.emitterFollowBoneName)?null:{spine:S,boneName:$.emitterFollowBoneName}}),ge=ht(!1),Te=gt(()=>{var S;const $=new Set(((S=E.value)==null?void 0:S.config.collisionColliderIds)||[]);return e.colliders.filter(C=>$.has(C.id))}),G=gt(()=>{var S;const $=new Set(((S=E.value)==null?void 0:S.config.collisionColliderIds)||[]);return e.colliders.filter(C=>!$.has(C.id))});ds(()=>{var $,S;return[($=E.value)==null?void 0:$.id,(S=E.value)==null?void 0:S.config.collision]},()=>{ge.value=!1});function Z($){var C;const S=(C=E.value)==null?void 0:C.config;!S||S.collisionColliderIds.includes($)||(S.collisionColliderIds.push($),ge.value=!1)}function z($){var C;const S=(C=E.value)==null?void 0:C.config;S&&(S.collisionColliderIds=S.collisionColliderIds.filter(Q=>Q!==$))}Qo(()=>{for(const $ of e.systems)$.visible==null&&($.visible=!0);for(const $ of e.colliders)$.visible==null&&($.visible=!0);for(const $ of e.paths)$.visible==null&&($.visible=!0);for(const $ of e.spines)$.visible==null&&($.visible=!0)}),Qo(()=>{if(!E.value)return;const $=zr(E.value.config);$.lifeMode==="curve"&&($.lifeMode="random"),$.speedMode==="curve"&&($.speedMode="random"),$.scaleMode==="curve"&&($.scaleMode="random"),$.initialRotationMode==="curve"&&($.initialRotationMode="random"),$.mode==="stream"&&!($.duration>0)&&($.duration=1),$.streamBehavior==="loop"&&($.emitterFollow||$.emitterFollowMode!=="none")&&tt($)}),Qo(()=>{const $=new Set(e.colliders.map(S=>S.id));for(const S of e.systems){const C=zr(S.config),Q=C.collisionColliderIds.filter(Ct=>$.has(Ct));if(Q.length!==C.collisionColliderIds.length&&(C.collisionColliderIds=Q),C.spawnPathId>0&&!e.paths.some(Ct=>Ct.id===C.spawnPathId)&&(C.spawnPathId=0,(C.emissionAngleMode==="path-normal"||C.emissionAngleMode==="path-tangent")&&(C.emissionAngleMode="fixed")),C.emitterFollowMode!=="bone")continue;const Fe=e.spines.find(Ct=>Ct.id===C.emitterFollowSpineId);!!(Fe!=null&&Fe.bones.some(Ct=>Ct.name===C.emitterFollowBoneName))||(C.emitterFollowMode="none",C.emitterFollowSpineId=0,C.emitterFollowBoneName="")}}),Qo(()=>{for(const $ of e.colliders)$.followPathId==null&&($.followPathId=0),$.followDuration>0||($.followDuration=2),$.followPathRotation==null&&($.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes($.followCurveMode)||($.followCurveMode="跟随导出"),(!Array.isArray($.followCurve)||$.followCurve.length<2)&&($.followCurve=[{x:0,y:0},{x:1,y:1}])});const j=[{x:0,y:0},{x:1,y:1}],te=[{x:0,y:1},{x:1,y:1}],he=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],ve=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],le=[{x:0,y:1},{x:1,y:1}],ye=[{x:0,y:1},{x:1,y:1}],ae=Ba({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function Le($){ae[$]=!ae[$]}function Re($){var C;const S=(C=E.value)==null?void 0:C.config;S&&(S.mode=$,$==="stream"&&!(S.duration>0)&&(S.duration=1))}function Oe($){var Q;const S=(Q=E.value)==null?void 0:Q.config;if(!S)return;const C=Math.min(1800,Math.max(1,Math.ceil(Number($)||1)));S.loopDurationFrames=C}function tt($){const S=Nl();$.emitterFollow=!1,$.emitterFollowMode="none",$.emitterFollowPathId=S.emitterFollowPathId,$.emitterFollowSpineId=S.emitterFollowSpineId,$.emitterFollowBoneName=S.emitterFollowBoneName,$.emitterFollowBoneOffsetX=S.emitterFollowBoneOffsetX,$.emitterFollowBoneOffsetY=S.emitterFollowBoneOffsetY,$.emitterFollowBoneRotation=S.emitterFollowBoneRotation,$.emitterFollowBoneScaleX=S.emitterFollowBoneScaleX,$.emitterFollowBoneScaleY=S.emitterFollowBoneScaleY,$.emitterAngleMode=S.emitterAngleMode,$.emitterFollowCurve=S.emitterFollowCurve.map(C=>({...C})),$.emitterFollowDuration=S.emitterFollowDuration,$.emitterFollowSpace=S.emitterFollowSpace,$.emitterFollowDirection=S.emitterFollowDirection,$.emitterFollowOffset=S.emitterFollowOffset}function St($){var Fe;const S=(Fe=E.value)==null?void 0:Fe.config;if(!S||S.streamBehavior===$)return;const C=$==="loop",Q=C?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(Q)&&(tt(S),S.streamBehavior=$,C||(S.generateLoopStartAnimation=!1,S.generateLoopEndAnimation=!1))}function Pt($,S){var Fe;const C=(Fe=E.value)==null?void 0:Fe.config;if(!C)return;const Q=S.target.checked;$==="start"?C.generateLoopStartAnimation=Q:C.generateLoopEndAnimation=Q}function wt($,S){var Fe;const C=(Fe=E.value)==null?void 0:Fe.config;if(!C)return;const Q=Math.min(1800,Math.max(1,Math.ceil(Number(S.target.value)||30)));$==="start"?C.loopStartDurationFrames=Q:C.loopEndDurationFrames=Q}function Rt($,S){var Fe;const C=(Fe=E.value)==null?void 0:Fe.config;if(!C)return;const Q=S.target.checked;$==="start"?C.loopStartUseCustomDuration=Q:C.loopEndUseCustomDuration=Q}function Zt($,S){const C=$.target.value;if(S.emitterFollowMode=C,C!=="bone"){S.emitterFollowSpineId=0,S.emitterFollowBoneName="";return}Fi(S)}function Fi($){const S=we.value;if(!S){$.emitterFollowMode="none",$.emitterFollowSpineId=0,$.emitterFollowBoneName="";return}$.emitterFollowMode="bone",$.emitterFollowSpineId=S.spine.id,$.emitterFollowBoneName=S.boneName}const Oi={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function Wi($){var Q;const S=(Q=E.value)==null?void 0:Q.config;if($==="export"){e.settings.exportSettings=Tp();return}if(!S)return;const C=Nl();for(const Fe of Oi[$])S[Fe]=C[Fe]}function on(){t.value.fps=Math.min(240,Math.max(1,Math.round(Number(t.value.fps)||30)))}function yi($){var S;e.selectSystem(((S=e.systems[$])==null?void 0:S.id)??0)}function ce(){e.addSystem()}function de(){e.addCollider()}function kt(){e.addPath()}function zt(){e.addSpine()}function Jt(){e.duplicateSelectedObject()}function mt($,S,C=0,Q=0,Fe=0,ct=0){return{x:$,y:S,inX:C,inY:Q,outX:Fe,outY:ct}}function Cs(){const $=K.value;if(!(!$||!$.preset))if($.preset==="circle"){const C=60.751328;$.points=[mt(110,0,0,-C,0,C),mt(0,110,C,0,-C,0),mt(-110,0,0,C,0,-C),mt(0,-110,-C,0,C,0)],$.closed=!0}else if($.preset==="square")$.points=[mt(-100,-100),mt(100,-100),mt(100,100),mt(-100,100)],$.closed=!0;else{const S=$.preset==="star"?10:6;$.points=Array.from({length:S},(C,Q)=>{const Fe=$.preset==="star"&&Q%2?50:110,ct=-Math.PI*.5+Q/S*Math.PI*2;return mt(Math.cos(ct)*Fe,Math.sin(ct)*Fe)}),$.closed=!0}}function Xs(){K.value&&(K.value.points=[])}function Ui(){E.value&&(E.value.config.seed=Math.floor(Math.random()*999999)+1)}function Is($){var C;const S=(C=E.value)==null?void 0:C.config;!S||$==="direction"||(S.speedOverLifeMode=$,$==="curve"&&S.speedOverLifeMin===S.speedOverLifeMax&&(S.speedOverLifeMin=0,S.speedOverLifeMax=1))}function xr(){var S;const $=(S=E.value)==null?void 0:S.config;!$||$.scaleOverLifeMode!=="curve"||($.scaleOverLifeMin===$.scaleOverLifeMax&&($.scaleOverLifeMin=0,$.scaleOverLifeMax=1),$.scaleYOverLifeMin===$.scaleYOverLifeMax&&($.scaleYOverLifeMin=0,$.scaleYOverLifeMax=1))}function ln($){var C;const S=(C=E.value)==null?void 0:C.config;!S||$==="direction"||(S.scaleOverLifeMode=$,xr())}const zi={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function Ya(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=zi[$.shape];S&&Object.assign($,S)}function $a(){var S;const $=(S=E.value)==null?void 0:S.config;!$||$.spawnPathId>0||($.emissionAngleMode==="path-normal"||$.emissionAngleMode==="path-tangent")&&($.emissionAngleMode="fixed")}const Qr=ht(null),cn=ht(null),bs=ht(null),hn=ht(null),Xn=ht(null);function un(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=Math.max(0,...$.trailResources.map(Q=>Q.id))+1;$.trailResources.push({id:S,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:le.map(Q=>({...Q})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:te.map(Q=>({...Q})),shapeEnabled:!1,shapeCurve:ye.map(Q=>({...Q}))}),pe()}function Ga($){var S;Xn.value=$,(S=hn.value)==null||S.click()}function br($,S){var Fe;const C=(Fe=E.value)==null?void 0:Fe.config;if(!C)return;const Q=$==="trailGridCols"?32:16;C[$]=Math.min(Q,Math.max(2,Math.round(Number(S)||2)))}function H($,S){var Q;const C=(Q=E.value)==null?void 0:Q.config.trailResources.find(Fe=>Fe.id===$);C&&(C.boneCount=Math.min(16,Math.max(2,Math.round(Number(S)||2))))}function Y($,S){var Q;const C=(Q=E.value)==null?void 0:Q.config.trailResources.find(Fe=>Fe.id===$);C&&(C.rotation=Math.max(-360,Math.min(360,Number(S)||0)))}async function ee($){var Ct,It;const S=$.target,C=(Ct=S.files)==null?void 0:Ct[0],Q=(It=E.value)==null?void 0:It.config,Fe=Q==null?void 0:Q.trailResources.find(Ht=>Ht.id===Xn.value);if(!C||!Fe){S.value="";return}const ct=await Ze(C);Fe.texture=Nr(await pt.fromURL(ct)),Fe.previewUrl=ct,Fe.textureName=C.name.replace(/\.[^.]+$/,"")||"trail",S.value="",Xn.value=null}async function ne($){var Q;const S=(Q=E.value)==null?void 0:Q.config,C=S==null?void 0:S.trailResources.find(Fe=>Fe.id===$);C&&(C.texture=Nr(await pt.fromURL("/images/trail.png")),C.previewUrl="/images/trail.png",C.textureName="trail",C.weight=100,C.locked=!1,C.rotation=0,C.boneCount=3,C.trailRatio=100,C.lengthMode="fixed",C.length=100,C.lengthMin=100,C.lengthMax=100,C.widthSizeMode="fixed",C.width=100,C.widthMin=100,C.widthMax=100,C.widthMode="particle",C.lifeLengthEnabled=!1,C.lifeLengthCurve=te.map(Fe=>({...Fe})),C.shapeEnabled=!1,C.shapeCurve=ye.map(Fe=>({...Fe})),C.colorMode="particle",C.color="#ffffff",C.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],C.blend="normal",C.alphaMode="particle",C.alpha=1,C.alphaCurve=le.map(Fe=>({...Fe})),pe())}function ue($){var Q;const S=(Q=E.value)==null?void 0:Q.config.trailResources;if(!S||S.length<=1)return;const C=S.findIndex(Fe=>Fe.id===$);C>=0&&S.splice(C,1),pe()}function pe(){var Fe;const $=(Fe=E.value)==null?void 0:Fe.config.trailResources;if(!($!=null&&$.length))return;if($.length===1){$[0].weight=100,$[0].locked=!1;return}const S=$.filter(ct=>ct.locked),C=$.filter(ct=>!ct.locked);let Q=S.reduce((ct,Ct)=>ct+Math.max(0,Number(Ct.weight)||0),0);Q>100&&(Vt(S,100,!0),Q=100),Vt(C,100-Q)}function _e($,S){var It;const C=(It=E.value)==null?void 0:It.config.trailResources;if(!(C!=null&&C.length))return;if(C.length===1){C[0].weight=100,C[0].locked=!1;return}const Q=C.find(Ht=>Ht.id===$);if(!Q||Q.locked)return;const Fe=C.filter(Ht=>Ht.id!==$&&Ht.locked).reduce((Ht,qi)=>Ht+Math.max(0,Number(qi.weight)||0),0),ct=Math.max(0,100-Fe),Ct=C.filter(Ht=>Ht.id!==$&&!Ht.locked);Q.weight=Et(Math.min(ct,Math.max(0,Number(S)||0))),Ct.length?Vt(Ct,ct-Q.weight,!0):Q.weight=Et(ct)}function Me($){var Q;const S=(Q=E.value)==null?void 0:Q.config.trailResources;if(!S||S.length===1)return;const C=S.find(Fe=>Fe.id===$);C&&(C.locked=!C.locked)}function xe($,S){const C=S.target;$.color=Je(C.value,$.color),C.value=$.color}function De($,S){xe($,S),S.target.blur()}function Ie(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=Math.max(0,...$.imageResources.map(Q=>Q.id))+1;$.imageResources.push({id:S,texture:$.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:ve.map(Q=>({...Q}))}),ui()}function Be($){var S;bs.value=$,(S=Qr.value)==null||S.click()}function Ae($){var S;bs.value=$,(S=cn.value)==null||S.click()}async function He($){var It,Ht;const S=$.target,C=(It=S.files)==null?void 0:It[0],Q=(Ht=E.value)==null?void 0:Ht.config,Fe=Q==null?void 0:Q.imageResources.find(qi=>qi.id===bs.value);if(!C||!Fe){S.value="";return}const ct=await Ze(C),Ct=Nr(await pt.fromURL(ct));Fe.texture=Ct,Fe.previewUrl=ct,Fe.textureFolder="",Fe.textureName=C.name.replace(/\.[^.]+$/,"")||"particle",S.value="",bs.value=null}async function st($){var ct;const S=$.target,C=Array.from(S.files||[]).sort((Ct,It)=>Ct.name.localeCompare(It.name,void 0,{numeric:!0,sensitivity:"base"})),Q=(ct=E.value)==null?void 0:ct.config,Fe=Q==null?void 0:Q.imageResources.find(Ct=>Ct.id===bs.value);if(!C.length||!Fe){S.value="";return}Fe.sequenceFrames=await Promise.all(C.map(async Ct=>{const It=await Ze(Ct);return{name:Ct.name,previewUrl:It,texture:Nr(await pt.fromURL(It))}})),Fe.imageMode="sequence",S.value="",bs.value=null}function Ze($){return new Promise((S,C)=>{const Q=new FileReader;Q.onload=()=>S(String(Q.result||"")),Q.onerror=()=>C(Q.error),Q.readAsDataURL($)})}function nt($){var Q;const S=(Q=E.value)==null?void 0:Q.config,C=S==null?void 0:S.imageResources.find(Fe=>Fe.id===$);!S||!C||(C.texture=S.texture,C.textureName="star",C.textureFolder="",C.previewUrl="/images/star.png",C.imageMode="fixed",C.sequencePlayback="loop-forward",C.sequenceFps=30,C.sequenceFrames=[],C.scale=1,C.anchorX=.5,C.anchorY=.5,C.colorMode="fixed",C.colorStart="#ffffff",C.colorEnd="#ff4d4d",C.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],C.blend="normal",C.independentAlpha="off",C.alpha=1,C.alphaCurveMode="跟随导出",C.alphaCurve=ve.map(Fe=>({...Fe})),C.locked=!1,ui())}function Je($,S){let C=$.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(C)&&(C=C.split("").map(Q=>Q+Q).join("")),/^[0-9a-f]{6}$/i.test(C)?`#${C.toLowerCase()}`:S}function Se($,S){const C=S.target;$.colorStart=Je(C.value,$.colorStart),C.value=$.colorStart}function rt($,S){Se($,S),S.target.blur()}function Pe($){var Q;const S=(Q=E.value)==null?void 0:Q.config.imageResources;if(!S||S.length<=1)return;const C=S.findIndex(Fe=>Fe.id===$);C>=0&&S.splice(C,1),ui()}function Et($){return Math.round($)}function Vt($,S,C=!1){if(!$.length)return;const Q=Math.max(0,Et(S)),Fe=C?$.reduce((Ct,It)=>Ct+Math.max(0,Number(It.weight)||0),0):0;let ct=0;$.forEach((Ct,It)=>{const Ht=It===$.length-1,qi=Et(Ht?Q-ct:Fe>0?Q*Math.max(0,Number(Ct.weight)||0)/Fe:Q/$.length);Ct.weight=qi,ct+=qi})}function ui(){var Fe;const $=(Fe=E.value)==null?void 0:Fe.config.imageResources;if(!($!=null&&$.length))return;if($.length===1){$[0].weight=100,$[0].locked=!1;return}const S=$.filter(ct=>ct.locked),C=$.filter(ct=>!ct.locked);let Q=S.reduce((ct,Ct)=>ct+Math.max(0,Number(Ct.weight)||0),0);Q>100&&(Vt(S,100,!0),Q=100),Vt(C,100-Q)}function Xi($,S){var It;const C=(It=E.value)==null?void 0:It.config.imageResources;if(!(C!=null&&C.length))return;if(C.length===1){C[0].weight=100,C[0].locked=!1;return}const Q=C.find(Ht=>Ht.id===$);if(!Q||Q.locked)return;const Fe=C.filter(Ht=>Ht.id!==$&&Ht.locked).reduce((Ht,qi)=>Ht+Math.max(0,Number(qi.weight)||0),0),ct=Math.max(0,100-Fe),Ct=C.filter(Ht=>Ht.id!==$&&!Ht.locked);if(Q.weight=Et(Math.min(ct,Math.max(0,Number(S)||0))),!Ct.length){Q.weight=Et(ct);return}Vt(Ct,ct-Q.weight,!0)}function ns($){var Q;const S=(Q=E.value)==null?void 0:Q.config.imageResources;if(!S||S.length===1)return;const C=S.find(Fe=>Fe.id===$);C&&(C.locked=!C.locked)}return($,S)=>(ie(),oe("div",xB,[S[391]||(S[391]=T("div",{class:"panel-header"},[T("span",null,"Spine粒子编辑器-Yeomai")],-1)),T("div",bB,[T("div",wB,[T("div",{class:"group-head",onClick:S[0]||(S[0]=C=>Le("config"))},[T("span",SB,je(ae.config?"▸":"▾"),1),S[197]||(S[197]=T("span",null,"配置管理",-1))]),be(T("div",_B,[T("div",MB,[T("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:_},"保存配置"),T("button",{title:"加载本地编辑器配置",onClick:S[1]||(S[1]=C=>{var Q;return(Q=i.value)==null?void 0:Q.click()})},"加载配置"),be(T("select",{"onUpdate:modelValue":S[2]||(S[2]=C=>n.value=C),"aria-label":"预设列表",disabled:!r.value.length||a.value,onPointerdown:P,onFocus:P,onChange:F},[T("option",AB,je(r.value.length?"选择预设":"无预设文件"),1),(ie(!0),oe(Ke,null,li(r.value,C=>(ie(),oe("option",{key:C.file,value:C.file},je(C.name),9,EB))),128))],40,TB),[[jt,n.value]]),T("input",{ref_key:"configFileInput",ref:i,hidden:"",type:"file",accept:".json,application/json",onChange:R},null,544)]),o.value?(ie(),oe("div",{key:0,class:ot(["config-message",{error:h.value}])},je(o.value),3)):Xe("",!0)],512),[[Sr,!ae.config]])]),T("div",CB,[T("div",{class:"group-head scene-head",onClick:S[3]||(S[3]=C=>Le("scene"))},[T("span",IB,je(ae.scene?"▸":"▾"),1),S[198]||(S[198]=T("span",null,"场景对象",-1)),T("div",RB,[T("button",{class:"scene-add",title:"添加粒子系统",onClick:xt(ce,["stop"])},"+粒子"),T("button",{class:"scene-add",title:"添加碰撞体",onClick:xt(de,["stop"])},"+碰撞"),T("button",{class:"scene-add",title:"添加路径",onClick:xt(kt,["stop"])},"+路径"),T("button",{class:"scene-add",title:"添加 Spine",onClick:xt(zt,["stop"])},"+Spine"),T("button",{class:"scene-add",disabled:!me.value,title:"复制当前选中的场景对象",onClick:xt(Jt,["stop"])},"+Copy",8,PB)])]),be(T("div",kB,[T("div",FB,[(ie(!0),oe(Ke,null,li(ke(e).systems,(C,Q)=>(ie(),oe("div",{key:`particle-${C.id}`,class:ot(["tree-item scene-object-item",{on:W.value==="particle"&&C.id===ke(e).activeObjectId}]),onClick:Fe=>yi(Q)},[S[201]||(S[201]=T("span",{class:"tdot"},"●",-1)),T("span",BB,je(C.config.name||"ParticleSystem"+(Q+1)),1),T("button",{class:ot(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":C.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:xt(Fe=>C.visible=C.visible===!1,["stop"])},[(ie(),oe("svg",DB,[S[199]||(S[199]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[200]||(S[200]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),oe("path",NB)):Xe("",!0)]))],10,LB),S[202]||(S[202]=T("span",{class:"scene-object-kind"},"粒子",-1)),T("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:xt(Fe=>ke(e).removeSystem(C.id),["stop"])},"✕",8,UB)],10,OB))),128)),(ie(!0),oe(Ke,null,li(ke(e).colliders,C=>(ie(),oe("div",{key:`collision-${C.id}`,class:ot(["tree-item scene-object-item",{on:W.value==="collision"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("collision",C.id)},[S[205]||(S[205]=T("span",{class:"tdot collision-dot"},"■",-1)),T("span",VB,je(C.name),1),T("button",{class:ot(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":C.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:xt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),oe("svg",$B,[S[203]||(S[203]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[204]||(S[204]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),oe("path",GB)):Xe("",!0)]))],10,YB),S[206]||(S[206]=T("span",{class:"scene-object-kind"},"碰撞",-1)),T("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:xt(Q=>ke(e).removeCollider(C.id),["stop"])},"✕",8,HB)],10,XB))),128)),(ie(!0),oe(Ke,null,li(ke(e).paths,C=>(ie(),oe("div",{key:`path-${C.id}`,class:ot(["tree-item scene-object-item",{on:W.value==="path"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("path",C.id)},[S[209]||(S[209]=T("span",{class:"tdot path-dot"},"◇",-1)),T("span",WB,je(C.name),1),T("button",{class:ot(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示路径":"隐藏路径","aria-label":C.visible===!1?"显示路径":"隐藏路径",onClick:xt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),oe("svg",qB,[S[207]||(S[207]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[208]||(S[208]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),oe("path",KB)):Xe("",!0)]))],10,zB),S[210]||(S[210]=T("span",{class:"scene-object-kind"},"路径",-1)),T("button",{class:"scene-object-delete",title:"删除路径",onClick:xt(Q=>ke(e).removePath(C.id),["stop"])},"✕",8,ZB)],10,jB))),128)),(ie(!0),oe(Ke,null,li(ke(e).spines,C=>(ie(),oe("div",{key:`spine-${C.id}`,class:ot(["tree-item scene-object-item",{on:W.value==="spine"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("spine",C.id)},[S[213]||(S[213]=T("span",{class:"tdot spine-dot"},"◆",-1)),T("span",QB,je(C.name),1),T("button",{class:ot(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":C.visible===!1?"显示 Spine":"隐藏 Spine",onClick:xt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),oe("svg",tL,[S[211]||(S[211]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[212]||(S[212]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),oe("path",iL)):Xe("",!0)]))],10,eL),S[214]||(S[214]=T("span",{class:"scene-object-kind"},"Spine",-1)),T("button",{class:"scene-object-delete",title:"删除 Spine",onClick:xt(Q=>ke(e).removeSpine(C.id),["stop"])},"✕",8,sL)],10,JB))),128)),!ke(e).systems.length&&!ke(e).colliders.length&&!ke(e).paths.length&&!ke(e).spines.length?(ie(),oe("div",nL,"场景中暂无对象")):Xe("",!0)]),W.value==="particle"&&E.value?(ie(),oe(Ke,{key:0},[T("label",rL,[S[215]||(S[215]=T("span",null,"名称",-1)),be(T("input",{"onUpdate:modelValue":S[4]||(S[4]=C=>E.value.config.name=C),class:"inp"},null,512),[[ut,E.value.config.name]])]),Ue(qe,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:E.value.config.centerX,"onUpdate:modelValue":S[5]||(S[5]=C=>E.value.config.centerX=C)},null,8,["modelValue"]),Ue(qe,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:E.value.config.centerY,"onUpdate:modelValue":S[6]||(S[6]=C=>E.value.config.centerY=C)},null,8,["modelValue"]),Ue(qe,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:E.value.config.offsetX,"onUpdate:modelValue":S[7]||(S[7]=C=>E.value.config.offsetX=C)},null,8,["modelValue"]),Ue(qe,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:E.value.config.offsetY,"onUpdate:modelValue":S[8]||(S[8]=C=>E.value.config.offsetY=C)},null,8,["modelValue"]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:E.value.config.rootRotation,"onUpdate:modelValue":S[9]||(S[9]=C=>E.value.config.rootRotation=C)},null,8,["modelValue"]),Ue(qe,{label:"缩放X",min:.05,max:10,step:.05,modelValue:E.value.config.rootScaleX,"onUpdate:modelValue":S[10]||(S[10]=C=>E.value.config.rootScaleX=C)},null,8,["modelValue"]),Ue(qe,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:E.value.config.rootScaleY,"onUpdate:modelValue":S[11]||(S[11]=C=>E.value.config.rootScaleY=C)},null,8,["modelValue"]),T("div",aL,[S[216]||(S[216]=T("label",{for:"system-seed"},"随机种子",-1)),be(T("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":S[12]||(S[12]=C=>E.value.config.seed=C),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[ut,E.value.config.seed,void 0,{number:!0}]]),T("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:Ui},"⚄")]),S[217]||(S[217]=T("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):J.value?(ie(),oe(Ke,{key:1},[S[242]||(S[242]=T("div",{class:"object-editor-title"},"碰撞体属性",-1)),T("label",oL,[S[218]||(S[218]=T("span",null,"碰撞体名称",-1)),be(T("input",{"onUpdate:modelValue":S[13]||(S[13]=C=>J.value.name=C),class:"inp"},null,512),[[ut,J.value.name]])]),T("div",lL,[T("label",cL,[S[220]||(S[220]=T("span",null,"类型",-1)),be(T("select",{"onUpdate:modelValue":S[14]||(S[14]=C=>J.value.shape=C),class:"inp"},[...S[219]||(S[219]=[io('',5)])],512),[[jt,J.value.shape]])]),T("label",hL,[S[221]||(S[221]=T("span",null,"启用",-1)),be(T("input",{"onUpdate:modelValue":S[15]||(S[15]=C=>J.value.enabled=C),type:"checkbox"},null,512),[[ei,J.value.enabled]])])]),T("div",uL,[T("label",dL,[S[222]||(S[222]=T("span",null,"X 位置",-1)),be(T("input",{"onUpdate:modelValue":S[16]||(S[16]=C=>J.value.x=C),type:"number",class:"inp"},null,512),[[ut,J.value.x,void 0,{number:!0}]])]),T("label",fL,[S[223]||(S[223]=T("span",null,"Y 位置",-1)),be(T("input",{"onUpdate:modelValue":S[17]||(S[17]=C=>J.value.y=C),type:"number",class:"inp"},null,512),[[ut,J.value.y,void 0,{number:!0}]])])]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:J.value.rotation,"onUpdate:modelValue":S[18]||(S[18]=C=>J.value.rotation=C)},null,8,["modelValue"]),T("div",mL,[T("label",pL,[S[224]||(S[224]=T("span",null,"缩放 X",-1)),be(T("input",{"onUpdate:modelValue":S[19]||(S[19]=C=>J.value.scaleX=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,J.value.scaleX,void 0,{number:!0}]])]),T("label",gL,[S[225]||(S[225]=T("span",null,"缩放 Y",-1)),be(T("input",{"onUpdate:modelValue":S[20]||(S[20]=C=>J.value.scaleY=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,J.value.scaleY,void 0,{number:!0}]])])]),J.value.shape==="circle"?(ie(),Qt(qe,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:J.value.radius,"onUpdate:modelValue":S[21]||(S[21]=C=>J.value.radius=C)},null,8,["modelValue"])):J.value.shape==="ellipse"?(ie(),oe("div",vL,[T("label",yL,[S[226]||(S[226]=T("span",null,"X 半径",-1)),be(T("input",{"onUpdate:modelValue":S[22]||(S[22]=C=>J.value.radiusX=C),type:"number",min:"1",class:"inp"},null,512),[[ut,J.value.radiusX,void 0,{number:!0}]])]),T("label",xL,[S[227]||(S[227]=T("span",null,"Y 半径",-1)),be(T("input",{"onUpdate:modelValue":S[23]||(S[23]=C=>J.value.radiusY=C),type:"number",min:"1",class:"inp"},null,512),[[ut,J.value.radiusY,void 0,{number:!0}]])])])):(ie(),oe("div",bL,[T("label",wL,[S[228]||(S[228]=T("span",null,"宽度",-1)),be(T("input",{"onUpdate:modelValue":S[24]||(S[24]=C=>J.value.width=C),type:"number",min:"1",class:"inp"},null,512),[[ut,J.value.width,void 0,{number:!0}]])]),T("label",SL,[S[229]||(S[229]=T("span",null,"高度",-1)),be(T("input",{"onUpdate:modelValue":S[25]||(S[25]=C=>J.value.height=C),type:"number",min:"1",class:"inp"},null,512),[[ut,J.value.height,void 0,{number:!0}]])])])),J.value.shape==="polygon"||J.value.shape==="custom"?(ie(),Qt(qe,{key:3,label:"边数",min:3,max:16,step:1,modelValue:J.value.sides,"onUpdate:modelValue":S[26]||(S[26]=C=>J.value.sides=C)},null,8,["modelValue"])):Xe("",!0),T("label",_L,[S[231]||(S[231]=T("span",null,"碰撞响应",-1)),be(T("select",{"onUpdate:modelValue":S[27]||(S[27]=C=>J.value.response=C),class:"inp"},[...S[230]||(S[230]=[T("option",{value:"physics"},"物理(弹跳/摩擦)",-1),T("option",{value:"pause"},"暂停(停止不动)",-1),T("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[jt,J.value.response]])]),J.value.response==="physics"?(ie(),oe("div",ML,[T("label",TL,[S[232]||(S[232]=T("span",null,"弹性 (0-1)",-1)),be(T("input",{"onUpdate:modelValue":S[28]||(S[28]=C=>J.value.elasticity=C),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[ut,J.value.elasticity,void 0,{number:!0}]])]),T("label",AL,[S[233]||(S[233]=T("span",null,"摩擦 (0-1)",-1)),be(T("input",{"onUpdate:modelValue":S[29]||(S[29]=C=>J.value.friction=C),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[ut,J.value.friction,void 0,{number:!0}]])])])):Xe("",!0),T("div",EL,[T("label",CL,[be(T("input",{"onUpdate:modelValue":S[30]||(S[30]=C=>J.value.followPath=C),type:"checkbox"},null,512),[[ei,J.value.followPath]]),S[234]||(S[234]=ri("跟随路径移动",-1))]),J.value.followPath?(ie(),oe(Ke,{key:0},[T("label",IL,[S[236]||(S[236]=T("span",null,"目标路径",-1)),be(T("select",{"onUpdate:modelValue":S[31]||(S[31]=C=>J.value.followPathId=C),class:"inp"},[S[235]||(S[235]=T("option",{value:0},"(未选择)",-1)),(ie(!0),oe(Ke,null,li(ke(e).paths,C=>(ie(),oe("option",{key:C.id,value:C.id},je(C.name),9,RL))),128))],512),[[jt,J.value.followPathId,void 0,{number:!0}]])]),T("div",PL,[T("label",kL,[S[237]||(S[237]=T("span",null,"移动时长(秒)",-1)),be(T("input",{"onUpdate:modelValue":S[32]||(S[32]=C=>J.value.followDuration=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,J.value.followDuration,void 0,{number:!0}]])]),T("label",FL,[S[239]||(S[239]=T("span",null,"曲线模式",-1)),be(T("select",{"onUpdate:modelValue":S[33]||(S[33]=C=>J.value.followCurveMode=C),class:"inp"},[...S[238]||(S[238]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[jt,J.value.followCurveMode]])])]),T("label",OL,[be(T("input",{"onUpdate:modelValue":S[34]||(S[34]=C=>J.value.followPathRotation=C),type:"checkbox"},null,512),[[ei,J.value.followPathRotation]]),S[240]||(S[240]=ri("方向沿路径",-1))]),S[241]||(S[241]=T("div",{class:"collider-curve-title"},[ri("移动进度曲线 "),T("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),Ue(yn,{"model-value":J.value.followCurve||j,"default-value":j,mode:M(J.value.followCurveMode),"onUpdate:modelValue":S[35]||(S[35]=C=>J.value.followCurve=C)},null,8,["model-value","mode"])],64)):Xe("",!0)])],64)):K.value?(ie(),oe(Ke,{key:2},[S[252]||(S[252]=T("div",{class:"object-editor-title"},"路径属性",-1)),T("label",BL,[S[243]||(S[243]=T("span",null,"路径名称",-1)),be(T("input",{"onUpdate:modelValue":S[36]||(S[36]=C=>K.value.name=C),class:"inp"},null,512),[[ut,K.value.name]])]),T("div",LL,[T("label",DL,[S[244]||(S[244]=T("span",null,"X 位置",-1)),be(T("input",{"onUpdate:modelValue":S[37]||(S[37]=C=>K.value.x=C),type:"number",class:"inp"},null,512),[[ut,K.value.x,void 0,{number:!0}]])]),T("label",NL,[S[245]||(S[245]=T("span",null,"Y 位置",-1)),be(T("input",{"onUpdate:modelValue":S[38]||(S[38]=C=>K.value.y=C),type:"number",class:"inp"},null,512),[[ut,K.value.y,void 0,{number:!0}]])])]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:K.value.rotation,"onUpdate:modelValue":S[39]||(S[39]=C=>K.value.rotation=C)},null,8,["modelValue"]),T("div",UL,[T("label",XL,[S[246]||(S[246]=T("span",null,"缩放 X",-1)),be(T("input",{"onUpdate:modelValue":S[40]||(S[40]=C=>K.value.scaleX=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,K.value.scaleX,void 0,{number:!0}]])]),T("label",VL,[S[247]||(S[247]=T("span",null,"缩放 Y",-1)),be(T("input",{"onUpdate:modelValue":S[41]||(S[41]=C=>K.value.scaleY=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,K.value.scaleY,void 0,{number:!0}]])])]),T("label",YL,[S[248]||(S[248]=T("span",null,"闭合路径",-1)),be(T("input",{"onUpdate:modelValue":S[42]||(S[42]=C=>K.value.closed=C),type:"checkbox"},null,512),[[ei,K.value.closed]])]),T("label",$L,[S[249]||(S[249]=T("span",null,"路径颜色",-1)),be(T("input",{"onUpdate:modelValue":S[43]||(S[43]=C=>K.value.color=C),type:"color",class:"path-color"},null,512),[[ut,K.value.color]])]),S[253]||(S[253]=io('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),T("label",GL,[S[251]||(S[251]=T("span",null,"应用预设形状",-1)),be(T("select",{"onUpdate:modelValue":S[44]||(S[44]=C=>K.value.preset=C),class:"inp"},[...S[250]||(S[250]=[io('',5)])],512),[[jt,K.value.preset]])]),T("button",{class:"path-action primary",onClick:Cs},"应用预设"),T("button",{class:"path-action",onClick:Xs},"清空锚点")],64)):fe.value?(ie(),Qt(w3,{key:3,"spine-object":fe.value},null,8,["spine-object"])):(ie(),oe("div",HL,"使用右上角按钮创建场景对象"))],512),[[Sr,!ae.scene]])]),W.value==="particle"&&E.value?(ie(),oe(Ke,{key:0},[T("div",jL,[T("div",{class:"group-head",onClick:S[46]||(S[46]=C=>Le("emitMode"))},[T("span",WL,je(ae.emitMode?"▸":"▾"),1),S[254]||(S[254]=T("span",null,"发射模式",-1)),T("button",{class:"group-reset",title:"重置发射模式参数",onClick:S[45]||(S[45]=xt(C=>Wi("emitMode"),["stop"]))},"重置")]),be(T("div",zL,[T("div",qL,[T("button",{class:ot(["seg",{on:E.value.config.mode==="stream"}]),onClick:S[47]||(S[47]=C=>Re("stream"))},"持续",2),T("button",{class:ot(["seg",{on:E.value.config.mode==="burst"}]),onClick:S[48]||(S[48]=C=>Re("burst"))},"爆发",2)]),E.value.config.mode==="stream"?(ie(),oe(Ke,{key:0},[T("div",KL,[T("button",{class:ot(["seg",{on:E.value.config.streamBehavior==="normal"}]),onClick:S[49]||(S[49]=C=>St("normal"))},"常规持续",2),T("button",{class:ot(["seg",{on:E.value.config.streamBehavior==="loop"}]),onClick:S[50]||(S[50]=C=>St("loop"))},"循环持续",2)]),Ue(qe,{label:"发射速率",min:1,max:300,step:1,modelValue:E.value.config.rate,"onUpdate:modelValue":S[51]||(S[51]=C=>E.value.config.rate=C)},null,8,["modelValue"]),E.value.config.streamBehavior==="normal"?(ie(),Qt(qe,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:E.value.config.duration,"onUpdate:modelValue":S[52]||(S[52]=C=>E.value.config.duration=C)},null,8,["modelValue"])):(ie(),Qt(qe,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":q.value,"onUpdate:modelValue":Oe},null,8,["model-value"])),E.value.config.streamBehavior==="loop"?(ie(),oe("div",ZL,[T("div",JL,[T("label",QL,[T("input",{type:"checkbox",checked:E.value.config.generateLoopStartAnimation,onChange:S[53]||(S[53]=C=>Pt("start",C))},null,40,eD),S[255]||(S[255]=T("span",{class:"switch-ui"},null,-1)),S[256]||(S[256]=T("span",null,"生成开始循环动画",-1))]),E.value.config.generateLoopStartAnimation?(ie(),oe("div",tD,[T("label",iD,[T("input",{type:"checkbox",checked:E.value.config.loopStartUseCustomDuration,onChange:S[54]||(S[54]=C=>Rt("start",C))},null,40,sD),S[257]||(S[257]=T("span",{class:"switch-ui"},null,-1)),S[258]||(S[258]=T("span",null,"指定时长",-1))]),T("label",nD,[E.value.config.loopStartUseCustomDuration?(ie(),oe("input",{key:0,value:E.value.config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:S[55]||(S[55]=C=>wt("start",C))},null,40,rD)):Xe("",!0),E.value.config.loopStartUseCustomDuration?(ie(),oe("span",aD,"f")):(ie(),oe("span",oD,"自动 "+je(V.value)+"f",1))])])):Xe("",!0)]),T("div",lD,[T("label",cD,[T("input",{type:"checkbox",checked:E.value.config.generateLoopEndAnimation,onChange:S[56]||(S[56]=C=>Pt("end",C))},null,40,hD),S[259]||(S[259]=T("span",{class:"switch-ui"},null,-1)),S[260]||(S[260]=T("span",null,"生成结束循环动画",-1))]),E.value.config.generateLoopEndAnimation?(ie(),oe("div",uD,[T("label",dD,[T("input",{type:"checkbox",checked:E.value.config.loopEndUseCustomDuration,onChange:S[57]||(S[57]=C=>Rt("end",C))},null,40,fD),S[261]||(S[261]=T("span",{class:"switch-ui"},null,-1)),S[262]||(S[262]=T("span",null,"指定时长",-1))]),T("label",mD,[E.value.config.loopEndUseCustomDuration?(ie(),oe("input",{key:0,value:E.value.config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:S[58]||(S[58]=C=>wt("end",C))},null,40,pD)):Xe("",!0),E.value.config.loopEndUseCustomDuration?(ie(),oe("span",gD,"f")):(ie(),oe("span",vD,"自动 "+je(V.value)+"f",1))])])):Xe("",!0)])])):Xe("",!0),E.value.config.streamBehavior==="loop"?(ie(),oe("div",yD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):Xe("",!0)],64)):(ie(),Qt(qe,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:E.value.config.burstCount,"onUpdate:modelValue":S[59]||(S[59]=C=>E.value.config.burstCount=C)},null,8,["modelValue"])),Ue(qe,{label:"延迟时间",min:0,max:5,step:.1,modelValue:E.value.config.delay,"onUpdate:modelValue":S[60]||(S[60]=C=>E.value.config.delay=C)},null,8,["modelValue"])],512),[[Sr,!ae.emitMode]])]),T("div",xD,[T("div",{class:"group-head",onClick:S[62]||(S[62]=C=>Le("shape"))},[T("span",bD,je(ae.shape?"▸":"▾"),1),S[263]||(S[263]=T("span",null,"发射器形状",-1)),T("button",{class:"group-reset",title:"重置发射器形状参数",onClick:S[61]||(S[61]=xt(C=>Wi("shape"),["stop"]))},"重置")]),be(T("div",wD,[T("label",SD,[S[265]||(S[265]=T("span",null,"形状",-1)),be(T("select",{"onUpdate:modelValue":S[63]||(S[63]=C=>E.value.config.shape=C),class:"inp",onChange:Ya},[...S[264]||(S[264]=[io('',5)])],544),[[jt,E.value.config.shape]])]),E.value.config.shape==="circle"||E.value.config.shape==="cone"?(ie(),oe(Ke,{key:0},[Ue(qe,{label:E.value.config.shape==="cone"?"内径":"内半径",min:0,max:E.value.config.outerRadius,step:1,modelValue:E.value.config.innerRadius,"onUpdate:modelValue":S[64]||(S[64]=C=>E.value.config.innerRadius=C)},null,8,["label","max","modelValue"]),Ue(qe,{label:E.value.config.shape==="cone"?"外径":"外半径",min:E.value.config.innerRadius,max:300,step:1,modelValue:E.value.config.outerRadius,"onUpdate:modelValue":S[65]||(S[65]=C=>E.value.config.outerRadius=C)},null,8,["label","min","modelValue"])],64)):Xe("",!0),E.value.config.shape==="cone"?(ie(),oe(Ke,{key:1},[Ue(qe,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:E.value.config.coneDirection,"onUpdate:modelValue":S[66]||(S[66]=C=>E.value.config.coneDirection=C)},null,8,["modelValue"]),Ue(qe,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:E.value.config.coneAngle,"onUpdate:modelValue":S[67]||(S[67]=C=>E.value.config.coneAngle=C)},null,8,["modelValue"])],64)):E.value.config.shape==="rect"?(ie(),oe(Ke,{key:2},[Ue(qe,{label:"内宽",min:0,max:E.value.config.outerRectW,step:1,modelValue:E.value.config.innerRectW,"onUpdate:modelValue":S[68]||(S[68]=C=>E.value.config.innerRectW=C)},null,8,["max","modelValue"]),Ue(qe,{label:"内高",min:0,max:E.value.config.outerRectH,step:1,modelValue:E.value.config.innerRectH,"onUpdate:modelValue":S[69]||(S[69]=C=>E.value.config.innerRectH=C)},null,8,["max","modelValue"]),Ue(qe,{label:"外宽",min:E.value.config.innerRectW,max:400,step:1,modelValue:E.value.config.outerRectW,"onUpdate:modelValue":S[70]||(S[70]=C=>E.value.config.outerRectW=C)},null,8,["min","modelValue"]),Ue(qe,{label:"外高",min:E.value.config.innerRectH,max:400,step:1,modelValue:E.value.config.outerRectH,"onUpdate:modelValue":S[71]||(S[71]=C=>E.value.config.outerRectH=C)},null,8,["min","modelValue"])],64)):E.value.config.shape==="path"?(ie(),oe(Ke,{key:3},[T("label",_D,[S[267]||(S[267]=T("span",null,"选择路径",-1)),be(T("select",{"onUpdate:modelValue":S[72]||(S[72]=C=>E.value.config.spawnPathId=C),class:"inp",onChange:$a},[S[266]||(S[266]=T("option",{value:0},"无路径(点发射)",-1)),(ie(!0),oe(Ke,null,li(ke(e).paths,C=>(ie(),oe("option",{key:C.id,value:C.id,disabled:!C.enabled},je(C.name),9,MD))),128))],544),[[jt,E.value.config.spawnPathId,void 0,{number:!0}]])]),E.value.config.spawnPathId>0?(ie(),oe("label",TD,[S[269]||(S[269]=T("span",null,"出生分布",-1)),be(T("select",{"onUpdate:modelValue":S[73]||(S[73]=C=>E.value.config.spawnPathDistribution=C),class:"inp"},[...S[268]||(S[268]=[T("option",{value:"fixed"},"等间距固定分布",-1),T("option",{value:"random"},"随机分布",-1)])],512),[[jt,E.value.config.spawnPathDistribution]])])):Xe("",!0)],64)):Xe("",!0),S[273]||(S[273]=T("div",{class:"divider"},null,-1)),T("label",AD,[S[272]||(S[272]=T("span",null,"发射角度",-1)),be(T("select",{"onUpdate:modelValue":S[74]||(S[74]=C=>E.value.config.emissionAngleMode=C),class:"inp"},[S[270]||(S[270]=T("option",{value:"fixed"},"固定",-1)),S[271]||(S[271]=T("option",{value:"random"},"随机",-1)),E.value.config.shape==="circle"||E.value.config.shape==="rect"||E.value.config.shape==="cone"?(ie(),oe("option",ED,"径向(中心向外)")):Xe("",!0),E.value.config.shape==="path"&&E.value.config.spawnPathId>0?(ie(),oe("option",CD,"垂直于路径")):Xe("",!0),E.value.config.shape==="path"&&E.value.config.spawnPathId>0?(ie(),oe("option",ID,"沿路径方向")):Xe("",!0)],512),[[jt,E.value.config.emissionAngleMode]])]),E.value.config.emissionAngleMode==="fixed"?(ie(),Qt(qe,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:E.value.config.direction,"onUpdate:modelValue":S[75]||(S[75]=C=>E.value.config.direction=C)},null,8,["modelValue"])):E.value.config.emissionAngleMode==="random"?(ie(),oe(Ke,{key:5},[Ue(qe,{label:"基准角度",min:-360,max:360,step:1,modelValue:E.value.config.direction,"onUpdate:modelValue":S[76]||(S[76]=C=>E.value.config.direction=C)},null,8,["modelValue"]),Ue(qe,{label:"随机范围",min:0,max:360,step:1,modelValue:E.value.config.spread,"onUpdate:modelValue":S[77]||(S[77]=C=>E.value.config.spread=C)},null,8,["modelValue"])],64)):Xe("",!0)],512),[[Sr,!ae.shape]])]),T("div",RD,[T("div",{class:"group-head",onClick:S[79]||(S[79]=C=>Le("attr"))},[T("span",PD,je(ae.attr?"▸":"▾"),1),S[274]||(S[274]=T("span",null,"粒子属性",-1)),T("button",{class:"group-reset",title:"重置粒子属性参数",onClick:S[78]||(S[78]=xt(C=>Wi("attr"),["stop"]))},"重置")]),be(T("div",kD,[S[282]||(S[282]=T("div",{class:"attr-section-title"},"粒子初始参数",-1)),Ue(Hn,{label:"初始生命周期","allow-curve":!1,mode:E.value.config.lifeMode,"onUpdate:mode":S[80]||(S[80]=C=>E.value.config.lifeMode=C),"value-min":E.value.config.lifeMin,"onUpdate:valueMin":S[81]||(S[81]=C=>E.value.config.lifeMin=C),"value-max":E.value.config.lifeMax,"onUpdate:valueMax":S[82]||(S[82]=C=>E.value.config.lifeMax=C),curve:E.value.config.lifeCurve,"onUpdate:curve":S[83]||(S[83]=C=>E.value.config.lifeCurve=C),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),Ue(Hn,{label:"初始速度","allow-curve":!1,mode:E.value.config.speedMode,"onUpdate:mode":S[84]||(S[84]=C=>E.value.config.speedMode=C),"value-min":E.value.config.speedMin,"onUpdate:valueMin":S[85]||(S[85]=C=>E.value.config.speedMin=C),"value-max":E.value.config.speedMax,"onUpdate:valueMax":S[86]||(S[86]=C=>E.value.config.speedMax=C),curve:E.value.config.speedCurve,"onUpdate:curve":S[87]||(S[87]=C=>E.value.config.speedCurve=C),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),T("div",FD,[S[275]||(S[275]=T("span",null,"初始缩放",-1)),T("div",OD,[T("button",{class:ot(["axis-mode",{on:E.value.config.scaleAxisMode==="uniform"}]),onClick:S[88]||(S[88]=C=>E.value.config.scaleAxisMode="uniform")},"统一",2),T("button",{class:ot(["axis-mode",{on:E.value.config.scaleAxisMode==="separate"}]),onClick:S[89]||(S[89]=C=>E.value.config.scaleAxisMode="separate")},"XY分离",2)])]),Ue(Hn,{label:E.value.config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:E.value.config.scaleMode,"onUpdate:mode":S[90]||(S[90]=C=>E.value.config.scaleMode=C),"value-min":E.value.config.scaleMin,"onUpdate:valueMin":S[91]||(S[91]=C=>E.value.config.scaleMin=C),"value-max":E.value.config.scaleMax,"onUpdate:valueMax":S[92]||(S[92]=C=>E.value.config.scaleMax=C),curve:E.value.config.scaleCurve,"onUpdate:curve":S[93]||(S[93]=C=>E.value.config.scaleCurve=C),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),E.value.config.scaleAxisMode==="separate"?(ie(),Qt(Hn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:E.value.config.scaleMode,"onUpdate:mode":S[94]||(S[94]=C=>E.value.config.scaleMode=C),"value-min":E.value.config.scaleYMin,"onUpdate:valueMin":S[95]||(S[95]=C=>E.value.config.scaleYMin=C),"value-max":E.value.config.scaleYMax,"onUpdate:valueMax":S[96]||(S[96]=C=>E.value.config.scaleYMax=C),curve:E.value.config.scaleYCurve,"onUpdate:curve":S[97]||(S[97]=C=>E.value.config.scaleYCurve=C),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):Xe("",!0),Ue(Hn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:E.value.config.initialRotationMode,"onUpdate:mode":S[98]||(S[98]=C=>E.value.config.initialRotationMode=C),"value-min":E.value.config.initialRotationMin,"onUpdate:valueMin":S[99]||(S[99]=C=>E.value.config.initialRotationMin=C),"value-max":E.value.config.initialRotationMax,"onUpdate:valueMax":S[100]||(S[100]=C=>E.value.config.initialRotationMax=C),curve:E.value.config.initialRotationCurve,"onUpdate:curve":S[101]||(S[101]=C=>E.value.config.initialRotationCurve=C),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),S[283]||(S[283]=T("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),T("div",BD,[T("label",LD,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[102]||(S[102]=C=>E.value.config.speedOverLifeEnabled=C)},null,512),[[ei,E.value.config.speedOverLifeEnabled]]),S[276]||(S[276]=T("span",{class:"switch-ui"},null,-1)),S[277]||(S[277]=T("span",null,"生命周期内速度",-1))]),E.value.config.speedOverLifeEnabled?(ie(),Qt(Hn,{key:0,label:"速度倍率",mode:E.value.config.speedOverLifeMode,"onUpdate:mode":Is,"value-min":E.value.config.speedOverLifeMin,"onUpdate:valueMin":S[103]||(S[103]=C=>E.value.config.speedOverLifeMin=C),"value-max":E.value.config.speedOverLifeMax,"onUpdate:valueMax":S[104]||(S[104]=C=>E.value.config.speedOverLifeMax=C),curve:E.value.config.speedOverLifeCurve,"onUpdate:curve":S[105]||(S[105]=C=>E.value.config.speedOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Xe("",!0)]),T("div",DD,[T("label",ND,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[106]||(S[106]=C=>E.value.config.scaleOverLifeEnabled=C),onChange:xr},null,544),[[ei,E.value.config.scaleOverLifeEnabled]]),S[278]||(S[278]=T("span",{class:"switch-ui"},null,-1)),S[279]||(S[279]=T("span",null,"生命周期内缩放",-1))]),E.value.config.scaleOverLifeEnabled?(ie(),oe(Ke,{key:0},[T("div",UD,[T("button",{class:ot(["axis-mode",{on:E.value.config.scaleOverLifeAxisMode==="uniform"}]),onClick:S[107]||(S[107]=C=>E.value.config.scaleOverLifeAxisMode="uniform")},"统一",2),T("button",{class:ot(["axis-mode",{on:E.value.config.scaleOverLifeAxisMode==="separate"}]),onClick:S[108]||(S[108]=C=>E.value.config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),Ue(Hn,{label:E.value.config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:E.value.config.scaleOverLifeMode,"onUpdate:mode":ln,"value-min":E.value.config.scaleOverLifeMin,"onUpdate:valueMin":S[109]||(S[109]=C=>E.value.config.scaleOverLifeMin=C),"value-max":E.value.config.scaleOverLifeMax,"onUpdate:valueMax":S[110]||(S[110]=C=>E.value.config.scaleOverLifeMax=C),curve:E.value.config.scaleOverLifeCurve,"onUpdate:curve":S[111]||(S[111]=C=>E.value.config.scaleOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","value-min","value-max","curve"]),E.value.config.scaleOverLifeAxisMode==="separate"?(ie(),Qt(Hn,{key:0,label:"倍率 Y","show-modes":!1,mode:E.value.config.scaleOverLifeMode,"onUpdate:mode":S[112]||(S[112]=C=>E.value.config.scaleOverLifeMode=C),"value-min":E.value.config.scaleYOverLifeMin,"onUpdate:valueMin":S[113]||(S[113]=C=>E.value.config.scaleYOverLifeMin=C),"value-max":E.value.config.scaleYOverLifeMax,"onUpdate:valueMax":S[114]||(S[114]=C=>E.value.config.scaleYOverLifeMax=C),curve:E.value.config.scaleYOverLifeCurve,"onUpdate:curve":S[115]||(S[115]=C=>E.value.config.scaleYOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Xe("",!0)],64)):Xe("",!0)]),T("div",XD,[T("label",VD,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[116]||(S[116]=C=>E.value.config.rotationOverLifeEnabled=C)},null,512),[[ei,E.value.config.rotationOverLifeEnabled]]),S[280]||(S[280]=T("span",{class:"switch-ui"},null,-1)),S[281]||(S[281]=T("span",null,"生命周期内旋转",-1))]),E.value.config.rotationOverLifeEnabled?(ie(),Qt(Hn,{key:0,label:"旋转速度",mode:E.value.config.rotationOverLifeMode,"onUpdate:mode":S[117]||(S[117]=C=>E.value.config.rotationOverLifeMode=C),"value-min":E.value.config.rotationSpeedMin,"onUpdate:valueMin":S[118]||(S[118]=C=>E.value.config.rotationSpeedMin=C),"value-max":E.value.config.rotationSpeedMax,"onUpdate:valueMax":S[119]||(S[119]=C=>E.value.config.rotationSpeedMax=C),curve:E.value.config.rotationOverLifeCurve,"onUpdate:curve":S[120]||(S[120]=C=>E.value.config.rotationOverLifeCurve=C),"default-curve":j,min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Xe("",!0)])],512),[[Sr,!ae.attr]])]),T("div",YD,[T("div",{class:"group-head",onClick:S[122]||(S[122]=C=>Le("look"))},[T("span",$D,je(ae.look?"▸":"▾"),1),S[284]||(S[284]=T("span",null,"外观与资源",-1)),T("button",{class:"group-reset",title:"重置外观与资源参数",onClick:S[121]||(S[121]=xt(C=>Wi("look"),["stop"]))},"重置")]),be(T("div",GD,[S[298]||(S[298]=T("div",{class:"look-title"},"透明度",-1)),T("div",HD,[T("button",{class:ot(["seg-btn",{active:E.value.config.alphaMode==="curve"}]),onClick:S[123]||(S[123]=C=>E.value.config.alphaMode="curve")},"曲线",2),T("button",{class:ot(["seg-btn",{active:E.value.config.alphaMode==="fixed"}]),onClick:S[124]||(S[124]=C=>E.value.config.alphaMode="fixed")},"固定",2)]),E.value.config.alphaMode==="fixed"?(ie(),Qt(qe,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:E.value.config.alpha,"onUpdate:modelValue":S[125]||(S[125]=C=>E.value.config.alpha=C)},null,8,["modelValue"])):(ie(),oe(Ke,{key:1},[T("label",jD,[S[286]||(S[286]=T("span",null,"曲线模式",-1)),be(T("select",{"onUpdate:modelValue":S[126]||(S[126]=C=>E.value.config.curveMode=C),class:"inp"},[...S[285]||(S[285]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[jt,E.value.config.curveMode]])]),T("div",WD,[Ue(yn,{modelValue:E.value.config.alphaCurve,"onUpdate:modelValue":S[127]||(S[127]=C=>E.value.config.alphaCurve=C),"default-value":he,mode:M(E.value.config.curveMode)},null,8,["modelValue","mode"]),S[287]||(S[287]=T("div",{class:"curve-labels"},[T("span",null,"0(透明)"),T("span",null,"生命周期 →"),T("span",null,"1(不透明)")],-1))])],64)),T("div",{class:"look-title image-title"},[S[288]||(S[288]=T("span",null,"图片资源",-1)),T("button",{class:"image-add",title:"新增图片资源",onClick:Ie},"+")]),(ie(!0),oe(Ke,null,li(E.value.config.imageResources,C=>(ie(),Qt(qv,{key:C.id,resource:C,"resource-count":E.value.config.imageResources.length,"supports-sequence":"","default-file":"star.png",onPick:Be,onPickSequence:Ae,onReset:nt,onRemove:Pe,onUpdateWeight:Xi,onToggleLock:ns},{default:ah(()=>[Ue(qe,{label:"缩放",min:.1,max:3,step:.05,modelValue:C.scale,"onUpdate:modelValue":Q=>C.scale=Q},null,8,["modelValue","onUpdate:modelValue"]),T("label",zD,[S[289]||(S[289]=T("span",null,"轴心 x,y",-1)),be(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":Q=>C.anchorX=Q},null,8,qD),[[ut,C.anchorX,void 0,{number:!0}]]),be(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":Q=>C.anchorY=Q},null,8,KD),[[ut,C.anchorY,void 0,{number:!0}]])]),S[297]||(S[297]=T("div",{class:"resource-divider"},null,-1)),T("label",ZD,[S[292]||(S[292]=T("span",null,"颜色",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.colorMode=Q,class:"inp"},[...S[290]||(S[290]=[T("option",{value:"fixed"},"固定色",-1),T("option",{value:"random"},"随机颜色",-1),T("option",{value:"lifetime"},"生命周期",-1)])],8,JD),[[jt,C.colorMode]]),be(T("select",{"onUpdate:modelValue":Q=>C.blend=Q,class:"inp blend-select"},[...S[291]||(S[291]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,QD),[[jt,C.blend]])]),C.colorMode==="fixed"?(ie(),oe("label",eN,[S[293]||(S[293]=T("span",null,"固定色",-1)),be(T("input",{type:"color","onUpdate:modelValue":Q=>C.colorStart=Q,class:"colr"},null,8,tN),[[ut,C.colorStart]]),T("input",{type:"text",class:"hex-input",value:C.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:Q=>Se(C,Q),onKeydown:Ta(Q=>rt(C,Q),["enter"])},null,40,iN)])):(ie(),oe(Ke,{key:1},[Ue(zv,{modelValue:C.colorGradient,"onUpdate:modelValue":Q=>C.colorGradient=Q},null,8,["modelValue","onUpdate:modelValue"]),C.colorMode==="random"?(ie(),oe("div",sN,"每个粒子出生时从色带随机取色,生命周期内保持不变")):Xe("",!0)],64)),T("div",nN,[S[294]||(S[294]=T("span",null,"独立透明度",-1)),T("div",rN,[T("button",{class:ot({on:C.independentAlpha==="off"}),onClick:Q=>C.independentAlpha="off"},"关闭",10,aN),T("button",{class:ot({on:C.independentAlpha==="fixed"}),onClick:Q=>C.independentAlpha="fixed"},"固定",10,oN),T("button",{class:ot({on:C.independentAlpha==="curve"}),onClick:Q=>C.independentAlpha="curve"},"曲线",10,lN)])]),C.independentAlpha==="fixed"?(ie(),Qt(qe,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:C.alpha,"onUpdate:modelValue":Q=>C.alpha=Q},null,8,["modelValue","onUpdate:modelValue"])):C.independentAlpha==="curve"?(ie(),oe(Ke,{key:3},[T("label",cN,[S[296]||(S[296]=T("span",null,"曲线模式",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.alphaCurveMode=Q,class:"inp"},[...S[295]||(S[295]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],8,hN),[[jt,C.alphaCurveMode]])]),T("div",uN,[Ue(yn,{modelValue:C.alphaCurve,"onUpdate:modelValue":Q=>C.alphaCurve=Q,"default-value":ve,mode:M(C.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","mode"])])],64)):Xe("",!0)]),_:2},1032,["resource","resource-count"]))),128)),T("input",{ref_key:"textureFileInput",ref:Qr,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:He},null,544),T("input",{ref_key:"sequenceFileInput",ref:cn,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:st},null,544)],512),[[Sr,!ae.look]])]),T("div",dN,[T("div",{class:"group-head",onClick:S[129]||(S[129]=C=>Le("mods"))},[T("span",fN,je(ae.mods?"▸":"▾"),1),S[299]||(S[299]=T("span",null,"修改器",-1)),T("button",{class:"group-reset",title:"重置修改器参数",onClick:S[128]||(S[128]=xt(C=>Wi("mods"),["stop"]))},"重置")]),be(T("div",mN,[T("div",pN,[T("label",gN,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[130]||(S[130]=C=>E.value.config.noise=C)},null,512),[[ei,E.value.config.noise]]),S[300]||(S[300]=T("span",{class:"switch-ui"},null,-1)),S[301]||(S[301]=T("span",null,"开启移动噪声",-1))]),E.value.config.noise?(ie(),oe("div",vN,[Ue(qe,{label:"强度",min:0,max:100,step:1,modelValue:E.value.config.noiseAmt,"onUpdate:modelValue":S[131]||(S[131]=C=>E.value.config.noiseAmt=C)},null,8,["modelValue"]),Ue(qe,{label:"波动范围",min:0,max:500,step:1,modelValue:E.value.config.noiseRange,"onUpdate:modelValue":S[132]||(S[132]=C=>E.value.config.noiseRange=C)},null,8,["modelValue"]),Ue(qe,{label:"时间流速",min:0,max:10,step:.1,modelValue:E.value.config.noiseSpeed,"onUpdate:modelValue":S[133]||(S[133]=C=>E.value.config.noiseSpeed=C)},null,8,["modelValue"]),S[302]||(S[302]=T("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):Xe("",!0)]),T("div",yN,[T("label",xN,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[134]||(S[134]=C=>E.value.config.useGravity=C)},null,512),[[ei,E.value.config.useGravity]]),S[303]||(S[303]=T("span",{class:"switch-ui"},null,-1)),S[304]||(S[304]=T("span",null,"开启重力",-1))]),E.value.config.useGravity?(ie(),oe("div",bN,[T("div",wN,[T("button",{class:ot(["axis-mode",{on:E.value.config.gravityMode==="fixed"}]),onClick:S[135]||(S[135]=C=>E.value.config.gravityMode="fixed")},"固定",2),T("button",{class:ot(["axis-mode",{on:E.value.config.gravityMode==="random"}]),onClick:S[136]||(S[136]=C=>E.value.config.gravityMode="random")},"随机",2)]),E.value.config.gravityMode==="fixed"?(ie(),Qt(qe,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMin,"onUpdate:modelValue":S[137]||(S[137]=C=>E.value.config.gravityMin=C)},null,8,["modelValue"])):(ie(),oe(Ke,{key:1},[Ue(qe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMin,"onUpdate:modelValue":S[138]||(S[138]=C=>E.value.config.gravityMin=C)},null,8,["modelValue"]),Ue(qe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMax,"onUpdate:modelValue":S[139]||(S[139]=C=>E.value.config.gravityMax=C)},null,8,["modelValue"])],64)),Ue(qe,{label:"方向",min:-360,max:360,step:1,modelValue:E.value.config.gravityDirection,"onUpdate:modelValue":S[140]||(S[140]=C=>E.value.config.gravityDirection=C)},null,8,["modelValue"]),S[305]||(S[305]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内重力"),T("span",null,"纵轴:强度 0~1")],-1)),Ue(yn,{modelValue:E.value.config.gravityCurve,"onUpdate:modelValue":S[141]||(S[141]=C=>E.value.config.gravityCurve=C),"default-value":te},null,8,["modelValue"]),S[306]||(S[306]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),S[307]||(S[307]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Xe("",!0)]),T("div",SN,[T("label",_N,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[142]||(S[142]=C=>E.value.config.wind=C)},null,512),[[ei,E.value.config.wind]]),S[308]||(S[308]=T("span",{class:"switch-ui"},null,-1)),S[309]||(S[309]=T("span",null,"开启风力",-1))]),E.value.config.wind?(ie(),oe("div",MN,[T("div",TN,[T("button",{class:ot(["axis-mode",{on:E.value.config.windMode==="fixed"}]),onClick:S[143]||(S[143]=C=>E.value.config.windMode="fixed")},"固定",2),T("button",{class:ot(["axis-mode",{on:E.value.config.windMode==="random"}]),onClick:S[144]||(S[144]=C=>E.value.config.windMode="random")},"随机",2)]),E.value.config.windMode==="fixed"?(ie(),Qt(qe,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMin,"onUpdate:modelValue":S[145]||(S[145]=C=>E.value.config.windMin=C)},null,8,["modelValue"])):(ie(),oe(Ke,{key:1},[Ue(qe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMin,"onUpdate:modelValue":S[146]||(S[146]=C=>E.value.config.windMin=C)},null,8,["modelValue"]),Ue(qe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMax,"onUpdate:modelValue":S[147]||(S[147]=C=>E.value.config.windMax=C)},null,8,["modelValue"])],64)),Ue(qe,{label:"方向",min:-360,max:360,step:1,modelValue:E.value.config.windDirection,"onUpdate:modelValue":S[148]||(S[148]=C=>E.value.config.windDirection=C)},null,8,["modelValue"]),S[310]||(S[310]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内风力"),T("span",null,"纵轴:强度 0~1")],-1)),Ue(yn,{modelValue:E.value.config.windCurve,"onUpdate:modelValue":S[149]||(S[149]=C=>E.value.config.windCurve=C),"default-value":te},null,8,["modelValue"]),S[311]||(S[311]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),S[312]||(S[312]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Xe("",!0)]),T("div",AN,[T("label",EN,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[150]||(S[150]=C=>E.value.config.forceField=C)},null,512),[[ei,E.value.config.forceField]]),S[313]||(S[313]=T("span",{class:"switch-ui"},null,-1)),S[314]||(S[314]=T("span",null,"开启力场",-1))]),E.value.config.forceField?(ie(),oe("div",CN,[Ue(qe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:E.value.config.forceCenterX,"onUpdate:modelValue":S[151]||(S[151]=C=>E.value.config.forceCenterX=C)},null,8,["modelValue"]),Ue(qe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:E.value.config.forceCenterY,"onUpdate:modelValue":S[152]||(S[152]=C=>E.value.config.forceCenterY=C)},null,8,["modelValue"]),Ue(qe,{label:"力场强度",min:-300,max:300,step:1,modelValue:E.value.config.forceStrength,"onUpdate:modelValue":S[153]||(S[153]=C=>E.value.config.forceStrength=C)},null,8,["modelValue"]),Ue(qe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:E.value.config.forceRadius,"onUpdate:modelValue":S[154]||(S[154]=C=>E.value.config.forceRadius=C)},null,8,["modelValue"]),T("label",IN,[S[316]||(S[316]=T("span",null,"衰减模式",-1)),be(T("select",{"onUpdate:modelValue":S[155]||(S[155]=C=>E.value.config.forceFalloff=C),class:"inp"},[...S[315]||(S[315]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[jt,E.value.config.forceFalloff]])]),S[317]||(S[317]=T("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1))])):Xe("",!0)]),T("div",RN,[T("label",PN,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[156]||(S[156]=C=>E.value.config.attraction=C)},null,512),[[ei,E.value.config.attraction]]),S[318]||(S[318]=T("span",{class:"switch-ui"},null,-1)),S[319]||(S[319]=T("span",null,"开启吸附",-1))]),E.value.config.attraction?(ie(),oe("div",kN,[Ue(qe,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:E.value.config.attractionCenterX,"onUpdate:modelValue":S[157]||(S[157]=C=>E.value.config.attractionCenterX=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:E.value.config.attractionCenterY,"onUpdate:modelValue":S[158]||(S[158]=C=>E.value.config.attractionCenterY=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:E.value.config.attractionRadius,"onUpdate:modelValue":S[159]||(S[159]=C=>E.value.config.attractionRadius=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:E.value.config.attractionDuration,"onUpdate:modelValue":S[160]||(S[160]=C=>E.value.config.attractionDuration=C)},null,8,["modelValue"]),Ue(qe,{label:"延迟时间",min:0,max:30,step:.05,modelValue:E.value.config.attractionDelay,"onUpdate:modelValue":S[161]||(S[161]=C=>E.value.config.attractionDelay=C)},null,8,["modelValue"]),T("label",FN,[S[321]||(S[321]=T("span",null,"延迟方式",-1)),be(T("select",{"onUpdate:modelValue":S[162]||(S[162]=C=>E.value.config.attractionDelayMode=C),class:"inp"},[...S[320]||(S[320]=[T("option",{value:"global"},"统一时间",-1),T("option",{value:"particle"},"单粒子生命",-1)])],512),[[jt,E.value.config.attractionDelayMode]])]),T("label",ON,[S[323]||(S[323]=T("span",null,"吸附方式",-1)),be(T("select",{"onUpdate:modelValue":S[163]||(S[163]=C=>E.value.config.attractionPath=C),class:"inp"},[...S[322]||(S[322]=[T("option",{value:"linear"},"直线",-1),T("option",{value:"curve"},"曲线",-1)])],512),[[jt,E.value.config.attractionPath]])]),S[324]||(S[324]=T("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1))])):Xe("",!0)]),T("div",BN,[T("label",LN,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[164]||(S[164]=C=>E.value.config.trail=C)},null,512),[[ei,E.value.config.trail]]),S[325]||(S[325]=T("span",{class:"switch-ui"},null,-1)),S[326]||(S[326]=T("span",null,"开启拖尾",-1))]),E.value.config.trail?(ie(),oe("div",DN,[T("div",{class:"trail-section-head"},[S[327]||(S[327]=T("div",{class:"trail-section-title"},"拖尾独立图片",-1)),T("button",{class:"image-add",title:"增加拖尾图片资源",onClick:un},"+")]),(ie(!0),oe(Ke,null,li(E.value.config.trailResources,C=>(ie(),Qt(qv,{key:C.id,resource:C,"resource-count":E.value.config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:Ga,onReset:ne,onRemove:ue,onUpdateWeight:_e,onToggleLock:Me},{default:ah(()=>[S[343]||(S[343]=T("div",{class:"resource-divider"},null,-1)),Ue(qe,{label:"旋转",min:-360,max:360,step:1,"model-value":C.rotation,"onUpdate:modelValue":Q=>Y(C.id,Q)},null,8,["model-value","onUpdate:modelValue"]),Ue(qe,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":C.boneCount,"onUpdate:modelValue":Q=>H(C.id,Q)},null,8,["model-value","onUpdate:modelValue"]),Ue(qe,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:C.trailRatio,"onUpdate:modelValue":Q=>C.trailRatio=Q},null,8,["modelValue","onUpdate:modelValue"]),T("label",NN,[S[329]||(S[329]=T("span",null,"拖尾长度",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.lengthMode=Q,class:"inp"},[...S[328]||(S[328]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,UN),[[jt,C.lengthMode]])]),C.lengthMode==="fixed"?(ie(),Qt(qe,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:C.length,"onUpdate:modelValue":Q=>C.length=Q},null,8,["modelValue","onUpdate:modelValue"])):(ie(),oe(Ke,{key:1},[Ue(qe,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:C.lengthMin,"onUpdate:modelValue":Q=>C.lengthMin=Q},null,8,["modelValue","onUpdate:modelValue"]),Ue(qe,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:C.lengthMax,"onUpdate:modelValue":Q=>C.lengthMax=Q},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",XN,[S[331]||(S[331]=T("span",null,"拖尾宽度",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.widthSizeMode=Q,class:"inp"},[...S[330]||(S[330]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,VN),[[jt,C.widthSizeMode]])]),C.widthSizeMode==="fixed"?(ie(),Qt(qe,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:C.width,"onUpdate:modelValue":Q=>C.width=Q},null,8,["modelValue","onUpdate:modelValue"])):(ie(),oe(Ke,{key:3},[Ue(qe,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:C.widthMin,"onUpdate:modelValue":Q=>C.widthMin=Q},null,8,["modelValue","onUpdate:modelValue"]),Ue(qe,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:C.widthMax,"onUpdate:modelValue":Q=>C.widthMax=Q},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",YN,[S[333]||(S[333]=T("span",null,"宽度缩放",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.widthMode=Q,class:"inp"},[...S[332]||(S[332]=[T("option",{value:"particle"},"跟随粒子",-1),T("option",{value:"fixed"},"固定",-1)])],8,$N),[[jt,C.widthMode]])]),T("label",GN,[be(T("input",{type:"checkbox","onUpdate:modelValue":Q=>C.lifeLengthEnabled=Q},null,8,HN),[[ei,C.lifeLengthEnabled]]),S[334]||(S[334]=T("span",{class:"switch-ui"},null,-1)),S[335]||(S[335]=T("span",null,"生命周期长度曲线",-1))]),C.lifeLengthEnabled?(ie(),Qt(yn,{key:4,modelValue:C.lifeLengthCurve,"onUpdate:modelValue":Q=>C.lifeLengthCurve=Q,"default-value":te},null,8,["modelValue","onUpdate:modelValue"])):Xe("",!0),T("label",jN,[be(T("input",{type:"checkbox","onUpdate:modelValue":Q=>C.shapeEnabled=Q},null,8,WN),[[ei,C.shapeEnabled]]),S[336]||(S[336]=T("span",{class:"switch-ui"},null,-1)),S[337]||(S[337]=T("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),C.shapeEnabled?(ie(),Qt(yn,{key:5,modelValue:C.shapeCurve,"onUpdate:modelValue":Q=>C.shapeCurve=Q,"default-value":ye},null,8,["modelValue","onUpdate:modelValue"])):Xe("",!0),T("div",zN,[S[338]||(S[338]=T("span",null,"颜色模式",-1)),T("div",qN,[T("button",{class:ot(["axis-mode",{on:C.colorMode==="particle"}]),onClick:Q=>C.colorMode="particle"},"跟随粒子",10,KN),T("button",{class:ot(["axis-mode",{on:C.colorMode==="fixed"}]),onClick:Q=>C.colorMode="fixed"},"固定",10,ZN),T("button",{class:ot(["axis-mode",{on:C.colorMode==="curve"}]),onClick:Q=>C.colorMode="curve"},"曲线",10,JN)])]),T("label",QN,[S[340]||(S[340]=T("span",null,"混合模式",-1)),be(T("select",{"onUpdate:modelValue":Q=>C.blend=Q,class:"inp"},[...S[339]||(S[339]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,e5),[[jt,C.blend]])]),C.colorMode==="fixed"?(ie(),oe("label",t5,[S[341]||(S[341]=T("span",null,"固定颜色",-1)),be(T("input",{class:"colr",type:"color","onUpdate:modelValue":Q=>C.color=Q},null,8,i5),[[ut,C.color]]),T("input",{class:"hex-input",value:C.color,onChange:Q=>xe(C,Q),onKeydown:Ta(xt(Q=>De(C,Q),["prevent"]),["enter"])},null,40,s5)])):C.colorMode==="curve"?(ie(),Qt(zv,{key:7,modelValue:C.colorGradient,"onUpdate:modelValue":Q=>C.colorGradient=Q},null,8,["modelValue","onUpdate:modelValue"])):Xe("",!0),T("div",n5,[S[342]||(S[342]=T("span",null,"透明度模式",-1)),T("div",r5,[T("button",{class:ot(["axis-mode",{on:C.alphaMode==="particle"}]),onClick:Q=>C.alphaMode="particle"},"跟随粒子",10,a5),T("button",{class:ot(["axis-mode",{on:C.alphaMode==="fixed"}]),onClick:Q=>C.alphaMode="fixed"},"固定",10,o5),T("button",{class:ot(["axis-mode",{on:C.alphaMode==="curve"}]),onClick:Q=>C.alphaMode="curve"},"曲线",10,l5)])]),C.alphaMode==="fixed"?(ie(),Qt(qe,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:C.alpha,"onUpdate:modelValue":Q=>C.alpha=Q},null,8,["modelValue","onUpdate:modelValue"])):Xe("",!0),C.alphaMode==="curve"?(ie(),Qt(yn,{key:9,modelValue:C.alphaCurve,"onUpdate:modelValue":Q=>C.alphaCurve=Q,"default-value":le},null,8,["modelValue","onUpdate:modelValue"])):Xe("",!0)]),_:2},1032,["resource","resource-count"]))),128)),T("input",{ref_key:"trailTextureFileInput",ref:hn,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:ee},null,544),T("div",c5,[Ue(qe,{label:"网格行数",min:2,max:16,step:1,"model-value":E.value.config.trailGridRows,"onUpdate:modelValue":S[165]||(S[165]=C=>br("trailGridRows",C))},null,8,["model-value"]),Ue(qe,{label:"网格列数",min:2,max:32,step:1,"model-value":E.value.config.trailGridCols,"onUpdate:modelValue":S[166]||(S[166]=C=>br("trailGridCols",C))},null,8,["model-value"])]),S[344]||(S[344]=T("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):Xe("",!0)]),T("div",h5,[T("label",u5,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[167]||(S[167]=C=>E.value.config.emitterFollow=C),disabled:E.value.config.streamBehavior==="loop"},null,8,d5),[[ei,E.value.config.emitterFollow]]),S[345]||(S[345]=T("span",{class:"switch-ui"},null,-1)),S[346]||(S[346]=T("span",null,"开启发射器跟随",-1))]),E.value.config.emitterFollow&&E.value.config.streamBehavior!=="loop"?(ie(),oe("div",f5,[T("label",m5,[S[349]||(S[349]=T("span",null,"跟随模式",-1)),T("select",{value:E.value.config.emitterFollowMode,class:"inp",onChange:S[168]||(S[168]=C=>Zt(C,E.value.config))},[S[347]||(S[347]=T("option",{value:"none"},"无",-1)),S[348]||(S[348]=T("option",{value:"path"},"跟随路径",-1)),we.value||E.value.config.emitterFollowMode==="bone"?(ie(),oe("option",g5,"选中的骨骼")):Xe("",!0)],40,p5)]),E.value.config.emitterFollowMode==="path"?(ie(),oe(Ke,{key:0},[T("label",v5,[S[351]||(S[351]=T("span",null,"跟随路径",-1)),be(T("select",{"onUpdate:modelValue":S[169]||(S[169]=C=>E.value.config.emitterFollowPathId=C),class:"inp"},[S[350]||(S[350]=T("option",{value:0},"无",-1)),(ie(!0),oe(Ke,null,li(ke(e).paths,C=>(ie(),oe("option",{key:C.id,value:C.id},je(C.name),9,y5))),128))],512),[[jt,E.value.config.emitterFollowPathId,void 0,{number:!0}]])]),T("label",x5,[S[353]||(S[353]=T("span",null,"发射器角度模式",-1)),be(T("select",{"onUpdate:modelValue":S[170]||(S[170]=C=>E.value.config.emitterAngleMode=C),class:"inp"},[...S[352]||(S[352]=[T("option",{value:"fixed"},"固定角度",-1),T("option",{value:"direction"},"跟随移动方向",-1)])],512),[[jt,E.value.config.emitterAngleMode]])]),S[359]||(S[359]=T("div",{class:"gravity-curve-title"},[T("span",null,"移动进度曲线 (0→1)")],-1)),Ue(yn,{modelValue:E.value.config.emitterFollowCurve,"onUpdate:modelValue":S[171]||(S[171]=C=>E.value.config.emitterFollowCurve=C),"default-value":j},null,8,["modelValue"]),T("div",b5,[T("label",w5,[S[354]||(S[354]=T("span",null,"移动时长 (s)",-1)),be(T("input",{"onUpdate:modelValue":S[172]||(S[172]=C=>E.value.config.emitterFollowDuration=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ut,E.value.config.emitterFollowDuration,void 0,{number:!0}]])]),T("label",S5,[S[356]||(S[356]=T("span",null,"跟随空间",-1)),be(T("select",{"onUpdate:modelValue":S[173]||(S[173]=C=>E.value.config.emitterFollowSpace=C),class:"inp"},[...S[355]||(S[355]=[T("option",{value:"local"},"局部空间(GEN 移动)",-1),T("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[jt,E.value.config.emitterFollowSpace]])])]),T("label",_5,[S[358]||(S[358]=T("span",null,"移动方向",-1)),be(T("select",{"onUpdate:modelValue":S[174]||(S[174]=C=>E.value.config.emitterFollowDirection=C),class:"inp"},[...S[357]||(S[357]=[T("option",{value:"forward"},"正向(起点 → 终点)",-1),T("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[jt,E.value.config.emitterFollowDirection]])]),Ue(qe,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:E.value.config.emitterFollowOffset,"onUpdate:modelValue":S[175]||(S[175]=C=>E.value.config.emitterFollowOffset=C)},null,8,["modelValue"]),S[360]||(S[360]=T("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):E.value.config.emitterFollowMode==="bone"?(ie(),oe(Ke,{key:1},[Ee.value?(ie(),oe("div",M5,[S[361]||(S[361]=ri("跟随目标:",-1)),T("strong",null,je(Ee.value.spine.name)+" / "+je(Ee.value.boneName),1)])):(ie(),oe("div",T5,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),we.value&&(!Ee.value||we.value.spine.id!==Ee.value.spine.id||we.value.boneName!==Ee.value.boneName)?(ie(),oe("button",{key:2,class:"bone-follow-rebind",onClick:S[176]||(S[176]=C=>Fi(E.value.config))},je(Ee.value?"重新绑定":"绑定")+"当前选中骨骼:"+je(we.value.spine.name)+" / "+je(we.value.boneName),1)):Xe("",!0),Ee.value?(ie(),oe(Ke,{key:3},[T("label",A5,[S[363]||(S[363]=T("span",null,"跟随空间",-1)),be(T("select",{"onUpdate:modelValue":S[177]||(S[177]=C=>E.value.config.emitterFollowSpace=C),class:"inp"},[...S[362]||(S[362]=[T("option",{value:"local"},"本地空间(随骨骼移动)",-1),T("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[jt,E.value.config.emitterFollowSpace]])]),T("div",E5,[T("label",C5,[S[364]||(S[364]=T("span",null,"位移偏移 X",-1)),be(T("input",{"onUpdate:modelValue":S[178]||(S[178]=C=>E.value.config.emitterFollowBoneOffsetX=C),type:"number",step:"1",class:"inp"},null,512),[[ut,E.value.config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),T("label",I5,[S[365]||(S[365]=T("span",null,"位移偏移 Y",-1)),be(T("input",{"onUpdate:modelValue":S[179]||(S[179]=C=>E.value.config.emitterFollowBoneOffsetY=C),type:"number",step:"1",class:"inp"},null,512),[[ut,E.value.config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),T("div",R5,[T("label",P5,[S[366]||(S[366]=T("span",null,"旋转偏移",-1)),be(T("input",{"onUpdate:modelValue":S[180]||(S[180]=C=>E.value.config.emitterFollowBoneRotation=C),type:"number",step:"1",class:"inp"},null,512),[[ut,E.value.config.emitterFollowBoneRotation,void 0,{number:!0}]])]),T("label",k5,[S[367]||(S[367]=T("span",null,"缩放偏移 X",-1)),be(T("input",{"onUpdate:modelValue":S[181]||(S[181]=C=>E.value.config.emitterFollowBoneScaleX=C),type:"number",step:"0.05",class:"inp"},null,512),[[ut,E.value.config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),T("label",F5,[S[368]||(S[368]=T("span",null,"缩放偏移 Y",-1)),be(T("input",{"onUpdate:modelValue":S[182]||(S[182]=C=>E.value.config.emitterFollowBoneScaleY=C),type:"number",step:"0.05",class:"inp"},null,512),[[ut,E.value.config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),S[369]||(S[369]=T("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):Xe("",!0)],64)):Xe("",!0)])):Xe("",!0)]),T("div",O5,[T("label",B5,[be(T("input",{type:"checkbox","onUpdate:modelValue":S[183]||(S[183]=C=>E.value.config.collision=C)},null,512),[[ei,E.value.config.collision]]),S[370]||(S[370]=T("span",{class:"switch-ui"},null,-1)),S[371]||(S[371]=T("span",null,"开启碰撞",-1))]),E.value.config.collision?(ie(),oe("div",L5,[S[372]||(S[372]=T("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),T("div",D5,[(ie(!0),oe(Ke,null,li(Te.value,C=>(ie(),oe("span",{key:C.id,class:ot(["collision-filter-tag",{disabled:!C.enabled}]),title:C.enabled?C.name:`${C.name}(碰撞体已禁用)`},[T("span",null,je(C.name),1),T("button",{type:"button","aria-label":`清除碰撞对象 ${C.name}`,onClick:Q=>z(C.id)},"×",8,U5)],10,N5))),128)),T("button",{type:"button",class:ot(["collision-filter-add",{active:ge.value}]),disabled:G.value.length===0,title:G.value.length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:S[184]||(S[184]=C=>ge.value=!ge.value)},"+",10,X5)]),Te.value.length===0?(ie(),oe("div",V5,"未选择碰撞对象,当前粒子不会发生碰撞")):Xe("",!0),ge.value&&G.value.length?(ie(),oe("div",Y5,[(ie(!0),oe(Ke,null,li(G.value,C=>(ie(),oe("button",{key:C.id,type:"button",onClick:Q=>Z(C.id)},[T("span",null,je(C.name),1),T("small",null,je(C.enabled?"可用":"已禁用"),1)],8,$5))),128))])):Xe("",!0),S[373]||(S[373]=T("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):Xe("",!0)]),Ue(qe,{label:"阻尼",min:0,max:2,step:.05,modelValue:E.value.config.damping,"onUpdate:modelValue":S[185]||(S[185]=C=>E.value.config.damping=C)},null,8,["modelValue"])],512),[[Sr,!ae.mods]])]),T("div",G5,[T("div",{class:"group-head",onClick:S[187]||(S[187]=C=>Le("export"))},[T("span",H5,je(ae.export?"▸":"▾"),1),S[374]||(S[374]=T("span",null,"导出设置",-1)),T("button",{class:"group-reset",title:"重置导出设置",onClick:S[186]||(S[186]=xt(C=>Wi("export"),["stop"]))},"重置")]),be(T("div",j5,[T("label",W5,[S[375]||(S[375]=T("span",null,"图片路径 (Spine Images Path)",-1)),be(T("input",{"onUpdate:modelValue":S[188]||(S[188]=C=>t.value.imagesPath=C),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[ut,t.value.imagesPath,void 0,{trim:!0}]])]),T("label",z5,[S[377]||(S[377]=T("span",null,"Spine 版本",-1)),be(T("select",{"onUpdate:modelValue":S[189]||(S[189]=C=>t.value.spineVersion=C),class:"inp export-input"},[...S[376]||(S[376]=[io('',5)])],512),[[jt,t.value.spineVersion]])]),T("label",q5,[S[379]||(S[379]=T("span",null,"关键帧插值曲线",-1)),be(T("select",{"onUpdate:modelValue":S[190]||(S[190]=C=>t.value.keyframeCurve=C),class:"inp export-input"},[...S[378]||(S[378]=[T("option",{value:"linear"},"线性 (Linear)",-1),T("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[jt,t.value.keyframeCurve]])]),S[388]||(S[388]=T("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),t.value.spineVersion==="3.8"?(ie(),oe("div",K5,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):Xe("",!0),T("div",Z5,[T("label",J5,[S[380]||(S[380]=T("span",null,"导出 FPS",-1)),be(T("input",{"onUpdate:modelValue":S[191]||(S[191]=C=>t.value.fps=C),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:on},null,544),[[ut,t.value.fps,void 0,{number:!0}]])]),T("label",Q5,[be(T("input",{"onUpdate:modelValue":S[192]||(S[192]=C=>t.value.omitFps=C),type:"checkbox"},null,512),[[ei,t.value.omitFps]]),S[381]||(S[381]=ri("不写 fps",-1))])]),S[389]||(S[389]=T("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),T("div",e4,[T("label",t4,[be(T("input",{"onUpdate:modelValue":S[193]||(S[193]=C=>t.value.integerFrameAlignment=C),type:"checkbox"},null,512),[[ei,t.value.integerFrameAlignment]]),S[382]||(S[382]=T("span",{class:"switch-ui"},null,-1)),S[383]||(S[383]=T("span",null,"整数帧对齐",-1))]),T("label",i4,[be(T("input",{"onUpdate:modelValue":S[194]||(S[194]=C=>t.value.bonePool=C),type:"checkbox"},null,512),[[ei,t.value.bonePool]]),S[384]||(S[384]=T("span",{class:"switch-ui"},null,-1)),S[385]||(S[385]=T("span",null,"骨骼对象池",-1))]),T("label",s4,[be(T("input",{"onUpdate:modelValue":S[195]||(S[195]=C=>t.value.excludeEmptyAnimations=C),type:"checkbox"},null,512),[[ei,t.value.excludeEmptyAnimations]]),S[386]||(S[386]=T("span",{class:"switch-ui"},null,-1)),S[387]||(S[387]=T("span",null,"排除无内容动画",-1))])])],512),[[Sr,!ae.export]])])],64)):Xe("",!0)]),T("div",n4,[T("button",{type:"button",class:"export-spine-json",disabled:l.value,title:l.value?"正在重新计算并烘焙动画":`导出 Spine ${t.value.spineVersion} JSON`,onClick:L},je(l.value&&c.value==="json"?"正在准备导出…":"导出Spine Json"),9,r4),T("button",{type:"button",class:"export-spine-images",disabled:l.value,title:"单独下载当前粒子系统使用的图片 ZIP",onClick:O},je(l.value&&c.value==="images"?"正在整理图片…":"导出 images 包"),9,a4),T("button",{type:"button",class:"export-spine-project",disabled:l.value||!b.value,title:A.value,onClick:N},[T("span",null,je(l.value&&c.value==="spine"?"正在生成工程…":"导出 .spine 包"),1),!l.value&&w.value?(ie(),oe("small",l4,je(w.value),1)):Xe("",!0)],8,o4)]),T("div",{class:ot(["connector-status",v.value])},[S[390]||(S[390]=T("span",{class:"connector-dot"},null,-1)),ri(je(g.value)+" ",1),y.value?(ie(),oe("a",{key:0,href:y.value,target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,c4)):Xe("",!0),T("button",{type:"button",title:"重新检测连接器",onClick:B},"刷新")],2),u.value?(ie(),oe("div",{key:0,class:ot(["export-message",{error:d.value}])},[ri(je(u.value)+" ",1),p.value?(ie(),oe("a",{key:0,href:p.value,target:"_blank",rel:"noopener",onClick:S[196]||(S[196]=C=>p.value="")},"授权当前网站",8,h4)):Xe("",!0)],2)):Xe("",!0)]))}}),d4=an(u4,[["__scopeId","data-v-1ace5c57"]]),f4={class:"timeline"},m4={class:"tl-controls"},p4=["title"],g4={class:"tl-range",title:"自定义播放起始帧"},v4=["max","onKeydown"],y4={class:"tl-range",title:"自定义播放结束帧"},x4=["min","max","onKeydown"],b4=["title"],w4={class:"tl-frame"},S4=["disabled"],_4=["onClick"],M4={key:0},T4={class:"tl-animation-editor"},A4={key:0,class:"tl-animation-error"},E4={class:"tl-animation-actions"},C4=["disabled"],I4={key:1,class:"tl-animation-hint"},R4={class:"tl-anim tl-spine-preview"},P4=["value","disabled"],k4={value:""},F4=["value"],O4={class:"tl-zoom"},B4={class:"tl-ticks"},L4={class:"tl-ticklabel"},D4={class:"tl-lanes"},N4=["onPointerdown"],U4={class:"lane-name"},X4=["onPointerdown"],V4=["onPointerdown"],Y4=["onPointerdown"],$4={class:"lane-name"},G4={key:0,class:"tl-empty"},H4=nn({__name:"Timeline",setup(s){const e=Kl(),t=ht(null),i=ht(null),n=ht(!1),r=ht("animation"),a=ht("");Qo(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const z of e.systems)(!z.animation||!e.timeline.animations.includes(z.animation))&&(z.animation=e.timeline.animations[0])});const o=gt(()=>e.systems.find(z=>z.id===e.activeId)||null),h=gt(()=>{const z=o.value;return!z||!W(z)?null:v1(z.config,m.value)});function l(){o.value&&(n.value=!n.value,r.value=o.value.animation,a.value="")}function c(z){const j=o.value;j&&(e.setSystemAnimation(j.id,z),r.value=z,a.value="")}function u(){const z=e.addAnimation();r.value=z,a.value=""}function d(){var te;const z=((te=o.value)==null?void 0:te.animation)||e.timeline.animation,j=r.value.trim();if(!j){a.value="动画名称不能为空";return}if(j!==z&&e.timeline.animations.includes(j)){a.value="动画名称不能重复";return}if(!e.renameAnimation(z,j)){a.value="无法修改动画名称";return}r.value=j,a.value=""}function f(){var te,he;const z=((te=o.value)==null?void 0:te.animation)||e.timeline.animation;if(!e.removeAnimation(z)){a.value="至少需要保留一个动画";return}const j=((he=o.value)==null?void 0:he.animation)||e.timeline.animation;r.value=j,a.value=""}function p(z){var j;(j=i.value)!=null&&j.contains(z.target)||(n.value=!1)}La(()=>document.addEventListener("pointerdown",p)),du(()=>document.removeEventListener("pointerdown",p));const m=gt(()=>Math.max(1,e.timeline.fps||30)),g=ht(120),v=ht({}),b=ht({}),y=ht({}),w=ht({}),A=ht(String(e.timeline.playbackStart)),M=ht(String(e.timeline.playbackEnd));ds(()=>e.timeline.playbackStart,z=>{A.value=String(z)}),ds(()=>e.timeline.playbackEnd,z=>{M.value=String(z)});const _=gt(()=>e.timeline.totalFrames),R=gt(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),P=gt(()=>e.spines.filter(z=>z.selectedAnimation&&z.animations.some(j=>j.name===z.selectedAnimation&&j.duration>0))),F=gt(()=>(e.activeObjectType==="spine"?e.spines.find(j=>j.id===e.activeObjectId&&j.animations.length):null)||e.spines.find(j=>j.animations.length)||null);function I(z){const j=F.value;j&&(j.selectedAnimation=z.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(A.value)),A.value=String(e.timeline.playbackStart)}function B(){e.setPlaybackEnd(Number(M.value)),M.value=String(e.timeline.playbackEnd)}function D(){const z=h.value;z&&(e.setPlaybackEnd(z.end),e.setPlaybackStart(z.start))}function U(){var j;const z=((j=t.value)==null?void 0:j.clientWidth)||600;return g.value/z}const L=gt(()=>{const z=[],j=g.value;let te=1;g.value<=10?te=1:g.value<=50?te=5:g.value<=200?te=10:g.value<=500?te=50:te=100;for(let he=0;he<=j;he+=te)z.push({f:he,px:he/U()});return z}),N=gt(()=>e.timeline.frame/U());function O(z){const j=z.config;return(v.value[z.id]??Math.max(0,Number(j.delay)||0))*m.value/U()}function X(z){const j=z.config,te=Math.max(0,Number(j.lifeMin)||0),he=Math.max(0,Number(j.lifeMax)||0);return j.lifeMode==="fixed"?te:Math.max(te,he)}function E(z){return q(z)}function V(z){if(z.config.mode!=="stream")return 0;if(z.config.streamBehavior==="loop"){const te=z.config;return(y.value[z.id]??Vr(te,m.value).loop)/U()}return(b.value[z.id]??Math.max(1/m.value,Number(z.config.duration)||1))*m.value/U()}function q(z){const j=z.config;return j.mode==="stream"&&j.streamBehavior==="loop"?J(z)+V(z)+K(z):V(z)+X(z)*m.value/U()}function W(z){const j=z.config;return j.mode==="stream"&&j.streamBehavior==="loop"}function J(z){return W(z)?Vr(z.config,m.value).start/U():0}function K(z){return W(z)?Vr(z.config,m.value).end/U():0}function fe(z){var j;return((j=z.animations.find(te=>te.name===z.selectedAnimation))==null?void 0:j.duration)||0}function me(z){return(w.value[z.id]??Math.max(0,Number(z.timeOffset)||0))*m.value/U()}function we(z){return fe(z)*m.value/U()}function Ee(z){const j=z.deltaY<0?.8:1.25;let te=g.value*j;te=Math.min(2e3,Math.max(10,te)),g.value=Math.round(te)}function ge(z){const j=t.value,te=ve=>{const le=j.getBoundingClientRect(),ye=Math.floor((ve.clientX-le.left)/le.width*g.value);e.timeline.frame=Math.max(0,Math.min(ye,_.value-1))};te(z);const he=()=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",he)};window.addEventListener("pointermove",te),window.addEventListener("pointerup",he)}function Te(z,j){z.stopPropagation();const te=z.clientX,he=Math.max(0,Number(j.config.delay)||0),ve=U()/m.value,le=Re=>{const Oe=(Re.clientX-te)*ve,tt=Math.max(0,Math.min(he+Oe,600));v.value[j.id]=Math.round(tt*m.value)/m.value},ye=Re=>{window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",Le);const Oe=v.value[j.id];delete v.value[j.id],Re&&Oe!=null&&Oe!==he&&(j.config.delay=Oe)},ae=()=>ye(!0),Le=()=>ye(!1);window.addEventListener("pointermove",le),window.addEventListener("pointerup",ae),window.addEventListener("pointercancel",Le)}function G(z,j){var Pt;z.stopPropagation();const te=W(j),he=Math.max(0,Number(j.config.duration)||0),ve=Vr(j.config,m.value).loop,le=U()/m.value,ye=((Pt=z.currentTarget.closest(".lane-bar"))==null?void 0:Pt.getBoundingClientRect().left)??z.clientX,ae=J(j);let Le=!1;const Re=wt=>{if(Le=!0,te){const Rt=Math.min(1800,Math.max(1,Math.round((wt.clientX-ye-ae)/U())));y.value[j.id]=Rt}else{const Rt=Math.max(1/m.value,Math.min((wt.clientX-ye)*le,600));b.value[j.id]=Math.round(Rt*m.value)/m.value}},Oe=wt=>{window.removeEventListener("pointermove",Re),window.removeEventListener("pointerup",tt),window.removeEventListener("pointercancel",St);const Rt=b.value[j.id],Zt=y.value[j.id];delete b.value[j.id],delete y.value[j.id],wt&&Le&&te&&Zt!=null&&Zt!==ve?j.config.loopDurationFrames=Zt:wt&&Le&&!te&&Rt!=null&&Rt!==he&&(j.config.duration=Rt)},tt=()=>Oe(!0),St=()=>Oe(!1);window.addEventListener("pointermove",Re),window.addEventListener("pointerup",tt),window.addEventListener("pointercancel",St)}function Z(z,j){z.stopPropagation();const te=z.clientX,he=Math.max(0,Number(j.timeOffset)||0),ve=U()/m.value,le=Re=>{const Oe=Math.max(0,Math.min(he+(Re.clientX-te)*ve,600));w.value[j.id]=Math.round(Oe*m.value)/m.value},ye=Re=>{window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",Le);const Oe=w.value[j.id];delete w.value[j.id],Re&&Oe!=null&&Oe!==he&&(j.timeOffset=Oe,e.recalcTotalFrames())},ae=()=>ye(!0),Le=()=>ye(!1);window.addEventListener("pointermove",le),window.addEventListener("pointerup",ae),window.addEventListener("pointercancel",Le)}return(z,j)=>{var te,he,ve;return ie(),oe("div",f4,[T("div",m4,[T("button",{class:ot(["tl-btn",{on:ke(e).timeline.playing}]),onClick:j[0]||(j[0]=le=>ke(e).togglePlay()),title:ke(e).timeline.playing?"暂停 (D)":"播放 (D)"},je(ke(e).timeline.playing?"❚❚":"▶"),11,p4),T("button",{class:"tl-btn",onClick:j[1]||(j[1]=le=>ke(e).toStart()),title:"回到第一帧 (S)"},"⏮"),T("button",{class:"tl-btn",onClick:j[2]||(j[2]=le=>ke(e).previousFrame()),title:"前一帧"},"◀"),T("button",{class:"tl-btn",onClick:j[3]||(j[3]=le=>ke(e).nextFrame()),title:"后一帧"},"▶"),T("button",{class:"tl-btn",onClick:j[4]||(j[4]=le=>ke(e).toEnd()),title:"移动到最后一帧"},"⏭"),T("button",{class:ot(["tl-btn",{on:ke(e).timeline.loop}]),onClick:j[5]||(j[5]=le=>ke(e).toggleLoop()),title:"循环"},"⟳",2),T("label",g4,[j[10]||(j[10]=T("span",null,"A",-1)),be(T("input",{"onUpdate:modelValue":j[6]||(j[6]=le=>A.value=le),type:"number",min:"0",max:Math.max(0,ke(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:Ta(xt(k,["prevent"]),["enter"])},null,40,v4),[[ut,A.value]])]),T("label",y4,[j[11]||(j[11]=T("span",null,"B",-1)),be(T("input",{"onUpdate:modelValue":j[7]||(j[7]=le=>M.value=le),type:"number",min:ke(e).timeline.playbackStart+1,max:Math.max(1,ke(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:B,onKeydown:Ta(xt(B,["prevent"]),["enter"])},null,40,x4),[[ut,M.value]])]),h.value?(ie(),oe("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${h.value.start}–${h.value.end}f`,onClick:D},"循环段",8,b4)):Xe("",!0),T("span",w4,[j[12]||(j[12]=ri("帧 ",-1)),T("b",null,je(ke(e).timeline.frame),1),j[13]||(j[13]=ri(" / ",-1)),T("b",null,je(Math.max(0,ke(e).timeline.totalFrames-1)),1)]),j[18]||(j[18]=T("span",{class:"tl-legend"},[T("i",{class:"legend-emission"}),ri("持续发射 "),T("i",{class:"legend-life"}),ri("粒子存在 "),T("i",{class:"legend-spine"}),ri("Spine 动画")],-1)),T("div",{ref_key:"animationMenuRef",ref:i,class:"tl-anim tl-owner-animation"},[j[16]||(j[16]=T("span",null,"所属动画",-1)),T("button",{class:"tl-animation-trigger",disabled:!o.value,title:"设置当前粒子系统所属的动画",onClick:xt(l,["stop"])},[T("span",null,je(((te=o.value)==null?void 0:te.animation)||ke(e).timeline.animation),1),j[14]||(j[14]=T("i",null,"⌄",-1))],8,S4),n.value?(ie(),oe("div",{key:0,class:"tl-animation-menu",onPointerdown:j[9]||(j[9]=xt(()=>{},["stop"]))},[j[15]||(j[15]=T("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(ie(!0),oe(Ke,null,li(ke(e).timeline.animations,le=>{var ye,ae;return ie(),oe("button",{key:le,class:ot(["tl-animation-option",{on:((ye=o.value)==null?void 0:ye.animation)===le}]),onClick:Le=>c(le)},[T("span",null,je(le),1),((ae=o.value)==null?void 0:ae.animation)===le?(ie(),oe("i",M4,"✓")):Xe("",!0)],10,_4)}),128)),T("div",T4,[be(T("input",{"onUpdate:modelValue":j[8]||(j[8]=le=>r.value=le),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:Ta(d,["enter"])},null,544),[[ut,r.value]]),T("button",{title:"重命名当前动画",onClick:d},"重命名")]),a.value?(ie(),oe("div",A4,je(a.value),1)):Xe("",!0),T("div",E4,[T("button",{onClick:u},"+ 新增"),T("button",{disabled:ke(e).timeline.animations.length<=1,onClick:f},"删除",8,C4)]),ke(e).timeline.animations.length<=1?(ie(),oe("div",I4,"至少需要保留一个动画")):Xe("",!0)],32)):Xe("",!0)],512),T("label",R4,[j[17]||(j[17]=ri("Spine 预览动画 ",-1)),T("select",{class:"tl-sel",value:((he=F.value)==null?void 0:he.selectedAnimation)||"",disabled:!F.value,onChange:I},[T("option",k4,je(F.value?"无":"无可用 Spine 动画"),1),(ie(!0),oe(Ke,null,li(((ve=F.value)==null?void 0:ve.animations)||[],le=>(ie(),oe("option",{key:le.name,value:le.name},je(le.name)+"("+je(le.duration.toFixed(2))+"s) ",9,F4))),128))],40,P4)]),T("span",O4,je(R.value),1)]),T("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:xt(Ee,["prevent"]),onPointerdown:ge},[T("div",B4,[(ie(!0),oe(Ke,null,li(L.value,le=>(ie(),oe("div",{key:le.f,class:"tl-tickline",style:Li({left:le.px+"px"})},[T("span",L4,je(le.f)+"f",1)],4))),128))]),T("div",{class:"tl-playhead",style:Li({left:N.value+"px"})},null,4),T("div",D4,[(ie(!0),oe(Ke,null,li(ke(e).systems,(le,ye)=>(ie(),oe("div",{key:le.id,class:"tl-lane"},[j[19]||(j[19]=T("span",{class:"lane-ico"},"●",-1)),T("div",{class:"lane-bar",style:Li({left:O(le)+"px",width:E(le)+"px"}),onPointerdown:xt(ae=>Te(ae,le),["stop"])},[T("span",U4,je(le.config.name||"系统 "+(ye+1)),1),T("span",{class:ot(["bar-life",{"loop-life":W(le)}]),style:Li({width:q(le)+"px"})},null,6),W(le)?(ie(),oe(Ke,{key:0},[J(le)?(ie(),oe("span",{key:0,class:"bar-loop-transition bar-loop-start",style:Li({width:J(le)+"px"})},null,4)):Xe("",!0),T("span",{class:"bar-emission bar-loop",style:Li({left:J(le)+"px",width:V(le)+"px"})},[T("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:xt(ae=>G(ae,le),["stop"])},null,40,X4)],4),K(le)?(ie(),oe("span",{key:1,class:"bar-loop-transition bar-loop-end",style:Li({left:J(le)+V(le)+"px",width:K(le)+"px"})},null,4)):Xe("",!0)],64)):le.config.mode==="stream"?(ie(),oe("span",{key:1,class:"bar-emission",style:Li({width:V(le)+"px"})},[T("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:xt(ae=>G(ae,le),["stop"])},null,40,V4)],4)):Xe("",!0)],44,N4)]))),128)),(ie(!0),oe(Ke,null,li(P.value,le=>(ie(),oe("div",{key:`spine-${le.id}`,class:"tl-lane spine-lane"},[j[20]||(j[20]=T("span",{class:"lane-ico spine-ico"},"◆",-1)),T("div",{class:"spine-bar",style:Li({left:me(le)+"px",width:we(le)+"px"}),title:"拖动调整动画开始时间",onPointerdown:xt(ye=>Z(ye,le),["stop"])},[T("span",$4,je(le.name)+" · "+je(le.selectedAnimation),1)],44,Y4)]))),128)),!ke(e).systems.length&&!P.value.length?(ie(),oe("div",G4,"暂无可显示的动画数据")):Xe("",!0)])],544)])}}}),j4=an(H4,[["__scopeId","data-v-8d9981a9"]]),W4={class:"transfer-heading"},z4={key:0},q4={class:"transfer-detail"},K4=nn({__name:"TransferProgressOverlay",setup(s){const e=ht(null);return ds(()=>xi.visible,async t=>{var i;t&&(await lu(),(i=e.value)==null||i.focus({preventScroll:!0}))},{flush:"post"}),(t,i)=>(ie(),Qt(kM,{name:"transfer-fade"},{default:ah(()=>[ke(xi).visible?(ie(),oe("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:i[0]||(i[0]=xt(()=>{},["stop","prevent"])),onPointerup:i[1]||(i[1]=xt(()=>{},["stop","prevent"])),onClick:i[2]||(i[2]=xt(()=>{},["stop","prevent"])),onDblclick:i[3]||(i[3]=xt(()=>{},["stop","prevent"])),onContextmenu:i[4]||(i[4]=xt(()=>{},["stop","prevent"])),onWheel:i[5]||(i[5]=xt(()=>{},["stop","prevent"])),onKeydown:i[6]||(i[6]=xt(()=>{},["stop","prevent"]))},[T("div",{class:ot(["transfer-dialog",{failed:ke(xi).failed}])},[T("div",W4,[T("span",null,je(ke(xi).title),1),ke(xi).indeterminate?Xe("",!0):(ie(),oe("strong",z4,je(Math.round(ke(xi).progress))+"%",1))]),T("div",{class:ot(["transfer-track",{indeterminate:ke(xi).indeterminate}])},[T("div",{class:"transfer-bar",style:Li(ke(xi).indeterminate?void 0:{width:`${ke(xi).progress}%`})},null,4)],2),T("div",q4,je(ke(xi).detail),1)],2)],544)):Xe("",!0)]),_:1}))}}),Z4=an(K4,[["__scopeId","data-v-592b922e"]]),J4=["inert","aria-hidden"],Q4={class:"right"},eU={class:"stage-area"},tU=nn({__name:"App",setup(s){const e=Kl();QI(e);const t=ht(360),i=ht(180);function n(a){a.preventDefault();const o=l=>{const c=e.settings.parameterPanelOnRight?window.innerWidth-l.clientX:l.clientX,u=Math.max(240,Math.min(c,window.innerWidth-200));t.value=u},h=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",o),window.addEventListener("pointerup",h)}function r(a){a.preventDefault();const o=a.clientY,h=i.value,l=u=>{const d=Math.max(80,Math.min(h+(o-u.clientY),window.innerHeight-200));i.value=d},c=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",c)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",c)}return(a,o)=>(ie(),oe(Ke,null,[T("div",{class:ot(["layout",{"panel-right":ke(e).settings.parameterPanelOnRight}]),inert:ke(xi).visible?!0:void 0,"aria-hidden":ke(xi).visible?"true":void 0},[T("div",{class:"parameter-panel",style:Li({width:t.value+"px"})},[Ue(d4)],4),T("div",{class:"resizer-col",onPointerdown:n},null,32),T("div",Q4,[T("div",eU,[Ue(Ik)]),T("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),T("div",{class:"timeline-area",style:Li({height:i.value+"px"})},[Ue(j4)],4)])],10,J4),Ue(Z4)],64))}}),iU=an(tU,[["__scopeId","data-v-42c4fa00"]]);aT(iU).use(cT()).mount("#app");export{fy as $,kn as A,Wh as B,Wt as C,ji as D,Ge as E,us as F,Dn as G,bt as H,Xt as I,vS as J,vs as K,Es as L,Us as M,qr as N,ku as O,Pn as P,Ll as Q,ko as R,qs as S,Q3 as T,lt as U,oy as V,Js as W,P8 as X,KO as Y,Vl as Z,Mp as _,pt as a,Lm as a$,dy as a0,Kw as a1,Op as a2,I8 as a3,$h as a4,bl as a5,cO as a6,wl as a7,Fu as a8,km as a9,Gm as aA,Hm as aB,Nc as aC,kr as aD,Qc as aE,Fm as aF,eS as aG,mi as aH,Ww as aI,w8 as aJ,Ao as aK,uy as aL,Ve as aM,it as aN,Bm as aO,eh as aP,nS as aQ,Om as aR,iS as aS,sS as aT,Ou as aU,oS as aV,th as aW,hS as aX,rS as aY,lS as aZ,uS as a_,Va as aa,Bp as ab,Lp as ac,cy as ad,Ql as ae,ec as af,Jl as ag,Xa as ah,rr as ai,_8 as aj,Qw as ak,lO as al,Oo as am,Hr as an,Up as ao,gS as ap,aO as aq,Xl as ar,gs as as,hy as at,A8 as au,Uo as av,$m as aw,jm as ax,Wm as ay,zm as az,Ro as b,vr as b$,jh as b0,aS as b1,Jr as b2,cS as b3,Dp as b4,J3 as b5,mS as b6,pS as b7,Np as b8,Ln as b9,dS as bA,Xp as bB,Pu as bC,yS as bD,Dm as bE,Pi as bF,K3 as bG,tO as bH,Lw as bI,Bw as bJ,M8 as bK,ii as bL,Xo as bM,xS as bN,SS as bO,_S as bP,MS as bQ,bS as bR,wS as bS,rO as bT,Vp as bU,Gt as bV,Ym as bW,tS as bX,Nw as bY,Uw as bZ,Xw as b_,Z3 as ba,S8 as bb,yt as bc,Jw as bd,Zw as be,zw as bf,qw as bg,Ra as bh,Gh as bi,oO as bj,Vw as bk,Yw as bl,cs as bm,$w as bn,Fo as bo,Gi as bp,Dw as bq,Hh as br,Gw as bs,Hw as bt,jw as bu,my as bv,Xm as bw,ya as bx,fS as by,Um as bz,Po as c,T8 as c0,sO as c1,nO as c2,iO as c3,dt as d,et as e,E8 as f,vt as g,Ni as h,_h as i,xs as j,ai as k,Qe as l,tn as m,oi as n,vp as o,wi as p,Dl as q,Ir as r,We as s,ob as t,_p as u,Ch as v,Nm as w,ga as x,ly as y,Vm as z}; +`;class pw extends Cr{constructor(e){super(e),this.shaderGenerator=new ab(hP,uP),this.geometryClass=cP,this.vertexSize=7}packInterleavedGeometry(e,t,i,n,r){const{uint32View:a,float32View:o}=t,h=n/this.vertexSize,l=e.uvs,c=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=jt.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=jt.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let a=function(l){return Promise.all(l.map(c=>Promise.resolve(c).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),h=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));n=a(t.map(l=>{if(l=gP(l),l in Gv)return;Gv[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":pP,c||(d.as="script"),d.crossOrigin="",d.href=l,h&&d.setAttribute("nonce",h),document.head.appendChild(d),c)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return n.then(a=>{for(const o of a||[])o.status==="rejected"&&r(o.reason);return e().catch(r)})};async function vw(){const[s,e]=await Promise.all([Hv(()=>import("./index-BUbc0qUx.js"),[]),Hv(()=>import("./index-B1oGFzi8.js"),__vite__mapDeps([0,1]))]);return{core:s,pixi:e}}async function vP(s,e,t){const{core:i,pixi:n}=await vw(),r=new i.TextureAtlas(e);return Ip(r,t,n.SpineTexture),{skeletonData:new i.SkeletonJson(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}async function yP(s,e,t){const{core:i,pixi:n}=await vw(),r=new i.TextureAtlas(e);return Ip(r,t,n.SpineTexture),{skeletonData:new i.SkeletonBinary(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}function Lr(s,e,t){const i=Number(s[e]);return Number.isFinite(i)?i:t}function xs(s,e,t,i){s[e]==null&&(s[e]=Lr(s,t,i))}function Rp(s,e,t){if(typeof s.curve!="number")return;const i=Lr(s,"time",0),r=Lr(e,"time",0)-i,a=s.curve,o=Lr(s,"c2",0),h=Lr(s,"c3",1),l=Lr(s,"c4",1);s.curve=t.flatMap(([c,u])=>[i+r*a,c+(u-c)*o,i+r*h,c+(u-c)*l]),delete s.c2,delete s.c3,delete s.c4}function Yr(s,e){if(Array.isArray(s))for(let t=0;t[Lr(i,r,a),Lr(n,r,a)]))}}function xP(s){if(Array.isArray(s))for(let e=0;eNumber.parseInt(i.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function jv(s,e){if(Array.isArray(s))for(let t=0;t[o,a[h]]))}}function bP(s){for(const e of s.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of s.transform||[])xs(e,"mixRotate","rotateMix",1),xs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),xs(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),xs(e,"mixShearY","shearMix",1);for(const e of s.path||[])xs(e,"mixRotate","rotateMix",1),xs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function wP(s){for(const e of s.skins||[])for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&i.timelines==null&&i.deform!=null&&(i.timelines=i.deform)}function SP(s){for(const e of Object.values(s.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),jv(e.rgba,!1),jv(e.rgba2,!0)}function MP(s){for(const e of Object.values(s.bones||{})){for(const t of e.rotate||[])xs(t,"value","angle",0);Yr(e.rotate,[{key:"value",fallback:0}]),Yr(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),Yr(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),Yr(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function _P(s){for(const e of Object.values(s.ik||{}))Yr(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function TP(s){for(const e of Object.values(s.transform||{})){for(const t of e)xs(t,"mixRotate","rotateMix",1),xs(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),xs(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),xs(t,"mixShearY","shearMix",1);Yr(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function AP(s){for(const e of Object.values(s.path||{})){for(const i of["position","spacing"]){const n=e[i];for(const r of n||[])xs(r,"value",i,0);Yr(n,[{key:"value",fallback:0}])}const t=e.mix;for(const i of t||[])xs(i,"mixRotate","rotateMix",1),xs(i,"mixX","translateMix",1),i.mixY==null&&(i.mixY=i.mixX);Yr(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function EP(s){if(!s.deform)return;const e=s.attachments||(s.attachments={});for(const[t,i]of Object.entries(s.deform)){const n=e[t]||(e[t]={});for(const[r,a]of Object.entries(i)){const o=n[r]||(n[r]={});for(const[h,l]of Object.entries(a)){const c=o[h]||(o[h]={});c.deform=l,xP(l)}}}delete s.deform}function yw(s){bP(s),wP(s);for(const e of Object.values(s.animations||{}))SP(e),MP(e),_P(e),TP(e),AP(e),EP(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return s}function CP(s){return s.replace(/\\/g,"/").split("/").pop()||s}async function IP(s){const e=await Promise.all(s.map(async t=>{const i=URL.createObjectURL(t);try{return[CP(t.name).toLowerCase(),await gt.fromURL(i)]}finally{URL.revokeObjectURL(i)}}));return new Map(e)}function RP(s){const e=new Map;return s.bones.map(t=>{var r;const i=((r=t.parent)==null?void 0:r.name)||null,n=i?(e.get(i)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:i,depth:n}})}async function xw(s,e,t){var a;if(!/\.(json|skel)$/i.test(s.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const i=await e.text(),n=await IP(t),r=[...n.values()];try{let o,h,l=null,c;if(/\.skel$/i.test(s.name)){const u=await s.arrayBuffer();try{({skeletonData:o,SpineClass:h}=await yP(u,i,n)),c="4.3"}catch(d){try{({skeletonData:o,SpineClass:h}=mP(u,i,n)),c="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}l=Ph(o.version)}else{let u;try{u=JSON.parse(await s.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(l=Ph((a=u==null?void 0:u.skeleton)==null?void 0:a.spine),!l)throw new Error(`Spine JSON 版本不受支持,仅支持 ${Mm()}`);c=jI(l),l==="3.8"&&yw(u);const d=c==="4.3"?await vP(u,i,n):fP(u,i,n);o=d.skeletonData,h=d.SpineClass}if(!l)throw new Error(`Spine 数据版本不受支持,仅支持 ${Mm()}`);return{skeletonData:o,textures:r,runtimeVersion:c,SpineClass:h,dataVersion:l,animations:o.animations.map(u=>({name:u.name,duration:u.duration})),bones:RP(o)}}catch(o){for(const h of r)h.destroy(!0);throw o}}function Jc(s){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(i.error),i.readAsDataURL(s)})}async function PP(s,e,t){return{skeleton:{name:s.name,dataUrl:await Jc(s)},atlas:{name:e.name,dataUrl:await Jc(e)},textures:await Promise.all(t.map(async i=>({name:i.name,dataUrl:await Jc(i)})))}}async function _f(s){const e=await fetch(s.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${s.name}`);return new File([await e.blob()],s.name)}async function kP(s){return{skeleton:await _f(s.skeleton),atlas:await _f(s.atlas),textures:await Promise.all(s.textures.map(_f))}}const bw="SpineParticle.EditorConfig",ww=1;function Sw(s){return{backgroundX:s.backgroundX,backgroundY:s.backgroundY,backgroundOpacity:s.backgroundOpacity,backgroundImageName:s.backgroundImageName,backgroundImageData:s.backgroundImageData,showGrid:s.showGrid,exportSettings:hi(s.exportSettings)}}function FP(s){return JSON.parse(JSON.stringify(s,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function Mw(s){const e=hi(s);return delete e.tags,delete e.selectedTag,e}function OP(s){const e=Sw(s.settings);return FP({format:bw,version:ww,savedAt:new Date().toISOString(),editor:hi(s.editor),settings:e,timeline:{fps:s.timeline.fps,loop:s.timeline.loop,playbackStart:s.timeline.playbackStart,playbackEnd:s.timeline.playbackEnd,animations:[...s.timeline.animations]},selection:{type:s.activeObjectType,id:s.activeObjectId},scene:{systems:s.systems.map(t=>({...hi(t),frames:void 0})),colliders:s.colliders.map(Mw),paths:hi(s.paths),spines:hi(s.spines)}})}function BP(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function _w(s){const e=OP(s),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");return n.href=i,n.download=BP(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),0),e}function Tw(s){let e;try{e=JSON.parse(s)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==bw)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==ww)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function LP(s){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let a=e.get(r);return a||(a=gt.fromURL(r).then(o=>Dr(o)),e.set(r,a)),a},i=await t("/images/star.png");await Promise.all(s.map(async n=>{var a;const r=Wr(n.config);r.texture=i,await Promise.all(r.imageResources.map(async o=>{o.texture=await t(o.previewUrl||"/images/star.png"),await Promise.all(o.sequenceFrames.map(async h=>{h.texture=await t(h.previewUrl||o.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async o=>{o.texture=await t(o.previewUrl||"/images/trail.png")})),r.trailTexture=((a=r.trailResources[0])==null?void 0:a.texture)||null,n.frames=[]}))}async function DP(s){const e=new Map;try{for(const t of s){if(!t.sourceBundle)continue;const i=await kP(t.sourceBundle);e.set(t.id,await xw(i.skeleton,i.atlas,i.textures))}return e}catch(t){for(const i of e.values())for(const n of i.textures)n.destroy(!0);throw t}}function NP(s,e){const t=(e==null?void 0:e.type)||"particle",i=Number(e==null?void 0:e.id)||0;(t==="particle"?s.systems.some(r=>r.id===i):t==="collision"?s.colliders.some(r=>r.id===i):t==="path"?s.paths.some(r=>r.id===i):s.spines.some(r=>r.id===i))?s.selectSceneObject(t,i):s.systems[0]?s.selectSceneObject("particle",s.systems[0].id):s.colliders[0]?s.selectSceneObject("collision",s.colliders[0].id):s.paths[0]?s.selectSceneObject("path",s.paths[0].id):s.spines[0]?s.selectSceneObject("spine",s.spines[0].id):(s.activeObjectType="particle",s.activeObjectId=0,s.activeId=0)}async function UP(s,e){var c,u,d,f,p,m,g;const t=Tw(JSON.stringify(e)),i=hi(t.scene.systems),n=t.scene.colliders.map(Mw),r=hi(t.scene.paths),a=hi(t.scene.spines);for(const v of a)v.sourceBundle==null&&(v.sourceBundle=null),v.dataVersion==null&&(v.dataVersion="");await LP(i);const o=await DP(a),h=new Map(s.spines.map(v=>[v.id,v.assetVersion]));for(const v of s.spines)ql(v.id);s.systems=i,s.colliders=n,s.paths=r,s.spines=a,Object.assign(s.editor,hi(t.editor||{}));const l=t.settings;if(l)for(const v of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(l,v)&&(s.settings[v]=l[v]);s.settings.exportSettings=m1((c=t.settings)==null?void 0:c.exportSettings),s.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(s.settings.undoLimit)||20))),s.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),s.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,s.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(v=>typeof v=="string"&&v.trim()).map(v=>v.trim()))]:["animation"];for(const v of s.spines){const b=o.get(v.id);if(v.assetVersion=Math.max(Number(v.assetVersion)||0,h.get(v.id)||0)+1,!b){v.status="empty",v.error=v.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",v.animations=[],v.bones=[],v.selectedAnimation="";continue}Au(v.id,b),v.dataVersion=b.dataVersion,v.animations=b.animations,v.bones=b.bones,b.animations.some(y=>y.name===v.selectedAnimation)||(v.selectedAnimation=((p=b.animations[0])==null?void 0:p.name)||""),v.status="ready",v.error=""}s.syncSceneSequences(),NP(s,t.selection),s.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),s.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),s.timeline.frame=0,s.timeline.recorded=!1,s.timeline.playing=!0;for(const v of s.systems)s.timeline.animations.includes(v.animation)||(v.animation=s.timeline.animations[0]);return s.recalcTotalFrames(),s.timeline.frame=s.timeline.playbackStart,t}async function Aw(s,e){return UP(s,Tw(e))}async function XP(s,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return Aw(s,await e.text())}const Iu=Da({undoCount:0});let Uh=null,nr=null,$r=[],Zo=null,rr=null,Xh=!1;function Pp(s){return{systems:s.systems.map(t=>{const i=hi(t);return i.frames=void 0,i}),colliders:hi(s.colliders),paths:hi(s.paths),spines:hi(s.spines),animations:[...s.timeline.animations],settings:Sw(s.settings)}}function kp(s){return JSON.stringify(s,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function Ew(s,e=Pp(s),t=kp(e)){const i=new Map;for(const n of e.spines){const r=GI(n.id);r&&i.set(n.id,r)}return{data:e,signature:t,spineAssets:i}}function Vh(s){if(s){for(const e of s.spineAssets.values())YI(e);s.spineAssets.clear()}}function Cw(s){for(;$r.length>s;)Vh($r.shift()||null);Iu.undoCount=$r.length}function Iw(){const s=Uh;if(!s||!nr||Xh)return;const e=Pp(s),t=kp(e);t!==nr.signature&&($r.push(nr),nr=Ew(s,e,t),Cw(s.settings.undoLimit))}function VP(){Xh||(rr&&clearTimeout(rr),rr=setTimeout(()=>{rr=null,Iw()},250))}function YP(s){const e=s.activeObjectId;return s.activeObjectType==="particle"?s.systems.some(t=>t.id===e):s.activeObjectType==="collision"?s.colliders.some(t=>t.id===e):s.activeObjectType==="path"?s.paths.some(t=>t.id===e):s.spines.some(t=>t.id===e)}function $P(s){var t,i;if(!YP(s)){const n=s.systems[0],r=s.colliders[0],a=s.paths[0],o=s.spines[0];n?(s.activeObjectType="particle",s.activeObjectId=n.id):r?(s.activeObjectType="collision",s.activeObjectId=r.id):a?(s.activeObjectType="path",s.activeObjectId=a.id):(s.activeObjectType="spine",s.activeObjectId=(o==null?void 0:o.id)||0)}const e=s.activeObjectType==="particle"?s.systems.find(n=>n.id===s.activeObjectId):s.systems.find(n=>n.id===s.activeId);s.activeId=(e==null?void 0:e.id)||((t=s.systems[0])==null?void 0:t.id)||0,s.timeline.animation=(e==null?void 0:e.animation)||((i=s.systems[0])==null?void 0:i.animation)||s.timeline.animations[0]||"animation"}function GP(s,e){const t=nr;Xh=!0;try{for(const i of s.spines)ql(i.id);s.systems=hi(e.data.systems),s.colliders=hi(e.data.colliders),s.paths=hi(e.data.paths),s.spines=hi(e.data.spines),s.timeline.animations=[...e.data.animations],Object.assign(s.settings,hi(e.data.settings));for(const[i,n]of e.spineAssets)Au(i,n);for(const i of s.systems)i.frames=[];s.timeline.recorded=!1,s.timeline.playing=!1,$P(s),s.recalcTotalFrames(),nr=e}finally{Xh=!1,Vh(t)}}function HP(s){if(!(Uh===s&&Zo)){Zo==null||Zo(),rr&&clearTimeout(rr),Vh(nr);for(const e of $r)Vh(e);$r=[],Uh=s,nr=Ew(s),Iu.undoCount=0,Zo=fs(()=>kp(Pp(s)),VP,{flush:"post"})}}function jP(s,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));s.settings.undoLimit=t,Cw(t)}function Tf(){const s=Uh;if(!s||!nr)return!1;rr&&(clearTimeout(rr),rr=null),Iw();const e=$r.pop();return e?(GP(s,e),Iu.undoCount=$r.length,!0):!1}function WP(s){const e=s instanceof HTMLElement?s:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function zP(s){function e(i){var r;const n=i.target instanceof Node?i.target:null;s.canvasFocused.value=!!n&&!!((r=s.canvasElement.value)!=null&&r.contains(n))}function t(i){const n=i.key.toLowerCase();if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="s"){i.preventDefault(),i.stopPropagation(),s.save();return}if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="z"){i.preventDefault(),i.stopPropagation(),s.undo();return}if(i.ctrlKey||i.metaKey||i.altKey||WP(i.target))return;if(n==="d"){i.preventDefault(),s.togglePlay();return}if(n==="s"){i.preventDefault(),s.toStart();return}if(!s.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(i.preventDefault(),s.setTool(r[n]))}Kr(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),Gl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const qP={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},KP={class:"help-body"},ZP=["aria-expanded"],JP={class:"caret"},QP={class:"help-module-body"},ek=["aria-expanded"],tk={class:"caret"},ik={class:"help-module-body"},sk=["aria-expanded"],nk={class:"caret"},rk={class:"help-module-body"},ak=["aria-expanded"],ok={class:"caret"},lk={class:"help-module-body"},ck=["aria-expanded"],hk={class:"caret"},uk={class:"help-module-body"},dk=["aria-expanded"],fk={class:"caret"},mk={class:"help-module-body"},pk=["aria-expanded"],gk={class:"caret"},vk={class:"help-module-body"},yk=["aria-expanded"],xk={class:"caret"},bk={class:"help-module-body"},wk=["aria-expanded"],Sk={class:"caret"},Mk={class:"help-module-body"},_k=$s({__name:"HelpDialog",props:{show:{type:Boolean}},emits:["close"],setup(s,{emit:e}){const t=e,i=lt(Array.from({length:9},()=>!1));function n(){t("close")}function r(a){a.key==="Escape"&&n()}return Kr(()=>window.addEventListener("keydown",r)),$l(()=>window.removeEventListener("keydown",r)),(a,o)=>s.show?(ie(),ae("div",{key:0,class:"help-overlay",role:"presentation",onClick:bt(n,["self"])},[M("section",qP,[M("header",{class:"help-head"},[o[9]||(o[9]=M("div",null,[M("h2",{id:"help-title"},"使用说明"),M("p",null,"从创建粒子到保存、导出的快速入门")],-1)),M("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:n},"✕")]),M("div",KP,[o[37]||(o[37]=Ts('

快速开始

  1. 创建对象:在左侧“场景对象”中用 +粒子 / +碰撞 / +路径 / +Spine 添加场景对象。
  2. 编辑粒子:选中某个粒子系统,依次调整“发射模式 → 发射器形状 → 粒子属性 → 外观与资源 → 修改器”。
  3. 查看效果:底部时间轴可播放、暂停、逐帧或拖动;修改任意参数后会自动重新计算。
  4. 保存与导出:用“保存配置”保留工程;“导出 Spine Json / images 包 / .spine 包”输出成品。

每个模块组标题右侧的“重置”可把该组参数恢复默认;系统设置会自动保存在当前浏览器。

常用操作

小眼睛
单独显示/隐藏对象;隐藏的粒子系统不会被导出。
+Copy
完整复制当前选中对象,方便对比不同参数。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面布局、辅助显示、刻度等,自动存入浏览器。
撤销/重做
Ctrl+Z 撤回一步;可达成的步数在系统设置中调整。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需先点击画布;光标位于输入框时,单键快捷键不会触发。

功能模块详解
',3)),M("section",{class:Ze(["help-section help-module",{open:i.value[0]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[0]?"true":"false",onClick:o[0]||(o[0]=h=>i.value[0]=!i.value[0])},[o[10]||(o[10]=M("span",{class:"mnum"},"1",-1)),o[11]||(o[11]=M("span",{class:"mtitle"},"配置管理",-1)),M("span",JP,Xe(i.value[0]?"▾":"▸"),1)],8,ZP),ye(M("div",QP,[...o[12]||(o[12]=[Ts('
保存配置
把当前全部场景对象和参数保存为工程 JSON 文件(也支持 Ctrl+S)。
加载配置
选择本地配置文件,恢复完整工程。
预设
从下拉中选择已保存的预设快速套用;点击下拉即可刷新列表。
范围
配置只含对象与参数,不含“系统设置”;系统设置单独存于浏览器。
',1)])],512),[[Yi,i.value[0]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[1]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[1]?"true":"false",onClick:o[1]||(o[1]=h=>i.value[1]=!i.value[1])},[o[13]||(o[13]=M("span",{class:"mnum"},"2",-1)),o[14]||(o[14]=M("span",{class:"mtitle"},"场景对象",-1)),M("span",tk,Xe(i.value[1]?"▾":"▸"),1)],8,ek),ye(M("div",ik,[...o[15]||(o[15]=[Ts('
粒子
核心对象。可设名称、位置 X/Y、偏移、旋转、缩放 X/Y,以及“随机种子”——相同种子可精确复现同一次效果。
碰撞
圆形/椭圆/矩形/多边形/自定义;启用开关、碰撞响应(物理弹跳/暂停/销毁)、弹性与摩擦,还可沿某条路径移动并带进度曲线。
路径
贝塞尔路径,可双击新建/删除锚点、拖手柄调曲线;内置圆/方/多边形/星形预设,支持闭合与颜色。
Spine
加载 .json+.atlas+.png 预览骨骼动画,可查看/搜索骨骼层级树,用于粒子“发射器跟随”。
通用
每个对象都有小眼睛显隐;“+Copy”可以复制当前对象;隐藏的粒子系统不会进入导出。
',1)])],512),[[Yi,i.value[1]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[2]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[2]?"true":"false",onClick:o[2]||(o[2]=h=>i.value[2]=!i.value[2])},[o[16]||(o[16]=M("span",{class:"mnum"},"3",-1)),o[17]||(o[17]=M("span",{class:"mtitle"},"发射模式",-1)),M("span",nk,Xe(i.value[2]?"▾":"▸"),1)],8,sk),ye(M("div",rk,[...o[18]||(o[18]=[Ts('
持续
按“每秒发射数量”持续喷射;再分“常规持续”(发射时长)与“循环持续”(三段式:开始循环 / 纯循环 / 结束循环,可自动或自定义帧长,做到无缝衔接)。
爆发
一次性发射“单次数量”颗粒子。
延迟时间
粒子条左端位置,表示发射开始前的等待时间。
注意
循环持续模式不支持骨骼跟随和路径跟随;开关时会把跟随设置恢复默认。
',1)])],512),[[Yi,i.value[2]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[3]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[3]?"true":"false",onClick:o[3]||(o[3]=h=>i.value[3]=!i.value[3])},[o[19]||(o[19]=M("span",{class:"mnum"},"4",-1)),o[20]||(o[20]=M("span",{class:"mtitle"},"发射器形状",-1)),M("span",ok,Xe(i.value[3]?"▾":"▸"),1)],8,ak),ye(M("div",lk,[...o[21]||(o[21]=[Ts('
形状
点 / 圆形 / 矩形 / 锥形 / 路径。
圆·锥
内半径与外半径,形成环形或锥形发射区;锥形额外有“锥形朝向”和“开口角度”。
矩形
“外框 − 内框”形成环带,可分别设置内外宽高。
路径
选一条场景路径作为出生线;出生分布可选等距固定或随机。
发射角度
固定 / 随机(基准角度 + 随机范围)/ 径向(圆、矩、锥中心向外)/ 垂直于路径 / 沿路径方向。
',1)])],512),[[Yi,i.value[3]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[4]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[4]?"true":"false",onClick:o[4]||(o[4]=h=>i.value[4]=!i.value[4])},[o[22]||(o[22]=M("span",{class:"mnum"},"5",-1)),o[23]||(o[23]=M("span",{class:"mtitle"},"粒子属性",-1)),M("span",hk,Xe(i.value[4]?"▾":"▸"),1)],8,ck),ye(M("div",uk,[...o[24]||(o[24]=[M("dl",{class:"help-list"},[M("div",null,[M("dt",null,"初始参数"),M("dd",null,"生命周期、速度、缩放(统一或 X/Y 分离)、初始旋转(可跟随发射方向)。每个属性支持固定 / 随机 / 曲线三种取值。")]),M("div",null,[M("dt",null,"生命周期变化"),M("dd",null,"速度倍率、缩放倍率(统一/分离)、旋转速度,均可用“生命周期 → 倍率”曲线控制。")]),M("div",null,[M("dt",null,"曲线含义"),M("dd",null,"横轴为粒子生命周期 0→1,纵轴为倍率或对应数值。")])],-1)])],512),[[Yi,i.value[4]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[5]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[5]?"true":"false",onClick:o[5]||(o[5]=h=>i.value[5]=!i.value[5])},[o[25]||(o[25]=M("span",{class:"mnum"},"6",-1)),o[26]||(o[26]=M("span",{class:"mtitle"},"外观与资源",-1)),M("span",fk,Xe(i.value[5]?"▾":"▸"),1)],8,dk),ye(M("div",mk,[...o[27]||(o[27]=[M("dl",{class:"help-list"},[M("div",null,[M("dt",null,"透明度"),M("dd",null,"曲线或固定;曲线模式可选“跟随导出 / 线性 / 贝塞尔”。")]),M("div",null,[M("dt",null,"图片资源"),M("dd",null,"“+”新增,可上传单图或序列帧;多张图片按权重随机。每张可调缩放、轴心、颜色(固定/随机/生命周期渐变)、混合模式(正常/相加/相乘/滤色)、独立透明度(关/固定/曲线)。")]),M("div",null,[M("dt",null,"序列帧"),M("dd",null,"播放方式:单次隐藏 / 单次定格 / 正向循环 / 反向循环,可设每秒帧数。")])],-1)])],512),[[Yi,i.value[5]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[6]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[6]?"true":"false",onClick:o[6]||(o[6]=h=>i.value[6]=!i.value[6])},[o[28]||(o[28]=M("span",{class:"mnum"},"7",-1)),o[29]||(o[29]=M("span",{class:"mtitle"},"修改器",-1)),M("span",gk,Xe(i.value[6]?"▾":"▸"),1)],8,pk),ye(M("div",vk,[...o[30]||(o[30]=[Ts('
移动噪声
强度、波动范围、时间流速,让粒子轨迹产生抖动。
重力 / 风力
固定或随机强度、方向,以及生命周期内强度曲线。
力场
中心 X/Y、强度(正吸负斥)、半径、衰减(恒定/线性/反比)。
吸附
延迟后把粒子吸到指定点,到达范围即死亡;可直线或曲线。
拖尾
独立拖尾图片(多资源按权重)、旋转、拖尾骨骼数、拖尾比例;长度/宽度可固定或随机并支持放大;可加生命周期长度曲线与形状曲线;颜色/透明度可跟随粒子、固定或曲线。
发射器跟随
跟随某条路径(局部/世界、正/反向、进度曲线),或跟随 Spine 骨骼(选中的骨骼 + 偏移)。
碰撞 + 阻尼
选择场景中已启用的碰撞对象参与,并设置速度阻尼。
',1)])],512),[[Yi,i.value[6]]])],2),M("section",{class:Ze(["help-section help-module",{open:i.value[7]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[7]?"true":"false",onClick:o[7]||(o[7]=h=>i.value[7]=!i.value[7])},[o[31]||(o[31]=M("span",{class:"mnum"},"8",-1)),o[32]||(o[32]=M("span",{class:"mtitle"},"导出设置",-1)),M("span",xk,Xe(i.value[7]?"▾":"▸"),1)],8,yk),ye(M("div",bk,[...o[33]||(o[33]=[Ts('
图片路径
写入 Spine 的 images 路径,例如 ./images/。
Spine 版本
3.8 / 4.0 / 4.1 / 4.2 / 4.3。
关键帧曲线
线性或平滑贝塞尔;出生、死亡、突变仍使用阶跃关键帧。
导出 FPS
修改 FPS 会保持动画实际秒数不变;“不写 fps”只省略元数据。
其它
整数帧对齐、骨骼对象池、排除无内容动画。
导出按钮
“导出 Spine Json”生成骨骼动画文件;“导出 images 包”单独下载图片 ZIP;“导出 .spine 包”需要连接器。
',1)])],512),[[Yi,i.value[7]]])],2),M("section",{class:Ze(["help-section help-module help-connector",{open:i.value[8]}])},[M("button",{type:"button",class:"help-module-head","aria-expanded":i.value[8]?"true":"false",onClick:o[8]||(o[8]=h=>i.value[8]=!i.value[8])},[o[34]||(o[34]=M("span",{class:"mnum"},"9",-1)),o[35]||(o[35]=M("span",{class:"mtitle"},"连接器(Spine 连接器)使用说明",-1)),M("span",Sk,Xe(i.value[8]?"▾":"▸"),1)],8,wk),ye(M("div",Mk,[...o[36]||(o[36]=[Ts('

连接器用于把网页生成的 JSON 和图片,调用你电脑上已安装并激活的 Spine,转换成可编辑的 .spine 工程。

前置
电脑已安装并激活 Spine;并已启动连接器(桌面版 App,或运行“npm run connector”)。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。
路径设置
连接器自动检测 Spine 安装位置;检测不到时可在桌面窗口手动指定:Windows 选 Spine.com,macOS 选 Spine.app/Contents/MacOS/Spine。
下载结果
得到 ZIP 包,内含 .spine 工程和图片目录(如 images/star.png)。
版本
连接器按请求与 JSON 内的版本自动匹配 3.8~4.3,使用最新可用补丁。
安全
仅监听本机 127.0.0.1:27843;授权与白名单保存在连接器里;文件在临时目录转换后清理,并有大小限制。
',2)])],512),[[Yi,i.value[8]]])],2),o[38]||(o[38]=M("section",{class:"help-section help-export"},[M("h3",null,"配置与导出有什么区别?"),M("p",null,[M("b",null,"保存配置"),Qt("会保存编辑器中的全部对象和参数,之后可以继续修改;"),M("b",null,"导出 Spine Json"),Qt("只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。")])],-1))])])])):Ve("",!0)}}),Gs=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},Tk=Gs(_k,[["__scopeId","data-v-ae69ecd7"]]),Ak={class:"stage-wrap"},Ek={class:"topbar"},Ck=["disabled"],Ik={class:"tool-group"},Rk={class:"tool-group"},Pk={key:0,class:"background-panel"},kk=["disabled"],Fk=["title"],Ok={class:"background-position-row"},Bk={class:"background-opacity-row"},Lk={class:"zoom-pct"},Dk={key:0,class:"settings-panel"},Nk={class:"sp-head"},Uk={class:"sp-switch-row"},Xk={class:"sp-switch-control"},Vk={class:"sp-row"},Yk={class:"sp-chk"},$k={class:"sp-chk"},Gk={class:"sp-row"},Hk={class:"sp-row"},jk={class:"sp-chk"},Wk={class:"sp-chk"},zk={class:"sp-row"},qk={class:"sp-row"},Kk={class:"sp-row"},Zk={class:"sp-hex"},Jk={class:"sp-chk"},Qk={key:1,class:"hud"},eF={class:"hud-number hud-system-count"},tF={class:"hud-number hud-particle-count"},iF=$s({__name:"Stage",setup(s){const e=Kl(),t=lt(null),i=lt(null),n=lt(!1),r=lt(!1),a=lt(!1),o=lt(null),h=vt(()=>e.settings.backgroundImageName),l=lt(""),c=lt(!1);function u(H){l.value=l.value===H?"":H}e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);function d(){e.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),e.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2))}zP({canvasElement:t,canvasFocused:c,undo:Tf,save:()=>_w(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:H=>{l.value=H}});let f=null,p=null,m=null,g=null,v=0,b=null,y=null,w=null,A=null,T=null,_=null,R=null,P=null,F=null,I=null,k=null,B=null,D=[],U=0,L=0,N=0,O=0,X=null,E=null;const V=new Map,q=new Map;let W=[];const J=new Map,K=new Set;let fe=!1;fs(()=>[e.activeObjectType,e.activeObjectId],()=>K.clear());async function me(){if(X&&E)return X;const[H,Y]=await Promise.all([gt.fromURL("/images/star.png"),gt.fromURL("/images/trail.png")]);return X=H,E=Y,X}function we(){p=new ji,f.stage.addChild(p),k=new ji,f.stage.addChild(k),m=new Zr(gt.EMPTY),m.anchor.set(.5),m.visible=!1,p.addChild(m),I=new ys,p.addChild(I),B=new nR,p.addChild(B.container),y=new ys,p.addChild(y),b=new ys,p.addChild(b),A=new ys,p.addChild(A),T=new ys,p.addChild(T),_=new ys,p.addChild(_),R=new ys,p.addChild(R),P=new ys,p.addChild(P),F=new ys,p.addChild(F),w=new ys,p.addChild(w)}function Ee(){r.value=!r.value,r.value&&(n.value=!1)}function pe(){a.value=!0,n.value=!1,r.value=!1}function Ae(){n.value=!n.value,n.value&&(r.value=!1)}function G(H){jP(e,Number(H.target.value))}async function Z(H){var ne;const Y=H.target,ee=(ne=Y.files)==null?void 0:ne[0];if(ee)try{e.settings.backgroundImageData=await Jc(ee),e.settings.backgroundImageName=ee.name}catch(ue){console.error("背景图加载失败",ue)}finally{Y.value=""}}async function z(H){const Y=++v;if(!H){m&&(m.texture=gt.EMPTY,m.visible=!1),g&&g.destroy(!0),g=null;return}try{const ee=await gt.fromURL(H);if(Y!==v||!m){ee.destroy(!0);return}const ne=g;g=ee,m.texture=ee,m.visible=!0,ne&&ne.destroy(!0)}catch(ee){console.error("背景图恢复失败",ee)}}function j(H=!0){e.settings.backgroundImageData="",e.settings.backgroundImageName="",o.value&&(o.value.value=""),H&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}function te(H,Y=0){if(H<=0)return 1;const ee=Math.pow(10,Math.floor(Math.log10(H))),ne=[1,2,5,10,20,50,100];let ue=1;for(const ve of ne)if(ve*ee>=H){ue=ve*ee;break}return Math.max(ue,Y)}function he(){if(!I)return;const H=I;H.clear();const Y=e.settings;if(!Y.tickEnabled){for(const Se of D)Se.visible=!1;return}const ee=0,ne=0,ue=f.screen.width/e.editor.viewScale,ve=f.screen.height/e.editor.viewScale,_e=+("0x"+Y.axisColor.replace("#",""));H.lineStyle(1.5,_e,.35),H.moveTo(-ue,ne),H.lineTo(ue,ne),H.moveTo(ee,-ve),H.lineTo(ee,ve);const Me=e.editor.viewScale,be=te(50/Me),De=ue,Ie=ve,Le=Math.max(1,Y.tickWidth);if(Y.tickEnabled){for(let Se=0;Se<=ue;Se+=be){const at=Math.round(Se/be)*be;at!==0&&(H.lineStyle(Le,_e,.25),H.moveTo(at,ne-4),H.lineTo(at,ne+4),H.moveTo(-at,ne-4),H.lineTo(-at,ne+4))}for(let Se=0;Se<=ve;Se+=be)Math.round(Se/be)*be!==0&&(H.lineStyle(Le,_e,.25),H.moveTo(ee-4,Se),H.lineTo(ee+4,Se),H.moveTo(ee-4,-Se),H.lineTo(ee+4,-Se))}const Te=f.screen.width/2+e.editor.viewX,je=f.screen.height*.5+e.editor.viewY,rt=Y.axisFontSize,Je=+("0x"+Y.axisColor.replace("#",""));for(;D.length<64;){const Se=new Mp("",{fontFamily:"monospace",fontSize:rt,fill:Je});Se.anchor.set(.5,.5),k.addChild(Se),D.push(Se)}let nt=0;const Qe=Y.showAxisLabels&&Y.tickEnabled;for(let Se=0;Se<=ue;Se+=be){const at=Math.round(Se/be)*be;if(at===0||!Qe||at>De)continue;const Pe=D[nt++];if(!Pe)break;Pe.style.fontSize=rt,Pe.text=String(at),Pe.position.set(Te+at*Me,je+9),Pe.visible=!0;const Xt=D[nt++];if(!Xt)break;Xt.style.fontSize=rt,Xt.text=String(-at),Xt.position.set(Te-at*Me,je+9),Xt.visible=!0}for(let Se=0;Se<=ve;Se+=be){const at=Math.round(Se/be)*be;if(at===0||!Qe||at>Ie)continue;const Pe=D[nt++];if(!Pe)break;Pe.style.fontSize=rt,Pe.text=String(at),Pe.position.set(Te+8,je-Se*Me),Pe.visible=!0;const Xt=D[nt++];if(!Xt)break;Xt.style.fontSize=rt,Xt.text=String(-at),Xt.position.set(Te+8,je+Se*Me),Xt.visible=!0}for(;nt{e.editor.viewX=ne+(Me.clientX-Y),e.editor.viewY=ue+(Me.clientY-ee)},_e=()=>{window.removeEventListener("pointermove",ve),window.removeEventListener("pointerup",_e),window.removeEventListener("pointercancel",_e)};window.addEventListener("pointermove",ve),window.addEventListener("pointerup",_e),window.addEventListener("pointercancel",_e)}function ge(H,Y){const ee=t.value.getBoundingClientRect(),ne=Math.max(1e-4,e.editor.viewScale),ue=H-ee.left,ve=Y-ee.top;return{x:(ue-f.screen.width/2-e.editor.viewX)/ne,y:-(ve-f.screen.height*.5-e.editor.viewY)/ne}}function le(H,Y,ee){const ne=H.rotation*Math.PI/180,ue=Math.cos(ne),ve=Math.sin(ne),_e=Math.max(1e-4,Math.abs(H.scaleX??1)),Me=Math.max(1e-4,Math.abs(H.scaleY??1));return{x:H.x+ue*Y*_e-ve*ee*Me,y:H.y+ve*Y*_e+ue*ee*Me}}function Oe(H,Y,ee){const ne=H.rotation*Math.PI/180,ue=Math.cos(ne),ve=Math.sin(ne),_e=Math.max(1e-4,Math.abs(H.scaleX??1)),Me=Math.max(1e-4,Math.abs(H.scaleY??1)),be=Y-H.x,De=ee-H.y;return{x:(ue*be+ve*De)/_e,y:(-ve*be+ue*De)/Me}}function Fe(){if(e.activeObjectType!=="path")return null;const H=e.paths.find(Y=>Y.id===e.activeObjectId)||null;return(H==null?void 0:H.visible)===!1?null:H}function Be(H,Y,ee){if(H.points.length<2)return H.points.length;const ne=H.closed?H.points.length:H.points.length-1;let ue=H.points.length,ve=1/0;for(let _e=0;_eMath.hypot(Me.x-ne.x,Me.y-ne.y)<=ue);if(ve>=0){Y.points.splice(ve,1),K.clear();return}const _e=Be(Y,ne.x,ne.y);Y.points.splice(_e,0,{x:ne.x,y:ne.y,inX:0,inY:0,outX:0,outY:0}),K.clear(),K.add(_e)}function St(H){const Y=Fe();if(!Y||!Y.enabled)return!1;const ee=ge(H.clientX,H.clientY),ne=Oe(Y,ee.x,ee.y),ue=9/Math.max(.01,e.editor.viewScale);if(H.detail>=2){if(Y.points.findIndex(Ie=>Math.hypot(Ie.x-ne.x,Ie.y-ne.y)<=ue)>=0)return!0;const be={x:ne.x,y:ne.y,inX:0,inY:0,outX:0,outY:0},De=Be(Y,ne.x,ne.y);return Y.points.splice(De,0,be),K.clear(),K.add(De),fe=!0,At(Ie=>{const Le=ge(Ie.clientX,Ie.clientY),Te=Oe(Y,Le.x,Le.y);be.outX=Te.x-be.x,be.outY=Te.y-be.y,be.inX=-be.outX,be.inY=-be.outY}),!0}let ve=null;for(const Me of K){const be=Y.points[Me];be&&(Math.hypot(be.x+be.inX-ne.x,be.y+be.inY-ne.y)<=ue&&(ve={index:Me,side:"in"}),Math.hypot(be.x+be.outX-ne.x,be.y+be.outY-ne.y)<=ue&&(ve={index:Me,side:"out"}))}if(ve){const Me=Y.points[ve.index],be=ve.side==="in"?Math.hypot(Me.outX,Me.outY):Math.hypot(Me.inX,Me.inY);return At(Ie=>{const Le=ge(Ie.clientX,Ie.clientY),Te=Oe(Y,Le.x,Le.y),je=Te.x-Me.x,rt=Te.y-Me.y;if(ve.side==="in"?(Me.inX=je,Me.inY=rt):(Me.outX=je,Me.outY=rt),!Ie.altKey){const Je=Math.max(1e-4,Math.hypot(je,rt)),nt=Ie.shiftKey?Je:be;ve.side==="in"?(Me.outX=-je/Je*nt,Me.outY=-rt/Je*nt):(Me.inX=-je/Je*nt,Me.inY=-rt/Je*nt)}}),!0}const _e=Y.points.findIndex(Me=>Math.hypot(Me.x-ne.x,Me.y-ne.y)<=ue);if(_e>=0){if(H.altKey)return K.delete(_e),!0;H.ctrlKey||H.metaKey?K.add(_e):K.has(_e)||(K.clear(),K.add(_e));const Me=ne,be=[...K].map(Ie=>({index:Ie,x:Y.points[Ie].x,y:Y.points[Ie].y}));return At(Ie=>{const Le=ge(Ie.clientX,Ie.clientY),Te=Oe(Y,Le.x,Le.y);for(const je of be)Y.points[je.index].x=je.x+Te.x-Me.x,Y.points[je.index].y=je.y+Te.y-Me.y}),!0}if(H.altKey&&!H.ctrlKey&&!H.metaKey)return K.clear(),!0;if(H.ctrlKey||H.metaKey||H.altKey){const Me=ne,be=H.altKey,De=Ie=>{const Le=ge(Ie.clientX,Ie.clientY),Te=Oe(Y,Le.x,Le.y),je=Math.min(Me.x,Te.x),rt=Math.max(Me.x,Te.x),Je=Math.min(Me.y,Te.y),nt=Math.max(Me.y,Te.y);Y.points.forEach((Qe,Se)=>{Qe.x>=je&&Qe.x<=rt&&Qe.y>=Je&&Qe.y<=nt&&(be?K.delete(Se):K.add(Se))}),window.removeEventListener("pointerup",De),window.removeEventListener("pointercancel",De)};return window.addEventListener("pointerup",De),window.addEventListener("pointercancel",De),!0}return!1}function At(H){const Y=()=>{window.removeEventListener("pointermove",H),window.removeEventListener("pointerup",Y),window.removeEventListener("pointercancel",Y)};window.addEventListener("pointermove",H),window.addEventListener("pointerup",Y),window.addEventListener("pointercancel",Y)}function Et(H){if(e.activeObjectType!=="collision")return!1;const Y=e.colliders.find(nt=>nt.id===e.activeObjectId);if(!(Y!=null&&Y.enabled)||Y.visible===!1)return!1;const ee=ge(H.clientX,H.clientY),ne=Y.rotation*Math.PI/180,ue=Math.cos(ne),ve=Math.sin(ne),_e=Math.max(1e-4,Math.abs(Y.scaleX??1)),Me=Math.max(1e-4,Math.abs(Y.scaleY??1)),be=ee.x-Y.x,De=ee.y-Y.y,Ie=(ue*be+ve*De)/_e,Le=(-ve*be+ue*De)/Me;if(!(Y.shape==="circle"?Math.hypot(Ie,Le)<=Y.radius:Y.shape==="ellipse"?Math.hypot(Ie/Math.max(1,Y.radiusX),Le/Math.max(1,Y.radiusY))<=1:Math.abs(Ie)<=Y.width*.5&&Math.abs(Le)<=Y.height*.5))return!1;const je=Y.x,rt=Y.y,Je=ee;return At(nt=>{const Qe=ge(nt.clientX,nt.clientY);Y.x=je+Qe.x-Je.x,Y.y=rt+Qe.y-Je.y}),!0}function It(H){const Y=e.systems.find(De=>De.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return!1;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.forceField)||ee.forceRadius<=0)return!1;const ne=ge(H.clientX,H.clientY);if(Math.hypot(ne.x-ee.forceCenterX,ne.y-ee.forceCenterY)>ee.forceRadius)return!1;const ve=ee.forceCenterX,_e=ee.forceCenterY;t.value&&(t.value.style.cursor="grabbing");const Me=De=>{const Ie=ge(De.clientX,De.clientY);ee.forceCenterX=ve+Ie.x-ne.x,ee.forceCenterY=_e+Ie.y-ne.y},be=()=>{t.value&&(t.value.style.cursor=""),window.removeEventListener("pointermove",Me),window.removeEventListener("pointerup",be),window.removeEventListener("pointercancel",be)};return window.addEventListener("pointermove",Me),window.addEventListener("pointerup",be),window.addEventListener("pointercancel",be),H.preventDefault(),!0}function Kt(H){const Y=e.systems.find(Ie=>Ie.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return!1;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.attraction))return!1;const ne=ge(H.clientX,H.clientY),ue=Math.max(ee.attractionRadius,12/Math.max(1e-4,e.editor.viewScale));if(Math.hypot(ne.x-ee.attractionCenterX,ne.y-ee.attractionCenterY)>ue)return!1;const _e=ee.attractionCenterX,Me=ee.attractionCenterY;t.value&&(t.value.style.cursor="grabbing");const be=Ie=>{const Le=ge(Ie.clientX,Ie.clientY);ee.attractionCenterX=_e+Le.x-ne.x,ee.attractionCenterY=Me+Le.y-ne.y},De=()=>{t.value&&(t.value.style.cursor=""),window.removeEventListener("pointermove",be),window.removeEventListener("pointerup",De),window.removeEventListener("pointercancel",De)};return window.addEventListener("pointermove",be),window.addEventListener("pointerup",De),window.addEventListener("pointercancel",De),H.preventDefault(),!0}function Ti(){const H=e.activeObjectId;if(e.activeObjectType==="particle"){const ne=e.systems.find(ve=>ve.id===H);if(!ne||ne.visible===!1)return null;const ue=ne.config;return{x:ue.centerX,y:ue.centerY,rotation:ue.rootRotation,scaleX:ue.rootScaleX??1,scaleY:ue.rootScaleY??1,setPosition:(ve,_e)=>{ue.centerX=ve,ue.centerY=_e},setRotation:ve=>{ue.rootRotation=ve},setScale:(ve,_e)=>{ue.rootScaleX=ve,ue.rootScaleY=_e}}}const ee=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(ne=>ne.id===H);return!ee||ee.visible===!1?null:{x:Number(ee.x)||0,y:Number(ee.y)||0,rotation:Number(ee.rotation)||0,scaleX:Math.max(.05,Number(ee.scaleX)||1),scaleY:Math.max(.05,Number(ee.scaleY)||1),setPosition:(ne,ue)=>{ee.x=ne,ee.y=ue},setRotation:ne=>{ee.rotation=ne},setScale:(ne,ue)=>{ee.scaleX=ne,ee.scaleY=ue}}}function Wi(H){const Y=Ti();if(!Y)return;const ee=e.editor.viewScale,ne=t.value.getBoundingClientRect(),ue=ne.left+f.screen.width/2+e.editor.viewX+Y.x*ee,ve=ne.top+f.screen.height*.5+e.editor.viewY+-Y.y*ee,_e=H.clientX,Me=H.clientY,be=l.value,De=Y.x,Ie=Y.y,Le=Y.rotation,Te=Y.scaleX,je=Y.scaleY,rt=Math.hypot(_e-ue,Me-ve)||1,Je=Math.atan2(Me-ve,_e-ue),nt=Se=>{const at=(Se.clientX-_e)/ee,Pe=(Se.clientY-Me)/ee;if(be==="translate")Y.setPosition(De+at,Ie-Pe);else if(be==="rotate"){const Xt=Math.atan2(Se.clientY-ve,Se.clientX-ue);Y.setRotation(Le-(Xt-Je)*180/Math.PI)}else if(be==="scale"){const Bt=Math.hypot(Se.clientX-ue,Se.clientY-ve)/rt;Y.setScale(Math.max(.05,Te*Bt),Math.max(.05,je*Bt))}},Qe=()=>{window.removeEventListener("pointermove",nt),window.removeEventListener("pointerup",Qe),window.removeEventListener("pointercancel",Qe)};window.addEventListener("pointermove",nt),window.addEventListener("pointerup",Qe),window.addEventListener("pointercancel",Qe)}function zi(){di(1.2)}function dn(){di(1/1.2)}function di(H){const Y=Math.max(.01,e.editor.viewScale*H);e.editor.viewScale=Y}function ce(){e.editor.viewScale=1,e.editor.viewX=0,e.editor.viewY=0}function de(){e.editor.viewScale=1,e.editor.viewX=0,e.editor.viewY=0}function Rt(){e.settings.showGrid=!e.settings.showGrid}function Wt(){if(p){for(const[H,Y]of V){const ee=e.systems.find(ne=>ne.id===H);(!ee||q.get(H)!==ee.config)&&(p.removeChild(Y),Y.destroy({children:!0}),V.delete(H),q.delete(H))}for(const H of e.systems){X&&!H.config.texture&&(H.config.texture=X);const Y=Wr(H.config);if(E)for(const ne of Y.trailResources)!ne.texture&&(ne.previewUrl==="/images/trail.png"||ne.previewUrl==="/trails/trail.png")&&(ne.texture=E);if(X)for(const ne of Y.imageResources)!ne.texture&&ne.textureName==="star"&&(ne.texture=X);if(V.has(H.id))continue;const ee=new BI(H.config);ee.setEmitterPos(()=>({x:H.config.centerX,y:H.config.centerY})),p.addChild(ee),V.set(H.id,ee),q.set(H.id,H.config)}}}function Zt(){if(!b)return;const H=b;if(H.clear(),!!e.settings.showEmitter&&e.systems.length)for(const Y of e.systems){if(Y.visible===!1)continue;const ee=J.get(Y.id),ne=(ee==null?void 0:ee.x)??Y.config.centerX??0,ue=-((ee==null?void 0:ee.y)??Y.config.centerY??0),ve=e.activeObjectType==="particle"&&Y.id===e.activeId,_e=ve?16763955:9082040,Me=ve?.4:.2;H.lineStyle(1,_e,Me),H.drawCircle(ne,ue,10),H.beginFill(_e,ve?.8:.4),H.drawCircle(ne,ue,3),H.endFill(),H.lineStyle(1,_e,ve?.3:.15),H.moveTo(ne-16,ue),H.lineTo(ne+16,ue),H.moveTo(ne,ue-16),H.lineTo(ne,ue+16)}}function pt(){var ee;if(!y)return;const H=y;(ee=H.parent)==null||ee.addChild(H),H.clear();const Y=new Map;for(const ne of e.spines)ne.visible===!1||!ne.selectedBone||ne.status!=="ready"||Y.set(`${ne.id}:${ne.selectedBone}`,{spineId:ne.id,boneName:ne.selectedBone});for(const ne of e.systems){if(ne.visible===!1)continue;const ue=ne.config;if(!ue.emitterFollow||ue.emitterFollowMode!=="bone"||!ue.emitterFollowSpineId||!ue.emitterFollowBoneName)continue;const ve=e.spines.find(_e=>_e.id===ue.emitterFollowSpineId);!ve||ve.visible===!1||Y.set(`${ue.emitterFollowSpineId}:${ue.emitterFollowBoneName}`,{spineId:ue.emitterFollowSpineId,boneName:ue.emitterFollowBoneName})}for(const ne of Y.values()){const ue=B==null?void 0:B.getBoneWorldTransform(ne.spineId,ne.boneName);if(!ue)continue;const ve=ue.x,_e=-ue.y;H.lineStyle(2,12881151,.95),H.beginFill(12881151,.2),H.drawCircle(ve,_e,8),H.endFill(),H.beginFill(15919103,1),H.drawCircle(ve,_e,3.5),H.endFill()}}function Rs(){if(!A)return;const H=A;if(H.clear(),!e.settings.showEmitter)return;const Y=e.systems.find(Je=>Je.id===e.activeId);if(!Y||Y.visible===!1)return;const ee=Y.config,ne=J.get(Y.id),ue=(ne==null?void 0:ne.x)??ee.centerX??0,ve=-((ne==null?void 0:ne.y)??ee.centerY??0),_e=ee.shape;if(_e==="point"||_e==="path")return;const Me=ee.rootScaleX??1,be=ee.rootScaleY??1,De=-((ne==null?void 0:ne.rotation)??ee.rootRotation??0)*Math.PI/180,Ie=Math.cos(De),Le=Math.sin(De),Te=ee.offsetX??0,je=ee.offsetY??0,rt=(Je,nt)=>{const Qe=Je+Te,Se=-nt-je,at=Qe*Me,Pe=Se*be;return[ue+at*Ie-Pe*Le,ve+(at*Le+Pe*Ie)]};if(_e==="circle"){const Je=Rh(ee.innerRadius,ee.outerRadius);H.lineStyle(2,3991658,.7);const nt=48;for(const Qe of[Je.outer,Je.inner])if(!(Qe<=0))for(let Se=0;Se<=nt;Se++){const at=Se/nt*Math.PI*2,[Pe,Xt]=rt(Math.cos(at)*Qe,Math.sin(at)*Qe);Se===0?H.moveTo(Pe,Xt):H.lineTo(Pe,Xt)}}else if(_e==="rect"){const Je=u1(ee);H.lineStyle(2,4885759,.7);for(const[nt,Qe]of[[Je.outerW,Je.outerH],[Je.innerW,Je.innerH]]){if(nt<=0||Qe<=0)continue;const Se=nt/2,at=Qe/2,Pe=rt(-Se,-at),Xt=rt(Se,-at),Bt=rt(Se,at),si=rt(-Se,at);H.moveTo(Pe[0],Pe[1]),H.lineTo(Xt[0],Xt[1]),H.lineTo(Bt[0],Bt[1]),H.lineTo(si[0],si[1]),H.lineTo(Pe[0],Pe[1])}}else if(_e==="cone"){const Je=Rh(ee.innerRadius,ee.outerRadius),nt=ee.coneAngle/2*Math.PI/180,Qe=ee.coneDirection*Math.PI/180,Se=rt(Math.cos(Qe-nt)*Je.inner,Math.sin(Qe-nt)*Je.inner),at=rt(Math.cos(Qe+nt)*Je.inner,Math.sin(Qe+nt)*Je.inner),Pe=rt(Math.cos(Qe-nt)*Je.outer,Math.sin(Qe-nt)*Je.outer),Xt=rt(Math.cos(Qe+nt)*Je.outer,Math.sin(Qe+nt)*Je.outer);H.lineStyle(2,3991658,.7),H.moveTo(Se[0],Se[1]),H.lineTo(Pe[0],Pe[1]),H.moveTo(at[0],at[1]),H.lineTo(Xt[0],Xt[1]),H.lineStyle(1,3991658,.5);const Bt=24;for(const si of[Je.outer,Je.inner])if(!(si<=0))for(let Ci=0;Ci<=Bt;Ci++){const ns=Qe-nt+2*nt*Ci/Bt,[Ha,$]=rt(Math.cos(ns)*si,Math.sin(ns)*si);Ci===0?H.moveTo(Ha,$):H.lineTo(Ha,$)}}}function Hs(){if(!T)return;const H=T;H.clear();const Y=e.systems.find(_e=>_e.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.forceField)||ee.forceRadius<=0)return;const ne=ee.forceCenterX,ue=-ee.forceCenterY,ve=ee.forceStrength>=0?5818367:16739194;H.lineStyle(2,ve,.85),H.beginFill(ve,.08),H.drawCircle(ne,ue,ee.forceRadius),H.endFill(),H.lineStyle(1,ve,.7),H.moveTo(ne-9,ue),H.lineTo(ne+9,ue),H.moveTo(ne,ue-9),H.lineTo(ne,ue+9),H.beginFill(ve,.95),H.drawCircle(ne,ue,4),H.endFill()}function Ui(){if(!_)return;const H=_;H.clear();const Y=e.systems.find(Me=>Me.id===e.activeId);if((Y==null?void 0:Y.visible)===!1)return;const ee=Y==null?void 0:Y.config;if(!(ee!=null&&ee.attraction))return;const ne=ee.attractionCenterX,ue=-ee.attractionCenterY,ve=Math.max(0,ee.attractionRadius),_e=16731487;ve>0&&(H.lineStyle(2,_e,.95),H.beginFill(_e,.09),H.drawCircle(ne,ue,ve),H.endFill()),H.lineStyle(1,_e,.85),H.moveTo(ne-10,ue),H.lineTo(ne+10,ue),H.moveTo(ne,ue-10),H.lineTo(ne,ue+10),H.beginFill(_e,1),H.drawCircle(ne,ue,ve>0?4:6),H.endFill()}function Ps(){if(!F)return;const H=F;if(H.clear(),!l.value)return;const Y=Ti();if(!Y)return;const ee=Y.x,ne=-Y.y,ue=Y.scaleX,ve=Y.scaleY,_e=-Y.rotation*Math.PI/180,Me=Math.cos(_e),be=Math.sin(_e),De=(Te,je)=>{const rt=Te*ue,Je=-je*ve;return[ee+rt*Me-Je*be,ne+(rt*be+Je*Me)]},Ie=(Te,je,rt,Je)=>{const nt=De(Te,je),Qe=De(rt,Je);H.moveTo(nt[0],nt[1]),H.lineTo(Qe[0],Qe[1])},Le=26;if(H.lineStyle(2,3526911,.9),H.beginFill(3526911,.25),H.drawCircle(ee,ne,6),H.endFill(),l.value==="translate")H.lineStyle(2,3526911,.9),Ie(-Le,0,Le,0),Ie(0,-Le,0,Le),Ie(Le-6,-4,Le,0),Ie(Le,0,Le-6,4),Ie(-20,-4,-Le,0),Ie(-Le,0,-20,4),Ie(-4,Le-6,0,Le),Ie(0,Le,4,Le-6),Ie(-4,-20,0,-Le),Ie(0,-Le,4,-20);else if(l.value==="rotate"){H.lineStyle(2,3526911,.8);const Te=48;for(let Je=0;Je<=Te;Je++){const nt=Je/Te*Math.PI*2,[Qe,Se]=De(Math.cos(nt)*Le,Math.sin(nt)*Le);Je===0?H.moveTo(Qe,Se):H.lineTo(Qe,Se)}const[je,rt]=De(0,Le);H.beginFill(3526911,.95),H.drawCircle(je,rt,4),H.endFill()}else if(l.value==="scale"){H.lineStyle(2,3526911,.9);const je=[[-Le,-Le],[Le,-Le],[Le,Le],[-Le,Le]].map(([rt,Je])=>De(rt,Je));H.moveTo(je[0][0],je[0][1]),H.lineTo(je[1][0],je[1][1]),H.lineTo(je[2][0],je[2][1]),H.lineTo(je[3][0],je[3][1]),H.lineTo(je[0][0],je[0][1]),H.beginFill(3526911,.9);for(const rt of je)H.drawRect(rt[0]-3,rt[1]-3,6,6);H.endFill()}}function br(H,Y,ee,ne){var _e;const ue=Number.isFinite(Y.worldX)&&Number.isFinite(Y.worldY),ve=Number.isFinite(Y.worldRotation);H.push({boneName:Y.boneName,x:ue?Y.worldX:Y.x,y:ue?-Y.worldY:Y.y,rotation:ve?-Y.worldRotation:-Y.rotation,parentX:ee,parentY:ne}),(_e=Y.trailState)!=null&&_e.bones.length&&Y.trailState.bones.forEach(Me=>{const be=Number.isFinite(Me.worldX)&&Number.isFinite(Me.worldY),De=Number.isFinite(Me.worldRotation);H.push({boneName:Me.boneName,x:be?Me.worldX:Me.x,y:be?-Me.worldY:Me.y,rotation:De?-Me.worldRotation:Me.rotation,parentX:ee,parentY:ne,trail:!0})})}function js(H,Y,ee,ne,ue,ve,_e,Me){const be=ve*.62,De=Y+ne*ve,Ie=ee+ue*ve,Le=Math.max(2.5,ve*.32),Te=Math.max(1.7,ve*.22),je=De-ne*Le,rt=Ie-ue*Le,Je=-ue,nt=ne;H.lineStyle(_e,Me,.95),H.moveTo(Y-ne*be,ee-ue*be),H.lineTo(je,rt),H.lineStyle(0),H.beginFill(Me,.95),H.drawPolygon([De,Ie,je+Je*Te,rt+nt*Te,je-Je*Te,rt-nt*Te]),H.endFill()}function ss(H){if(!w)return;const Y=w;if(Y.clear(),!e.settings.showBones)return;const ee=0,ne=0,ue=Math.max(.25,Math.abs(e.editor.viewScale)||1),ve=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),_e=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),Me=2.5*ve/ue,be=4.5*_e/ue,De=Math.max(.65,_e*.625)/ue;for(const Ie of H){const Le=Ie.trail?16731533:16747610;Y.lineStyle(1,Le,Ie.trail?.65:.35),Y.moveTo(Ie.parentX??ee,Ie.parentY??ne),Y.lineTo(Ie.x,Ie.y);const Te=Ie.rotation*Math.PI/180,je=Math.cos(Te),rt=Math.sin(Te);js(Y,Ie.x,Ie.y,je,rt,be,De,15684432),js(Y,Ie.x,Ie.y,rt,-je,be,De,5622123),Y.beginFill(Le,.9),Y.drawCircle(Ie.x,Ie.y,Me),Y.endFill()}}function $a(H,Y=16777215){const ee=Number.parseInt(H.replace("#",""),16);return Number.isFinite(ee)?ee:Y}function Ga(){if(!R)return;const H=R;H.clear();for(const Y of W){if(Y.visible===!1)continue;const ee=e.activeObjectType==="collision"&&e.activeObjectId===Y.id,ne=Y.enabled?ee?16735858:13911899:5792116,ue=Y.rotation*Math.PI/180,ve=Math.cos(ue),_e=Math.sin(ue),Me=Math.max(1e-4,Math.abs(Y.scaleX??1)),be=Math.max(1e-4,Math.abs(Y.scaleY??1)),De=(Te,je)=>({x:Y.x+ve*Te*Me-_e*je*be,y:-(Y.y+_e*Te*Me+ve*je*be)});let Ie=[];if(Y.shape==="circle"||Y.shape==="ellipse"){const Te=Y.shape==="circle"?Y.radius:Y.radiusX,je=Y.shape==="circle"?Y.radius:Y.radiusY;Ie=Array.from({length:49},(rt,Je)=>{const nt=Je/48*Math.PI*2;return De(Math.cos(nt)*Te,Math.sin(nt)*je)})}else if(Y.shape==="rect"){const Te=Y.width*.5,je=Y.height*.5;Ie=[De(-Te,-je),De(Te,-je),De(Te,je),De(-Te,je),De(-Te,-je)]}else{const Te=Math.max(3,Math.min(16,Math.round(Y.sides)));Ie=Array.from({length:Te+1},(je,rt)=>{const Je=Math.PI*.5+rt%Te/Te*Math.PI*2;return De(Math.cos(Je)*Y.width*.5,Math.sin(Je)*Y.height*.5)})}if(!Ie.length)continue;H.lineStyle(ee?2.5:1.5,ne,Y.enabled?.95:.45),H.beginFill(ne,ee?.12:.055),H.moveTo(Ie[0].x,Ie[0].y);for(let Te=1;Te{const Ie=le(Y,be,De);return{x:Ie.x,y:-Ie.y}},ve=Y.points[0],_e=ue(ve.x,ve.y);H.lineStyle(ee?2.5:1.8,ne,ee?1:.75),H.moveTo(_e.x,_e.y);const Me=Y.closed?Y.points.length:Y.points.length-1;for(let be=0;be{const Ie=ue(be.x,be.y),Le=ue(be.x+be.inX,be.y+be.inY),Te=ue(be.x+be.outX,be.y+be.outY),je=Math.hypot(be.inX,be.inY)>.01,rt=Math.hypot(be.outX,be.outY)>.01;H.lineStyle(1,11121867,.65),je&&(H.moveTo(Ie.x,Ie.y),H.lineTo(Le.x,Le.y)),rt&&(H.moveTo(Ie.x,Ie.y),H.lineTo(Te.x,Te.y)),je&&(H.beginFill(14015724,.95),H.drawCircle(Le.x,Le.y,3),H.endFill()),rt&&(H.beginFill(14015724,.95),H.drawCircle(Te.x,Te.y,3),H.endFill()),H.beginFill(K.has(De)?16777215:ne,1),H.lineStyle(1.5,K.has(De)?6126847:16777215,.95),H.drawCircle(Ie.x,Ie.y,K.has(De)?5:4),H.endFill()})}}function Ws(H,Y,ee="linear"){if(!H.length)return Y;const ne=[...H].sort((ue,ve)=>ue.x-ve.x);if(Y<=ne[0].x)return ne[0].y;for(let ue=1;ue{if(!Y.followPath||!Y.followPathId)return Y;const ee=e.paths.find(De=>De.id===Y.followPathId&&De.enabled);if(!(ee!=null&&ee.points.length))return Y;const ne=Math.max(.05,Number(Y.followDuration)||2),ue=Math.min(1,Math.max(0,H/ne)),ve=Array.isArray(Y.followCurve)?Y.followCurve:[{x:0,y:0},{x:1,y:1}],_e=Y.followCurveMode==="跟随导出"?e.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":Y.followCurveMode==="贝塞尔"?"bezier":"linear",Me=Math.min(1,Math.max(0,Ws(ve,ue,_e))),be=yf(ee,Me);return be?{...Y,x:be.x,y:be.y,rotation:Y.rotation+(Y.followPathRotation?be.angle:0)}:Y})}function ks(H,Y,ee,ne=Math.max(1e-4,Math.abs(H.rootScaleX)),ue=Math.max(1e-4,Math.abs(H.rootScaleY))){const ve=-H.rootRotation*Math.PI/180,_e=Math.cos(ve),Me=Math.sin(ve),be=Y-H.centerX,De=-ee+H.centerY;return{x:(_e*be+Me*De)/ne,y:(-Me*be+_e*De)/ue}}function ea(H,Y,ee){const ne=yf(Y,ee);if(!ne)return null;const ue=ks(H,ne.x,ne.y),ve=ne.angle*Math.PI/180,_e=ks(H,ne.x+Math.cos(ve),ne.y+Math.sin(ve)),Me=Math.atan2(_e.y-ue.y,_e.x-ue.x)*180/Math.PI;return{...ue,angle:Me}}function ta(){var ee,ne,ue;O=requestAnimationFrame(ta);const H=performance.now()/1e3;let Y=H-U;if(U=H,Y>.1&&(Y=.1),f&&p){p.scale.set(e.editor.viewScale),p.position.set(f.screen.width/2+e.editor.viewX,f.screen.height*.5+e.editor.viewY),m&&(m.position.set(Number(e.settings.backgroundX)||0,-(Number(e.settings.backgroundY)||0)),m.alpha=Math.min(1,Math.max(0,Number(e.settings.backgroundOpacity)||0))),he(),Wt();const ve=Math.max(1,e.timeline.fps),_e=e.timeline.frame,Me=_e/ve;B==null||B.sync(e.spines,_e,ve),Vn(Me);for(const Qe of e.systems){const Se=V.get(Qe.id);if(!Se)continue;Se.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const at=Qe.visible!==!1;Se.visible=at,Se.renderable=at;const Pe=Qe.config;Se.scale.set(Pe.rootScaleX,Pe.rootScaleY);const Xt=new Set(Pe.collisionColliderIds);Se.setColliders(Pe.collision?W.filter(ut=>Xt.has(ut.id)):[]),Se.setEmitterFollowSpawn(0,0,0);let Bt={x:Pe.centerX,y:Pe.centerY,rotation:Pe.rootRotation};const si=Pe.emitterFollow&&Pe.emitterFollowMode==="bone"?e.spines.find(ut=>ut.id===Pe.emitterFollowSpineId&&ut.enabled&&ut.status==="ready"):null,Ci=si&&(B==null?void 0:B.getBoneWorldTransform(si.id,Pe.emitterFollowBoneName))||null,ns=Pe.emitterFollow&&Pe.emitterFollowMode==="path"?e.paths.find(ut=>ut.id===Pe.emitterFollowPathId&&ut.enabled):null,Ha=Math.max(.05,Pe.emitterFollowDuration),$=Math.min(1,Math.max(0,Me/Ha)),S=Math.min(1,Math.max(0,Ws(Pe.emitterFollowCurve,$))),C=Math.min(1,Math.max(0,Pe.emitterFollowOffset)),Q=Pe.emitterFollowDirection==="reverse"?(1-C)*(1-S):C+(1-C)*S,Re=ns?yf(ns,Q):null;if(Ci){const ut=Pe.emitterFollowBoneOffsetX,ni=Pe.emitterFollowBoneOffsetY,Vt=Ci.x+ut,rs=Ci.y+ni,tc=Pe.rootRotation+Pe.emitterFollowBoneRotation,Xo=Math.max(1e-4,Math.abs(Pe.rootScaleX*Pe.emitterFollowBoneScaleX)),Vo=Math.max(1e-4,Math.abs(Pe.rootScaleY*Pe.emitterFollowBoneScaleY));if(Bt={x:Vt,y:rs,rotation:tc},Pe.emitterFollowSpace==="local")Se.position.set(Vt,-rs),Se.rotation=-tc*Math.PI/180,Se.scale.set(Xo,Vo),Se.setSimulationTransform(Vt,rs,tc,Xo,Vo);else{Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.scale.set(Xo,Vo),Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation,Xo,Vo);const Vp=ks(Pe,Vt,rs,Xo,Vo),AS=-(tc-Pe.rootRotation);Se.setEmitterFollowSpawn(Vp.x,Vp.y,AS)}}else if(Re){const ut=Re.angle+(Pe.emitterFollowDirection==="reverse"?180:0),ni=Pe.emitterAngleMode==="direction"?ut:Pe.rootRotation;if(Bt={x:Re.x,y:Re.y,rotation:ni},Pe.emitterFollowSpace==="local")Se.position.set(Re.x,-Re.y),Se.rotation=-ni*Math.PI/180,Se.setSimulationTransform(Re.x,Re.y,ni);else{Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation);const Vt=ks(Pe,Re.x,Re.y),rs=Pe.emitterAngleMode==="direction"?-(ut-Pe.rootRotation):0;Se.setEmitterFollowSpawn(Vt.x,Vt.y,rs)}}else Se.position.set(Pe.centerX,-Pe.centerY),Se.rotation=-Pe.rootRotation*Math.PI/180,Se.setSimulationTransform(Pe.centerX,Pe.centerY,Pe.rootRotation);const mt=Pe.shape==="path"&&Pe.spawnPathId>0&&e.paths.find(ut=>ut.id===Pe.spawnPathId&&ut.enabled&&ut.points.length>0)||null;Se.setSpawnPathSampler(mt?ut=>ea(Pe,mt,ut):null,(mt==null?void 0:mt.closed)===!0),J.set(Qe.id,Bt)}let be=0;const De=[],Ie=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,Le=(Qe,Se,at)=>{!Qe||Qe.id!==Ie||Qe.visible===!1||br(De,at,Se.position.x,Se.position.y)},Te=e.timeline,je=Te.fps,rt=1/Math.max(1,je);let Je=N,nt=0;if(Te.playing?(L+=Y,nt=Math.floor(L/rt),nt>0&&(L-=nt*rt)):L=0,Te.playing&&nt>0)for(let Qe=0;QeBt.id===e.activeId),at=(Se==null?void 0:Se.config.mode)==="stream"&&Se.config.streamBehavior==="loop"?g1(Se.config,je):null,Xt=Te.loop&&(at==null?void 0:at.start)===Te.playbackStart&&at.end===Te.playbackEnd?Te.playbackEnd-1:Te.playbackEnd;if(Te.frame>Xt)if(Te.loop)Te.frame=Te.playbackStart;else{Te.frame=Te.playbackEnd,Te.playing=!1;break}}else{if(Te.frame===0)for(const Se of e.systems){const at=V.get(Se.id);at&&(Se.config.mode==="stream"&&Se.config.streamBehavior==="loop"?sR(Se,at,je,Te.totalFrames):at.reset())}for(const[Se,at]of V){const Pe=e.systems.find(ns=>ns.id===Se),Xt=(Pe==null?void 0:Pe.config.mode)==="stream"&&Pe.config.streamBehavior==="loop",Bt=Xt?(ee=Pe.frames)==null?void 0:ee[Te.frame]:void 0,si=Te.frame===0&&!Xt,Ci=si?[]:Bt||at.update(rt);if(si?at.apply([]):Bt&&at.apply(Bt),(Pe==null?void 0:Pe.visible)!==!1)for(const ns of Ci)ns.active&&Le(Pe,at,ns);be+=Ci.length}for(const Se of e.systems){if(!Se.config.texture)continue;Se.frames=Se.frames||[];const at=V.get(Se.id);at&&!(Se.config.mode==="stream"&&Se.config.streamBehavior==="loop")&&(Se.frames[Te.frame]=at.capture())}Te.frame++,Te.frame>=Te.totalFrames&&(Te.frame=Te.playbackStart,Te.recorded=!0)}else{Te.playing||(Je=Te.frame);for(const Qe of e.systems){const Se=V.get(Qe.id),at=Te.playing?N:Te.frame,Pe=(ue=Qe.frames)==null?void 0:ue[at],Xt=Qe.config.mode==="stream"&&Qe.config.streamBehavior==="loop"&&!!Pe;if((Te.recorded||Xt)&&Se&&Pe){Se.apply(Pe);for(const Bt of Pe)Bt.active&&(Le(Qe,Se,Bt),be++)}else if(Se){const Bt=Te.frame===0?[]:Se.update(0);if(Te.frame===0&&Se.apply([]),Qe.visible!==!1)for(const si of Bt)si.active&&Le(Qe,Se,si);be+=Se.activeCount}}}N=Je,B==null||B.sync(e.spines,Je,je);for(const[,Qe]of V)Qe.drawTrailMeshDebug(e.settings.showSkinMesh);Ga(),Qr(),pt(),Zt(),Rs(),Hs(),Ui(),Ps(),ss(De),i.value&&(i.value.systems=e.systems.length,i.value.particles=be)}}return Kr(async()=>{const H=t.value;f=new Yb({width:H.clientWidth||800,height:H.clientHeight||600,backgroundAlpha:0,antialias:!0}),H.appendChild(f.view),we(),fs(()=>e.settings.backgroundImageData,z,{immediate:!0}),await me();const Y=X;for(const ee of e.systems){ee.config.texture=Y;const ne=Wr(ee.config);if(E)for(const ue of ne.trailResources)!ue.texture&&(ue.previewUrl==="/images/trail.png"||ue.previewUrl==="/trails/trail.png")&&(ue.texture=E);for(const ue of ne.imageResources)!ue.texture&&ue.textureName==="star"&&(ue.texture=Y)}i.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,L=0,N=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const ee of e.systems)ee.frames=[];e.recalcTotalFrames(),U=performance.now()/1e3,ta(),fs(()=>e.systems.map(ee=>JSON.stringify(ee.config,(ne,ue)=>ne==="texture"||ne==="trailTexture"||ne==="previewUrl"?void 0:ue)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const ee of e.systems)ee.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),HP(e)}),Gl(()=>{cancelAnimationFrame(O),B==null||B.destroy(),B=null,v++,g&&g.destroy(!0),g=null,m=null,f&&(f.destroy(!0,{children:!0}),f=null)}),(H,Y)=>(ie(),ae("div",Ak,[M("div",{ref_key:"holder",ref:t,class:Ze(["stage-holder",{grid:ke(e).settings.showGrid}]),tabindex:"0",onWheel:bt(xe,["prevent"]),onPointerdown:oe,onDblclick:bt(st,["prevent"])},null,34),M("div",Ek,[M("button",{class:"settings-btn",onClick:Ae,title:"系统设置"},"系统设置"),M("button",{class:"undo-btn",disabled:ke(Iu).undoCount===0,onClick:Y[0]||(Y[0]=(...ee)=>ke(Tf)&&ke(Tf)(...ee)),title:"撤回上一步 (Ctrl+Z)"},"↶",8,Ck),M("div",Ik,[M("button",{class:Ze(["tool-btn",{on:l.value===""}]),onClick:Y[1]||(Y[1]=ee=>u("")),title:"拖动画布 (Q)"},"✋",2),M("button",{class:Ze(["tool-btn",{on:l.value==="translate"}]),onClick:Y[2]||(Y[2]=ee=>u("translate")),title:"位移 (W)"},"✥",2),M("button",{class:Ze(["tool-btn",{on:l.value==="rotate"}]),onClick:Y[3]||(Y[3]=ee=>u("rotate")),title:"旋转 (E)"},"⟳",2),M("button",{class:Ze(["tool-btn",{on:l.value==="scale"}]),onClick:Y[4]||(Y[4]=ee=>u("scale")),title:"缩放 (R)"},"⤢",2)]),M("div",Rk,[M("button",{class:"tool-btn",onClick:zi,title:"放大"},"+"),M("button",{class:"tool-btn",onClick:dn,title:"缩小"},"-"),M("button",{class:"tool-btn",onClick:ce,title:"适配画布"},"⤢"),M("button",{class:Ze(["tool-btn",{on:ke(e).settings.showGrid}]),onClick:Rt,title:"切换网格"},"▦",2),M("button",{class:"tool-btn",onClick:de,title:"重置视图"},"⟳")]),M("div",{class:"background-menu",onClick:Y[10]||(Y[10]=bt(()=>{},["stop"]))},[M("button",{class:Ze(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:Ee},"背景图",2),r.value?(ie(),ae("div",Pk,[M("button",{class:"background-upload",onClick:Y[5]||(Y[5]=ee=>{var ne;return(ne=o.value)==null?void 0:ne.click()})},Xe(h.value?"更换图像":"上传图像"),1),M("button",{class:"background-clear",disabled:!h.value,onClick:Y[6]||(Y[6]=ee=>j())},"清除背景",8,kk),M("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:Z},null,544),M("div",{class:"background-file-name",title:h.value},Xe(h.value||"未上传图像"),9,Fk),M("div",Ok,[M("label",null,[Y[27]||(Y[27]=M("span",null,"X",-1)),ye(M("input",{"onUpdate:modelValue":Y[7]||(Y[7]=ee=>ke(e).settings.backgroundX=ee),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[ht,ke(e).settings.backgroundX,void 0,{number:!0}]])]),M("label",null,[Y[28]||(Y[28]=M("span",null,"Y",-1)),ye(M("input",{"onUpdate:modelValue":Y[8]||(Y[8]=ee=>ke(e).settings.backgroundY=ee),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[ht,ke(e).settings.backgroundY,void 0,{number:!0}]])])]),M("label",Bk,[Y[29]||(Y[29]=M("span",null,"透明度",-1)),ye(M("input",{"onUpdate:modelValue":Y[9]||(Y[9]=ee=>ke(e).settings.backgroundOpacity=ee),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[ht,ke(e).settings.backgroundOpacity,void 0,{number:!0}]]),M("b",null,Xe(Math.round(ke(e).settings.backgroundOpacity*100))+"%",1)])])):Ve("",!0)]),M("button",{class:Ze(["help-btn",{on:a.value}]),title:"查看使用说明",onClick:pe},"使用说明",2),M("span",Lk,Xe(Math.round(ke(e).editor.viewScale*100))+"%",1)]),n.value?(ie(),ae("div",Dk,[M("div",Nk,[Y[30]||(Y[30]=Qt("系统设置 ",-1)),M("button",{class:"sp-close",onClick:Y[11]||(Y[11]=ee=>n.value=!1)},"✕")]),Y[44]||(Y[44]=M("div",{class:"sp-section-title"},"界面布局",-1)),M("label",Uk,[Y[32]||(Y[32]=M("span",null,"参数面板位置",-1)),M("span",Xk,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[12]||(Y[12]=ee=>ke(e).settings.parameterPanelOnRight=ee),"aria-label":"参数面板显示在右侧"},null,512),[[ei,ke(e).settings.parameterPanelOnRight]]),Y[31]||(Y[31]=M("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),M("b",null,Xe(ke(e).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),Y[45]||(Y[45]=M("div",{class:"sp-divider"},null,-1)),Y[46]||(Y[46]=M("div",{class:"sp-section-title"},"操作历史",-1)),M("label",Vk,[Y[33]||(Y[33]=M("span",null,"最大撤回步数",-1)),ye(M("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":Y[13]||(Y[13]=ee=>ke(e).settings.undoLimit=ee),"aria-label":"最大撤回步数",onChange:G},null,544),[[ht,ke(e).settings.undoLimit,void 0,{number:!0}]])]),Y[47]||(Y[47]=M("div",{class:"sp-divider"},null,-1)),Y[48]||(Y[48]=M("div",{class:"sp-section-title"},"画布辅助显示",-1)),M("label",Yk,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[14]||(Y[14]=ee=>ke(e).settings.showEmitter=ee)},null,512),[[ei,ke(e).settings.showEmitter]]),Y[34]||(Y[34]=Qt("发射点",-1))]),M("label",$k,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[15]||(Y[15]=ee=>ke(e).settings.showBones=ee)},null,512),[[ei,ke(e).settings.showBones]]),Y[35]||(Y[35]=Qt("骨骼连线",-1))]),ke(e).settings.showBones?(ie(),ae(Ke,{key:0},[M("label",Gk,[Y[36]||(Y[36]=M("span",null,"骨骼点绘制大小",-1)),ye(M("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":Y[16]||(Y[16]=ee=>ke(e).settings.bonePointDrawSize=ee),"aria-label":"骨骼点绘制大小",onChange:d},null,544),[[ht,ke(e).settings.bonePointDrawSize,void 0,{number:!0}]])]),M("label",Hk,[Y[37]||(Y[37]=M("span",null,"坐标轴绘制大小",-1)),ye(M("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":Y[17]||(Y[17]=ee=>ke(e).settings.boneAxisDrawSize=ee),"aria-label":"坐标轴绘制大小",onChange:d},null,544),[[ht,ke(e).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):Ve("",!0),M("label",jk,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[18]||(Y[18]=ee=>ke(e).settings.showSkinMesh=ee)},null,512),[[ei,ke(e).settings.showSkinMesh]]),Y[38]||(Y[38]=Qt("蒙皮网格",-1))]),Y[49]||(Y[49]=M("div",{class:"sp-divider"},null,-1)),M("label",Wk,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[19]||(Y[19]=ee=>ke(e).settings.tickEnabled=ee)},null,512),[[ei,ke(e).settings.tickEnabled]]),Y[39]||(Y[39]=Qt("启用刻度",-1))]),ke(e).settings.tickEnabled?(ie(),ae(Ke,{key:1},[M("label",zk,[Y[40]||(Y[40]=M("span",null,"刻度文字大小",-1)),ye(M("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":Y[20]||(Y[20]=ee=>ke(e).settings.axisFontSize=ee)},null,512),[[ht,ke(e).settings.axisFontSize,void 0,{number:!0}]]),ye(M("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":Y[21]||(Y[21]=ee=>ke(e).settings.axisFontSize=ee),class:"sp-num"},null,512),[[ht,ke(e).settings.axisFontSize,void 0,{number:!0}]])]),M("label",qk,[Y[41]||(Y[41]=M("span",null,"刻度线粗细",-1)),ye(M("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":Y[22]||(Y[22]=ee=>ke(e).settings.tickWidth=ee)},null,512),[[ht,ke(e).settings.tickWidth,void 0,{number:!0}]]),ye(M("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":Y[23]||(Y[23]=ee=>ke(e).settings.tickWidth=ee),class:"sp-num"},null,512),[[ht,ke(e).settings.tickWidth,void 0,{number:!0}]])]),M("label",Kk,[Y[42]||(Y[42]=M("span",null,"坐标轴颜色",-1)),ye(M("input",{type:"color","onUpdate:modelValue":Y[24]||(Y[24]=ee=>ke(e).settings.axisColor=ee),class:"sp-colr"},null,512),[[ht,ke(e).settings.axisColor]]),M("span",Zk,Xe(ke(e).settings.axisColor),1)]),M("label",Jk,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Y[25]||(Y[25]=ee=>ke(e).settings.showAxisLabels=ee)},null,512),[[ei,ke(e).settings.showAxisLabels]]),Y[43]||(Y[43]=Qt("显示刻度数值",-1))])],64)):Ve("",!0),Y[50]||(Y[50]=M("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):Ve("",!0),Ue(Tk,{show:a.value,onClose:Y[26]||(Y[26]=ee=>a.value=!1)},null,8,["show"]),i.value?(ie(),ae("div",Qk,[Y[51]||(Y[51]=Qt(" 系统: ",-1)),M("b",eF,Xe(i.value.systems),1),Y[52]||(Y[52]=Qt(" · 粒子(骨骼): ",-1)),M("b",tF,Xe(i.value.particles),1),Y[53]||(Y[53]=Qt(" · 根骨骼: ",-1)),Y[54]||(Y[54]=M("b",null,"root",-1)),Y[55]||(Y[55]=M("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):Ve("",!0)]))}}),sF=Gs(iF,[["__scopeId","data-v-373478e7"]]),nF={class:"ns-label"},rF=["min","max","step","value","disabled"],aF=["min","max","step","value","disabled"],oF=$s({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=lt(String(t.modelValue));fs(()=>t.modelValue,h=>{n.value=String(h)});function r(h){const l=parseFloat(h.target.value);Number.isNaN(l)||i("update:modelValue",l)}function a(h){n.value=h.target.value;const l=parseFloat(n.value);Number.isNaN(l)||i("update:modelValue",l)}function o(){const h=parseFloat(n.value);Number.isNaN(h)&&(n.value=String(t.modelValue))}return(h,l)=>(ie(),ae("div",{class:Ze(["ns",{disabled:s.disabled}])},[M("span",nF,Xe(s.label),1),M("input",{type:"range",class:"ns-range",min:s.min,max:s.max,step:s.step,value:s.modelValue,disabled:s.disabled,onInput:r},null,40,rF),M("input",{type:"number",class:"ns-num",min:s.min,max:s.max,step:s.step,value:n.value,disabled:s.disabled,onInput:a,onBlur:o},null,40,aF)],2))}}),qe=Gs(oF,[["__scopeId","data-v-45669c72"]]),lF={class:"ce"},cF={class:"ce-editor"},hF={class:"ce-grid"},uF=["x1","x2","y2"],dF=["y1","x2","y2"],fF=["x","y","width","height"],mF=["d"],pF={key:0,class:"ce-handles"},gF=["x1","y1","x2","y2"],vF=["cx","cy","onPointerdown"],yF=["x1","y1","x2","y2"],xF=["cx","cy","onPointerdown"],bF=["cx","cy"],wF=["cx","cy","onPointerdown","onDblclick"],SF={class:"ce-nav"},MF={class:"ce-tip"},Mr=8,_F=$s({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=lt(null),r=lt(300),a=lt(110);let o=null;function h(){if(!n.value)return;const I=n.value.getBoundingClientRect();r.value=I.width,a.value=I.height}function l(I){return Mr+I*(r.value-Mr*2)}function c(I){return Mr+(1-I)*(a.value-Mr*2)}function u(){return[...t.modelValue].sort((I,k)=>I.x-k.x)}function d(I){i("update:modelValue",[...I].sort((k,B)=>k.x-B.x))}function f(){d(t.defaultValue.map(I=>({...I})))}const p=vt(()=>u());function m(I){const k=p.value[I],B=p.value[Math.max(0,I-1)];return{x:k.x-(k.x-B.x)/3,y:k.y-(k.y-B.y)/3}}function g(I){const k=p.value[I],B=p.value[Math.min(p.value.length-1,I+1)];return{x:k.x+(B.x-k.x)/3,y:k.y+(B.y-k.y)/3}}function v(I){const k=p.value[I],B=m(I);return{x:k.x+(k.inX??B.x-k.x),y:k.y+(k.inY??B.y-k.y)}}function b(I){const k=p.value[I],B=g(I);return{x:k.x+(k.outX??B.x-k.x),y:k.y+(k.outY??B.y-k.y)}}const y=vt(()=>{if(!p.value.length)return"";let I=`M ${l(p.value[0].x)} ${c(p.value[0].y)}`;for(let k=1;kMath.abs(U.x-k)>.02);D.push({x:k,y:B}),d(D)}let _={t:0,i:-1,x:0,y:0};function R(I,k){I.stopPropagation();const B=u().findIndex(N=>Math.abs(N.x-p.value[k].x)<1e-6&&Math.abs(N.y-p.value[k].y)<1e-6);if(B<0)return;const D=Date.now();if(D-_.t<300&&_.i===k&&Math.abs(I.clientX-_.x)<8&&Math.abs(I.clientY-_.y)<8){_={t:0,i:-1,x:0,y:0},F(k);return}_={t:D,i:k,x:I.clientX,y:I.clientY};const U=N=>{(Math.abs(N.clientX-I.clientX)>8||Math.abs(N.clientY-I.clientY)>8)&&(_={t:0,i:-1,x:0,y:0});const{x:O,y:X}=w(N.clientX,N.clientY),E=u();E[B]={x:O,y:X},d(E)},L=()=>{window.removeEventListener("pointermove",U),window.removeEventListener("pointerup",L)};window.addEventListener("pointermove",U),window.addEventListener("pointerup",L)}function P(I,k,B){I.stopPropagation();const D=L=>{const N=w(L.clientX,L.clientY),O=u(),X=O[k],E=B==="in"?O[Math.max(0,k-1)].x:X.x,V=B==="in"?X.x:O[Math.min(O.length-1,k+1)].x,q=Math.min(V,Math.max(E,N.x)),W=Math.round((q-X.x)*100)/100,J=Math.round((N.y-X.y)*100)/100;O[k]=B==="in"?{...X,inX:W,inY:J}:{...X,outX:W,outY:J},d(O)},U=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",U)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",U)}function F(I,k){k==null||k.stopPropagation();const B=u();B.length<=2||(A=Date.now(),d(B.filter((D,U)=>U!==I)))}return Kr(()=>{h(),o=new ResizeObserver(h),n.value&&o.observe(n.value)}),Gl(()=>{o==null||o.disconnect()}),(I,k)=>(ie(),ae("div",lF,[M("div",cF,[(ie(),ae("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:T},[M("g",hF,[(ie(),ae(Ke,null,ci([.25,.5,.75],B=>M("line",{key:"v"+B,x1:l(B),y1:"0",x2:l(B),y2:c(0)},null,8,uF)),64)),(ie(),ae(Ke,null,ci([.25,.5,.75],B=>M("line",{key:"h"+B,x1:"0",y1:c(B),x2:l(1),y2:c(B)},null,8,dF)),64))]),M("rect",{x:l(0),y:c(1),width:l(1)-l(0),height:c(0)-c(1),class:"ce-frame",fill:"none"},null,8,fF),M("path",{d:y.value,class:"ce-line",fill:"none"},null,8,mF),s.mode==="bezier"?(ie(),ae("g",pF,[(ie(!0),ae(Ke,null,ci(p.value,(B,D)=>(ie(),ae(Ke,{key:"handles-"+D},[D>0?(ie(),ae("line",{key:0,x1:l(B.x),y1:c(B.y),x2:l(v(D).x),y2:c(v(D).y)},null,8,gF)):Ve("",!0),D>0?(ie(),ae("circle",{key:1,cx:l(v(D).x),cy:c(v(D).y),r:"4",onPointerdown:U=>P(U,D,"in")},null,40,vF)):Ve("",!0),DP(U,D,"out")},null,40,xF)):Ve("",!0)],64))),128))])):Ve("",!0),(ie(!0),ae(Ke,null,ci(p.value,(B,D)=>(ie(),ae("g",{key:D},[M("circle",{cx:l(B.x),cy:c(B.y),r:"5",class:"ce-node"},null,8,bF),M("circle",{cx:l(B.x),cy:c(B.y),r:"9",class:"ce-hit",onPointerdown:U=>R(U,D),onDblclick:U=>F(D,U)},null,40,wF)]))),128))],544)),M("div",SF,[M("span",MF,Xe(s.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),M("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),xn=Gs(_F,[["__scopeId","data-v-3c8d1b94"]]),TF={class:"pac"},AF={class:"pac-head"},EF={class:"pac-label"},CF={key:0,class:"pac-modes"},IF=["onClick"],RF={class:"pac-range"},PF={class:"pac-curve"},kF={class:"pac-axis"},FF=$s({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(s){const e=s,t=vt(()=>{const i=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&i.push({label:"曲线",value:"curve"}),e.allowDirection&&i.push({label:"发射方向",value:"direction"}),i});return(i,n)=>(ie(),ae("div",TF,[M("div",AF,[M("span",EF,Xe(s.label),1),s.showModes?(ie(),ae("div",CF,[(ie(!0),ae(Ke,null,ci(t.value,r=>(ie(),ae("button",{key:r.value,class:Ze(["pac-mode",{on:s.mode===r.value}]),onClick:a=>i.$emit("update:mode",r.value)},Xe(r.label),11,IF))),128))])):Ve("",!0)]),s.mode==="fixed"||s.mode==="direction"?(ie(),Jt(qe,{key:0,label:s.mode==="direction"?"角度偏移":"数值",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>i.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):s.mode==="random"?(ie(),ae(Ke,{key:1},[Ue(qe,{label:"下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),Ue(qe,{label:"上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(ie(),ae(Ke,{key:2},[M("div",RF,[Ue(qe,{label:"范围下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),Ue(qe,{label:"范围上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),M("div",PF,[Ue(xn,{"model-value":s.curve,"default-value":s.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>i.$emit("update:curve",r))},null,8,["model-value","default-value"]),M("div",kF,[n[6]||(n[6]=M("span",null,"0",-1)),M("span",null,Xe(s.curveLabel),1),n[7]||(n[7]=M("span",null,"1",-1))])])],64))]))}}),jn=Gs(FF,[["__scopeId","data-v-7a931847"]]),OF={class:"gradient-editor"},BF=["title","onClick","onDblclick","onPointerdown"],LF={key:0,class:"gradient-controls"},DF=["value"],NF=["value"],UF={class:"gradient-position"},XF=["value"],VF=["disabled"],YF=$s({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=lt(null),r=lt(0),a=vt(()=>t.modelValue[r.value]||null),o=vt(()=>[...t.modelValue].sort((R,P)=>R.position-P.position)),h=vt(()=>{const R=o.value;return R.length?`linear-gradient(90deg, ${R.map(P=>`${P.color} ${l(P.position)*100}%`).join(", ")})`:"#ffffff"});fs(()=>t.modelValue.length,R=>{r.value>=R&&(r.value=Math.max(0,R-1))});function l(R){return Math.min(1,Math.max(0,Number(R)||0))}function c(){return t.modelValue.map(R=>({position:l(R.position),color:R.color}))}function u(R,P){const F=c();F[R]&&(F[R]={...F[R],...P},i("update:modelValue",F))}function d(R){u(r.value,{color:R.target.value})}function f(R){var I;const P=R.target,F=_(P.value,((I=a.value)==null?void 0:I.color)||"#ffffff");P.value=F,u(r.value,{color:F})}function p(R){const P=R.target;f(R),P.blur()}function m(R){const P=Number(R.target.value);Number.isFinite(P)&&u(r.value,{position:l(P/100)})}function g(R){const P=c();P.push({position:l(R),color:A(P,R)}),r.value=P.length-1,i("update:modelValue",P)}function v(R){if(!n.value)return;const P=n.value.getBoundingClientRect();g((R.clientX-P.left)/Math.max(1,P.width))}function b(){const R=o.value;let P=.5;if(R.length>1){let F=-1;for(let I=0;IF&&(F=k,P=(R[I].position+R[I+1].position)/2)}}g(P)}function y(R){if(t.modelValue.length<=2||R<0)return;const P=c().filter((F,I)=>I!==R);r.value=Math.min(R,P.length-1),i("update:modelValue",P)}function w(R,P){if(!n.value)return;r.value=P;const F=k=>{const B=n.value.getBoundingClientRect();u(P,{position:l((k.clientX-B.left)/Math.max(1,B.width))})},I=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",I),window.removeEventListener("pointercancel",I)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",I),window.addEventListener("pointercancel",I),R.preventDefault()}function A(R,P){const F=[...R].sort((I,k)=>I.position-k.position);if(!F.length)return"#ffffff";if(P<=F[0].position)return F[0].color;if(P>=F[F.length-1].position)return F[F.length-1].color;for(let I=0;IB.position)continue;const D=(P-k.position)/Math.max(1e-4,B.position-k.position);return T(k.color,B.color,D)}return F[F.length-1].color}function T(R,P,F){const I=U=>{const L=parseInt(U.replace("#","").padEnd(6,"0").slice(0,6),16);return[L>>16&255,L>>8&255,L&255]},k=I(R),B=I(P),D=U=>Math.round(k[U]+(B[U]-k[U])*F);return`#${[D(0),D(1),D(2)].map(U=>U.toString(16).padStart(2,"0")).join("")}`}function _(R,P){let F=R.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(I=>I+I).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:P}return(R,P)=>(ie(),ae("div",OF,[M("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:Li({background:h.value}),title:"双击色带添加色标",onDblclick:v},[(ie(!0),ae(Ke,null,ci(s.modelValue,(F,I)=>(ie(),ae("button",{key:I,type:"button",class:Ze(["gradient-stop",{selected:I===r.value}]),style:Li({left:`${l(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(l(F.position)*100)}% · ${F.color}`,onClick:bt(k=>r.value=I,["stop"]),onDblclick:bt(k=>y(I),["stop"]),onPointerdown:bt(k=>w(k,I),["stop"])},null,46,BF))),128))],36),a.value?(ie(),ae("div",LF,[M("input",{type:"color",class:"gradient-color",value:a.value.color,"aria-label":"色标颜色",onInput:d},null,40,DF),M("input",{type:"text",class:"gradient-hex-input",value:a.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:Ea(p,["enter"])},null,40,NF),M("label",UF,[M("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(l(a.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,XF),P[1]||(P[1]=M("span",null,"%",-1))]),M("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:b},"+"),M("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:s.modelValue.length<=2,onClick:P[0]||(P[0]=F=>y(r.value))},"×",8,VF)])):Ve("",!0),P[2]||(P[2]=M("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),Wv=Gs(YF,[["__scopeId","data-v-8816e4a4"]]),$F={class:"image-card"},GF={class:"imgrow"},HF=["title"],jF=["src","alt"],WF={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},zF={class:"img-fields"},qF={key:0,class:"row"},KF={class:"row"},ZF=["placeholder"],JF={class:"img-actions"},QF=["title"],e3=["disabled"],t3={class:"thumb-note"},i3={key:0,class:"row"},s3={class:"row"},n3={class:"row"},r3={class:"sequence-note"},a3={class:"resource-weight-row"},o3=["disabled","title"],l3={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},c3={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},h3=$s({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(s,{emit:e}){const t=s,i=e,n=vt(()=>{var l,c;if(t.resource.imageMode==="sequence"){const u=t.resource.sequenceFrames||[];if(!u.length)return"未选择序列帧";const d=((l=u[0])==null?void 0:l.name)||"第 1 帧",f=((c=u[u.length-1])==null?void 0:c.name)||d;return u.length===1?`1 帧 · ${d}`:`${u.length} 帧 · ${d} → ${f}`}const h=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return h.includes(".")?h:`${h}.png`}),r=vt(()=>{var h,l;return t.resource.imageMode==="sequence"?((l=(h=t.resource.sequenceFrames)==null?void 0:h[0])==null?void 0:l.previewUrl)||"":t.resource.previewUrl}),a=vt(()=>{var u,d;const h=t.resource.sequenceFrames||[];if(!h.length)return"未选择序列帧";const l=((u=h[0])==null?void 0:u.name)||"第一张图片",c=((d=h[h.length-1])==null?void 0:d.name)||"最后一张图片";return`已选择 ${h.length} 帧,按 ${l}-${c} 顺序播放`});function o(){t.supportsSequence&&t.resource.imageMode==="sequence"?i("pickSequence",t.resource.id):i("pick",t.resource.id)}return(h,l)=>(ie(),ae("div",$F,[M("div",GF,[M("button",{class:"img-thumb",title:s.supportsSequence&&s.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:o},[r.value?(ie(),ae("img",{key:0,src:r.value,alt:s.resource.textureName},null,8,jF)):(ie(),ae("svg",WF,[...l[10]||(l[10]=[M("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),M("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),M("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,HF),M("div",zF,[s.showFolder?(ie(),ae("label",qF,[l[11]||(l[11]=M("span",null,"子文件夹",-1)),ye(M("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>s.resource.textureFolder=c),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[ht,s.resource.textureFolder]])])):Ve("",!0),M("label",KF,[l[12]||(l[12]=M("span",null,"名称",-1)),ye(M("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>s.resource.textureName=c),type:"text",class:"inp",placeholder:s.namePlaceholder},null,8,ZF),[[ht,s.resource.textureName]])])]),M("div",JF,[M("button",{class:"mini-btn2",title:`恢复 ${s.defaultFile}`,onClick:l[2]||(l[2]=c=>h.$emit("reset",s.resource.id))},"⟳",8,QF),M("button",{class:"mini-btn2",title:"删除图片资源",disabled:s.resourceCount===1,onClick:l[3]||(l[3]=c=>h.$emit("remove",s.resource.id))},"🗑",8,e3)])]),M("div",t3,Xe(n.value),1),s.supportsSequence?(ie(),ae("label",i3,[l[14]||(l[14]=M("span",null,"图片模式",-1)),ye(M("select",{"onUpdate:modelValue":l[4]||(l[4]=c=>s.resource.imageMode=c),class:"inp"},[...l[13]||(l[13]=[M("option",{value:"fixed"},"固定",-1),M("option",{value:"sequence"},"序列帧",-1)])],512),[[Ht,s.resource.imageMode]])])):Ve("",!0),s.supportsSequence&&s.resource.imageMode==="sequence"?(ie(),ae(Ke,{key:1},[M("label",s3,[l[16]||(l[16]=M("span",null,"播放模式",-1)),ye(M("select",{"onUpdate:modelValue":l[5]||(l[5]=c=>s.resource.sequencePlayback=c),class:"inp"},[...l[15]||(l[15]=[M("option",{value:"once-hide"},"单次-尾帧消失",-1),M("option",{value:"once-hold"},"单次-尾帧固定",-1),M("option",{value:"loop-forward"},"正向循环",-1),M("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[Ht,s.resource.sequencePlayback]])]),M("label",n3,[l[17]||(l[17]=M("span",null,"播放帧率",-1)),ye(M("input",{"onUpdate:modelValue":l[6]||(l[6]=c=>s.resource.sequenceFps=c),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[ht,s.resource.sequenceFps,void 0,{number:!0}]])]),M("button",{class:"sequence-pick",onClick:l[7]||(l[7]=c=>h.$emit("pickSequence",s.resource.id))},"选择序列帧(多选)"),M("div",r3,Xe(a.value),1)],64)):Ve("",!0),M("div",a3,[Ue(qe,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":s.resource.weight,disabled:s.resource.locked||s.resourceCount===1,"onUpdate:modelValue":l[8]||(l[8]=c=>h.$emit("updateWeight",s.resource.id,c))},null,8,["model-value","disabled"]),M("button",{class:Ze(["weight-lock",{on:s.resource.locked}]),disabled:s.resourceCount===1,title:s.resource.locked?"解除占比锁定":"锁定当前占比",onClick:l[9]||(l[9]=c=>h.$emit("toggleLock",s.resource.id))},[s.resource.locked?(ie(),ae("svg",l3,[...l[18]||(l[18]=[M("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),M("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(ie(),ae("svg",c3,[...l[19]||(l[19]=[M("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),M("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,o3)]),XM(h.$slots,"default",{},void 0)]))}}),zv=Gs(h3,[["__scopeId","data-v-7a2d016a"]]),u3={class:"spine-editor"},d3={class:"field wide"},f3={class:"grid three"},m3={class:"field"},p3={class:"field"},g3={class:"field"},v3={class:"grid three"},y3={class:"field"},x3={class:"field"},b3={class:"field"},w3=["disabled"],S3={class:"asset-row"},M3=["title"],_3={class:"asset-row"},T3=["title"],A3={class:"asset-row"},E3=["title"],C3={class:"asset-actions"},I3=["disabled"],R3={class:"runtime-note"},P3={key:0},k3={key:0,class:"error"},F3={class:"section-box"},O3={key:0,class:"empty"},B3={key:1,class:"field wide"},L3=["value"],D3={class:"section-box"},N3={class:"tree-title-row"},U3=["disabled","title"],X3={key:0,class:"empty"},V3={key:1,class:"bone-search"},Y3={key:2,class:"empty"},$3={key:3,class:"bone-tree"},G3=["onClick","onKeydown"],H3=["title","onClick"],j3={key:1,class:"bone-leaf"},W3={class:"bone-name"},z3=$s({__name:"SpineObjectPanel",props:{spineObject:{}},setup(s){const e=s,t=Kl(),i=lt(null),n=lt(null),r=lt(null),a=lt(null),o=lt(new Set),h=lt(""),l=lt(null),c=lt(null),u=lt([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const d=vt(()=>{var N;return((N=l.value)==null?void 0:N.name)||e.spineObject.skeletonFileName}),f=vt(()=>{var N;return((N=c.value)==null?void 0:N.name)||e.spineObject.atlasFileName}),p=vt(()=>u.value.length?u.value.map(N=>N.name):e.spineObject.textureFileNames),m=vt(()=>p.value.length?`${p.value.length} 张:${p.value.join(", ")}`:"PNG / JPEG / WebP..."),g=vt(()=>new Set(e.spineObject.bones.map(N=>N.parent).filter(N=>!!N))),v=vt(()=>new Map(e.spineObject.bones.map(N=>[N.name,N]))),b=vt(()=>e.spineObject.bones.filter(N=>{var E;const O=h.value.trim().toLocaleLowerCase();if(O)return N.name.toLocaleLowerCase().includes(O);let X=N.parent;for(;X;){if(o.value.has(X))return!1;X=((E=v.value.get(X))==null?void 0:E.parent)||null}return!0})),y=vt(()=>g.value.size>0&&[...g.value].every(N=>o.value.has(N)));function w(N){const O=e.spineObject.selectedBone===N;for(const X of t.spines)X.selectedBone="";O||(e.spineObject.selectedBone=N)}function A(N){o.value.has(N)?o.value.delete(N):o.value.add(N)}function T(){o.value=y.value?new Set:new Set(g.value)}function _(N){var O;return((O=N.target.files)==null?void 0:O[0])||null}function R(N){l.value=_(N)}function P(N){c.value=_(N)}function F(N){u.value=Array.from(N.target.files||[])}function I(N){return N.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function k(N){const O=Array.from(N.target.files||[]);if(!O.length)return;const X=O.filter(K=>/\.(json|skel)$/i.test(K.name)),E=O.filter(K=>/\.atlas$/i.test(K.name)),V=O.filter(K=>/\.(png|jpe?g|webp|wepb)$/i.test(K.name)),q=E.map(K=>({atlas:K,skeleton:X.find(fe=>I(fe)===I(K))})).find(K=>K.skeleton),W=(q==null?void 0:q.skeleton)||X[0]||null,J=(q==null?void 0:q.atlas)||E[0]||null;if(l.value=W,c.value=J,u.value=V,!W||!J||!V.length){const K=[!W&&"JSON / SKEL",!J&&"Atlas",!V.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${K}`;return}await U()}function B(){t.recalcTotalFrames()}function D(){B(),t.timeline.frame=0}async function U(){var X;const N=l.value,O=c.value;if(!N||!O||!u.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const E=await xw(N,O,u.value);Au(e.spineObject.id,E),e.spineObject.skeletonFileName=N.name,e.spineObject.atlasFileName=O.name,e.spineObject.textureFileNames=u.value.map(V=>V.name),e.spineObject.dataVersion=E.dataVersion,e.spineObject.animations=E.animations,e.spineObject.bones=E.bones,e.spineObject.selectedBone="",h.value="",o.value=new Set,e.spineObject.selectedAnimation=((X=E.animations[0])==null?void 0:X.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",B(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await PP(N,O,u.value)}catch(V){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",V)}}catch(E){e.spineObject.status="error",e.spineObject.error=E instanceof Error?E.message:String(E)}}function L(){ql(e.spineObject.id),l.value=null,c.value=null,u.value=[],i.value&&(i.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),a.value&&(a.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.selectedBone="",h.value="",o.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",B()}return(N,O)=>(ie(),ae("div",u3,[O[30]||(O[30]=M("div",{class:"editor-title"},"Spine 属性",-1)),M("label",d3,[O[15]||(O[15]=M("span",null,"Spine 名称",-1)),ye(M("input",{"onUpdate:modelValue":O[0]||(O[0]=X=>s.spineObject.name=X)},null,512),[[ht,s.spineObject.name]])]),M("div",f3,[M("label",m3,[O[16]||(O[16]=M("span",null,"X 位置",-1)),ye(M("input",{"onUpdate:modelValue":O[1]||(O[1]=X=>s.spineObject.x=X),type:"number"},null,512),[[ht,s.spineObject.x,void 0,{number:!0}]])]),M("label",p3,[O[17]||(O[17]=M("span",null,"Y 位置",-1)),ye(M("input",{"onUpdate:modelValue":O[2]||(O[2]=X=>s.spineObject.y=X),type:"number"},null,512),[[ht,s.spineObject.y,void 0,{number:!0}]])]),M("label",g3,[O[18]||(O[18]=M("span",null,"旋转",-1)),ye(M("input",{"onUpdate:modelValue":O[3]||(O[3]=X=>s.spineObject.rotation=X),type:"number"},null,512),[[ht,s.spineObject.rotation,void 0,{number:!0}]])])]),M("div",v3,[M("label",y3,[O[19]||(O[19]=M("span",null,"Scale X",-1)),ye(M("input",{"onUpdate:modelValue":O[4]||(O[4]=X=>s.spineObject.scaleX=X),type:"number",step:"0.05"},null,512),[[ht,s.spineObject.scaleX,void 0,{number:!0}]])]),M("label",x3,[O[20]||(O[20]=M("span",null,"Scale Y",-1)),ye(M("input",{"onUpdate:modelValue":O[5]||(O[5]=X=>s.spineObject.scaleY=X),type:"number",step:"0.05"},null,512),[[ht,s.spineObject.scaleY,void 0,{number:!0}]])]),M("label",b3,[O[21]||(O[21]=M("span",null,"开始时间",-1)),ye(M("input",{"onUpdate:modelValue":O[6]||(O[6]=X=>s.spineObject.timeOffset=X),type:"number",min:"0",step:"0.033333",onChange:B},null,544),[[ht,s.spineObject.timeOffset,void 0,{number:!0}]])])]),O[31]||(O[31]=M("div",{class:"divider"},null,-1)),O[32]||(O[32]=M("div",{class:"section-title"},"Spine 资源",-1)),M("input",{ref_key:"skeletonInput",ref:i,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:R},null,544),M("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:P},null,544),M("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:F},null,544),M("input",{ref_key:"folderInput",ref:a,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:k},null,544),M("button",{class:"folder-select",disabled:s.spineObject.status==="loading",onClick:O[7]||(O[7]=X=>{var E;return(E=a.value)==null?void 0:E.click()})},"选择文件夹并加载",8,w3),O[33]||(O[33]=M("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),M("div",S3,[M("div",{class:"asset-name",title:d.value},Xe(d.value||"JSON / SKEL..."),9,M3),M("button",{onClick:O[8]||(O[8]=X=>{var E;return(E=i.value)==null?void 0:E.click()})},"选择")]),M("div",_3,[M("div",{class:"asset-name",title:f.value},Xe(f.value||"Atlas..."),9,T3),M("button",{onClick:O[9]||(O[9]=X=>{var E;return(E=n.value)==null?void 0:E.click()})},"选择")]),M("div",A3,[M("div",{class:"asset-name",title:p.value.join(", ")},Xe(m.value),9,E3),M("button",{onClick:O[10]||(O[10]=X=>{var E;return(E=r.value)==null?void 0:E.click()})},"选择(多选)")]),M("div",C3,[M("button",{class:"load",disabled:s.spineObject.status==="loading",onClick:U},Xe(s.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,I3),M("button",{class:"clear",onClick:L},"清除")]),M("div",R3,[O[22]||(O[22]=Qt(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),s.spineObject.dataVersion?(ie(),ae("span",P3," · 当前资源 "+Xe(s.spineObject.dataVersion),1)):Ve("",!0)]),s.spineObject.error?(ie(),ae("div",k3,Xe(s.spineObject.error),1)):Ve("",!0),M("div",F3,[O[25]||(O[25]=M("div",{class:"section-title"},"Spine 动画",-1)),s.spineObject.animations.length?(ie(),ae("label",B3,[O[24]||(O[24]=M("span",null,"时间轴播放动画",-1)),ye(M("select",{"onUpdate:modelValue":O[11]||(O[11]=X=>s.spineObject.selectedAnimation=X),onChange:D},[O[23]||(O[23]=M("option",{value:""},"无",-1)),(ie(!0),ae(Ke,null,ci(s.spineObject.animations,X=>(ie(),ae("option",{key:X.name,value:X.name},Xe(X.name)+"("+Xe(X.duration.toFixed(2))+"s) ",9,L3))),128))],544),[[Ht,s.spineObject.selectedAnimation]])])):(ie(),ae("div",O3,"无可用动画"))]),M("div",D3,[M("div",N3,[O[29]||(O[29]=M("div",{class:"section-title"},"层级树",-1)),M("button",{class:Ze(["selected-bone",{active:s.spineObject.selectedBone}]),disabled:!s.spineObject.selectedBone,title:s.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:O[12]||(O[12]=X=>s.spineObject.selectedBone="")},[s.spineObject.selectedBone?(ie(),ae(Ke,{key:0},[O[26]||(O[26]=Qt("清除选中骨骼:",-1)),M("strong",null,Xe(s.spineObject.selectedBone),1)],64)):(ie(),ae(Ke,{key:1},[O[27]||(O[27]=Qt("当前骨骼:",-1)),O[28]||(O[28]=M("strong",null,"未选择",-1))],64))],10,U3),s.spineObject.bones.length?(ie(),ae("button",{key:0,class:"tree-action",onClick:T},Xe(y.value?"全部展开":"全部折叠"),1)):Ve("",!0)]),s.spineObject.bones.length?(ie(),ae("div",V3,[ye(M("input",{"onUpdate:modelValue":O[13]||(O[13]=X=>h.value=X),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[ht,h.value,void 0,{trim:!0}]]),h.value?(ie(),ae("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:O[14]||(O[14]=X=>h.value="")},"✕")):Ve("",!0)])):(ie(),ae("div",X3,"未加载 Spine")),s.spineObject.bones.length&&!b.value.length?(ie(),ae("div",Y3,"未找到匹配的骨骼")):s.spineObject.bones.length?(ie(),ae("div",$3,[(ie(!0),ae(Ke,null,ci(b.value,X=>(ie(),ae("div",{key:X.name,class:Ze(["bone",{selected:s.spineObject.selectedBone===X.name}]),style:Li({paddingLeft:`${6+X.depth*16}px`}),role:"button",tabindex:"0",onClick:E=>w(X.name),onKeydown:Ea(bt(E=>w(X.name),["prevent"]),["enter"])},[g.value.has(X.name)?(ie(),ae("button",{key:0,class:"bone-toggle",title:o.value.has(X.name)?"展开子骨骼":"折叠子骨骼",onClick:bt(E=>A(X.name),["stop"])},Xe(o.value.has(X.name)?"▸":"▾"),9,H3)):(ie(),ae("span",j3,"•")),M("span",W3,Xe(X.name),1)],46,G3))),128))])):Ve("",!0)])]))}}),q3=Gs(z3,[["__scopeId","data-v-3af7b738"]]),xi=Da({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let Bc=0;function K3(s){return new Promise(e=>window.setTimeout(e,s))}function qv(s,e){const t=++Bc,i=performance.now();Object.assign(xi,{visible:!0,title:s,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(a,o)=>{t===Bc&&(xi.indeterminate=a==null,a!=null&&(xi.progress=Math.min(100,Math.max(0,a))),o&&(xi.detail=o))},r=async(a,o)=>{if(t!==Bc)return;xi.failed=a,xi.indeterminate=!1,xi.progress=a?xi.progress:100,xi.detail=o,await K3(Math.max(180,(a?850:450)-(performance.now()-i))),t===Bc&&(xi.visible=!1)};return{update:n,paint:()=>new Promise(a=>requestAnimationFrame(()=>a())),finish:(a="已完成")=>r(!1,a),fail:(a="操作失败")=>r(!0,a)}}async function Z3(s,e){if(!s.body)return e(null),s.text();const t=Number(s.headers.get("content-length")),i=Number.isFinite(t)&&t>0,n=s.body.getReader(),r=new TextDecoder;let a=0,o="";for(e(i?0:null);;){const{done:h,value:l}=await n.read();if(h)break;a+=l.byteLength,o+=r.decode(l,{stream:!0}),e(i?Math.min(1,a/t):null)}return o+=r.decode(),i&&e(1),o}const J3="3.8";function Ns(s,e,t){s[e]==null&&s[t]!=null&&(s[e]=s[t]),delete s[t]}function Rm(s){if(!s||typeof s!="object")return;if(Array.isArray(s)){for(const t of s)Rm(t);return}const e=s;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))Rm(t)}function Q3(s){for(const e of s.bones)Ns(e,"transform","inherit");for(const e of s.transform||[])Ns(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),Ns(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of s.path||[])Ns(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of s.skins)for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&Ns(i,"deform","timelines")}function eO(s){for(const e of Object.values(s.slots||{}))Ns(e,"color","rgba"),Ns(e,"twoColor","rgba2")}function tO(s){for(const e of Object.values(s.bones||{}))for(const t of e.rotate||[])Ns(t,"angle","value")}function iO(s){for(const e of Object.values(s.transform||{}))for(const t of e)Ns(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),Ns(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function sO(s){for(const e of Object.values(s.path||{})){for(const t of["position","spacing"])for(const i of e[t]||[])Ns(i,t,"value");for(const t of e.mix||[])Ns(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function nO(s){if(!s.attachments)return;const e=s.deform||(s.deform={});for(const[t,i]of Object.entries(s.attachments)){const n=e[t]||(e[t]={});for(const[r,a]of Object.entries(i)){const o=n[r]||(n[r]={});for(const[h,l]of Object.entries(a))l.deform&&(o[h]=l.deform)}}delete s.attachments}function rO(s){s.skeleton.spine=J3,Q3(s);for(const e of Object.values(s.animations))eO(e),tO(e),iO(e),sO(e),nO(e);return Rm(s.animations),s}function aO(s,e,t,i){const n=t.frame-e.frame,r=n<=0?0:(s.frame-e.frame)/n;let a=0;for(let o=0;o[...i].sort((a,o)=>a-o);let r=!0;for(;r;){r=!1;const a=n();for(let o=0;ou&&(u=f,c=d)}c>=0&&(i.add(c),r=!0)}}return n().map(a=>s[a])}function Kv(s,e,t,i,n){const r=t-e+1;if(r<2)return 0;const a=n?e:t,o=n?e+1:t-1,h=n?e+2:t-2,l=Math.abs(s[o].frame-s[a].frame);if(r>=3&&l>0&&Math.abs(Math.abs(s[h].frame-s[o].frame)-l)<1e-6){const u=s[a].values[i],d=s[o].values[i],f=s[h].values[i];return n?(-3*u+4*d-f)/(2*l):(3*u-4*d+f)/(2*l)}const c=s[o].frame-s[a].frame;return c?(s[o].values[i]-s[a].values[i])/c:0}function Zv(s,e,t){const i=s[t].frame-s[e].frame,n=[];for(let r=0;rd.values[r])),l=Math.max(...s.slice(e,t+1).map(d=>d.values[r])),c=a+Kv(s,e,t,r,!0)*i/3,u=o-Kv(s,e,t,r,!1)*i/3;n.push([Math.max(h,Math.min(l,c)),Math.max(h,Math.min(l,u))])}return{values:n}}function oO(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function lO(s,e,t,i,n){const r=t.frame-e.frame,a=r<=0?0:(s.frame-e.frame)/r;let o=0;for(let h=0;h[...i].sort((o,h)=>o-h);let r=!0;for(;r;){r=!1;const o=n();for(let h=0;hf&&(f=m,d=p)}d>=0&&(i.add(d),r=!0)}}const a=n();return{samples:a.map(o=>s[o]),controls:a.slice(0,-1).map((o,h)=>Zv(s,o,a[h+1]))}}function cO(s){if(!s.length)return[];const e=[s[0]];for(let t=1;t180;)i-=360;for(;i-e[t-1]<-180;)i+=360;e.push(i)}return e}function _i(s){if(!Number.isFinite(s))return 0;const e=Math.round(s*1e5)/1e5;return Object.is(e,-0)?0:e}function hO(s,e,t,i){const n=Math.max(2,Math.min(16,Math.round(Number(s.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(s.trailGridCols)||2))),a=Math.max(2,t.length),o=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),h=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),l=(Number(e.rotation)||0)*Math.PI/180,c=Math.cos(l),u=Math.sin(l),d=[],f=[],p=[],m=[],g=[];for(let y=0;y=0;y--)g.push({col:y,row:n-1});for(let y=n-2;y>=1;y--)g.push({col:0,row:y});const v=g.length;for(let y=1;y|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function kw(s,e){let t=s,i=2;for(;e.has(t);)t=`${s}_${i++}`;return e.add(t),t}function dO(s){return s.replace(/\.[^./\\]+$/,"")}function Fw(s,e){return dO([s,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function fO(s){var i,n;const e=Number(((i=s==null?void 0:s.orig)==null?void 0:i.width)??(s==null?void 0:s.width))||0,t=Number(((n=s==null?void 0:s.orig)==null?void 0:n.height)??(s==null?void 0:s.height))||0;return{width:e,height:t}}function Dc(s){return Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function iy(s,e){return[(s>>16&255)/255,(s>>8&255)/255,(s&255)/255,Math.max(0,Math.min(1,e))]}function yl(s,e){return _i(s/e)}function mO(s,e){const t=s.config,i=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+i:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+i:r=n+Xr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function Yh(s,e){return e?s.boneName:`${s.spawnId??"legacy"}_${s.boneName}`}function pO(s,e,t){const i=new Set;for(const n of s)for(const r of n)i.add(Yh(r,e));return[...i].sort().map((n,r)=>({key:n,name:kw(`_particle_${String(r).padStart(3,"0")}`,t),states:s.map(a=>a.find(o=>Yh(o,e)===n)||null)}))}function gO(s,e,t,i){const n=e*t/i,r=Math.min(s.states.length-1,Math.max(0,Math.floor(n))),a=Math.min(s.states.length-1,r+1),o=s.states[r],h=s.states[a];if(!o||!h||Yh(o,!0)!==Yh(h,!0)||o.spawnId!==h.spawnId)return o;const l=n-r;if(l<=1e-6)return o;const c=(d,f)=>(d??0)+((f??d??0)-(d??0))*l,u=o.trailState&&h.trailState&&o.trailState.resourceId===h.trailState.resourceId?{...o.trailState,width:c(o.trailState.width,h.trailState.width),alpha:c(o.trailState.alpha,h.trailState.alpha),bones:o.trailState.bones.map((d,f)=>{const p=h.trailState.bones[f]||d;return{...d,worldX:c(d.worldX??d.x,p.worldX??p.x),worldY:c(d.worldY??d.y,p.worldY??p.y),worldRotation:c(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:o.trailState;return{...o,worldX:c(o.worldX,h.worldX),worldY:c(o.worldY,h.worldY),worldRotation:c(o.worldRotation,h.worldRotation),worldScaleX:c(o.worldScaleX,h.worldScaleX),worldScaleY:c(o.worldScaleY,h.worldScaleY),alpha:c(o.alpha,h.alpha),trailState:u}}function sy(s,e){return!s||s==="跟随导出"?e.keyframeCurve:s==="贝塞尔"?"bezier":"linear"}function eo(s,e,t,i,n,r=new Set,a=n.keyframeCurve){if(!s.length)return[];const o=a==="bezier"&&n.spineVersion!=="3.8"?Pw(s,i,r):{samples:Rw(s,i,r),controls:[]},h=o.samples.map(l=>{const c={time:yl(l.frame,e)};return t.forEach((u,d)=>{c[u]=_i(l.values[d])}),c});for(let l=0;l0&&n&&e.add(t-1),i&&e.add(t))}return e}function yO(s){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),i&&e.add(t))}return e}function xO(s,e){var i;if(!s.shapeEnabled||!((i=s.shapeCurve)!=null&&i.length))return 1;const t=[...s.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{r!==n&&(i.push(t(r,a)),n=r)}),i}function wO(s,e,t){const i=s.imageMode==="sequence"?s.sequenceFrames[e]:void 0,n=(i==null?void 0:i.name)||s.textureName||`image_${s.id}`,r=(i==null?void 0:i.texture)||s.texture,a=fO(r);(!a.width||!a.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const o=a.width||1,h=a.height||1;return{path:Fw(s.textureFolder,n),x:_i((.5-s.anchorX)*o),y:_i((s.anchorY-.5)*h),width:_i(o),height:_i(h)}}function SO(s,e,t,i,n=i.keyframeCurve){if(!s.length)return[];const r=new Set;for(let c=1;c({frame:u,values:c})),o=1/255,h=n==="bezier"&&i.spineVersion!=="3.8"?Pw(a,[o,o,o,.01],r):{samples:Rw(a,[o,o,o,.01],r),controls:[]},l=h.samples.map(c=>({time:yl(c.frame,t),color:`${Dc(c.values[0])}${Dc(c.values[1])}${Dc(c.values[2])}${Dc(c.values[3])}`}));if(h.controls.length)for(let c=0;c({time:yl(d,n),name:u??null}));h.length&&(o.attachment=h);const l=SO(i,t,n,r,a);l.length&&(o.rgba=l)}function ry(s){var p;const e=s.settings,t=Math.max(1,Number(s.timeline.fps)||30),i=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?i:t,r=[],a=s.systems.filter(m=>m.visible!==!1),o={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(o.skeleton.fps=i);const h=o.skins[0].attachments,l=new Set(["root"]),c=[...new Set([...s.timeline.animations.length?s.timeline.animations:["animation"],...a.map(m=>m.animation||"animation")])],u=new Map;for(const m of a){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,mO(m,t)),v=(m.frames||[]).slice(0,g);v.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const b=kw(uO(m.config.name,`system_${m.id}`),l);o.bones.push({name:b,parent:"root"});const y=pO(v,e.bonePool,l),w=Math.max(0,(g-1)/t),A=Math.max(1,Math.ceil(w*n)+1),T=u.get(m.animation)||[];T.push({system:m,tracks:y,targetFrames:A}),u.set(m.animation,T);for(const _ of y){o.bones.push({name:_.name,parent:b});const R=new Set(m.config.imageResources.map(k=>k.blend));for(const k of R){const B=`${_.name}_image_${k}`;o.slots.push({name:B,bone:_.name,color:"ffffff00",blend:Jv[k]});const D=h[B]||(h[B]={});for(const U of m.config.imageResources.filter(L=>L.blend===k)){const L=U.imageMode==="sequence"?Math.max(1,U.sequenceFrames.length):1;for(let N=0;N{var X;return((X=O==null?void 0:O.trailState)==null?void 0:X.resourceId)===k.id}))continue;const B=Math.max(2,Math.min(16,Math.round(k.boneCount||3))),D=[];for(let O=0;Oo.bones.findIndex(X=>X.name===O)),N=Fw("",k.textureName||`trail_${k.id}`);(h[U]||(h[U]={}))[`trail_${k.id}`]=hO(m.config,k,L,N),k.texture||r.push({code:"missing-image",message:`拖尾图片“${k.textureName||k.id}”缺失,已保留路径。`})}const P=`${_.name}_image_`,F=`${_.name}_trail_`,I=o.slots.filter(k=>String(k.name).startsWith(P)||String(k.name).startsWith(F));I.length&&(o.slots=o.slots.filter(k=>!I.includes(k)),o.slots.push(...I.filter(k=>String(k.name).startsWith(F)),...I.filter(k=>String(k.name).startsWith(P))))}}for(const m of c){const g=u.get(m)||[],v={bones:{},slots:{}};let b=!1;for(const{system:y,tracks:w,targetFrames:A}of g)for(const T of w){const _=Array.from({length:A},(E,V)=>gO(T,V,t,n)),R=_.map(E=>!!(E!=null&&E.active)),P=[],F=[],I=[];_.forEach((E,V)=>{E!=null&&E.active&&(P.push({frame:V,values:[E.worldX??E.x,E.worldY??E.y]}),F.push(E.worldRotation??E.rotation),I.push({frame:V,values:[E.worldScaleX??E.scaleX,E.worldScaleY??E.scaleY]}))});const k=cO(F),B=P.map((E,V)=>({frame:E.frame,values:[k[V]??0]})),D=vO(_),U={},L=eo(P,n,["x","y"],[Qv,Qv],e,D),N=eo(B,n,["value"],[ty],e,D),O=eo(I,n,["x","y"],[Lc,Lc],e,D);L.length&&(U.translate=L),N.length&&(U.rotate=N),O.length&&(U.scale=O),Object.keys(U).length&&(v.bones[T.name]=U,b=!0);const X=new Set(y.config.imageResources.map(E=>E.blend));for(const E of X){const V=[],q=[];let W=16777215;for(let me=0;meAe.id===we.resourceId):void 0,pe=!!we&&R[me]&&we.imageVisible!==!1&&(Ee==null?void 0:Ee.blend)===E;we&&(Ee==null?void 0:Ee.blend)===E&&(W=we.colorHex),V.push(pe?`image_${Ee.id}_${we.imageFrameIndex??0}`:null),q.push(iy(W,pe?we.alpha:0))}const K=y.config.imageResources.filter(me=>me.blend===E).filter(me=>me.independentAlpha==="curve").map(me=>sy(me.alphaCurveMode,e)),fe=K.length?K.includes("bezier")?"bezier":"linear":sy(y.config.alphaMode==="curve"?y.config.curveMode:void 0,e);ny(v,`${T.name}_image_${E}`,V,q,n,e,fe),V.some(Boolean)&&(b=!0)}if(y.config.trail)for(const E of y.config.trailResources){const V=Math.max(2,Math.min(16,Math.round(E.boneCount||3))),q=_.map(Ae=>{var G;return((G=Ae==null?void 0:Ae.trailState)==null?void 0:G.resourceId)===E.id?Ae.trailState:void 0}),W=q.find(Ae=>!!Ae);if(!W)continue;const J=yO(q),K=E.widthSizeMode==="random"?Math.max(1,Number(E.widthMin)||0,Number(E.widthMax)||0):Math.max(.001,Number(E.width)||100);let fe=W;const me=q.map(Ae=>(Ae&&(fe=Ae),fe));for(let Ae=0;Ae{const Be=Oe==null?void 0:Oe.bones[Math.min(Oe.bones.length-1,Ae)];if(!Be)return;const st={x:Be.worldX??Be.x,y:Be.worldY??Be.y,rotation:Be.worldRotation??-Be.rotation};G.push({frame:Fe,values:[st.x,st.y]}),Z.push({frame:Fe,values:[st.rotation]}),z.push({frame:Fe,values:[1,Math.max(0,Oe.width/K)*te]})});const he=`${T.name}_trail_${E.id}_${Ae}`,xe={},oe=eo(G,n,["x","y"],[ey,ey],e,j),ge=eo(Z,n,["value"],[ty],e,j),le=eo(z,n,["x","y"],[Lc,Lc],e,j);oe.length&&(xe.translate=oe),ge.length&&(xe.rotate=ge),le.length&&(xe.scale=le),Object.keys(xe).length&&(v.bones[he]=xe)}const we=q.map(()=>`trail_${E.id}`);let Ee=W.colorHex;const pe=q.map(Ae=>(Ae&&(Ee=Ae.colorHex),iy(Ee,Ae?Ae.alpha:0)));ny(v,`${T.name}_trail_${E.id}`,we,pe,n,e),b=!0}}(b||!e.excludeEmptyAnimations)&&(o.animations[m]=v)}!Object.keys(o.animations).length&&!e.excludeEmptyAnimations&&(o.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?rO(o):o,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:a.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function MO(s,e){const t=new Blob([s.text],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");n.href=i,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}class q6{constructor(){x(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class _O{constructor(){x(this,"entries",{});x(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new _s){return t.setFromString(e)}};x(_s,"WHITE",new _s(1,1,1,1)),x(_s,"RED",new _s(1,0,0,1)),x(_s,"GREEN",new _s(0,1,0,1)),x(_s,"BLUE",new _s(0,0,1,1)),x(_s,"MAGENTA",new _s(1,0,1,1));let wt=_s;const fi=class fi{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*fi.degRad)}static sinDeg(e){return Math.sin(e*fi.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*fi.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return fi.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){const n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};x(fi,"epsilon",1e-5),x(fi,"epsilon2",fi.epsilon*fi.epsilon),x(fi,"PI",3.1415927),x(fi,"PI2",fi.PI*2),x(fi,"invPI2",1/fi.PI2),x(fi,"radiansToDegrees",180/fi.PI),x(fi,"radDeg",fi.radiansToDegrees),x(fi,"degreesToRadians",fi.PI/180),x(fi,"degRad",fi.degreesToRadians);let Ye=fi;const Os=class Os{apply(e,t,i){return t===void 0||i===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(i)}};x(Os,"linear",new class extends Os{applyInternal(e){return e}}),x(Os,"smooth",new class extends Os{applyInternal(e){return e*e*(3-2*e)}}),x(Os,"slowFast",new class extends Os{applyInternal(e){return e*e}}),x(Os,"fastSlow",new class extends Os{applyInternal(e){return(e-1)*(e-1)*-1+1}}),x(Os,"circle",new class extends Os{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let To=Os;class TO extends To{constructor(t){super();x(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class K6 extends TO{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const kr=class kr{static arrayCopy(e,t,i,n,r){for(let a=t,o=n;a=t?e:kr.setArraySize(e,t,i)}static newArray(e,t){const i=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class Q6{constructor(e=32){x(this,"values");x(this,"addedValues",0);x(this,"lastValue",0);x(this,"mean",0);x(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{c.width=parseInt(i[1]),c.height=parseInt(i[2])},n.format=()=>{},n.filter=c=>{c.minFilter=ct.enumValue(Io,i[1]),c.magFilter=ct.enumValue(Io,i[2])},n.repeat=c=>{i[1].indexOf("x")!==-1&&(c.uWrap=Ro.Repeat),i[1].indexOf("y")!==-1&&(c.vWrap=Ro.Repeat)},n.pma=c=>{c.pma=i[1]==="true"};var r={};r.xy=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2])},r.size=c=>{c.width=parseInt(i[1]),c.height=parseInt(i[2])},r.bounds=c=>{c.x=parseInt(i[1]),c.y=parseInt(i[2]),c.width=parseInt(i[3]),c.height=parseInt(i[4])},r.offset=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2])},r.orig=c=>{c.originalWidth=parseInt(i[1]),c.originalHeight=parseInt(i[2])},r.offsets=c=>{c.offsetX=parseInt(i[1]),c.offsetY=parseInt(i[2]),c.originalWidth=parseInt(i[3]),c.originalHeight=parseInt(i[4])},r.rotate=c=>{const u=i[1];u==="true"?c.degrees=90:u!=="false"&&(c.degrees=parseInt(u))},r.index=c=>{c.index=parseInt(i[1])};let a=t.readLine();for(;a&&a.trim().length===0;)a=t.readLine();for(;!(!a||a.trim().length===0||t.readEntry(i,a)===0);)a=t.readLine();let o=null,h=null,l=null;for(;a!==null;)if(a.trim().length===0)o=null,a=t.readLine();else if(o){const c=new Bw(o,a);for(;;){const u=t.readEntry(i,a=t.readLine());if(u===0)break;const d=r[i[0]];if(d)d(c);else{h||(h=[]),l||(l=[]),h.push(i[0]);const f=[];for(let p=0;p0&&l&&l.length>0&&(c.names=h,c.values=l,h=null,l=null),c.u=c.x/o.width,c.v=c.y/o.height,c.degrees===90?(c.u2=(c.x+c.height)/o.width,c.v2=(c.y+c.width)/o.height):(c.u2=(c.x+c.width)/o.width,c.v2=(c.y+c.height)/o.height),this.regions.push(c)}else{for(o=new IO(a.trim());t.readEntry(i,a=t.readLine())!==0;){const c=n[i[0]];c&&c(o)}this.pages.push(o)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const i=t.indexOf(":");if(i===-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){const a=t.indexOf(",",r);if(a===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,a-r).trim(),r=a+1,n===4)return 4}}}class IO{constructor(e){x(this,"name");x(this,"minFilter",Io.Nearest);x(this,"magFilter",Io.Nearest);x(this,"uWrap",Ro.ClampToEdge);x(this,"vWrap",Ro.ClampToEdge);x(this,"texture",null);x(this,"width",0);x(this,"height",0);x(this,"pma",!1);x(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class Bw extends Ow{constructor(t,i){super();x(this,"page");x(this,"name");x(this,"x",0);x(this,"y",0);x(this,"offsetX",0);x(this,"offsetY",0);x(this,"originalWidth",0);x(this,"originalHeight",0);x(this,"index",0);x(this,"degrees",0);x(this,"names",null);x(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}}const qh=class qh{constructor(e){x(this,"name");x(this,"timelineAttachment");x(this,"timelineSlots",qh.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,i){let n=e[t];if(n.bone.isActive()){const r=(i?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,a=this.timelineSlots.length;r>1)*h;const l=i.appliedPose.deform;let c=this.vertices;const u=this.bones;if(!u){l.length>0&&(c=l);const m=i.bone.appliedPose,g=m.worldX,v=m.worldY,b=m.a,y=m.b,w=m.c,A=m.d;for(let T=n,_=o;_=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let i=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return ho._nextID++}};x(ho,"_nextID",0);let ko=ho;var Gi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(Gi||(Gi={}));const Lw=[Gi.hold,Gi.once,Gi.loop,Gi.pingpong,Gi.onceReverse,Gi.loopReverse,Gi.pingpongReverse];class Fp{constructor(e,t,i){x(this,"name");x(this,"timelines",[]);x(this,"timelineIds");x(this,"bones");x(this,"color",new wt(1,1,1,1));x(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=i,this.timelineIds=new _O,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const i=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-i;return n-i}};function RO(s){return typeof s=="object"&&s!==null&&typeof s.slotIndex=="number"}class Va extends ii{constructor(t,i,...n){super(t,...n);x(this,"curves");this.curves=ct.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const i=this.getFrameCount()+t*18;if(this.curves.length>i){const n=ct.newFloatArray(i);ct.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,a,o,h,l,c,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[i]=2+p);const m=(r-o*2+l)*.03,g=(a-h*2+c)*.03,v=((o-l)*3-r+u)*.006,b=((h-c)*3-a+d)*.006;let y=m*2+v,w=g*2+b,A=(o-r)*.3+m+v*.16666667,T=(h-a)*.3+g+b*.16666667,_=r+A,R=a+T;for(let P=p+18;pt){const c=this.frames[i],u=this.frames[i+n];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}const o=r+18;for(r+=2;r=t){const c=a[r-2],u=a[r-1];return u+(t-c)/(a[r]-c)*(a[r+1]-u)}i+=this.getFrameEntries();const h=a[o-2],l=a[o-1];return l+(t-h)/(this.frames[i]-h)*(this.frames[i+n]-l)}}class ar extends Va{constructor(e,t,i){super(e,t,i)}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){const t=this.frames;let i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}const n=this.curves[i>>1];switch(n){case 0:{const r=t[i],a=t[i+1];return a+(e-r)/(t[i+2]-r)*(t[i+2+1]-a)}case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r,a){if(e>2];switch(f){case 0:{const p=u[d];h=u[d+1],l=u[d+2],c=u[d+3];const m=(i-p)/(u[d+4]-p);h+=(u[d+4+1]-h)*m,l+=(u[d+4+2]-l)*m,c+=(u[d+4+3]-c)*m;break}case 1:h=u[d+1],l=u[d+2],c=u[d+3];break;default:h=this.getBezierValue(i,d,1,f-2),l=this.getBezierValue(i,d,2,f+18-2),c=this.getBezierValue(i,d,3,f+36-2)}if(n!==1)if(r===it.setup){const p=e.data.setupPose.color;h=p.r+(h-p.r)*n,l=p.g+(l-p.g)*n,c=p.b+(c-p.b)*n}else h=o.r+(h-o.r)*n,l=o.g+(l-o.g)*n,c=o.b+(c-o.b)*n;o.r=h<0?0:h>1?1:h,o.g=l<0?0:l>1?1:l,o.b=c<0?0:c>1?1:c}}class qw extends ar{constructor(t,i,n){super(t,i,`${xt.alpha}|${n}`);x(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,a,o,h,l,c){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(c?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class Kw extends Ru{constructor(e,t,i){super(e,t,i,`${xt.rgb}|${i}`,`${xt.alpha}|${i}`,`${xt.rgb2}|${i}`)}getFrameEntries(){return 8}setFrame(e,t,i,n,r,a,o,h,l){e<<=3,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=a,this.frames[e+5]=o,this.frames[e+6]=h,this.frames[e+7]=l}apply1(e,t,i,n,r,a){const o=t.color,h=t.darkColor;let l=0,c=0,u=0;const d=this.frames;if(i>3];switch(b){case 0:{const y=d[v];f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],c=d[v+6],u=d[v+7];const w=(i-y)/(d[v+8]-y);f+=(d[v+8+1]-f)*w,p+=(d[v+8+2]-p)*w,m+=(d[v+8+3]-m)*w,g+=(d[v+8+4]-g)*w,l+=(d[v+8+5]-l)*w,c+=(d[v+8+6]-c)*w,u+=(d[v+8+7]-u)*w;break}case 1:f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],c=d[v+6],u=d[v+7];break;default:f=this.getBezierValue(i,v,1,b-2),p=this.getBezierValue(i,v,2,b+18-2),m=this.getBezierValue(i,v,3,b+36-2),g=this.getBezierValue(i,v,4,b+54-2),l=this.getBezierValue(i,v,5,b+72-2),c=this.getBezierValue(i,v,6,b+90-2),u=this.getBezierValue(i,v,7,b+108-2)}if(n===1)o.set(f,p,m,g);else if(r===it.setup){const y=e.data.setupPose;let w=y.color;o.set(w.r+(f-w.r)*n,w.g+(p-w.g)*n,w.b+(m-w.b)*n,w.a+(g-w.a)*n),w=y.darkColor,l=w.r+(l-w.r)*n,c=w.g+(c-w.g)*n,u=w.b+(u-w.b)*n}else o.add((f-o.r)*n,(p-o.g)*n,(m-o.b)*n,(g-o.a)*n),l=h.r+(l-h.r)*n,c=h.g+(c-h.g)*n,u=h.b+(u-h.b)*n;h.r=l<0?0:l>1?1:l,h.g=c<0?0:c>1?1:c,h.b=u<0?0:u>1?1:u}}class Zw extends Ru{constructor(e,t,i){super(e,t,i,`${xt.rgb}|${i}`,`${xt.rgb2}|${i}`)}getFrameEntries(){return 7}setFrame(e,t,i,n,r,a,o,h){e*=7,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=a,this.frames[e+5]=o,this.frames[e+6]=h}apply1(e,t,i,n,r,a){const o=t.color,h=t.darkColor;let l=0,c=0,u=0,d=0,f=0,p=0;const m=this.frames;if(i1?1:l,o.g=c<0?0:c>1?1:c,o.b=u<0?0:u>1?1:u,h.r=d<0?0:d>1?1:d,h.g=f<0?0:f>1?1:f,h.b=p<0?0:p>1?1:p}}class xl extends ii{constructor(t,i){super(t,`${xt.attachment}|${i}`);x(this,"slotIndex",0);x(this,"attachmentNames");this.slotIndex=i,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.attachmentNames[t]=n}apply(t,i,n,r,a,o,h,l,c){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=c?u.appliedPose:u.pose;l||nt){const l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}const a=r+18;for(r+=2;r=t){const l=n[r-2],c=n[r-1];return c+(t-l)/(n[r]-l)*(n[r+1]-c)}const o=n[a-2],h=n[a-1];return h+(1-h)*(t-o)/(this.frames[i+this.getFrameEntries()]-o)}apply(t,i,n,r,a,o,h,l,c){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,c))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const b=ii.search(f,n);g=this.getCurvePercent(n,b),p=this.vertices[b],m=this.vertices[b+1]}const v=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],c,p,m,g,v,a,o,h);for(const b of d)this.applyToSlot(u[b],c,p,m,g,v,a,o,h)}applyBeforeFirst(t,i,n,r){if(!t.bone.active)return;const a=i?t.appliedPose:t.pose;if(a.attachment==null||a.attachment.timelineAttachment!==this.attachment)return;const o=a.deform;switch(o.length===0&&(r=it.setup),r){case it.setup:o.length=0;break;case it.first:{if(n===1){o.length=0;return}const h=this.vertices[0].length;o.length=h;const l=o,c=a.attachment;if(c.bones===null){const u=c.vertices;for(let d=0;d>4,c=h.attachment.sequence.regions.length;const u=Lw[a&15];if(u!==Gi.hold)switch(l+=(n-r)/o+1e-5|0,u){case Gi.once:l=Math.min(c-1,l);break;case Gi.loop:l%=c;break;case Gi.pingpong:{const d=(c<<1)-2;l=d===0?0:l%d,l>=c&&(l=d-l);break}case Gi.onceReverse:l=Math.max(c-1-l,0);break;case Gi.loopReverse:l=c-1-l%c;break;case Gi.pingpongReverse:{const d=(c<<1)-2;l=d===0?0:(l+c-1)%d,l>=c&&(l=d-l)}}h.sequenceIndex=l}};x(Bs,"ENTRIES",3),x(Bs,"MODE",1),x(Bs,"DELAY",2);let Hh=Bs;const Zh=class Zh extends ii{constructor(t){super(t,...Zh.propertyIds);x(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i.time,this.events[t]=i}apply(t,i,n,r,a,o,h,l,c){if(!r)return;const u=this.frames,d=this.frames.length;if(i>n)this.apply(null,i,Number.MAX_VALUE,r,0,o,!1,!1,!1),i=-1;else if(i>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};x(Zh,"propertyIds",[`${xt.event}`]);let Ul=Zh;const uo=class uo extends ii{constructor(t){super(t,...uo.propertyIds);x(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,a,o,h,l,c){const u=c?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(l||n>2];switch(b){case 0:{const w=f[v];p=f[v+1],m=f[v+2],g=f[v+3];const A=(n-w)/(f[v+4]-w);p+=(f[v+4+1]-p)*A,m+=(f[v+4+2]-m)*A,g+=(f[v+4+3]-g)*A;break}case 1:p=f[v+1],m=f[v+2],g=f[v+3];break;default:p=this.getBezierValue(n,v,1,b-2),m=this.getBezierValue(n,v,2,b+18-2),g=this.getBezierValue(n,v,3,b+36-2)}const y=o===it.setup?u.data.setupPose:d;h?(d.mixRotate=y.mixRotate+p*a,d.mixX=y.mixX+m*a,d.mixY=y.mixY+g*a):(d.mixRotate=y.mixRotate+(p-y.mixRotate)*a,d.mixX=y.mixX+(m-y.mixX)*a,d.mixY=y.mixY+(g-y.mixY)*a)}}class Jr extends Jl{constructor(e,t,i,n){super(e,t,i,n)}apply(e,t,i,n,r,a,o,h,l){if(o&&!this.additive&&(o=!1),this.constraintIndex===-1){const c=i>=this.frames[0]?this.getCurveValue(i):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=l?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(i,r,a,o,this.get(f),this.get(d.data.setupPose),c))}}else{const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;this.set(u,this.getAbsoluteValue(i,r,a,o,this.get(u),this.get(c.data.setupPose)))}}}}class nS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class rS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class aS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class oS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class lS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class cS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class hS extends Jr{constructor(e,t,i){super(e,t,i,xt.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Jh=class Jh extends ii{constructor(t,i){super(t,...Jh.propertyIds);x(this,"constraintIndex");this.constraintIndex=i,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,a,o,h,l,c){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],a,o,!1,!1,!1),i=-1;else if(i>=d[d.length-1])return;if(!(n=d[ii.search(d,i)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};x(Jh,"propertyIds",[xt.physicsConstraintReset.toString()]);let jh=Jh;class uS extends Jl{constructor(e,t,i){super(e,t,i,xt.sliderTime)}apply(e,t,i,n,r,a,o,h,l){const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;u.time=this.getAbsoluteValue(i,r,a,o,u.time,c.data.setupPose.time)}}}class dS extends Jl{constructor(e,t,i){super(e,t,i,xt.sliderMix),this.additive=!0}apply(e,t,i,n,r,a,o,h,l){const c=e.constraints[this.constraintIndex];if(c.active){const u=l?c.appliedPose:c.pose;u.mix=this.getAbsoluteValue(i,r,a,o,u.mix,c.data.setupPose.mix)}}}const Sl=class Sl{constructor(e){x(this,"data");x(this,"tracks",[]);x(this,"timeScale",1);x(this,"unkeyedState",0);x(this,"events",[]);x(this,"listeners",[]);x(this,"queue",new OO(this));x(this,"propertyIds",new Map);x(this,"animationsChanged",!1);x(this,"trackEntryPool",new AO(()=>new FO));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=a,r.delay>0)continue;a=-r.delay,r.delay=0}let o=r.next;if(o){const h=r.trackLast-o.delay;if(h>=0){for(o.delay=0,o.trackTime+=r.timeScale===0?0:(h/r.timeScale+e)*o.timeScale,r.trackTime+=a,this.setTrack(i,o,!0);o.mixingFrom;)o.mixTime+=e,o=o.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let h=r.mixingFrom;for(r.mixingFrom=null,h&&(h.mixingTo=null);h;)this.queue.end(h),h=h.mixingFrom}r.trackTime+=a}this.queue.drain()}updateMixingFrom(e,t){const i=e.mixingFrom;if(!i)return!0;const n=this.updateMixingFrom(i,t);if(i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(i.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),i.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(i)}return n}return i.trackTime+=t*i.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,i=this.tracks;let n=!1;for(let o=0,h=i.length;o0)continue;n=!0;let c=l.alpha;l.mixingFrom?c*=this.applyMixingFrom(l,e):l.trackTime>=l.trackEnd&&!l.next&&(c=0);let u=l.animationLast,d=l.getAnimationTime(),f=d,p=t;l.reverse&&(f=l.animation.duration-f,p=null);const m=l.animation.timelines,g=m.length;if(o===0&&c===1)for(let v=0;v=l.alphaAttachmentThreshold,y=l.additive,w=y||l.shortestRotation,A=!w&&l.timelinesRotation.length!==g<<1;A&&(l.timelinesRotation.length=g<<1);for(let T=0;T0?h/o:a,c=i.animation.timelines,u=c.length,d=i.timelineMode,f=i.timelineHoldMix,p=r=i.alphaAttachmentThreshold);else{const B=!m||!(P instanceof Gr)||I===it.current;P.apply(t,w,T,_,k,I,g,B,!1)}}return i.reverse&&r0&&this.queueEvents(i,A),this.events.length=0,i.nextAnimationLast=A,i.nextTrackLast=i.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){const a=t.slots[e.slotIndex];if(!a.bone.active||!r&&a.attachmentState===this.unkeyedState+dy)return;let o=i=0,A=v>=0;Math.abs(b)<=90&&Ye.signum(b)!==Ye.signum(g)&&(Math.abs(v-y)>180?(m+=360*Ye.signum(v),A=w):y!==0?m-=360*Ye.signum(v):A=w),A!==w&&(m+=360*Ye.signum(v)),a[o]=m}a[o+1]=g,c.rotation=f+m*n}queueEvents(e,t){const i=e.animationStart,n=e.animationEnd,r=n-i,a=e.reverse;let o=e.trackLast%r;a&&(o=r-o);const h=this.events;let l=0,c=h.length;for(;l=i&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=i&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,i){const n=e.animation.duration,r=n-t,a=n-i,o=e.animation.timelines;for(let h=0,l=e.animation.timelines.length;h=a){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=a);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){const n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,i){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){return typeof t=="string"?this.setAnimation1(e,t,i):this.setAnimation2(e,t,i)}setAnimation1(e,t,i=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,i)}setAnimation2(e,t,i=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const a=this.trackEntry(e,t,i,r);return this.setTrack(e,a,n),this.queue.drain(),a}addAnimation(e,t,i=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,i,n):this.addAnimation2(e,t,i,n)}addAnimation1(e,t,i=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,i,n)}addAnimation2(e,t,i=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const a=this.trackEntry(e,t,i,r);return r?(r.next=a,a.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-a.mixDuration,0))):(this.setTrack(e,a,!0),this.queue.drain(),n<0&&(n=0)),a.delay=n,a}setEmptyAnimation(e,t=0){const i=this.setAnimation(e,Sl.emptyAnimation,!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){const n=this.addAnimation(e,Sl.emptyAnimation,!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0&&(a[d]=v);break}}h&&(g=g&~Nc|r[d]&Nc),r[d]=g}}from(e,t,i){const n=this.propertyIds;let r=BO;for(let a=0,o=i.length;a= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};x(Sl,"emptyAnimation",new Fp("",[],0));let oy=Sl;class FO{constructor(){x(this,"animation",null);x(this,"previous",null);x(this,"next",null);x(this,"mixingFrom",null);x(this,"mixingTo",null);x(this,"listener",null);x(this,"trackIndex",0);x(this,"loop",!1);x(this,"additive",!1);x(this,"reverse",!1);x(this,"shortestRotation",!1);x(this,"keepHold",!1);x(this,"eventThreshold",0);x(this,"mixAttachmentThreshold",0);x(this,"alphaAttachmentThreshold",0);x(this,"mixDrawOrderThreshold",0);x(this,"animationStart",0);x(this,"animationEnd",0);x(this,"animationLast",0);x(this,"nextAnimationLast",0);x(this,"delay",0);x(this,"trackTime",0);x(this,"trackLast",0);x(this,"nextTrackLast",0);x(this,"trackEnd",0);x(this,"timeScale",0);x(this,"alpha",0);x(this,"mixTime",0);x(this,"mixDuration",0);x(this,"totalAlpha",0);x(this,"mixInterpolation",To.linear);x(this,"timelineMode",[]);x(this,"timelineHoldMix",[]);x(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===To.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=To.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class OO{constructor(e){x(this,"objects",[]);x(this,"drainDisabled",!1);x(this,"animState");this.animState=e}start(e){this.objects.push(vs.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(vs.interrupt),this.objects.push(e)}end(e){this.objects.push(vs.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(vs.dispose),this.objects.push(e)}complete(e){this.objects.push(vs.complete),this.objects.push(e)}event(e,t){this.objects.push(vs.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,i,n,r,a;if(!this.drainDisabled){this.drainDisabled=!0;for(let o=0;o= 0.");if(!i)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const i=new ku(this.index,this.name,t);return i.length=this.length,i.setupPose.set(this.setupPose),i}}var pi;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(pi||(pi={}));class Pm{constructor(){x(this,"bone");x(this,"x",0);x(this,"y",0);x(this,"rotation",0);x(this,"scaleX",0);x(this,"scaleY",0);x(this,"shearX",0);x(this,"shearY",0);x(this,"inherit",pi.Normal);x(this,"a",0);x(this,"b",0);x(this,"c",0);x(this,"d",0);x(this,"worldY",0);x(this,"worldX",0);x(this,"world",0);x(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,i=this.scaleX,n=this.scaleY,r=this.shearX,a=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ye.degRad,m=(t+90+a)*Ye.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const o=this.bone.parent.appliedPose;let h=o.a,l=o.b,c=o.c,u=o.d;switch(this.worldX=h*this.x+l*this.y+o.worldX,this.worldY=c*this.x+u*this.y+o.worldY,this.inherit){case pi.Normal:{const d=(t+r)*Ye.degRad,f=(t+90+a)*Ye.degRad,p=Math.cos(d)*i,m=Math.cos(f)*n,g=Math.sin(d)*i,v=Math.sin(f)*n;this.a=h*p+l*g,this.b=h*m+l*v,this.c=c*p+u*g,this.d=c*m+u*v;return}case pi.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ye.degRad,m=(t+90+a)*Ye.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f;break}case pi.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;h*=p,c*=m;let g=h*h+c*c,v=0;g>Ye.epsilon2?(g=Math.abs(h*u*m-l*p*c)/g,l=c*g,u=h*g,v=t-Ye.atan2Deg(c,h)):(h=0,c=0,v=t-90+Ye.atan2Deg(u,l));const b=(v+r)*Ye.degRad,y=(v+a+90)*Ye.degRad,w=Math.cos(b)*i,A=Math.cos(y)*n,T=Math.sin(b)*i,_=Math.sin(y)*n;this.a=(h*w-l*T)*d,this.b=(h*A-l*_)*d,this.c=(c*w+u*T)*f,this.d=(c*A+u*_)*f;break}case pi.NoScale:case pi.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ye.degRad,v=Math.cos(g),b=Math.sin(g);let y=(h*v+l*b)*p,w=(c*v+u*b)*m;const A=1/Math.sqrt(y*y+w*w);y*=A,w*=A;let T=-w,_=y;this.inherit===pi.NoScale&&h*u-l*c<0!=(d<0!=f<0)&&(T=-T,_=-_);const R=r*Ye.degRad,P=(90+a)*Ye.degRad,F=Math.cos(R)*i,I=Math.cos(P)*n,k=Math.sin(R)*i,B=Math.sin(P)*n;this.a=(y*F+T*k)*d,this.b=(y*I+T*B)*d,this.c=(w*F+_*k)*f,this.d=(w*I+_*B)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,i=e.scaleY;if(!this.bone.parent){const v=1/t,b=1/i;this.x=(this.worldX-e.x)*v,this.y=(this.worldY-e.y)*b,this.set5(this.a*v,this.b*v,this.c*b,this.d*b,0);return}const n=this.bone.parent.appliedPose;let r=n.a,a=n.b,o=n.c,h=n.d;const l=r*h-a*o,c=1/(r*h-a*o),u=h*c,d=a*c,f=o*c,p=r*c,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case pi.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case pi.OnlyTranslation:{const v=1/t,b=1/i;this.set5(this.a*v,this.b*v,this.c*b,this.d*b,0);break}case pi.NoRotationOrReflection:{const v=1/t,b=1/i;r*=v,o*=b;const y=this.a*v,w=this.b*v,A=this.c*b,T=this.d*b,_=1/(r*r+o*o),R=1/Math.abs(l*v*b);this.set5((r*y+o*A)*_,(r*w+o*T)*_,(r*A-o*y)*R,(r*T-o*w)*R,Ye.atan2Deg(o,r));break}case pi.NoScale:case pi.NoScaleOrReflection:{const v=1/t,b=1/i,y=this.a*v,w=this.b*v,A=this.c*b,T=this.d*b;let _=h*this.a-a*this.c,R=r*this.c-o*this.a;l<0&&(_=-_,R=-R);let P=Ye.atan2Deg(R,_);this.rotation=P,P*=Ye.degRad;const F=Math.cos(P),I=Math.sin(P);let k=(r*F+a*I)*v,B=(o*F+h*I)*b;const D=1/Math.sqrt(k*k+B*B);k*=D,B*=D;const U=this.inherit===pi.NoScale&&l<0!=(t<0!=i<0)?-1:1;this.set4(k*y+B*A,k*w+B*T,(k*A-B*y)*U,(k*T-B*w)*U)}}}set4(e,t,i,n){const r=e*e+i*i,a=t*t+n*n;r>Ye.epsilon2?(this.shearX=Ye.atan2Deg(i,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(a),a>Ye.epsilon2?(this.shearY=Ye.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,i,n,r){this.shearX=0;const a=e*e+i*i,o=t*t+n*n;if(a>Ye.epsilon2){const h=Ye.atan2Deg(i,e);this.rotation=h+r,this.scaleX=Math.sqrt(a),this.scaleY=Math.sqrt(o),o>Ye.epsilon2?(this.shearY=Ye.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90-h):this.shearY-=90+h,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(o),this.shearY=0,this.rotation=o>Ye.epsilon2?Ye.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const i=this.bone.children;for(let n=0,r=i.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,i,n,r,a,o,h,l,c,u){typeof n=="number"?Pr.apply1(t,i,n,r,a,o,h,l):Pr.apply2(t,i,n,r,a,o,h,l,c,u)}static apply1(t,i,n,r,a,o,h,l){i.modifyLocal(t);const c=i.bone.parent.appliedPose;let u=c.a,d=c.b,f=c.c,p=c.d,m=-i.shearX-i.rotation,g=0,v=0;switch(i.inherit){case pi.OnlyTranslation:g=(n-i.worldX)*Ye.signum(t.scaleX),v=(r-i.worldY)*Ye.signum(t.scaleY);break;case pi.NoRotationOrReflection:{const b=Math.abs(u*p-d*f)/Math.max(Ye.epsilon,u*u+f*f),y=u/t.scaleX,w=f/t.scaleY;d=-w*b*t.scaleX,p=y*b*t.scaleY,m+=Ye.atan2Deg(w,y)}default:{const b=n-c.worldX,y=r-c.worldY,w=u*p-d*f;Math.abs(w)<=Ye.epsilon?(g=0,v=0):(g=(b*p-y*d)/w-i.x,v=(y*u-b*f)/w-i.y)}}if(m+=Ye.atan2Deg(v,g),i.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),i.rotation+=m*l,a||o){switch(i.inherit){case pi.NoScale:case pi.NoScaleOrReflection:g=n-i.worldX,v=r-i.worldY}const b=i.bone.data.length*i.scaleX;if(b>Ye.epsilon){const y=g*g+v*v;if(a&&yb*b){const w=(Math.sqrt(y)/b-1)*l+1;switch(i.scaleX*=w,h){case hs.Uniform:i.scaleY*=w;break;case hs.Volume:i.scaleY/=w<.7?.25+.642857*w:w}}}}}static apply2(t,i,n,r,a,o,h,l,c,u){if(i.inherit!==pi.Normal||n.inherit!==pi.Normal)return;i.modifyLocal(t),n.modifyLocal(t);let d=i.x,f=i.y,p=i.scaleX,m=i.scaleY,g=n.scaleX,v=0,b=0,y=0;p<0?(p=-p,v=180,y=-1):(v=0,y=1),m<0&&(m=-m,y=-y),g<0?(g=-g,b=180):b=0;let w=0,A=0,T=i.a,_=i.b,R=i.c,P=i.d;const F=Math.abs(p-m)<=Ye.epsilon;!F||h?(n.y=0,w=T*n.x+i.worldX,A=R*n.x+i.worldY):(w=T*n.x+_*n.y+i.worldX,A=R*n.x+P*n.y+i.worldY);const I=i.bone.parent.appliedPose;T=I.a,_=I.b,R=I.c,P=I.d;let k=T*P-_*R,B=w-I.worldX,D=A-I.worldY;k=Math.abs(k)<=Ye.epsilon?0:1/k;const U=(B*P-D*_)*k-d,L=(D*T-B*R)*k-f;let N=Math.sqrt(U*U+L*L),O=n.bone.data.length*g,X,E;if(N0){let me=Math.min(1,fe/(c*2))-1;me=(fe-c*(1-me*me))/K,V-=me*V,q-=me*q,W=V*V+q*q}}e:if(F){O*=p;let K=(W-N*N-O*O)/(2*N*O);if(K<-1)K=-1,E=Math.PI*o;else if(K>1){if(K=1,E=0,h)switch(T=(Math.sqrt(W)/(N+O)-1)*u+1,i.scaleX*=T,l){case hs.Uniform:i.scaleY*=T;break;case hs.Volume:i.scaleY/=T<.7?.25+.642857*T:T}}else E=Math.acos(K)*o;T=N+O*K,_=O*Math.sin(E),X=Math.atan2(q*T-V*_,V*T+q*_)}else{T=p*O,_=m*O;const K=T*T,fe=_*_,me=Math.atan2(q,V);R=fe*N*N+K*W-K*fe;const we=-2*fe*N,Ee=fe-K;if(P=we*we-4*Ee*R,P>=0){let xe=Math.sqrt(P);we<0&&(xe=-xe),xe=-(we+xe)*.5;let oe=xe/Ee,ge=R/xe;const le=Math.abs(oe)=0){D=Math.sqrt(oe)*o,X=me-Math.atan2(D,le),E=Math.atan2(D/m,(le-N)/p);break e}}let pe=Ye.PI,Ae=N-T,G=Ae*Ae,Z=0,z=0,j=N+T,te=j*j,he=0;R=-T*N/(K-fe),R>=-1&&R<=1&&(R=Math.acos(R),B=T*Math.cos(R)+N,D=_*Math.sin(R),P=B*B+D*D,Pte&&(z=R,te=P,j=B,he=D)),W<=(G+te)*.5?(X=me-Math.atan2(Z*o,Ae),E=pe*o):(X=me-Math.atan2(he*o,j),E=z*o)}const J=Math.atan2(n.y,n.x)*y;X=(X-J)*Ye.radDeg+v-i.rotation,X>180?X-=360:X<=-180&&(X+=360),i.rotation+=X*u,E=((E+J)*Ye.radDeg-n.shearX)*y+b-n.rotation,E>180?E-=360:E<=-180&&(E+=360),n.rotation+=E*u}}class Qc extends ec{constructor(t){super(t,new km);x(this,"bones",[]);x(this,"_target",null);x(this,"_scaleYMode",hs.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new Pr(this,t)}}class Fm{constructor(){x(this,"position",0);x(this,"spacing",0);x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class eh extends ec{constructor(t){super(t,new Fm);x(this,"bones",[]);x(this,"_slot",null);x(this,"positionMode",Dn.Fixed);x(this,"spacingMode",Fi.Fixed);x(this,"rotateMode",ka.Chain);x(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new Om(this,t)}}var Dn;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(Dn||(Dn={}));var Fi;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(Fi||(Fi={}));var ka;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(ka||(ka={}));const Qs=class Qs extends Ql{constructor(t,i){super(t,new Fm,new Fm);x(this,"data");x(this,"bones");x(this,"slot");x(this,"spaces",[]);x(this,"positions",[]);x(this,"world",[]);x(this,"curves",[]);x(this,"lengths",[]);x(this,"segments",[]);if(!i)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(i.bones[n.index].constrainedPose);this.slot=i.slots[t.slot.index]}copy(t){var i=new Qs(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.slot.appliedPose.attachment;if(!(n instanceof Xl))return;const r=this.appliedPose,a=r.mixRotate,o=r.mixX,h=r.mixY;if(a===0&&o===0&&h===0)return;const l=this.data,c=l.rotateMode===ka.Tangent,u=l.rotateMode===ka.ChainScale,d=this.bones,f=d.length,p=c?f:f+1,m=ct.setArraySize(this.spaces,p),g=u?this.lengths=ct.setArraySize(this.lengths,f):[],v=r.spacing;switch(l.spacingMode){case Fi.Percent:if(u)for(let _=0,R=p-1;_0){_=p/_*v;for(let R=1;R0?Ye.degRad:-Ye.degRad}for(let _=0,R=3;_0){let D=P.a,U=P.b,L=P.c,N=P.d,O=0,X=0,E=0;if(c?O=b[R-1]:m[_+1]===0?O=b[R+2]:O=Math.atan2(B,k),O-=Math.atan2(L,D),T){X=Math.cos(O),E=Math.sin(O);const V=P.bone.data.length;y+=(V*(X*D-E*L)-k)*a,w+=(V*(E*D+X*L)-B)*a}else O+=A;O>Ye.PI?O-=Ye.PI2:O<-Ye.PI&&(O+=Ye.PI2),O*=a,X=Math.cos(O),E=Math.sin(O),P.a=X*D-E*L,P.b=X*U-E*N,P.c=E*D+X*L,P.d=E*U+X*N}}}computeWorldPositions(t,i,n,r){const a=this.slot;let o=this.appliedPose.position,h=this.spaces,l=ct.setArraySize(this.positions,n*3+2),c=this.world;const u=i.closed;let d=i.worldVerticesLength,f=d/6,p=Qs.NONE;if(!i.constantSpeed){const E=i.lengths;f-=u?1:2;const V=E[f];this.data.positionMode===Dn.Percent&&(o*=V);let q;switch(this.data.spacingMode){case Fi.Percent:q=V;break;case Fi.Proportional:q=V/n;break;default:q=1}c=ct.setArraySize(this.world,8);for(let W=0,J=0,K=0;WV){p!==Qs.AFTER&&(p=Qs.AFTER,i.computeWorldVertices(t,a,d-6,4,c,0,2)),this.addAfterPosition(me-V,c,0,l,J);continue}for(;;K++){const we=E[K];if(!(me>we)){if(K===0)me/=we;else{const Ee=E[K-1];me=(me-Ee)/(we-Ee)}break}}K!==p&&(p=K,u&&K===f?(i.computeWorldVertices(t,a,d-4,4,c,0,2),i.computeWorldVertices(t,a,0,4,c,4,2)):i.computeWorldVertices(t,a,K*6+2,8,c,0,2)),this.addCurvePosition(me,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],l,J,r||W>0&&fe===0)}return l}u?(d+=2,c=ct.setArraySize(this.world,d),i.computeWorldVertices(t,a,2,d-4,c,0,2),i.computeWorldVertices(t,a,0,2,c,d-4,2),c[d-2]=c[0],c[d-1]=c[1]):(f--,d-=4,c=ct.setArraySize(this.world,d),i.computeWorldVertices(t,a,2,d,c,0,2));const m=ct.setArraySize(this.curves,f);let g=0,v=c[0],b=c[1],y=0,w=0,A=0,T=0,_=0,R=0,P=0,F=0,I=0,k=0,B=0,D=0,U=0,L=0;for(let E=0,V=2;Eg){this.addAfterPosition(K-g,c,d-4,l,V);continue}for(;;q++){const fe=m[q];if(!(K>fe)){if(q===0)K/=fe;else{const me=m[q-1];K=(K-me)/(fe-me)}break}}if(q!==p){p=q;let fe=q*6;for(v=c[fe],b=c[fe+1],y=c[fe+2],w=c[fe+3],A=c[fe+4],T=c[fe+5],_=c[fe+6],R=c[fe+7],P=(v-y*2+A)*.03,F=(b-w*2+T)*.03,I=((y-A)*3-v+_)*.006,k=((w-T)*3-b+R)*.006,B=P*2+I,D=F*2+k,U=(y-v)*.3+P+I*.16666667,L=(w-b)*.3+F+k*.16666667,X=Math.sqrt(U*U+L*L),O[0]=X,fe=1;fe<8;fe++)U+=B,L+=D,B+=I,D+=k,X+=Math.sqrt(U*U+L*L),O[fe]=X;U+=B,L+=D,X+=Math.sqrt(U*U+L*L),O[8]=X,U+=B+I,L+=D+k,X+=Math.sqrt(U*U+L*L),O[9]=X,W=0}for(K*=X;;W++){const fe=O[W];if(!(K>fe)){if(W===0)K/=fe;else{const me=O[W-1];K=W+(K-me)/(fe-me)}break}}this.addCurvePosition(K*.1,v,b,y,w,A,T,_,R,l,V,r||E>0&&J===0)}return l}addBeforePosition(t,i,n,r,a){const o=i[n],h=i[n+1],l=i[n+2]-o,c=i[n+3]-h,u=Math.atan2(c,l);r[a]=o+t*Math.cos(u),r[a+1]=h+t*Math.sin(u),r[a+2]=u}addAfterPosition(t,i,n,r,a){const o=i[n+2],h=i[n+3],l=o-i[n],c=h-i[n+1],u=Math.atan2(c,l);r[a]=o+t*Math.cos(u),r[a+1]=h+t*Math.sin(u),r[a+2]=u}addCurvePosition(t,i,n,r,a,o,h,l,c,u,d,f){if(t===0||Number.isNaN(t)){u[d]=i,u[d+1]=n,u[d+2]=Math.atan2(a-n,r-i);return}const p=t*t,m=p*t,g=1-t,v=g*g,b=v*g,y=g*t,w=y*3,A=g*w,T=w*t,_=i*b+r*A+o*T+l*m,R=n*b+a*A+h*T+c*m;u[d]=_,u[d+1]=R,f&&(t<.001?u[d+2]=Math.atan2(a-n,r-i):u[d+2]=Math.atan2(R-(n*v+a*y*2+h*p),_-(i*v+r*y*2+o*p)))}sort(t){const i=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,i,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,i,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,a=this.bones.length;for(let o=0;o0,o=this.data.y>0,h=this.data.rotate>0||this.data.shearX>0,l=this.data.scaleX>0,c=this.bone;let u=c.bone.data.length,d=this.data.step,f=0;if(i!==ya.none){switch(c.modifyWorld(t),i){case ya.reset:this.reset(t);case ya.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=c.worldX,v=c.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=v;else{let b=this.remaining,y=n.inertia,w=t.data.referenceScale,A=-1,T=0,_=0,R=this.data.limit*p,P=R*Math.abs(t.scaleY);if(R*=Math.abs(t.scaleX),a||o){if(a){const F=(this.ux-g)*y;this.xOffset+=F>R?R:F<-R?-R:F,this.ux=g}if(o){const F=(this.uy-v)*y;this.yOffset+=F>P?P:F<-P?-P:F,this.uy=v}if(b>=d){const F=this.xOffset,I=this.yOffset;A=n.damping**(60*d),T=d*n.massInverse,_=n.strength;const k=w*n.wind,B=w*n.gravity,D=(k*t.windX+B*t.gravityX)*t.scaleX,U=(k*t.windY+B*t.gravityY)*t.scaleY;do a&&(this.xVelocity+=(D-this.xOffset*_)*T,this.xOffset+=this.xVelocity*d,this.xVelocity*=A),o&&(this.yVelocity-=(U+this.yOffset*_)*T,this.yOffset+=this.yVelocity*d,this.yVelocity*=A),b-=d;while(b>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-I}f=Math.max(0,1-b/d),a&&(c.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),o&&(c.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(h||l){let F=Math.atan2(c.c,c.a),I=0,k=0,B=0,D=this.cx-c.worldX,U=this.cy-c.worldY;if(D>R?D=R:D<-R&&(D=-R),U>P?U=P:U<-P&&(U=-P),b=this.remaining,h){B=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let L=Math.atan2(U+this.ty,D+this.tx)-F-(this.rotateOffset-f)*B;this.rotateOffset+=(L-Math.ceil(L*Ye.invPI2-.5)*Ye.PI2)*y,L=(this.rotateOffset-f)*B+F,I=Math.cos(L),k=Math.sin(L),l&&(L=u*c.getWorldScaleX(),L>0&&(this.scaleOffset+=(D*I+U*k)*y/L))}else{I=Math.cos(F),k=Math.sin(F);const L=u*c.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);L>0&&(this.scaleOffset+=(D*I+U*k)*y/L)}if(b>=d){A===-1&&(A=n.damping**(60*d),T=d*n.massInverse,_=n.strength);const L=n.wind*t.windX+n.gravity*t.gravityX,N=(n.wind*t.windY+n.gravity*t.gravityY)*Dm.yDir,O=this.rotateOffset,X=this.scaleOffset,E=u/w;for(;;)if(b-=d,l&&(this.scaleVelocity+=(L*I-N*k-this.scaleOffset*_)*T,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=A),h){if(this.rotateVelocity-=((L*k+N*I)*E+this.rotateOffset*_)*T,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=A,b0){let b=0;this.data.rotate>0&&(b=p*this.data.rotate,m=Math.sin(b),g=Math.cos(b),v=c.b,c.b=g*v-m*c.d,c.d=m*v+g*c.d),b+=p*this.data.shearX,m=Math.sin(b),g=Math.cos(b),v=c.a,c.a=g*v-m*c.c,c.c=m*v+g*c.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),v=c.a,c.a=g*v-m*c.c,c.c=m*v+g*c.c,v=c.b,c.b=g*v-m*c.d,c.d=m*v+g*c.d}if(l){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(c.a*=p,c.c*=p,this.data.scaleYMode){case hs.Uniform:c.b*=p,c.d*=p;break;case hs.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,c.b*=p,c.d*=p}}i!==ya.pose&&(this.tx=u*c.a,this.ty=u*c.c)}}sort(t){const i=this.bone.bone;t.sortBone(i),t._updateCache.push(this),t.sortReset(i.children),t.constrained(i)}isSourceActive(){return this.bone.bone.active}}class th extends ec{constructor(t){super(t,new Bm);x(this,"_bone",null);x(this,"x",0);x(this,"y",0);x(this,"rotate",0);x(this,"scaleX",0);x(this,"shearX",0);x(this,"limit",0);x(this,"step",0);x(this,"inertiaGlobal",!1);x(this,"strengthGlobal",!1);x(this,"dampingGlobal",!1);x(this,"massGlobal",!1);x(this,"windGlobal",!1);x(this,"gravityGlobal",!1);x(this,"mixGlobal",!1);x(this,"_scaleYMode",hs.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new Fu(this,t)}}typeof Math.fround>"u"&&(Math.fround=(s=>e=>(s[0]=e,s[0]))(new Float32Array(1)));class Nm{constructor(){x(this,"time",0);x(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const Ml=class Ml extends Ql{constructor(t,i){super(t,new Nm,new Nm);x(this,"bone",null);if(!i)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=i.bones[t.bone.index])}copy(t){var i=new Ml(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,a=r.animation,o=this.bone;if(o!==null){if(!o.active)return;r.local&&o.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,o.appliedPose,r.local,Ml.offsets)-r.property.offset)*r.scale,r.loop?n.time=a.duration+n.time%a.duration:n.time=Math.max(0,n.time)}const h=t.bones,l=a.bones;for(let c=0,u=a.bones.length;c=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let i=0;i= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Wh;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Wh||(Wh={}));class Vm{constructor(){x(this,"mixRotate",0);x(this,"mixX",0);x(this,"mixY",0);x(this,"mixScaleX",0);x(this,"mixScaleY",0);x(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Xp extends Ql{constructor(t,i){super(t,new Vm,new Vm);x(this,"bones");x(this,"source");if(!i)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(i.bones[r.index].constrainedPose);const n=i.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var i=new Xp(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,a=r.localSource,o=r.localTarget,h=r.additive,l=r.clamp,c=r.offsets,u=this.source.appliedPose;a&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[Gt.ROTATION]:-n[Gt.ROTATION]);return o<0&&(o+=360),o}}class yS extends Uo{mix(e){return e.mixRotate}apply(e,t,i,n,r,a){if(r)i.rotation+=(a?n:n-i.rotation)*t.mixRotate;else{const o=e.scaleX,h=e.scaleY,l=1/o,c=1/h,u=i.a*l,d=i.b*l,f=i.c*c,p=i.d*c;n*=Ye.degRad,a||(n-=Math.atan2(f,u)),n>Ye.PI?n-=Ye.PI2:n<-Ye.PI&&(n+=Ye.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);i.a=(m*u-g*f)*o,i.b=(m*d-g*p)*o,i.c=(g*u+m*f)*h,i.d=(g*d+m*p)*h}}}class $m extends No{value(e,t,i,n){return i?t.x+n[Gt.X]:(n[Gt.X]*t.a+n[Gt.Y]*t.b+t.worldX)/e.scaleX}}class xS extends Uo{mix(e){return e.mixX}apply(e,t,i,n,r,a){r?i.x+=(a?n:n-i.x)*t.mixX:(a||(n-=i.worldX/e.scaleX),i.worldX+=n*t.mixX*e.scaleX)}}class Gm extends No{value(e,t,i,n){return i?t.y+n[Gt.Y]:(n[Gt.X]*t.c+n[Gt.Y]*t.d+t.worldY)/e.scaleY}}class bS extends Uo{mix(e){return e.mixY}apply(e,t,i,n,r,a){r?i.y+=(a?n:n-i.y)*t.mixY:(a||(n-=i.worldY/e.scaleY),i.worldY+=n*t.mixY*e.scaleY)}}class Hm extends No{value(e,t,i,n){if(i)return t.scaleX+n[Gt.SCALEX];const r=t.a/e.scaleX,a=t.c/e.scaleY;return Math.sqrt(r*r+a*a)+n[Gt.SCALEX]}}class wS extends Uo{mix(e){return e.mixScaleX}apply(e,t,i,n,r,a){if(r)a?i.scaleX*=1+(n-1)*t.mixScaleX:i.scaleX!==0&&(i.scaleX+=(n-i.scaleX)*t.mixScaleX);else if(a){const o=1+(n-1)*t.mixScaleX;i.a*=o,i.c*=o}else{let o=i.a/e.scaleX,h=i.c/e.scaleY,l=Math.sqrt(o*o+h*h);l!==0&&(l=1+(n-l)*t.mixScaleX/l,i.a*=l,i.c*=l)}}}class jm extends No{value(e,t,i,n){if(i)return t.scaleY+n[Gt.SCALEY];const r=t.b/e.scaleX,a=t.d/e.scaleY;return Math.sqrt(r*r+a*a)+n[Gt.SCALEY]}}class SS extends Uo{mix(e){return e.mixScaleY}apply(e,t,i,n,r,a){if(r)a?i.scaleY*=1+(n-1)*t.mixScaleY:i.scaleY!==0&&(i.scaleY+=(n-i.scaleY)*t.mixScaleY);else if(a){const o=1+(n-1)*t.mixScaleY;i.b*=o,i.d*=o}else{let o=i.b/e.scaleX,h=i.d/e.scaleY,l=Math.sqrt(o*o+h*h);l!==0&&(l=1+(n-l)*t.mixScaleY/l,i.b*=l,i.d*=l)}}}class Wm extends No{value(e,t,i,n){if(i)return t.shearY+n[Gt.SHEARY];const r=1/e.scaleX,a=1/e.scaleY;return(Math.atan2(t.d*a,t.b*r)-Math.atan2(t.c*a,t.a*r))*Ye.radDeg-90+n[Gt.SHEARY]}}class MS extends Uo{mix(e){return e.mixShearY}apply(e,t,i,n,r,a){if(r)a||(n-=i.shearY),i.shearY+=n*t.mixShearY;else{const o=e.scaleX,h=e.scaleY,l=i.b/o,c=i.d/h,u=Math.atan2(c,l);n=(n+90)*Ye.degRad,a?n-=Ye.PI/2:(n-=u-Math.atan2(i.c/h,i.a/o),n>Ye.PI?n-=Ye.PI2:n<-Ye.PI&&(n+=Ye.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(l*l+c*c);i.b=Math.cos(n)*d*o,i.d=Math.sin(n)*d*h}}}class r8{constructor(e){x(this,"scale",1);x(this,"attachmentLoader");x(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new gS;i.name="";const n=new DO(e),r=n.readInt32(),a=n.readInt32();i.hash=a===0&&r===0?null:a.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;const o=n.readBoolean();o&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let h=0;h=n.readInt(!0);for(let p=0;p>5;for(let w=0,A;w>1&1,v.spacingMode=b>>2&3,v.rotateMode=b>>4&3,(b&128)!==0&&(v.offsetRotation=n.readFloat());const y=v.setupPose;y.position=n.readFloat(),v.positionMode===Dn.Fixed&&(y.position*=t),y.spacing=n.readFloat(),(v.spacingMode===Fi.Length||v.spacingMode===Fi.Fixed)&&(y.spacing*=t),y.mixRotate=n.readFloat(),y.mixX=n.readFloat(),y.mixY=n.readFloat(),c.push(v);break}case oB:{const v=new th(m);v.bone=l[n.readInt(!0)];let b=n.readByte();if(v.skinRequired=(b&1)!==0,(b&2)!==0&&(v.x=n.readFloat()),(b&4)!==0&&(v.y=n.readFloat()),(b&8)!==0&&(v.rotate=n.readFloat()),(b&16)!==0){let w=n.readFloat();w<-2?(v.scaleYMode=hs.Volume,w=-2-w):w<0&&(v.scaleYMode=hs.Uniform,w=-1-w),v.scaleX=w}(b&32)!==0&&(v.shearX=n.readFloat()),v.limit=((b&64)!==0?n.readFloat():5e3)*t,v.step=1/n.readUnsignedByte();const y=v.setupPose;y.inertia=n.readFloat(),y.strength=n.readFloat(),y.damping=n.readFloat(),y.massInverse=(b&128)!==0?n.readFloat():1,y.wind=n.readFloat(),y.gravity=n.readFloat(),b=n.readByte(),(b&1)!==0&&(v.inertiaGlobal=!0),(b&2)!==0&&(v.strengthGlobal=!0),(b&4)!==0&&(v.dampingGlobal=!0),(b&8)!==0&&(v.massGlobal=!0),(b&16)!==0&&(v.windGlobal=!0),(b&32)!==0&&(v.gravityGlobal=!0),(b&64)!==0&&(v.mixGlobal=!0),y.mix=(b&128)!==0?n.readFloat():1,c.push(v);break}case lB:{const v=new ba(m),b=n.readByte();if(v.skinRequired=(b&1)!==0,v.loop=(b&2)!==0,v.additive=(b&4)!==0,(b&8)!==0){const y=n.readFloat();o&&(b&64)!==0?v.max=y:v.setupPose.time=y}if((b&16)!==0&&(v.setupPose.mix=(b&32)!==0?n.readFloat():1),(b&64)!==0){v.local=(b&128)!==0,v.bone=l[n.readInt(!0)];const y=n.readFloat();let w=1;switch(n.readByte()){case 0:v.property=new Ym;break;case 1:{w=t,v.property=new $m;break}case 2:{w=t,v.property=new Gm;break}case 3:v.property=new Hm;break;case 4:v.property=new jm;break;case 5:v.property=new Wm;break;default:continue}v.property.offset=y*w,v.offset=n.readFloat(),v.scale=n.readFloat()/w}c.push(v);break}}}const d=this.readSkin(n,i,!0,o);d&&(i.defaultSkin=d,i.skins.push(d));{let p=i.skins.length;for(ct.setArraySize(i.skins,h=p+n.readInt(!0));p0){b=[];for(let _=0;_>4,e.readFloat())}r.push(F);break}}}}}const o=i.slots.length,h=e.readInt(!0);if(h>0){const f=new Gr(h);for(let p=0;p0){const f=new Ul(c);for(let p=0;p>>1^-(i&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let NO=class{constructor(e,t,i,n,r,a){x(this,"source");x(this,"skinIndex");x(this,"slotIndex");x(this,"sourceIndex");x(this,"mesh");x(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.sourceIndex=n,this.source=r,this.inheritTimelines=a}};class my{constructor(e=null,t,i=0){x(this,"bones");x(this,"vertices");x(this,"length");this.bones=e,this.vertices=t,this.length=i}}var qn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(qn||(qn={}));function Mi(s,e,t,i){t instanceof ar?UO(s,e,t,i):XO(s,e,t,i)}function UO(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i;for(let a=0,o=0,h=t.getFrameCount()-1;t.setFrame(a,n,r),a!==h;a++){const l=s.readFloat(),c=s.readFloat()*i;switch(s.readByte()){case _n:t.setStepped(a);break;case Tn:Ot(s,t,o++,a,0,n,l,r,c,i)}n=l,r=c}e.push(t)}function XO(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i,a=s.readFloat()*i;for(let o=0,h=0,l=t.getFrameCount()-1;t.setFrame(o,n,r,a),o!==l;o++){const c=s.readFloat(),u=s.readFloat()*i,d=s.readFloat()*i;switch(s.readByte()){case _n:t.setStepped(o);break;case Tn:Ot(s,t,h++,o,0,n,c,r,u,i),Ot(s,t,h++,o,1,n,c,a,d,i)}n=c,r=u,a=d}e.push(t)}function py(s,e){const t=s.readInt(!0);if(t===0)return null;const i=new Array(e).fill(-1),n=new Array(e-t);let r=0,a=0;for(let o=0;o=0;o--)i[o]===-1&&(i[o]=n[--a]);return i}function Ot(s,e,t,i,n,r,a,o,h,l){e.setBezier(t,i,n,r,o,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,a,h)}const VO=0,YO=1,$O=2,GO=3,HO=4,jO=5,WO=6,zO=7,qO=8,KO=9,ZO=10,JO=0,QO=1,eB=2,tB=3,iB=4,sB=5,nB=0,rB=1,aB=2,oB=3,lB=4,cB=0,hB=1,uB=0,dB=1,fB=2,mB=0,pB=1,gB=2,vB=4,yB=5,xB=6,bB=7,wB=8,SB=0,MB=1,_n=1,Tn=2;class _B{constructor(e){x(this,"attachmentLoader");x(this,"scale",1);x(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new gS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(i.hash=r.hash,i.version=r.spine,i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height,i.referenceScale=se(r,"referenceScale",100)*t,i.fps=r.fps,i.imagesPath=r.images??null,i.audioPath=r.audio??null),n.bones)for(let a=0;a0&&l.properties.push(T)}l.offsets[Gt.ROTATION]=se(a,"rotation",0),l.offsets[Gt.X]=se(a,"x",0)*t,l.offsets[Gt.Y]=se(a,"y",0)*t,l.offsets[Gt.SCALEX]=se(a,"scaleX",0),l.offsets[Gt.SCALEY]=se(a,"scaleY",0),l.offsets[Gt.SHEARY]=se(a,"shearY",0);const y=l.setupPose;d&&(y.mixRotate=se(a,"mixRotate",1)),f&&(y.mixX=se(a,"mixX",1)),p&&(y.mixY=se(a,"mixY",y.mixX)),m&&(y.mixScaleX=se(a,"mixScaleX",1)),g&&(y.mixScaleY=se(a,"mixScaleY",y.mixScaleX)),v&&(y.mixShearY=se(a,"mixShearY",1)),i.constraints.push(l);break}case"path":{const l=new eh(o);l.skinRequired=h;for(let f=0;f0){const d=i.findConstraint(l,th);if(!d)throw new Error(`Physics constraint not found: ${l}`);u=i.constraints.indexOf(d)}for(const d in c){const f=c[d];let p=f[0];if(!p)continue;const m=f.length;let g,v=0;if(d==="reset"){const b=new jh(m,u);for(let y=0;p!=null;p=f[y+1],y++)b.setFrame(y,se(p,"time",0));r.push(b);continue}switch(d){case"inertia":g=new nS(m,m,u);break;case"strength":g=new rS(m,m,u);break;case"damping":g=new aS(m,m,u);break;case"mass":g=new oS(m,m,u);break;case"wind":g=new lS(m,m,u);break;case"gravity":g=new cS(m,m,u);break;case"mix":{v=1,g=new hS(m,m,u);break}default:continue}Ss(r,f,g,v,1)}}if(e.slider)for(const l in e.slider){const c=e.slider[l],u=i.findConstraint(l,ba);if(!u)throw new Error(`Slider not found: ${l}`);const d=i.constraints.indexOf(u);for(const f in c){const p=c[f];if(!p[0])continue;const g=p.length;switch(f){case"time":Ss(r,p,new uS(g,g,d),1,1);break;case"mix":Ss(r,p,new dS(g,g,d),1,1);break}}}if(e.attachments)for(const l in e.attachments){const c=e.attachments[l],u=i.findSkin(l);if(!u)throw new Error(`Skin not found: ${l}`);for(const d in c){const f=c[d],p=i.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const v=f[g],b=u.getAttachment(m,g);if(!b)throw new Error(`Timeline attachment not found: ${g}`);for(const y in v){const w=v[y];let A=w[0];if(A){if(y==="deform"){const T=b.bones,_=b.vertices,R=T?_.length/3*2:_.length,P=new Jw(w.length,w.length,m,b);let F=se(A,"time",0);for(let I=0,k=0;;I++){let B;const D=se(A,"vertices",null);if(!D)B=T?ct.newFloatArray(R):_;else{B=ct.newFloatArray(R);const O=se(A,"offset",0);if(ct.arrayCopy(D,0,B,O,D.length),n!==1)for(let X=O,E=X+D.length;X=0;l--)r[l]===-1&&(r[l]=a[--h]);return r}function Nt(s,e,t,i,n,r,a,o,h,l){if(s==="stepped")return e.setStepped(i),t;const c=n<<2,u=s[c],d=s[c+1]*l,f=s[c+2],p=s[c+3]*l;return e.setBezier(t,i,n,r,o,u,d,f,p,a,h),t+1}function se(s,e,t){return s[e]!==void 0?s[e]:t}class AB{newRegionAttachment(e,t,i,n){return new Eu(t,i)}newMeshAttachment(e,t,i,n){return new Zl(t,i)}newBoundingBoxAttachment(e,t){return new Q1(t)}newPathAttachment(e,t){return new Nl(t)}newPointAttachment(e,t){return new rw(t)}newClippingAttachment(e,t){return new _o(t)}}class EB{sequence(e){for(let t=0;t!Number.isInteger(c)||c<0||c>=a))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const o=Number(s.hull)||0;if(!Number.isInteger(o)||o<0||o>a)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(s.edges)&&s.edges.some(c=>!Number.isInteger(c)||c<0||c>=a*2||c%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===i.length)return;let h=0,l=0;for(;h=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);l++}if(h!==n.length||l!==a)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function RB(s,e){var r,a,o,h;const t=Array.isArray(s.bones)?s.bones:[],i=new Map(t.map(l=>[String(l.name||""),l])),n=new Set;for(const l of t){if(l.inherit!=null&&!CB.has(l.inherit))throw new Error(`骨骼“${l.name||""}”的 inherit 值“${l.inherit}”不符合 Spine ${e} JSON 格式`);if(/_particle_\d+_trail_/.test(String(l.name||""))){const c=i.get(String(l.parent||""));if(!c||/_particle_\d+_trail_/.test(String(c.name||"")))throw new Error(`拖尾骨骼“${l.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const l of Array.isArray(s.skins)?s.skins:[]){const c=(l==null?void 0:l.attachments)||{};for(const u of Object.keys(c))for(const d of Object.keys(c[u]||{})){const f=c[u][d];(f==null?void 0:f.type)==="mesh"&&(IB(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((a=f.uvs)==null?void 0:a.length)&&n.add(u))}}for(const l of Object.values(s.animations||{}))for(const c of n){const u=(h=(o=l==null?void 0:l.slots)==null?void 0:o[c])==null?void 0:h.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${c}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function PB(s){var e;if(String(((e=s==null?void 0:s.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of s.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(s.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const i=[t];for(;i.length;){const n=i.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");i.push(...Object.values(n))}}}}function vy(s,e){var a;const t=JSON.parse(s),i=Ph((a=t==null?void 0:t.skeleton)==null?void 0:a.spine);if(!i)throw new Error(`导出版本不受支持,仅支持 Spine ${Mm()}`);if(e&&i!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${i}`);RB(t,i),i==="3.8"&&PB(t);const n=i==="3.8"?yw(JSON.parse(JSON.stringify(t))):t,r=i==="4.3"?new _B(new EB).readSkeletonData(n):new Dh(new AB).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:i,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const _S="http://127.0.0.1:27843";class zh extends Error{constructor(t,i="CONNECTOR_ERROR",n){super(t);x(this,"code");x(this,"pairUrl");this.name="SpineConnectorError",this.code=i,this.pairUrl=n}}function zm(s,e){return String(s||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function kB(s,e){const t=/\.([a-z0-9]{2,5})$/i.exec(s);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function FB(s,e,t){const i=String(s||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>zm(r,"images")),n=zm(e.replace(/\.[^./\\]+$/,""),"image");return[...i,`${n}${kB(e,t)}`].join("/")}async function Ef(s,e,t){if(!s)return null;const i=await fetch(s);if(!i.ok)throw new Error(`无法读取导出图片:${t}`);const n=await i.blob(),r=new Uint8Array(await n.arrayBuffer());let a="";const o=32768;for(let h=0;ha.finally(()=>{i++,e==null||e(i,t.length)});for(const a of s.filter(o=>o.visible!==!1)){for(const o of a.config.imageResources)if(o.imageMode==="sequence"&&o.sequenceFrames.length)for(const h of o.sequenceFrames)t.push(n(Ef(h.previewUrl,o.textureFolder,h.name||o.textureName)));else t.push(n(Ef(o.previewUrl,o.textureFolder,o.textureName)));if(a.config.trail)for(const o of a.config.trailResources)t.push(n(Ef(o.previewUrl,"",o.textureName)))}const r=new Map;for(const a of await Promise.all(t))a&&!r.has(a.path)&&r.set(a.path,a);return[...r.values()]}async function OB(){try{const s=await fetch(`${_S}/v1/health`,{cache:"no-store"});if(!s.ok)throw new Error(`HTTP ${s.status}`);return{available:!0,...await s.json()}}catch(s){return{available:!1,authorized:!1,error:s instanceof Error?s.message:String(s)}}}async function BB(s,e){const t=await TS(s.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),i=JSON.stringify({schemaVersion:1,projectName:s.projectName,spineVersion:s.spineVersion,skeletonJson:s.skeletonJson,images:t});return new Promise((n,r)=>{const a=new XMLHttpRequest;a.open("POST",`${_S}/v1/convert`),a.responseType="blob",a.setRequestHeader("Content-Type","application/json"),a.upload.onprogress=o=>{e==null||e({phase:"upload",progress:o.lengthComputable&&o.total>0?o.loaded/o.total:null})},a.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),a.onprogress=o=>{e==null||e({phase:"download",progress:o.lengthComputable&&o.total>0?o.loaded/o.total:null})},a.onerror=()=>r(new zh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),a.onload=async()=>{const o=a.response;if(a.status<200||a.status>=300){let c={};try{c=JSON.parse(await o.text())}catch{}r(new zh(c.message||`Spine 连接器返回错误:HTTP ${a.status}`,c.code,c.pairUrl));return}const h=a.getResponseHeader("X-Spine-File-Name");let l=`${zm(s.projectName,"SpineParticle")}.zip`;if(h)try{l=decodeURIComponent(h)}catch{}n({blob:o,fileName:l,spineEditorVersion:a.getResponseHeader("X-Spine-Editor-Version")||s.spineVersion,imageCount:t.length})},a.send(i)})}function LB(s,e){const t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.download=/\.zip$/i.test(e)?e:`${e}.zip`,i.style.display="none",document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const DB=Array.from({length:256},(s,e)=>{let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function NB(s){let e=4294967295;for(const t of s)e=DB[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function UB(s){const e=String(s||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function XB(s=new Date){const e=Math.max(1980,s.getFullYear());return{time:s.getHours()<<11|s.getMinutes()<<5|Math.floor(s.getSeconds()/2),date:e-1980<<9|s.getMonth()+1<<5|s.getDate()}}function Cf(s){const e=new Uint8Array(s);return{bytes:e,view:new DataView(e.buffer)}}function yy(s){const e=new Uint8Array(s.reduce((i,n)=>i+n.length,0));let t=0;for(const i of s)e.set(i,t),t+=i.length;return e}function VB(s){const e=new TextEncoder,t=[],i=[],n=XB();let r=0;for(const h of s){const l=e.encode(UB(h.name)),c=NB(h.data),u=Cf(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,c,!0),u.view.setUint32(18,h.data.length,!0),u.view.setUint32(22,h.data.length,!0),u.view.setUint16(26,l.length,!0),t.push(u.bytes,l,h.data);const d=Cf(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,c,!0),d.view.setUint32(20,h.data.length,!0),d.view.setUint32(24,h.data.length,!0),d.view.setUint16(28,l.length,!0),d.view.setUint32(42,r,!0),i.push(d.bytes,l),r+=u.bytes.length+l.length+h.data.length}const a=yy(i),o=Cf(22);return o.view.setUint32(0,101010256,!0),o.view.setUint16(8,s.length,!0),o.view.setUint16(10,s.length,!0),o.view.setUint32(12,a.length,!0),o.view.setUint32(16,r,!0),new Blob([yy([...t,a,o.bytes])],{type:"application/zip"})}function YB(s){const e=atob(s),t=new Uint8Array(e.length);for(let i=0;ii===".."||/^[a-z]+:/i.test(i))?"images":t.join("/")}function GB(s){return String(s||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function HB(s){const e=await TS(s.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=$B(s.imagesPath);return{blob:VB(e.map(n=>({name:`${t}/${n.path}`,data:YB(n.dataBase64)}))),imageCount:e.length,folder:t}}function jB(s,e){const t=`${GB(e)}-images.zip`,i=URL.createObjectURL(s),n=document.createElement("a");return n.href=i,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3),t}const WB={class:"panel"},zB={class:"panel-scroll"},qB={class:"group config-management"},KB={class:"caret"},ZB={class:"group-body config-management-body"},JB={class:"config-toolbar"},QB=["disabled"],eL={value:""},tL=["value"],iL={class:"group"},sL={class:"caret"},nL={class:"scene-actions"},rL=["disabled"],aL={class:"group-body"},oL={class:"tree scene-tree"},lL=["onClick"],cL={class:"tlabel"},hL=["title","aria-label","onClick"],uL={viewBox:"0 0 24 24","aria-hidden":"true"},dL={key:0,class:"eye-slash",d:"M4 4l16 16"},fL=["onClick"],mL=["onClick"],pL={class:"tlabel"},gL=["title","aria-label","onClick"],vL={viewBox:"0 0 24 24","aria-hidden":"true"},yL={key:0,class:"eye-slash",d:"M4 4l16 16"},xL=["onClick"],bL=["onClick"],wL={class:"tlabel"},SL=["title","aria-label","onClick"],ML={viewBox:"0 0 24 24","aria-hidden":"true"},_L={key:0,class:"eye-slash",d:"M4 4l16 16"},TL=["onClick"],AL=["onClick"],EL={class:"tlabel"},CL=["title","aria-label","onClick"],IL={viewBox:"0 0 24 24","aria-hidden":"true"},RL={key:0,class:"eye-slash",d:"M4 4l16 16"},PL=["onClick"],kL={key:0,class:"empty"},FL={class:"row"},OL={class:"seed-row scene-seed"},BL={class:"field-block"},LL={class:"field-grid"},DL={class:"field-block"},NL={class:"field-block check-field"},UL={class:"field-grid"},XL={class:"compact-field"},VL={class:"compact-field"},YL={class:"field-grid"},$L={class:"compact-field"},GL={class:"compact-field"},HL={key:1,class:"field-grid"},jL={class:"compact-field"},WL={class:"compact-field"},zL={key:2,class:"field-grid"},qL={class:"compact-field"},KL={class:"compact-field"},ZL={class:"field-block"},JL={key:4,class:"field-grid"},QL={class:"compact-field"},eD={class:"compact-field"},tD={class:"collider-follow-section"},iD={class:"follow-path"},sD={class:"field-block"},nD=["value"],rD={class:"field-grid"},aD={class:"compact-field"},oD={class:"compact-field"},lD={class:"follow-path"},cD={class:"field-block"},hD={class:"field-grid"},uD={class:"compact-field"},dD={class:"compact-field"},fD={class:"field-grid"},mD={class:"compact-field"},pD={class:"compact-field"},gD={class:"setting-line"},vD={class:"setting-line"},yD={class:"field-block"},xD={key:4,class:"panel-hint"},bD={class:"group"},wD={class:"caret"},SD={class:"group-body"},MD={class:"segs"},_D={class:"segs stream-behavior-segs"},TD={key:2,class:"stream-loop-options"},AD={class:"loop-section-row"},ED={class:"switch-row"},CD=["checked"],ID={key:0,class:"loop-duration-control"},RD={class:"switch-row loop-duration-toggle"},PD=["checked"],kD={class:"loop-section-duration"},FD=["value"],OD={key:1},BD={key:2,class:"loop-auto-duration"},LD={class:"loop-section-row"},DD={class:"switch-row"},ND=["checked"],UD={key:0,class:"loop-duration-control"},XD={class:"switch-row loop-duration-toggle"},VD=["checked"],YD={class:"loop-section-duration"},$D=["value"],GD={key:1},HD={key:2,class:"loop-auto-duration"},jD={key:3,class:"modifier-hint stream-loop-hint"},WD={class:"group"},zD={class:"caret"},qD={class:"group-body"},KD={class:"row"},ZD={class:"row"},JD=["value","disabled"],QD={key:0,class:"row"},eN={class:"row"},tN={key:0,value:"radial"},iN={key:1,value:"path-normal"},sN={key:2,value:"path-tangent"},nN={class:"group"},rN={class:"caret"},aN={class:"group-body attr-body"},oN={class:"attr-axis-head"},lN={class:"axis-modes"},cN={class:"life-item"},hN={class:"switch-row"},uN={class:"life-item"},dN={class:"switch-row"},fN={class:"axis-modes life-axis"},mN={class:"life-item"},pN={class:"switch-row"},gN={class:"group"},vN={class:"caret"},yN={class:"group-body"},xN={class:"seg"},bN={class:"row"},wN={class:"curve-wrap"},SN={class:"row"},MN=["onUpdate:modelValue"],_N=["onUpdate:modelValue"],TN={class:"row resource-color-row"},AN=["onUpdate:modelValue"],EN=["onUpdate:modelValue"],CN={key:0,class:"row resource-color-picker"},IN=["onUpdate:modelValue"],RN=["value","onChange","onKeydown"],PN={key:0,class:"random-color-hint"},kN={class:"resource-alpha-head"},FN={class:"alpha-modes"},ON=["onClick"],BN=["onClick"],LN=["onClick"],DN={class:"row"},NN=["onUpdate:modelValue"],UN={class:"resource-alpha-curve"},XN={class:"group"},VN={class:"caret"},YN={class:"group-body"},$N={class:"modifier-item"},GN={class:"switch-row modifier-switch"},HN={key:0,class:"modifier-params"},jN={class:"modifier-item"},WN={class:"switch-row modifier-switch"},zN={key:0,class:"modifier-params gravity-params"},qN={class:"modifier-mode-row"},KN={class:"modifier-item"},ZN={class:"switch-row modifier-switch"},JN={key:0,class:"modifier-params gravity-params"},QN={class:"modifier-mode-row"},e4={class:"modifier-item"},t4={class:"switch-row modifier-switch"},i4={key:0,class:"modifier-params"},s4={class:"row"},n4={class:"modifier-item"},r4={class:"switch-row modifier-switch"},a4={key:0,class:"modifier-params"},o4={class:"row"},l4={class:"row"},c4={class:"modifier-item"},h4={class:"switch-row modifier-switch"},u4={key:0,class:"modifier-params trail-params"},d4={class:"row"},f4=["onUpdate:modelValue"],m4={class:"row"},p4=["onUpdate:modelValue"],g4={class:"row"},v4=["onUpdate:modelValue"],y4={class:"switch-row trail-sub-switch"},x4=["onUpdate:modelValue"],b4={class:"switch-row trail-sub-switch"},w4=["onUpdate:modelValue"],S4={class:"trail-mode-head"},M4={class:"alpha-modes"},_4=["onClick"],T4=["onClick"],A4=["onClick"],E4={class:"row"},C4=["onUpdate:modelValue"],I4={key:6,class:"row trail-fixed-color"},R4=["onUpdate:modelValue"],P4=["value","onChange","onKeydown"],k4={class:"trail-mode-head"},F4={class:"alpha-modes"},O4=["onClick"],B4=["onClick"],L4=["onClick"],D4={class:"trail-grid-row"},N4={class:"modifier-item"},U4={class:"switch-row modifier-switch"},X4=["disabled"],V4={key:0,class:"modifier-params emitter-follow-params"},Y4={class:"field-block"},$4=["value"],G4={key:0,value:"bone"},H4={class:"field-block"},j4=["value"],W4={class:"field-block"},z4={class:"field-grid follow-grid"},q4={class:"compact-field"},K4={class:"compact-field"},Z4={class:"field-block"},J4={key:0,class:"bone-follow-target"},Q4={key:1,class:"bone-follow-missing"},e5={class:"field-block"},t5={class:"field-grid follow-grid"},i5={class:"compact-field"},s5={class:"compact-field"},n5={class:"bone-follow-transform-grid"},r5={class:"compact-field"},a5={class:"compact-field"},o5={class:"compact-field"},l5={class:"modifier-item"},c5={class:"switch-row modifier-switch"},h5={key:0,class:"modifier-params collision-filter-params"},u5={class:"collision-filter-tags"},d5=["title"],f5=["aria-label","onClick"],m5=["disabled","title"],p5={key:0,class:"collision-filter-empty"},g5={key:1,class:"collision-filter-picker"},v5=["onClick"],y5={class:"group"},x5={class:"caret"},b5={class:"group-body export-settings"},w5={class:"export-field"},S5={class:"export-field"},M5={class:"export-field"},_5={key:0,class:"export-help"},T5={class:"export-fps-row"},A5={class:"export-field export-fps-field"},E5={class:"export-checkbox"},C5={class:"export-switches"},I5={class:"switch-row export-switch"},R5={class:"switch-row export-switch"},P5={class:"switch-row export-switch export-switch-last"},k5={class:"spine-export-actions"},F5=["disabled","title"],O5=["disabled"],B5=["disabled","title"],L5={key:0},D5=["href"],N5=["href"],U5=$s({__name:"ParticlePanel",setup(s){const e=Kl();e.settings.exportSettings=m1(e.settings.exportSettings);const t=vt(()=>e.settings.exportSettings),i=lt(null),n=lt(""),r=lt([]),a=lt(!1),o=lt(""),h=lt(!1),l=lt(!1),c=lt(null),u=lt(""),d=lt(!1),f=lt(null),p=lt(""),m=lt(""),g=vt(()=>{const $=f.value;return $?$.available?$.spineFound?$.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),v=vt(()=>{var $,S,C,Q,Re,mt;return{ready:!!(($=f.value)!=null&&$.available)&&!!((S=f.value)!=null&&S.spineFound)&&!!((C=f.value)!=null&&C.authorized),warning:!!((Q=f.value)!=null&&Q.available)&&(!((Re=f.value)!=null&&Re.spineFound)||!((mt=f.value)!=null&&mt.authorized))}}),b=vt(()=>{var $,S,C;return!!(($=f.value)!=null&&$.available)&&!!((S=f.value)!=null&&S.spineFound)&&!!((C=f.value)!=null&&C.authorized)}),y=vt(()=>{const $=f.value;return!($!=null&&$.available)||!$.spineFound||$.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),w=vt(()=>{const $=f.value;return $?$.available?$.spineFound?$.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),A=vt(()=>l.value?"正在重新计算并生成 Spine 工程":w.value?`暂不可用:${w.value}`:`调用本机 Spine 自动生成 ${t.value.spineVersion} 工程`);function T($){return $==="跟随导出"?t.value.keyframeCurve==="bezier"?"bezier":"linear":$==="贝塞尔"?"bezier":"linear"}e.systems.length||e.addSystem();function _(){_w(e),h.value=!1,o.value="配置已保存到本地"}async function R($){var Q;const S=$.target,C=(Q=S.files)==null?void 0:Q[0];if(C){o.value="正在加载配置…",h.value=!1;try{await XP(e,C),o.value=`已加载:${C.name}`}catch(Re){h.value=!0,o.value=Re instanceof Error?Re.message:String(Re)}finally{S.value=""}}}async function P(){try{const $=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!$.ok)throw new Error("无法读取预设列表");const S=await $.json();r.value=Array.isArray(S)?S.filter(C=>!!C&&typeof C.name=="string"&&typeof C.file=="string"):[]}catch{r.value=[]}}async function F(){const $=n.value;if(!$)return;a.value=!0,h.value=!1,o.value="正在加载预设…";const S=qv("加载预设",`正在下载 ${$}…`);try{await S.paint();const C=await fetch(`/Preset/${encodeURIComponent($)}`,{cache:"no-store"});if(!C.ok)throw new Error(`无法读取预设:${$}`);const Q=await Z3(C,Re=>{S.update(Re==null?null:Re*55,`正在下载 ${$}…`)});S.update(58,"正在解析预设配置…"),S.update(70,"正在解析并恢复预设资源…"),await Aw(e,Q),o.value=`已加载预设:${$.replace(/\.json$/i,"")}`,await S.finish("预设加载完成")}catch(C){h.value=!0;const Q=C instanceof Error?C.message:String(C);o.value=`${Q},请检查预设文件命名`,await S.fail(Q)}finally{a.value=!1,n.value=""}}Kr(()=>{P(),B(),I=window.setInterval(B,3e3)});let I,k=0;$l(()=>{I!==void 0&&window.clearInterval(I)});async function B(){const $=++k,S=await OB();if($!==k)return;f.value=S;const C=m.value;(C==="CONNECTOR_OFFLINE"?S.available:C==="SPINE_NOT_FOUND"?S.available&&S.spineFound:C==="ORIGIN_NOT_ALLOWED"?S.available&&S.spineFound&&S.authorized:!!C&&S.available&&S.spineFound&&S.authorized)&&(m.value="",p.value="",d.value&&(d.value=!1,u.value=""))}function D(){return new Promise($=>requestAnimationFrame(()=>$()))}async function U($){e.timeline.playing=!1,e.timeline.frame=0,e.timeline.recorded=!1;for(const Q of e.systems)Q.frames=void 0;e.recalcTotalFrames(),await D(),e.timeline.playing=!0;const S=e.timeline.totalFrames/Math.max(1,e.timeline.fps)*1e3,C=performance.now()+Math.max(8e3,S*2.5+3e3);for(;!e.timeline.recorded;){if(performance.now()>C)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");$==null||$(Math.min(.98,e.timeline.frame/Math.max(1,e.timeline.totalFrames-1))),await new Promise(Q=>setTimeout(Q,50))}$==null||$(1)}async function L(){if(!l.value){l.value=!0,c.value="json",d.value=!1,m.value="",p.value="",u.value="正在重新计算粒子动画…";try{await U();const $=ry({systems:e.systems,timeline:e.timeline,settings:t.value});vy($.text,t.value.spineVersion),MO($,t.value.fileName);const S=$.warnings.length?`;${$.warnings.length} 条资源提示(缺图仍已导出)`:"";u.value=`已导出 Spine ${t.value.spineVersion}:${$.particleSystemCount} 个粒子系统、${$.animationCount} 个动画、${$.boneCount} 根骨骼${S}`}catch($){d.value=!0,u.value=$ instanceof Error?$.message:String($)}finally{l.value=!1,c.value=null}}}async function N(){if(l.value)return;l.value=!0,c.value="spine",d.value=!1,m.value="",p.value="",u.value="正在重新计算粒子动画…";const $=qv("导出 Spine 包","正在重新计算粒子动画…");try{await $.paint(),await U(Re=>$.update(Re*18,"正在重新计算粒子动画…")),$.update(20,"正在生成 Spine JSON…");const S=ry({systems:e.systems,timeline:e.timeline,settings:t.value});vy(S.text,t.value.spineVersion),u.value="正在整理图片并调用本机 Spine…";const C=t.value.fileName.replace(/\.json$/i,"")||"SpineParticle",Q=await BB({projectName:C,spineVersion:t.value.spineVersion,skeletonJson:S.text,systems:e.systems},({phase:Re,progress:mt})=>{Re==="images"?$.update(mt==null?null:22+mt*18,"正在整理工程图片…"):Re==="upload"?$.update(mt==null?null:40+mt*30,"正在上传数据到 Spine 连接器…"):Re==="processing"?$.update(null,"Spine 正在转换工程,请稍候…"):$.update(mt==null?null:82+mt*16,"正在下载生成的 Spine 工程包…")});$.update(99,"正在交给浏览器下载…"),LB(Q.blob,Q.fileName),u.value=`已生成 ${Q.fileName}:包含 .spine 工程和 ${Q.imageCount} 张图片,Spine ${Q.spineEditorVersion}`,await B(),await $.finish("Spine 工程包已开始下载")}catch(S){const C=S instanceof Error?S.message:String(S);d.value=!0,m.value=S instanceof zh?S.code:"",S instanceof zh&&S.pairUrl&&(p.value=S.pairUrl),u.value=C,await B(),await $.fail(C)}finally{l.value=!1,c.value=null}}async function O(){if(!l.value){l.value=!0,c.value="images",d.value=!1,m.value="",p.value="",u.value="正在整理当前粒子系统使用的图片…";try{const $=await HB({systems:e.systems,imagesPath:t.value.imagesPath}),S=jB($.blob,t.value.fileName);u.value=`已生成 ${S}:${$.folder}/ 内包含 ${$.imageCount} 张图片`}catch($){d.value=!0,u.value=$ instanceof Error?$.message:String($)}finally{l.value=!1,c.value=null}}}const X=vt(()=>{const $=e.systems.findIndex(S=>S.id===e.activeId);return $>=0?$:0}),E=vt(()=>e.systems[X.value]||null),V=vt(()=>E.value?p1(E.value.config,e.timeline.fps):30),q=vt(()=>{var S;const $=(S=E.value)==null?void 0:S.config;return $?Math.max(1,Math.ceil(Number($.loopDurationFrames)||1)):1}),W=vt(()=>e.activeObjectType),J=vt(()=>e.activeObjectType==="collision"&&e.colliders.find($=>$.id===e.activeObjectId)||null),K=vt(()=>e.activeObjectType==="path"&&e.paths.find($=>$.id===e.activeObjectId)||null),fe=vt(()=>e.activeObjectType==="spine"&&e.spines.find($=>$.id===e.activeObjectId)||null),me=vt(()=>e.activeObjectType==="particle"?e.systems.some($=>$.id===e.activeObjectId):e.activeObjectType==="collision"?e.colliders.some($=>$.id===e.activeObjectId):e.activeObjectType==="path"?e.paths.some($=>$.id===e.activeObjectId):e.spines.some($=>$.id===e.activeObjectId)),we=vt(()=>{const $=e.spines.find(S=>S.selectedBone&&S.bones.some(C=>C.name===S.selectedBone));return $?{spine:$,boneName:$.selectedBone}:null}),Ee=vt(()=>{var C;const $=(C=E.value)==null?void 0:C.config;if(!$||$.emitterFollowMode!=="bone")return null;const S=e.spines.find(Q=>Q.id===$.emitterFollowSpineId);return!S||!S.bones.some(Q=>Q.name===$.emitterFollowBoneName)?null:{spine:S,boneName:$.emitterFollowBoneName}}),pe=lt(!1),Ae=vt(()=>{var S;const $=new Set(((S=E.value)==null?void 0:S.config.collisionColliderIds)||[]);return e.colliders.filter(C=>$.has(C.id))}),G=vt(()=>{var S;const $=new Set(((S=E.value)==null?void 0:S.config.collisionColliderIds)||[]);return e.colliders.filter(C=>!$.has(C.id))});fs(()=>{var $,S;return[($=E.value)==null?void 0:$.id,(S=E.value)==null?void 0:S.config.collision]},()=>{pe.value=!1});function Z($){var C;const S=(C=E.value)==null?void 0:C.config;!S||S.collisionColliderIds.includes($)||(S.collisionColliderIds.push($),pe.value=!1)}function z($){var C;const S=(C=E.value)==null?void 0:C.config;S&&(S.collisionColliderIds=S.collisionColliderIds.filter(Q=>Q!==$))}Jo(()=>{for(const $ of e.systems)$.visible==null&&($.visible=!0);for(const $ of e.colliders)$.visible==null&&($.visible=!0);for(const $ of e.paths)$.visible==null&&($.visible=!0);for(const $ of e.spines)$.visible==null&&($.visible=!0)}),Jo(()=>{if(!E.value)return;const $=Wr(E.value.config);$.lifeMode==="curve"&&($.lifeMode="random"),$.speedMode==="curve"&&($.speedMode="random"),$.scaleMode==="curve"&&($.scaleMode="random"),$.initialRotationMode==="curve"&&($.initialRotationMode="random"),$.mode==="stream"&&!($.duration>0)&&($.duration=1),$.streamBehavior==="loop"&&($.emitterFollow||$.emitterFollowMode!=="none")&&st($)}),Jo(()=>{const $=new Set(e.colliders.map(S=>S.id));for(const S of e.systems){const C=Wr(S.config),Q=C.collisionColliderIds.filter(ut=>$.has(ut));if(Q.length!==C.collisionColliderIds.length&&(C.collisionColliderIds=Q),C.spawnPathId>0&&!e.paths.some(ut=>ut.id===C.spawnPathId)&&(C.spawnPathId=0,(C.emissionAngleMode==="path-normal"||C.emissionAngleMode==="path-tangent")&&(C.emissionAngleMode="fixed")),C.emitterFollowMode!=="bone")continue;const Re=e.spines.find(ut=>ut.id===C.emitterFollowSpineId);!!(Re!=null&&Re.bones.some(ut=>ut.name===C.emitterFollowBoneName))||(C.emitterFollowMode="none",C.emitterFollowSpineId=0,C.emitterFollowBoneName="")}}),Jo(()=>{for(const $ of e.colliders)$.followPathId==null&&($.followPathId=0),$.followDuration>0||($.followDuration=2),$.followPathRotation==null&&($.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes($.followCurveMode)||($.followCurveMode="跟随导出"),(!Array.isArray($.followCurve)||$.followCurve.length<2)&&($.followCurve=[{x:0,y:0},{x:1,y:1}])});const j=[{x:0,y:0},{x:1,y:1}],te=[{x:0,y:1},{x:1,y:1}],he=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],xe=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],oe=[{x:0,y:1},{x:1,y:1}],ge=[{x:0,y:1},{x:1,y:1}],le=Da({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function Oe($){le[$]=!le[$]}function Fe($){var C;const S=(C=E.value)==null?void 0:C.config;S&&(S.mode=$,$==="stream"&&!(S.duration>0)&&(S.duration=1))}function Be($){var Q;const S=(Q=E.value)==null?void 0:Q.config;if(!S)return;const C=Math.min(1800,Math.max(1,Math.ceil(Number($)||1)));S.loopDurationFrames=C}function st($){const S=Dl();$.emitterFollow=!1,$.emitterFollowMode="none",$.emitterFollowPathId=S.emitterFollowPathId,$.emitterFollowSpineId=S.emitterFollowSpineId,$.emitterFollowBoneName=S.emitterFollowBoneName,$.emitterFollowBoneOffsetX=S.emitterFollowBoneOffsetX,$.emitterFollowBoneOffsetY=S.emitterFollowBoneOffsetY,$.emitterFollowBoneRotation=S.emitterFollowBoneRotation,$.emitterFollowBoneScaleX=S.emitterFollowBoneScaleX,$.emitterFollowBoneScaleY=S.emitterFollowBoneScaleY,$.emitterAngleMode=S.emitterAngleMode,$.emitterFollowCurve=S.emitterFollowCurve.map(C=>({...C})),$.emitterFollowDuration=S.emitterFollowDuration,$.emitterFollowSpace=S.emitterFollowSpace,$.emitterFollowDirection=S.emitterFollowDirection,$.emitterFollowOffset=S.emitterFollowOffset}function St($){var Re;const S=(Re=E.value)==null?void 0:Re.config;if(!S||S.streamBehavior===$)return;const C=$==="loop",Q=C?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(Q)&&(st(S),S.streamBehavior=$,C||(S.generateLoopStartAnimation=!1,S.generateLoopEndAnimation=!1))}function At($,S){var Re;const C=(Re=E.value)==null?void 0:Re.config;if(!C)return;const Q=S.target.checked;$==="start"?C.generateLoopStartAnimation=Q:C.generateLoopEndAnimation=Q}function Et($,S){var Re;const C=(Re=E.value)==null?void 0:Re.config;if(!C)return;const Q=Math.min(1800,Math.max(1,Math.ceil(Number(S.target.value)||30)));$==="start"?C.loopStartDurationFrames=Q:C.loopEndDurationFrames=Q}function It($,S){var Re;const C=(Re=E.value)==null?void 0:Re.config;if(!C)return;const Q=S.target.checked;$==="start"?C.loopStartUseCustomDuration=Q:C.loopEndUseCustomDuration=Q}function Kt($,S){const C=$.target.value;if(S.emitterFollowMode=C,C!=="bone"){S.emitterFollowSpineId=0,S.emitterFollowBoneName="";return}Ti(S)}function Ti($){const S=we.value;if(!S){$.emitterFollowMode="none",$.emitterFollowSpineId=0,$.emitterFollowBoneName="";return}$.emitterFollowMode="bone",$.emitterFollowSpineId=S.spine.id,$.emitterFollowBoneName=S.boneName}const Wi={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function zi($){var Q;const S=(Q=E.value)==null?void 0:Q.config;if($==="export"){e.settings.exportSettings=_p();return}if(!S)return;const C=Dl();for(const Re of Wi[$])S[Re]=C[Re]}function dn(){t.value.fps=Math.min(240,Math.max(1,Math.round(Number(t.value.fps)||30)))}function di($){var S;e.selectSystem(((S=e.systems[$])==null?void 0:S.id)??0)}function ce(){e.addSystem()}function de(){e.addCollider()}function Rt(){e.addPath()}function Wt(){e.addSpine()}function Zt(){e.duplicateSelectedObject()}function pt($,S,C=0,Q=0,Re=0,mt=0){return{x:$,y:S,inX:C,inY:Q,outX:Re,outY:mt}}function Rs(){const $=K.value;if(!(!$||!$.preset))if($.preset==="circle"){const C=60.751328;$.points=[pt(110,0,0,-C,0,C),pt(0,110,C,0,-C,0),pt(-110,0,0,C,0,-C),pt(0,-110,-C,0,C,0)],$.closed=!0}else if($.preset==="square")$.points=[pt(-100,-100),pt(100,-100),pt(100,100),pt(-100,100)],$.closed=!0;else{const S=$.preset==="star"?10:6;$.points=Array.from({length:S},(C,Q)=>{const Re=$.preset==="star"&&Q%2?50:110,mt=-Math.PI*.5+Q/S*Math.PI*2;return pt(Math.cos(mt)*Re,Math.sin(mt)*Re)}),$.closed=!0}}function Hs(){K.value&&(K.value.points=[])}function Ui(){E.value&&(E.value.config.seed=Math.floor(Math.random()*999999)+1)}function Ps($){var C;const S=(C=E.value)==null?void 0:C.config;!S||$==="direction"||(S.speedOverLifeMode=$,$==="curve"&&S.speedOverLifeMin===S.speedOverLifeMax&&(S.speedOverLifeMin=0,S.speedOverLifeMax=1))}function br(){var S;const $=(S=E.value)==null?void 0:S.config;!$||$.scaleOverLifeMode!=="curve"||($.scaleOverLifeMin===$.scaleOverLifeMax&&($.scaleOverLifeMin=0,$.scaleOverLifeMax=1),$.scaleYOverLifeMin===$.scaleYOverLifeMax&&($.scaleYOverLifeMin=0,$.scaleYOverLifeMax=1))}function js($){var C;const S=(C=E.value)==null?void 0:C.config;!S||$==="direction"||(S.scaleOverLifeMode=$,br())}const ss={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function $a(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=ss[$.shape];S&&Object.assign($,S)}function Ga(){var S;const $=(S=E.value)==null?void 0:S.config;!$||$.spawnPathId>0||($.emissionAngleMode==="path-normal"||$.emissionAngleMode==="path-tangent")&&($.emissionAngleMode="fixed")}const Qr=lt(null),Ws=lt(null),ws=lt(null),Vn=lt(null),ks=lt(null);function ea(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=Math.max(0,...$.trailResources.map(Q=>Q.id))+1;$.trailResources.push({id:S,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:oe.map(Q=>({...Q})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:te.map(Q=>({...Q})),shapeEnabled:!1,shapeCurve:ge.map(Q=>({...Q}))}),_e()}function ta($){var S;ks.value=$,(S=Vn.value)==null||S.click()}function H($,S){var Re;const C=(Re=E.value)==null?void 0:Re.config;if(!C)return;const Q=$==="trailGridCols"?32:16;C[$]=Math.min(Q,Math.max(2,Math.round(Number(S)||2)))}function Y($,S){var Q;const C=(Q=E.value)==null?void 0:Q.config.trailResources.find(Re=>Re.id===$);C&&(C.boneCount=Math.min(16,Math.max(2,Math.round(Number(S)||2))))}function ee($,S){var Q;const C=(Q=E.value)==null?void 0:Q.config.trailResources.find(Re=>Re.id===$);C&&(C.rotation=Math.max(-360,Math.min(360,Number(S)||0)))}async function ne($){var ut,ni;const S=$.target,C=(ut=S.files)==null?void 0:ut[0],Q=(ni=E.value)==null?void 0:ni.config,Re=Q==null?void 0:Q.trailResources.find(Vt=>Vt.id===ks.value);if(!C||!Re){S.value="";return}const mt=await nt(C);Re.texture=Dr(await gt.fromURL(mt)),Re.previewUrl=mt,Re.textureName=C.name.replace(/\.[^.]+$/,"")||"trail",S.value="",ks.value=null}async function ue($){var Q;const S=(Q=E.value)==null?void 0:Q.config,C=S==null?void 0:S.trailResources.find(Re=>Re.id===$);C&&(C.texture=Dr(await gt.fromURL("/images/trail.png")),C.previewUrl="/images/trail.png",C.textureName="trail",C.weight=100,C.locked=!1,C.rotation=0,C.boneCount=3,C.trailRatio=100,C.lengthMode="fixed",C.length=100,C.lengthMin=100,C.lengthMax=100,C.widthSizeMode="fixed",C.width=100,C.widthMin=100,C.widthMax=100,C.widthMode="particle",C.lifeLengthEnabled=!1,C.lifeLengthCurve=te.map(Re=>({...Re})),C.shapeEnabled=!1,C.shapeCurve=ge.map(Re=>({...Re})),C.colorMode="particle",C.color="#ffffff",C.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],C.blend="normal",C.alphaMode="particle",C.alpha=1,C.alphaCurve=oe.map(Re=>({...Re})),_e())}function ve($){var Q;const S=(Q=E.value)==null?void 0:Q.config.trailResources;if(!S||S.length<=1)return;const C=S.findIndex(Re=>Re.id===$);C>=0&&S.splice(C,1),_e()}function _e(){var Re;const $=(Re=E.value)==null?void 0:Re.config.trailResources;if(!($!=null&&$.length))return;if($.length===1){$[0].weight=100,$[0].locked=!1;return}const S=$.filter(mt=>mt.locked),C=$.filter(mt=>!mt.locked);let Q=S.reduce((mt,ut)=>mt+Math.max(0,Number(ut.weight)||0),0);Q>100&&(si(S,100,!0),Q=100),si(C,100-Q)}function Me($,S){var ni;const C=(ni=E.value)==null?void 0:ni.config.trailResources;if(!(C!=null&&C.length))return;if(C.length===1){C[0].weight=100,C[0].locked=!1;return}const Q=C.find(Vt=>Vt.id===$);if(!Q||Q.locked)return;const Re=C.filter(Vt=>Vt.id!==$&&Vt.locked).reduce((Vt,rs)=>Vt+Math.max(0,Number(rs.weight)||0),0),mt=Math.max(0,100-Re),ut=C.filter(Vt=>Vt.id!==$&&!Vt.locked);Q.weight=Bt(Math.min(mt,Math.max(0,Number(S)||0))),ut.length?si(ut,mt-Q.weight,!0):Q.weight=Bt(mt)}function be($){var Q;const S=(Q=E.value)==null?void 0:Q.config.trailResources;if(!S||S.length===1)return;const C=S.find(Re=>Re.id===$);C&&(C.locked=!C.locked)}function De($,S){const C=S.target;$.color=Se(C.value,$.color),C.value=$.color}function Ie($,S){De($,S),S.target.blur()}function Le(){var C;const $=(C=E.value)==null?void 0:C.config;if(!$)return;const S=Math.max(0,...$.imageResources.map(Q=>Q.id))+1;$.imageResources.push({id:S,texture:$.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:xe.map(Q=>({...Q}))}),Ci()}function Te($){var S;ws.value=$,(S=Qr.value)==null||S.click()}function je($){var S;ws.value=$,(S=Ws.value)==null||S.click()}async function rt($){var ni,Vt;const S=$.target,C=(ni=S.files)==null?void 0:ni[0],Q=(Vt=E.value)==null?void 0:Vt.config,Re=Q==null?void 0:Q.imageResources.find(rs=>rs.id===ws.value);if(!C||!Re){S.value="";return}const mt=await nt(C),ut=Dr(await gt.fromURL(mt));Re.texture=ut,Re.previewUrl=mt,Re.textureFolder="",Re.textureName=C.name.replace(/\.[^.]+$/,"")||"particle",S.value="",ws.value=null}async function Je($){var mt;const S=$.target,C=Array.from(S.files||[]).sort((ut,ni)=>ut.name.localeCompare(ni.name,void 0,{numeric:!0,sensitivity:"base"})),Q=(mt=E.value)==null?void 0:mt.config,Re=Q==null?void 0:Q.imageResources.find(ut=>ut.id===ws.value);if(!C.length||!Re){S.value="";return}Re.sequenceFrames=await Promise.all(C.map(async ut=>{const ni=await nt(ut);return{name:ut.name,previewUrl:ni,texture:Dr(await gt.fromURL(ni))}})),Re.imageMode="sequence",S.value="",ws.value=null}function nt($){return new Promise((S,C)=>{const Q=new FileReader;Q.onload=()=>S(String(Q.result||"")),Q.onerror=()=>C(Q.error),Q.readAsDataURL($)})}function Qe($){var Q;const S=(Q=E.value)==null?void 0:Q.config,C=S==null?void 0:S.imageResources.find(Re=>Re.id===$);!S||!C||(C.texture=S.texture,C.textureName="star",C.textureFolder="",C.previewUrl="/images/star.png",C.imageMode="fixed",C.sequencePlayback="loop-forward",C.sequenceFps=30,C.sequenceFrames=[],C.scale=1,C.anchorX=.5,C.anchorY=.5,C.colorMode="fixed",C.colorStart="#ffffff",C.colorEnd="#ff4d4d",C.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],C.blend="normal",C.independentAlpha="off",C.alpha=1,C.alphaCurveMode="跟随导出",C.alphaCurve=xe.map(Re=>({...Re})),C.locked=!1,Ci())}function Se($,S){let C=$.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(C)&&(C=C.split("").map(Q=>Q+Q).join("")),/^[0-9a-f]{6}$/i.test(C)?`#${C.toLowerCase()}`:S}function at($,S){const C=S.target;$.colorStart=Se(C.value,$.colorStart),C.value=$.colorStart}function Pe($,S){at($,S),S.target.blur()}function Xt($){var Q;const S=(Q=E.value)==null?void 0:Q.config.imageResources;if(!S||S.length<=1)return;const C=S.findIndex(Re=>Re.id===$);C>=0&&S.splice(C,1),Ci()}function Bt($){return Math.round($)}function si($,S,C=!1){if(!$.length)return;const Q=Math.max(0,Bt(S)),Re=C?$.reduce((ut,ni)=>ut+Math.max(0,Number(ni.weight)||0),0):0;let mt=0;$.forEach((ut,ni)=>{const Vt=ni===$.length-1,rs=Bt(Vt?Q-mt:Re>0?Q*Math.max(0,Number(ut.weight)||0)/Re:Q/$.length);ut.weight=rs,mt+=rs})}function Ci(){var Re;const $=(Re=E.value)==null?void 0:Re.config.imageResources;if(!($!=null&&$.length))return;if($.length===1){$[0].weight=100,$[0].locked=!1;return}const S=$.filter(mt=>mt.locked),C=$.filter(mt=>!mt.locked);let Q=S.reduce((mt,ut)=>mt+Math.max(0,Number(ut.weight)||0),0);Q>100&&(si(S,100,!0),Q=100),si(C,100-Q)}function ns($,S){var ni;const C=(ni=E.value)==null?void 0:ni.config.imageResources;if(!(C!=null&&C.length))return;if(C.length===1){C[0].weight=100,C[0].locked=!1;return}const Q=C.find(Vt=>Vt.id===$);if(!Q||Q.locked)return;const Re=C.filter(Vt=>Vt.id!==$&&Vt.locked).reduce((Vt,rs)=>Vt+Math.max(0,Number(rs.weight)||0),0),mt=Math.max(0,100-Re),ut=C.filter(Vt=>Vt.id!==$&&!Vt.locked);if(Q.weight=Bt(Math.min(mt,Math.max(0,Number(S)||0))),!ut.length){Q.weight=Bt(mt);return}si(ut,mt-Q.weight,!0)}function Ha($){var Q;const S=(Q=E.value)==null?void 0:Q.config.imageResources;if(!S||S.length===1)return;const C=S.find(Re=>Re.id===$);C&&(C.locked=!C.locked)}return($,S)=>(ie(),ae("div",WB,[S[391]||(S[391]=M("div",{class:"panel-header"},[M("span",null,"Spine粒子编辑器-Yeomai")],-1)),M("div",zB,[M("div",qB,[M("div",{class:"group-head",onClick:S[0]||(S[0]=C=>Oe("config"))},[M("span",KB,Xe(le.config?"▸":"▾"),1),S[197]||(S[197]=M("span",null,"配置管理",-1))]),ye(M("div",ZB,[M("div",JB,[M("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:_},"保存配置"),M("button",{title:"加载本地编辑器配置",onClick:S[1]||(S[1]=C=>{var Q;return(Q=i.value)==null?void 0:Q.click()})},"加载配置"),ye(M("select",{"onUpdate:modelValue":S[2]||(S[2]=C=>n.value=C),"aria-label":"预设列表",disabled:!r.value.length||a.value,onPointerdown:P,onFocus:P,onChange:F},[M("option",eL,Xe(r.value.length?"选择预设":"无预设文件"),1),(ie(!0),ae(Ke,null,ci(r.value,C=>(ie(),ae("option",{key:C.file,value:C.file},Xe(C.name),9,tL))),128))],40,QB),[[Ht,n.value]]),M("input",{ref_key:"configFileInput",ref:i,hidden:"",type:"file",accept:".json,application/json",onChange:R},null,544)]),o.value?(ie(),ae("div",{key:0,class:Ze(["config-message",{error:h.value}])},Xe(o.value),3)):Ve("",!0)],512),[[Yi,!le.config]])]),M("div",iL,[M("div",{class:"group-head scene-head",onClick:S[3]||(S[3]=C=>Oe("scene"))},[M("span",sL,Xe(le.scene?"▸":"▾"),1),S[198]||(S[198]=M("span",null,"场景对象",-1)),M("div",nL,[M("button",{class:"scene-add",title:"添加粒子系统",onClick:bt(ce,["stop"])},"+粒子"),M("button",{class:"scene-add",title:"添加碰撞体",onClick:bt(de,["stop"])},"+碰撞"),M("button",{class:"scene-add",title:"添加路径",onClick:bt(Rt,["stop"])},"+路径"),M("button",{class:"scene-add",title:"添加 Spine",onClick:bt(Wt,["stop"])},"+Spine"),M("button",{class:"scene-add",disabled:!me.value,title:"复制当前选中的场景对象",onClick:bt(Zt,["stop"])},"+Copy",8,rL)])]),ye(M("div",aL,[M("div",oL,[(ie(!0),ae(Ke,null,ci(ke(e).systems,(C,Q)=>(ie(),ae("div",{key:`particle-${C.id}`,class:Ze(["tree-item scene-object-item",{on:W.value==="particle"&&C.id===ke(e).activeObjectId}]),onClick:Re=>di(Q)},[S[201]||(S[201]=M("span",{class:"tdot"},"●",-1)),M("span",cL,Xe(C.config.name||"ParticleSystem"+(Q+1)),1),M("button",{class:Ze(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":C.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:bt(Re=>C.visible=C.visible===!1,["stop"])},[(ie(),ae("svg",uL,[S[199]||(S[199]=M("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[200]||(S[200]=M("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),ae("path",dL)):Ve("",!0)]))],10,hL),S[202]||(S[202]=M("span",{class:"scene-object-kind"},"粒子",-1)),M("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:bt(Re=>ke(e).removeSystem(C.id),["stop"])},"✕",8,fL)],10,lL))),128)),(ie(!0),ae(Ke,null,ci(ke(e).colliders,C=>(ie(),ae("div",{key:`collision-${C.id}`,class:Ze(["tree-item scene-object-item",{on:W.value==="collision"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("collision",C.id)},[S[205]||(S[205]=M("span",{class:"tdot collision-dot"},"■",-1)),M("span",pL,Xe(C.name),1),M("button",{class:Ze(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":C.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:bt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),ae("svg",vL,[S[203]||(S[203]=M("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[204]||(S[204]=M("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),ae("path",yL)):Ve("",!0)]))],10,gL),S[206]||(S[206]=M("span",{class:"scene-object-kind"},"碰撞",-1)),M("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:bt(Q=>ke(e).removeCollider(C.id),["stop"])},"✕",8,xL)],10,mL))),128)),(ie(!0),ae(Ke,null,ci(ke(e).paths,C=>(ie(),ae("div",{key:`path-${C.id}`,class:Ze(["tree-item scene-object-item",{on:W.value==="path"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("path",C.id)},[S[209]||(S[209]=M("span",{class:"tdot path-dot"},"◇",-1)),M("span",wL,Xe(C.name),1),M("button",{class:Ze(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示路径":"隐藏路径","aria-label":C.visible===!1?"显示路径":"隐藏路径",onClick:bt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),ae("svg",ML,[S[207]||(S[207]=M("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[208]||(S[208]=M("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),ae("path",_L)):Ve("",!0)]))],10,SL),S[210]||(S[210]=M("span",{class:"scene-object-kind"},"路径",-1)),M("button",{class:"scene-object-delete",title:"删除路径",onClick:bt(Q=>ke(e).removePath(C.id),["stop"])},"✕",8,TL)],10,bL))),128)),(ie(!0),ae(Ke,null,ci(ke(e).spines,C=>(ie(),ae("div",{key:`spine-${C.id}`,class:Ze(["tree-item scene-object-item",{on:W.value==="spine"&&C.id===ke(e).activeObjectId}]),onClick:Q=>ke(e).selectSceneObject("spine",C.id)},[S[213]||(S[213]=M("span",{class:"tdot spine-dot"},"◆",-1)),M("span",EL,Xe(C.name),1),M("button",{class:Ze(["scene-object-eye",{off:C.visible===!1}]),title:C.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":C.visible===!1?"显示 Spine":"隐藏 Spine",onClick:bt(Q=>C.visible=C.visible===!1,["stop"])},[(ie(),ae("svg",IL,[S[211]||(S[211]=M("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[212]||(S[212]=M("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),C.visible===!1?(ie(),ae("path",RL)):Ve("",!0)]))],10,CL),S[214]||(S[214]=M("span",{class:"scene-object-kind"},"Spine",-1)),M("button",{class:"scene-object-delete",title:"删除 Spine",onClick:bt(Q=>ke(e).removeSpine(C.id),["stop"])},"✕",8,PL)],10,AL))),128)),!ke(e).systems.length&&!ke(e).colliders.length&&!ke(e).paths.length&&!ke(e).spines.length?(ie(),ae("div",kL,"场景中暂无对象")):Ve("",!0)]),W.value==="particle"&&E.value?(ie(),ae(Ke,{key:0},[M("label",FL,[S[215]||(S[215]=M("span",null,"名称",-1)),ye(M("input",{"onUpdate:modelValue":S[4]||(S[4]=C=>E.value.config.name=C),class:"inp"},null,512),[[ht,E.value.config.name]])]),Ue(qe,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:E.value.config.centerX,"onUpdate:modelValue":S[5]||(S[5]=C=>E.value.config.centerX=C)},null,8,["modelValue"]),Ue(qe,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:E.value.config.centerY,"onUpdate:modelValue":S[6]||(S[6]=C=>E.value.config.centerY=C)},null,8,["modelValue"]),Ue(qe,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:E.value.config.offsetX,"onUpdate:modelValue":S[7]||(S[7]=C=>E.value.config.offsetX=C)},null,8,["modelValue"]),Ue(qe,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:E.value.config.offsetY,"onUpdate:modelValue":S[8]||(S[8]=C=>E.value.config.offsetY=C)},null,8,["modelValue"]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:E.value.config.rootRotation,"onUpdate:modelValue":S[9]||(S[9]=C=>E.value.config.rootRotation=C)},null,8,["modelValue"]),Ue(qe,{label:"缩放X",min:.05,max:10,step:.05,modelValue:E.value.config.rootScaleX,"onUpdate:modelValue":S[10]||(S[10]=C=>E.value.config.rootScaleX=C)},null,8,["modelValue"]),Ue(qe,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:E.value.config.rootScaleY,"onUpdate:modelValue":S[11]||(S[11]=C=>E.value.config.rootScaleY=C)},null,8,["modelValue"]),M("div",OL,[S[216]||(S[216]=M("label",{for:"system-seed"},"随机种子",-1)),ye(M("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":S[12]||(S[12]=C=>E.value.config.seed=C),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[ht,E.value.config.seed,void 0,{number:!0}]]),M("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:Ui},"⚄")]),S[217]||(S[217]=M("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):J.value?(ie(),ae(Ke,{key:1},[S[242]||(S[242]=M("div",{class:"object-editor-title"},"碰撞体属性",-1)),M("label",BL,[S[218]||(S[218]=M("span",null,"碰撞体名称",-1)),ye(M("input",{"onUpdate:modelValue":S[13]||(S[13]=C=>J.value.name=C),class:"inp"},null,512),[[ht,J.value.name]])]),M("div",LL,[M("label",DL,[S[220]||(S[220]=M("span",null,"类型",-1)),ye(M("select",{"onUpdate:modelValue":S[14]||(S[14]=C=>J.value.shape=C),class:"inp"},[...S[219]||(S[219]=[Ts('',5)])],512),[[Ht,J.value.shape]])]),M("label",NL,[S[221]||(S[221]=M("span",null,"启用",-1)),ye(M("input",{"onUpdate:modelValue":S[15]||(S[15]=C=>J.value.enabled=C),type:"checkbox"},null,512),[[ei,J.value.enabled]])])]),M("div",UL,[M("label",XL,[S[222]||(S[222]=M("span",null,"X 位置",-1)),ye(M("input",{"onUpdate:modelValue":S[16]||(S[16]=C=>J.value.x=C),type:"number",class:"inp"},null,512),[[ht,J.value.x,void 0,{number:!0}]])]),M("label",VL,[S[223]||(S[223]=M("span",null,"Y 位置",-1)),ye(M("input",{"onUpdate:modelValue":S[17]||(S[17]=C=>J.value.y=C),type:"number",class:"inp"},null,512),[[ht,J.value.y,void 0,{number:!0}]])])]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:J.value.rotation,"onUpdate:modelValue":S[18]||(S[18]=C=>J.value.rotation=C)},null,8,["modelValue"]),M("div",YL,[M("label",$L,[S[224]||(S[224]=M("span",null,"缩放 X",-1)),ye(M("input",{"onUpdate:modelValue":S[19]||(S[19]=C=>J.value.scaleX=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,J.value.scaleX,void 0,{number:!0}]])]),M("label",GL,[S[225]||(S[225]=M("span",null,"缩放 Y",-1)),ye(M("input",{"onUpdate:modelValue":S[20]||(S[20]=C=>J.value.scaleY=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,J.value.scaleY,void 0,{number:!0}]])])]),J.value.shape==="circle"?(ie(),Jt(qe,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:J.value.radius,"onUpdate:modelValue":S[21]||(S[21]=C=>J.value.radius=C)},null,8,["modelValue"])):J.value.shape==="ellipse"?(ie(),ae("div",HL,[M("label",jL,[S[226]||(S[226]=M("span",null,"X 半径",-1)),ye(M("input",{"onUpdate:modelValue":S[22]||(S[22]=C=>J.value.radiusX=C),type:"number",min:"1",class:"inp"},null,512),[[ht,J.value.radiusX,void 0,{number:!0}]])]),M("label",WL,[S[227]||(S[227]=M("span",null,"Y 半径",-1)),ye(M("input",{"onUpdate:modelValue":S[23]||(S[23]=C=>J.value.radiusY=C),type:"number",min:"1",class:"inp"},null,512),[[ht,J.value.radiusY,void 0,{number:!0}]])])])):(ie(),ae("div",zL,[M("label",qL,[S[228]||(S[228]=M("span",null,"宽度",-1)),ye(M("input",{"onUpdate:modelValue":S[24]||(S[24]=C=>J.value.width=C),type:"number",min:"1",class:"inp"},null,512),[[ht,J.value.width,void 0,{number:!0}]])]),M("label",KL,[S[229]||(S[229]=M("span",null,"高度",-1)),ye(M("input",{"onUpdate:modelValue":S[25]||(S[25]=C=>J.value.height=C),type:"number",min:"1",class:"inp"},null,512),[[ht,J.value.height,void 0,{number:!0}]])])])),J.value.shape==="polygon"||J.value.shape==="custom"?(ie(),Jt(qe,{key:3,label:"边数",min:3,max:16,step:1,modelValue:J.value.sides,"onUpdate:modelValue":S[26]||(S[26]=C=>J.value.sides=C)},null,8,["modelValue"])):Ve("",!0),M("label",ZL,[S[231]||(S[231]=M("span",null,"碰撞响应",-1)),ye(M("select",{"onUpdate:modelValue":S[27]||(S[27]=C=>J.value.response=C),class:"inp"},[...S[230]||(S[230]=[M("option",{value:"physics"},"物理(弹跳/摩擦)",-1),M("option",{value:"pause"},"暂停(停止不动)",-1),M("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[Ht,J.value.response]])]),J.value.response==="physics"?(ie(),ae("div",JL,[M("label",QL,[S[232]||(S[232]=M("span",null,"弹性 (0-1)",-1)),ye(M("input",{"onUpdate:modelValue":S[28]||(S[28]=C=>J.value.elasticity=C),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[ht,J.value.elasticity,void 0,{number:!0}]])]),M("label",eD,[S[233]||(S[233]=M("span",null,"摩擦 (0-1)",-1)),ye(M("input",{"onUpdate:modelValue":S[29]||(S[29]=C=>J.value.friction=C),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[ht,J.value.friction,void 0,{number:!0}]])])])):Ve("",!0),M("div",tD,[M("label",iD,[ye(M("input",{"onUpdate:modelValue":S[30]||(S[30]=C=>J.value.followPath=C),type:"checkbox"},null,512),[[ei,J.value.followPath]]),S[234]||(S[234]=Qt("跟随路径移动",-1))]),J.value.followPath?(ie(),ae(Ke,{key:0},[M("label",sD,[S[236]||(S[236]=M("span",null,"目标路径",-1)),ye(M("select",{"onUpdate:modelValue":S[31]||(S[31]=C=>J.value.followPathId=C),class:"inp"},[S[235]||(S[235]=M("option",{value:0},"(未选择)",-1)),(ie(!0),ae(Ke,null,ci(ke(e).paths,C=>(ie(),ae("option",{key:C.id,value:C.id},Xe(C.name),9,nD))),128))],512),[[Ht,J.value.followPathId,void 0,{number:!0}]])]),M("div",rD,[M("label",aD,[S[237]||(S[237]=M("span",null,"移动时长(秒)",-1)),ye(M("input",{"onUpdate:modelValue":S[32]||(S[32]=C=>J.value.followDuration=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,J.value.followDuration,void 0,{number:!0}]])]),M("label",oD,[S[239]||(S[239]=M("span",null,"曲线模式",-1)),ye(M("select",{"onUpdate:modelValue":S[33]||(S[33]=C=>J.value.followCurveMode=C),class:"inp"},[...S[238]||(S[238]=[M("option",null,"跟随导出",-1),M("option",null,"线性",-1),M("option",null,"贝塞尔",-1)])],512),[[Ht,J.value.followCurveMode]])])]),M("label",lD,[ye(M("input",{"onUpdate:modelValue":S[34]||(S[34]=C=>J.value.followPathRotation=C),type:"checkbox"},null,512),[[ei,J.value.followPathRotation]]),S[240]||(S[240]=Qt("方向沿路径",-1))]),S[241]||(S[241]=M("div",{class:"collider-curve-title"},[Qt("移动进度曲线 "),M("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),Ue(xn,{"model-value":J.value.followCurve||j,"default-value":j,mode:T(J.value.followCurveMode),"onUpdate:modelValue":S[35]||(S[35]=C=>J.value.followCurve=C)},null,8,["model-value","mode"])],64)):Ve("",!0)])],64)):K.value?(ie(),ae(Ke,{key:2},[S[252]||(S[252]=M("div",{class:"object-editor-title"},"路径属性",-1)),M("label",cD,[S[243]||(S[243]=M("span",null,"路径名称",-1)),ye(M("input",{"onUpdate:modelValue":S[36]||(S[36]=C=>K.value.name=C),class:"inp"},null,512),[[ht,K.value.name]])]),M("div",hD,[M("label",uD,[S[244]||(S[244]=M("span",null,"X 位置",-1)),ye(M("input",{"onUpdate:modelValue":S[37]||(S[37]=C=>K.value.x=C),type:"number",class:"inp"},null,512),[[ht,K.value.x,void 0,{number:!0}]])]),M("label",dD,[S[245]||(S[245]=M("span",null,"Y 位置",-1)),ye(M("input",{"onUpdate:modelValue":S[38]||(S[38]=C=>K.value.y=C),type:"number",class:"inp"},null,512),[[ht,K.value.y,void 0,{number:!0}]])])]),Ue(qe,{label:"旋转",min:-360,max:360,step:1,modelValue:K.value.rotation,"onUpdate:modelValue":S[39]||(S[39]=C=>K.value.rotation=C)},null,8,["modelValue"]),M("div",fD,[M("label",mD,[S[246]||(S[246]=M("span",null,"缩放 X",-1)),ye(M("input",{"onUpdate:modelValue":S[40]||(S[40]=C=>K.value.scaleX=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,K.value.scaleX,void 0,{number:!0}]])]),M("label",pD,[S[247]||(S[247]=M("span",null,"缩放 Y",-1)),ye(M("input",{"onUpdate:modelValue":S[41]||(S[41]=C=>K.value.scaleY=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,K.value.scaleY,void 0,{number:!0}]])])]),M("label",gD,[S[248]||(S[248]=M("span",null,"闭合路径",-1)),ye(M("input",{"onUpdate:modelValue":S[42]||(S[42]=C=>K.value.closed=C),type:"checkbox"},null,512),[[ei,K.value.closed]])]),M("label",vD,[S[249]||(S[249]=M("span",null,"路径颜色",-1)),ye(M("input",{"onUpdate:modelValue":S[43]||(S[43]=C=>K.value.color=C),type:"color",class:"path-color"},null,512),[[ht,K.value.color]])]),S[253]||(S[253]=Ts('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),M("label",yD,[S[251]||(S[251]=M("span",null,"应用预设形状",-1)),ye(M("select",{"onUpdate:modelValue":S[44]||(S[44]=C=>K.value.preset=C),class:"inp"},[...S[250]||(S[250]=[Ts('',5)])],512),[[Ht,K.value.preset]])]),M("button",{class:"path-action primary",onClick:Rs},"应用预设"),M("button",{class:"path-action",onClick:Hs},"清空锚点")],64)):fe.value?(ie(),Jt(q3,{key:3,"spine-object":fe.value},null,8,["spine-object"])):(ie(),ae("div",xD,"使用右上角按钮创建场景对象"))],512),[[Yi,!le.scene]])]),W.value==="particle"&&E.value?(ie(),ae(Ke,{key:0},[M("div",bD,[M("div",{class:"group-head",onClick:S[46]||(S[46]=C=>Oe("emitMode"))},[M("span",wD,Xe(le.emitMode?"▸":"▾"),1),S[254]||(S[254]=M("span",null,"发射模式",-1)),M("button",{class:"group-reset",title:"重置发射模式参数",onClick:S[45]||(S[45]=bt(C=>zi("emitMode"),["stop"]))},"重置")]),ye(M("div",SD,[M("div",MD,[M("button",{class:Ze(["seg",{on:E.value.config.mode==="stream"}]),onClick:S[47]||(S[47]=C=>Fe("stream"))},"持续",2),M("button",{class:Ze(["seg",{on:E.value.config.mode==="burst"}]),onClick:S[48]||(S[48]=C=>Fe("burst"))},"爆发",2)]),E.value.config.mode==="stream"?(ie(),ae(Ke,{key:0},[M("div",_D,[M("button",{class:Ze(["seg",{on:E.value.config.streamBehavior==="normal"}]),onClick:S[49]||(S[49]=C=>St("normal"))},"常规持续",2),M("button",{class:Ze(["seg",{on:E.value.config.streamBehavior==="loop"}]),onClick:S[50]||(S[50]=C=>St("loop"))},"循环持续",2)]),Ue(qe,{label:"发射速率",min:1,max:300,step:1,modelValue:E.value.config.rate,"onUpdate:modelValue":S[51]||(S[51]=C=>E.value.config.rate=C)},null,8,["modelValue"]),E.value.config.streamBehavior==="normal"?(ie(),Jt(qe,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:E.value.config.duration,"onUpdate:modelValue":S[52]||(S[52]=C=>E.value.config.duration=C)},null,8,["modelValue"])):(ie(),Jt(qe,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":q.value,"onUpdate:modelValue":Be},null,8,["model-value"])),E.value.config.streamBehavior==="loop"?(ie(),ae("div",TD,[M("div",AD,[M("label",ED,[M("input",{type:"checkbox",checked:E.value.config.generateLoopStartAnimation,onChange:S[53]||(S[53]=C=>At("start",C))},null,40,CD),S[255]||(S[255]=M("span",{class:"switch-ui"},null,-1)),S[256]||(S[256]=M("span",null,"生成开始循环动画",-1))]),E.value.config.generateLoopStartAnimation?(ie(),ae("div",ID,[M("label",RD,[M("input",{type:"checkbox",checked:E.value.config.loopStartUseCustomDuration,onChange:S[54]||(S[54]=C=>It("start",C))},null,40,PD),S[257]||(S[257]=M("span",{class:"switch-ui"},null,-1)),S[258]||(S[258]=M("span",null,"指定时长",-1))]),M("label",kD,[E.value.config.loopStartUseCustomDuration?(ie(),ae("input",{key:0,value:E.value.config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:S[55]||(S[55]=C=>Et("start",C))},null,40,FD)):Ve("",!0),E.value.config.loopStartUseCustomDuration?(ie(),ae("span",OD,"f")):(ie(),ae("span",BD,"自动 "+Xe(V.value)+"f",1))])])):Ve("",!0)]),M("div",LD,[M("label",DD,[M("input",{type:"checkbox",checked:E.value.config.generateLoopEndAnimation,onChange:S[56]||(S[56]=C=>At("end",C))},null,40,ND),S[259]||(S[259]=M("span",{class:"switch-ui"},null,-1)),S[260]||(S[260]=M("span",null,"生成结束循环动画",-1))]),E.value.config.generateLoopEndAnimation?(ie(),ae("div",UD,[M("label",XD,[M("input",{type:"checkbox",checked:E.value.config.loopEndUseCustomDuration,onChange:S[57]||(S[57]=C=>It("end",C))},null,40,VD),S[261]||(S[261]=M("span",{class:"switch-ui"},null,-1)),S[262]||(S[262]=M("span",null,"指定时长",-1))]),M("label",YD,[E.value.config.loopEndUseCustomDuration?(ie(),ae("input",{key:0,value:E.value.config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:S[58]||(S[58]=C=>Et("end",C))},null,40,$D)):Ve("",!0),E.value.config.loopEndUseCustomDuration?(ie(),ae("span",GD,"f")):(ie(),ae("span",HD,"自动 "+Xe(V.value)+"f",1))])])):Ve("",!0)])])):Ve("",!0),E.value.config.streamBehavior==="loop"?(ie(),ae("div",jD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):Ve("",!0)],64)):(ie(),Jt(qe,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:E.value.config.burstCount,"onUpdate:modelValue":S[59]||(S[59]=C=>E.value.config.burstCount=C)},null,8,["modelValue"])),Ue(qe,{label:"延迟时间",min:0,max:5,step:.1,modelValue:E.value.config.delay,"onUpdate:modelValue":S[60]||(S[60]=C=>E.value.config.delay=C)},null,8,["modelValue"])],512),[[Yi,!le.emitMode]])]),M("div",WD,[M("div",{class:"group-head",onClick:S[62]||(S[62]=C=>Oe("shape"))},[M("span",zD,Xe(le.shape?"▸":"▾"),1),S[263]||(S[263]=M("span",null,"发射器形状",-1)),M("button",{class:"group-reset",title:"重置发射器形状参数",onClick:S[61]||(S[61]=bt(C=>zi("shape"),["stop"]))},"重置")]),ye(M("div",qD,[M("label",KD,[S[265]||(S[265]=M("span",null,"形状",-1)),ye(M("select",{"onUpdate:modelValue":S[63]||(S[63]=C=>E.value.config.shape=C),class:"inp",onChange:$a},[...S[264]||(S[264]=[Ts('',5)])],544),[[Ht,E.value.config.shape]])]),E.value.config.shape==="circle"||E.value.config.shape==="cone"?(ie(),ae(Ke,{key:0},[Ue(qe,{label:E.value.config.shape==="cone"?"内径":"内半径",min:0,max:E.value.config.outerRadius,step:1,modelValue:E.value.config.innerRadius,"onUpdate:modelValue":S[64]||(S[64]=C=>E.value.config.innerRadius=C)},null,8,["label","max","modelValue"]),Ue(qe,{label:E.value.config.shape==="cone"?"外径":"外半径",min:E.value.config.innerRadius,max:300,step:1,modelValue:E.value.config.outerRadius,"onUpdate:modelValue":S[65]||(S[65]=C=>E.value.config.outerRadius=C)},null,8,["label","min","modelValue"])],64)):Ve("",!0),E.value.config.shape==="cone"?(ie(),ae(Ke,{key:1},[Ue(qe,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:E.value.config.coneDirection,"onUpdate:modelValue":S[66]||(S[66]=C=>E.value.config.coneDirection=C)},null,8,["modelValue"]),Ue(qe,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:E.value.config.coneAngle,"onUpdate:modelValue":S[67]||(S[67]=C=>E.value.config.coneAngle=C)},null,8,["modelValue"])],64)):E.value.config.shape==="rect"?(ie(),ae(Ke,{key:2},[Ue(qe,{label:"内宽",min:0,max:E.value.config.outerRectW,step:1,modelValue:E.value.config.innerRectW,"onUpdate:modelValue":S[68]||(S[68]=C=>E.value.config.innerRectW=C)},null,8,["max","modelValue"]),Ue(qe,{label:"内高",min:0,max:E.value.config.outerRectH,step:1,modelValue:E.value.config.innerRectH,"onUpdate:modelValue":S[69]||(S[69]=C=>E.value.config.innerRectH=C)},null,8,["max","modelValue"]),Ue(qe,{label:"外宽",min:E.value.config.innerRectW,max:400,step:1,modelValue:E.value.config.outerRectW,"onUpdate:modelValue":S[70]||(S[70]=C=>E.value.config.outerRectW=C)},null,8,["min","modelValue"]),Ue(qe,{label:"外高",min:E.value.config.innerRectH,max:400,step:1,modelValue:E.value.config.outerRectH,"onUpdate:modelValue":S[71]||(S[71]=C=>E.value.config.outerRectH=C)},null,8,["min","modelValue"])],64)):E.value.config.shape==="path"?(ie(),ae(Ke,{key:3},[M("label",ZD,[S[267]||(S[267]=M("span",null,"选择路径",-1)),ye(M("select",{"onUpdate:modelValue":S[72]||(S[72]=C=>E.value.config.spawnPathId=C),class:"inp",onChange:Ga},[S[266]||(S[266]=M("option",{value:0},"无路径(点发射)",-1)),(ie(!0),ae(Ke,null,ci(ke(e).paths,C=>(ie(),ae("option",{key:C.id,value:C.id,disabled:!C.enabled},Xe(C.name),9,JD))),128))],544),[[Ht,E.value.config.spawnPathId,void 0,{number:!0}]])]),E.value.config.spawnPathId>0?(ie(),ae("label",QD,[S[269]||(S[269]=M("span",null,"出生分布",-1)),ye(M("select",{"onUpdate:modelValue":S[73]||(S[73]=C=>E.value.config.spawnPathDistribution=C),class:"inp"},[...S[268]||(S[268]=[M("option",{value:"fixed"},"等间距固定分布",-1),M("option",{value:"random"},"随机分布",-1)])],512),[[Ht,E.value.config.spawnPathDistribution]])])):Ve("",!0)],64)):Ve("",!0),S[273]||(S[273]=M("div",{class:"divider"},null,-1)),M("label",eN,[S[272]||(S[272]=M("span",null,"发射角度",-1)),ye(M("select",{"onUpdate:modelValue":S[74]||(S[74]=C=>E.value.config.emissionAngleMode=C),class:"inp"},[S[270]||(S[270]=M("option",{value:"fixed"},"固定",-1)),S[271]||(S[271]=M("option",{value:"random"},"随机",-1)),E.value.config.shape==="circle"||E.value.config.shape==="rect"||E.value.config.shape==="cone"?(ie(),ae("option",tN,"径向(中心向外)")):Ve("",!0),E.value.config.shape==="path"&&E.value.config.spawnPathId>0?(ie(),ae("option",iN,"垂直于路径")):Ve("",!0),E.value.config.shape==="path"&&E.value.config.spawnPathId>0?(ie(),ae("option",sN,"沿路径方向")):Ve("",!0)],512),[[Ht,E.value.config.emissionAngleMode]])]),E.value.config.emissionAngleMode==="fixed"?(ie(),Jt(qe,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:E.value.config.direction,"onUpdate:modelValue":S[75]||(S[75]=C=>E.value.config.direction=C)},null,8,["modelValue"])):E.value.config.emissionAngleMode==="random"?(ie(),ae(Ke,{key:5},[Ue(qe,{label:"基准角度",min:-360,max:360,step:1,modelValue:E.value.config.direction,"onUpdate:modelValue":S[76]||(S[76]=C=>E.value.config.direction=C)},null,8,["modelValue"]),Ue(qe,{label:"随机范围",min:0,max:360,step:1,modelValue:E.value.config.spread,"onUpdate:modelValue":S[77]||(S[77]=C=>E.value.config.spread=C)},null,8,["modelValue"])],64)):Ve("",!0)],512),[[Yi,!le.shape]])]),M("div",nN,[M("div",{class:"group-head",onClick:S[79]||(S[79]=C=>Oe("attr"))},[M("span",rN,Xe(le.attr?"▸":"▾"),1),S[274]||(S[274]=M("span",null,"粒子属性",-1)),M("button",{class:"group-reset",title:"重置粒子属性参数",onClick:S[78]||(S[78]=bt(C=>zi("attr"),["stop"]))},"重置")]),ye(M("div",aN,[S[282]||(S[282]=M("div",{class:"attr-section-title"},"粒子初始参数",-1)),Ue(jn,{label:"初始生命周期","allow-curve":!1,mode:E.value.config.lifeMode,"onUpdate:mode":S[80]||(S[80]=C=>E.value.config.lifeMode=C),"value-min":E.value.config.lifeMin,"onUpdate:valueMin":S[81]||(S[81]=C=>E.value.config.lifeMin=C),"value-max":E.value.config.lifeMax,"onUpdate:valueMax":S[82]||(S[82]=C=>E.value.config.lifeMax=C),curve:E.value.config.lifeCurve,"onUpdate:curve":S[83]||(S[83]=C=>E.value.config.lifeCurve=C),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),Ue(jn,{label:"初始速度","allow-curve":!1,mode:E.value.config.speedMode,"onUpdate:mode":S[84]||(S[84]=C=>E.value.config.speedMode=C),"value-min":E.value.config.speedMin,"onUpdate:valueMin":S[85]||(S[85]=C=>E.value.config.speedMin=C),"value-max":E.value.config.speedMax,"onUpdate:valueMax":S[86]||(S[86]=C=>E.value.config.speedMax=C),curve:E.value.config.speedCurve,"onUpdate:curve":S[87]||(S[87]=C=>E.value.config.speedCurve=C),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),M("div",oN,[S[275]||(S[275]=M("span",null,"初始缩放",-1)),M("div",lN,[M("button",{class:Ze(["axis-mode",{on:E.value.config.scaleAxisMode==="uniform"}]),onClick:S[88]||(S[88]=C=>E.value.config.scaleAxisMode="uniform")},"统一",2),M("button",{class:Ze(["axis-mode",{on:E.value.config.scaleAxisMode==="separate"}]),onClick:S[89]||(S[89]=C=>E.value.config.scaleAxisMode="separate")},"XY分离",2)])]),Ue(jn,{label:E.value.config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:E.value.config.scaleMode,"onUpdate:mode":S[90]||(S[90]=C=>E.value.config.scaleMode=C),"value-min":E.value.config.scaleMin,"onUpdate:valueMin":S[91]||(S[91]=C=>E.value.config.scaleMin=C),"value-max":E.value.config.scaleMax,"onUpdate:valueMax":S[92]||(S[92]=C=>E.value.config.scaleMax=C),curve:E.value.config.scaleCurve,"onUpdate:curve":S[93]||(S[93]=C=>E.value.config.scaleCurve=C),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),E.value.config.scaleAxisMode==="separate"?(ie(),Jt(jn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:E.value.config.scaleMode,"onUpdate:mode":S[94]||(S[94]=C=>E.value.config.scaleMode=C),"value-min":E.value.config.scaleYMin,"onUpdate:valueMin":S[95]||(S[95]=C=>E.value.config.scaleYMin=C),"value-max":E.value.config.scaleYMax,"onUpdate:valueMax":S[96]||(S[96]=C=>E.value.config.scaleYMax=C),curve:E.value.config.scaleYCurve,"onUpdate:curve":S[97]||(S[97]=C=>E.value.config.scaleYCurve=C),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):Ve("",!0),Ue(jn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:E.value.config.initialRotationMode,"onUpdate:mode":S[98]||(S[98]=C=>E.value.config.initialRotationMode=C),"value-min":E.value.config.initialRotationMin,"onUpdate:valueMin":S[99]||(S[99]=C=>E.value.config.initialRotationMin=C),"value-max":E.value.config.initialRotationMax,"onUpdate:valueMax":S[100]||(S[100]=C=>E.value.config.initialRotationMax=C),curve:E.value.config.initialRotationCurve,"onUpdate:curve":S[101]||(S[101]=C=>E.value.config.initialRotationCurve=C),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),S[283]||(S[283]=M("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),M("div",cN,[M("label",hN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[102]||(S[102]=C=>E.value.config.speedOverLifeEnabled=C)},null,512),[[ei,E.value.config.speedOverLifeEnabled]]),S[276]||(S[276]=M("span",{class:"switch-ui"},null,-1)),S[277]||(S[277]=M("span",null,"生命周期内速度",-1))]),E.value.config.speedOverLifeEnabled?(ie(),Jt(jn,{key:0,label:"速度倍率",mode:E.value.config.speedOverLifeMode,"onUpdate:mode":Ps,"value-min":E.value.config.speedOverLifeMin,"onUpdate:valueMin":S[103]||(S[103]=C=>E.value.config.speedOverLifeMin=C),"value-max":E.value.config.speedOverLifeMax,"onUpdate:valueMax":S[104]||(S[104]=C=>E.value.config.speedOverLifeMax=C),curve:E.value.config.speedOverLifeCurve,"onUpdate:curve":S[105]||(S[105]=C=>E.value.config.speedOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Ve("",!0)]),M("div",uN,[M("label",dN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[106]||(S[106]=C=>E.value.config.scaleOverLifeEnabled=C),onChange:br},null,544),[[ei,E.value.config.scaleOverLifeEnabled]]),S[278]||(S[278]=M("span",{class:"switch-ui"},null,-1)),S[279]||(S[279]=M("span",null,"生命周期内缩放",-1))]),E.value.config.scaleOverLifeEnabled?(ie(),ae(Ke,{key:0},[M("div",fN,[M("button",{class:Ze(["axis-mode",{on:E.value.config.scaleOverLifeAxisMode==="uniform"}]),onClick:S[107]||(S[107]=C=>E.value.config.scaleOverLifeAxisMode="uniform")},"统一",2),M("button",{class:Ze(["axis-mode",{on:E.value.config.scaleOverLifeAxisMode==="separate"}]),onClick:S[108]||(S[108]=C=>E.value.config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),Ue(jn,{label:E.value.config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:E.value.config.scaleOverLifeMode,"onUpdate:mode":js,"value-min":E.value.config.scaleOverLifeMin,"onUpdate:valueMin":S[109]||(S[109]=C=>E.value.config.scaleOverLifeMin=C),"value-max":E.value.config.scaleOverLifeMax,"onUpdate:valueMax":S[110]||(S[110]=C=>E.value.config.scaleOverLifeMax=C),curve:E.value.config.scaleOverLifeCurve,"onUpdate:curve":S[111]||(S[111]=C=>E.value.config.scaleOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","value-min","value-max","curve"]),E.value.config.scaleOverLifeAxisMode==="separate"?(ie(),Jt(jn,{key:0,label:"倍率 Y","show-modes":!1,mode:E.value.config.scaleOverLifeMode,"onUpdate:mode":S[112]||(S[112]=C=>E.value.config.scaleOverLifeMode=C),"value-min":E.value.config.scaleYOverLifeMin,"onUpdate:valueMin":S[113]||(S[113]=C=>E.value.config.scaleYOverLifeMin=C),"value-max":E.value.config.scaleYOverLifeMax,"onUpdate:valueMax":S[114]||(S[114]=C=>E.value.config.scaleYOverLifeMax=C),curve:E.value.config.scaleYOverLifeCurve,"onUpdate:curve":S[115]||(S[115]=C=>E.value.config.scaleYOverLifeCurve=C),"default-curve":te,min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Ve("",!0)],64)):Ve("",!0)]),M("div",mN,[M("label",pN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[116]||(S[116]=C=>E.value.config.rotationOverLifeEnabled=C)},null,512),[[ei,E.value.config.rotationOverLifeEnabled]]),S[280]||(S[280]=M("span",{class:"switch-ui"},null,-1)),S[281]||(S[281]=M("span",null,"生命周期内旋转",-1))]),E.value.config.rotationOverLifeEnabled?(ie(),Jt(jn,{key:0,label:"旋转速度",mode:E.value.config.rotationOverLifeMode,"onUpdate:mode":S[117]||(S[117]=C=>E.value.config.rotationOverLifeMode=C),"value-min":E.value.config.rotationSpeedMin,"onUpdate:valueMin":S[118]||(S[118]=C=>E.value.config.rotationSpeedMin=C),"value-max":E.value.config.rotationSpeedMax,"onUpdate:valueMax":S[119]||(S[119]=C=>E.value.config.rotationSpeedMax=C),curve:E.value.config.rotationOverLifeCurve,"onUpdate:curve":S[120]||(S[120]=C=>E.value.config.rotationOverLifeCurve=C),"default-curve":j,min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve"])):Ve("",!0)])],512),[[Yi,!le.attr]])]),M("div",gN,[M("div",{class:"group-head",onClick:S[122]||(S[122]=C=>Oe("look"))},[M("span",vN,Xe(le.look?"▸":"▾"),1),S[284]||(S[284]=M("span",null,"外观与资源",-1)),M("button",{class:"group-reset",title:"重置外观与资源参数",onClick:S[121]||(S[121]=bt(C=>zi("look"),["stop"]))},"重置")]),ye(M("div",yN,[S[298]||(S[298]=M("div",{class:"look-title"},"透明度",-1)),M("div",xN,[M("button",{class:Ze(["seg-btn",{active:E.value.config.alphaMode==="curve"}]),onClick:S[123]||(S[123]=C=>E.value.config.alphaMode="curve")},"曲线",2),M("button",{class:Ze(["seg-btn",{active:E.value.config.alphaMode==="fixed"}]),onClick:S[124]||(S[124]=C=>E.value.config.alphaMode="fixed")},"固定",2)]),E.value.config.alphaMode==="fixed"?(ie(),Jt(qe,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:E.value.config.alpha,"onUpdate:modelValue":S[125]||(S[125]=C=>E.value.config.alpha=C)},null,8,["modelValue"])):(ie(),ae(Ke,{key:1},[M("label",bN,[S[286]||(S[286]=M("span",null,"曲线模式",-1)),ye(M("select",{"onUpdate:modelValue":S[126]||(S[126]=C=>E.value.config.curveMode=C),class:"inp"},[...S[285]||(S[285]=[M("option",null,"跟随导出",-1),M("option",null,"线性",-1),M("option",null,"贝塞尔",-1)])],512),[[Ht,E.value.config.curveMode]])]),M("div",wN,[Ue(xn,{modelValue:E.value.config.alphaCurve,"onUpdate:modelValue":S[127]||(S[127]=C=>E.value.config.alphaCurve=C),"default-value":he,mode:T(E.value.config.curveMode)},null,8,["modelValue","mode"]),S[287]||(S[287]=M("div",{class:"curve-labels"},[M("span",null,"0(透明)"),M("span",null,"生命周期 →"),M("span",null,"1(不透明)")],-1))])],64)),M("div",{class:"look-title image-title"},[S[288]||(S[288]=M("span",null,"图片资源",-1)),M("button",{class:"image-add",title:"新增图片资源",onClick:Le},"+")]),(ie(!0),ae(Ke,null,ci(E.value.config.imageResources,C=>(ie(),Jt(zv,{key:C.id,resource:C,"resource-count":E.value.config.imageResources.length,"supports-sequence":"","default-file":"star.png",onPick:Te,onPickSequence:je,onReset:Qe,onRemove:Xt,onUpdateWeight:ns,onToggleLock:Ha},{default:ah(()=>[Ue(qe,{label:"缩放",min:.1,max:3,step:.05,modelValue:C.scale,"onUpdate:modelValue":Q=>C.scale=Q},null,8,["modelValue","onUpdate:modelValue"]),M("label",SN,[S[289]||(S[289]=M("span",null,"轴心 x,y",-1)),ye(M("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":Q=>C.anchorX=Q},null,8,MN),[[ht,C.anchorX,void 0,{number:!0}]]),ye(M("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":Q=>C.anchorY=Q},null,8,_N),[[ht,C.anchorY,void 0,{number:!0}]])]),S[297]||(S[297]=M("div",{class:"resource-divider"},null,-1)),M("label",TN,[S[292]||(S[292]=M("span",null,"颜色",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.colorMode=Q,class:"inp"},[...S[290]||(S[290]=[M("option",{value:"fixed"},"固定色",-1),M("option",{value:"random"},"随机颜色",-1),M("option",{value:"lifetime"},"生命周期",-1)])],8,AN),[[Ht,C.colorMode]]),ye(M("select",{"onUpdate:modelValue":Q=>C.blend=Q,class:"inp blend-select"},[...S[291]||(S[291]=[M("option",{value:"normal"},"正常",-1),M("option",{value:"add"},"相加",-1),M("option",{value:"multiply"},"相乘",-1),M("option",{value:"screen"},"滤色",-1)])],8,EN),[[Ht,C.blend]])]),C.colorMode==="fixed"?(ie(),ae("label",CN,[S[293]||(S[293]=M("span",null,"固定色",-1)),ye(M("input",{type:"color","onUpdate:modelValue":Q=>C.colorStart=Q,class:"colr"},null,8,IN),[[ht,C.colorStart]]),M("input",{type:"text",class:"hex-input",value:C.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:Q=>at(C,Q),onKeydown:Ea(Q=>Pe(C,Q),["enter"])},null,40,RN)])):(ie(),ae(Ke,{key:1},[Ue(Wv,{modelValue:C.colorGradient,"onUpdate:modelValue":Q=>C.colorGradient=Q},null,8,["modelValue","onUpdate:modelValue"]),C.colorMode==="random"?(ie(),ae("div",PN,"每个粒子出生时从色带随机取色,生命周期内保持不变")):Ve("",!0)],64)),M("div",kN,[S[294]||(S[294]=M("span",null,"独立透明度",-1)),M("div",FN,[M("button",{class:Ze({on:C.independentAlpha==="off"}),onClick:Q=>C.independentAlpha="off"},"关闭",10,ON),M("button",{class:Ze({on:C.independentAlpha==="fixed"}),onClick:Q=>C.independentAlpha="fixed"},"固定",10,BN),M("button",{class:Ze({on:C.independentAlpha==="curve"}),onClick:Q=>C.independentAlpha="curve"},"曲线",10,LN)])]),C.independentAlpha==="fixed"?(ie(),Jt(qe,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:C.alpha,"onUpdate:modelValue":Q=>C.alpha=Q},null,8,["modelValue","onUpdate:modelValue"])):C.independentAlpha==="curve"?(ie(),ae(Ke,{key:3},[M("label",DN,[S[296]||(S[296]=M("span",null,"曲线模式",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.alphaCurveMode=Q,class:"inp"},[...S[295]||(S[295]=[M("option",null,"跟随导出",-1),M("option",null,"线性",-1),M("option",null,"贝塞尔",-1)])],8,NN),[[Ht,C.alphaCurveMode]])]),M("div",UN,[Ue(xn,{modelValue:C.alphaCurve,"onUpdate:modelValue":Q=>C.alphaCurve=Q,"default-value":xe,mode:T(C.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","mode"])])],64)):Ve("",!0)]),_:2},1032,["resource","resource-count"]))),128)),M("input",{ref_key:"textureFileInput",ref:Qr,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:rt},null,544),M("input",{ref_key:"sequenceFileInput",ref:Ws,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:Je},null,544)],512),[[Yi,!le.look]])]),M("div",XN,[M("div",{class:"group-head",onClick:S[129]||(S[129]=C=>Oe("mods"))},[M("span",VN,Xe(le.mods?"▸":"▾"),1),S[299]||(S[299]=M("span",null,"修改器",-1)),M("button",{class:"group-reset",title:"重置修改器参数",onClick:S[128]||(S[128]=bt(C=>zi("mods"),["stop"]))},"重置")]),ye(M("div",YN,[M("div",$N,[M("label",GN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[130]||(S[130]=C=>E.value.config.noise=C)},null,512),[[ei,E.value.config.noise]]),S[300]||(S[300]=M("span",{class:"switch-ui"},null,-1)),S[301]||(S[301]=M("span",null,"开启移动噪声",-1))]),E.value.config.noise?(ie(),ae("div",HN,[Ue(qe,{label:"强度",min:0,max:100,step:1,modelValue:E.value.config.noiseAmt,"onUpdate:modelValue":S[131]||(S[131]=C=>E.value.config.noiseAmt=C)},null,8,["modelValue"]),Ue(qe,{label:"波动范围",min:0,max:500,step:1,modelValue:E.value.config.noiseRange,"onUpdate:modelValue":S[132]||(S[132]=C=>E.value.config.noiseRange=C)},null,8,["modelValue"]),Ue(qe,{label:"时间流速",min:0,max:10,step:.1,modelValue:E.value.config.noiseSpeed,"onUpdate:modelValue":S[133]||(S[133]=C=>E.value.config.noiseSpeed=C)},null,8,["modelValue"]),S[302]||(S[302]=M("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):Ve("",!0)]),M("div",jN,[M("label",WN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[134]||(S[134]=C=>E.value.config.useGravity=C)},null,512),[[ei,E.value.config.useGravity]]),S[303]||(S[303]=M("span",{class:"switch-ui"},null,-1)),S[304]||(S[304]=M("span",null,"开启重力",-1))]),E.value.config.useGravity?(ie(),ae("div",zN,[M("div",qN,[M("button",{class:Ze(["axis-mode",{on:E.value.config.gravityMode==="fixed"}]),onClick:S[135]||(S[135]=C=>E.value.config.gravityMode="fixed")},"固定",2),M("button",{class:Ze(["axis-mode",{on:E.value.config.gravityMode==="random"}]),onClick:S[136]||(S[136]=C=>E.value.config.gravityMode="random")},"随机",2)]),E.value.config.gravityMode==="fixed"?(ie(),Jt(qe,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMin,"onUpdate:modelValue":S[137]||(S[137]=C=>E.value.config.gravityMin=C)},null,8,["modelValue"])):(ie(),ae(Ke,{key:1},[Ue(qe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMin,"onUpdate:modelValue":S[138]||(S[138]=C=>E.value.config.gravityMin=C)},null,8,["modelValue"]),Ue(qe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:E.value.config.gravityMax,"onUpdate:modelValue":S[139]||(S[139]=C=>E.value.config.gravityMax=C)},null,8,["modelValue"])],64)),Ue(qe,{label:"方向",min:-360,max:360,step:1,modelValue:E.value.config.gravityDirection,"onUpdate:modelValue":S[140]||(S[140]=C=>E.value.config.gravityDirection=C)},null,8,["modelValue"]),S[305]||(S[305]=M("div",{class:"gravity-curve-title"},[M("span",null,"生命周期内重力"),M("span",null,"纵轴:强度 0~1")],-1)),Ue(xn,{modelValue:E.value.config.gravityCurve,"onUpdate:modelValue":S[141]||(S[141]=C=>E.value.config.gravityCurve=C),"default-value":te},null,8,["modelValue"]),S[306]||(S[306]=M("div",{class:"gravity-curve-axis"},[M("span",null,"0"),M("span",null,"生命周期 →"),M("span",null,"1")],-1)),S[307]||(S[307]=M("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Ve("",!0)]),M("div",KN,[M("label",ZN,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[142]||(S[142]=C=>E.value.config.wind=C)},null,512),[[ei,E.value.config.wind]]),S[308]||(S[308]=M("span",{class:"switch-ui"},null,-1)),S[309]||(S[309]=M("span",null,"开启风力",-1))]),E.value.config.wind?(ie(),ae("div",JN,[M("div",QN,[M("button",{class:Ze(["axis-mode",{on:E.value.config.windMode==="fixed"}]),onClick:S[143]||(S[143]=C=>E.value.config.windMode="fixed")},"固定",2),M("button",{class:Ze(["axis-mode",{on:E.value.config.windMode==="random"}]),onClick:S[144]||(S[144]=C=>E.value.config.windMode="random")},"随机",2)]),E.value.config.windMode==="fixed"?(ie(),Jt(qe,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMin,"onUpdate:modelValue":S[145]||(S[145]=C=>E.value.config.windMin=C)},null,8,["modelValue"])):(ie(),ae(Ke,{key:1},[Ue(qe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMin,"onUpdate:modelValue":S[146]||(S[146]=C=>E.value.config.windMin=C)},null,8,["modelValue"]),Ue(qe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:E.value.config.windMax,"onUpdate:modelValue":S[147]||(S[147]=C=>E.value.config.windMax=C)},null,8,["modelValue"])],64)),Ue(qe,{label:"方向",min:-360,max:360,step:1,modelValue:E.value.config.windDirection,"onUpdate:modelValue":S[148]||(S[148]=C=>E.value.config.windDirection=C)},null,8,["modelValue"]),S[310]||(S[310]=M("div",{class:"gravity-curve-title"},[M("span",null,"生命周期内风力"),M("span",null,"纵轴:强度 0~1")],-1)),Ue(xn,{modelValue:E.value.config.windCurve,"onUpdate:modelValue":S[149]||(S[149]=C=>E.value.config.windCurve=C),"default-value":te},null,8,["modelValue"]),S[311]||(S[311]=M("div",{class:"gravity-curve-axis"},[M("span",null,"0"),M("span",null,"生命周期 →"),M("span",null,"1")],-1)),S[312]||(S[312]=M("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Ve("",!0)]),M("div",e4,[M("label",t4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[150]||(S[150]=C=>E.value.config.forceField=C)},null,512),[[ei,E.value.config.forceField]]),S[313]||(S[313]=M("span",{class:"switch-ui"},null,-1)),S[314]||(S[314]=M("span",null,"开启力场",-1))]),E.value.config.forceField?(ie(),ae("div",i4,[Ue(qe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:E.value.config.forceCenterX,"onUpdate:modelValue":S[151]||(S[151]=C=>E.value.config.forceCenterX=C)},null,8,["modelValue"]),Ue(qe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:E.value.config.forceCenterY,"onUpdate:modelValue":S[152]||(S[152]=C=>E.value.config.forceCenterY=C)},null,8,["modelValue"]),Ue(qe,{label:"力场强度",min:-300,max:300,step:1,modelValue:E.value.config.forceStrength,"onUpdate:modelValue":S[153]||(S[153]=C=>E.value.config.forceStrength=C)},null,8,["modelValue"]),Ue(qe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:E.value.config.forceRadius,"onUpdate:modelValue":S[154]||(S[154]=C=>E.value.config.forceRadius=C)},null,8,["modelValue"]),M("label",s4,[S[316]||(S[316]=M("span",null,"衰减模式",-1)),ye(M("select",{"onUpdate:modelValue":S[155]||(S[155]=C=>E.value.config.forceFalloff=C),class:"inp"},[...S[315]||(S[315]=[M("option",{value:"constant"},"恒定(范围内力度不变)",-1),M("option",{value:"linear"},"线性衰减(边缘为 0)",-1),M("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[Ht,E.value.config.forceFalloff]])]),S[317]||(S[317]=M("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1))])):Ve("",!0)]),M("div",n4,[M("label",r4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[156]||(S[156]=C=>E.value.config.attraction=C)},null,512),[[ei,E.value.config.attraction]]),S[318]||(S[318]=M("span",{class:"switch-ui"},null,-1)),S[319]||(S[319]=M("span",null,"开启吸附",-1))]),E.value.config.attraction?(ie(),ae("div",a4,[Ue(qe,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:E.value.config.attractionCenterX,"onUpdate:modelValue":S[157]||(S[157]=C=>E.value.config.attractionCenterX=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:E.value.config.attractionCenterY,"onUpdate:modelValue":S[158]||(S[158]=C=>E.value.config.attractionCenterY=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:E.value.config.attractionRadius,"onUpdate:modelValue":S[159]||(S[159]=C=>E.value.config.attractionRadius=C)},null,8,["modelValue"]),Ue(qe,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:E.value.config.attractionDuration,"onUpdate:modelValue":S[160]||(S[160]=C=>E.value.config.attractionDuration=C)},null,8,["modelValue"]),Ue(qe,{label:"延迟时间",min:0,max:30,step:.05,modelValue:E.value.config.attractionDelay,"onUpdate:modelValue":S[161]||(S[161]=C=>E.value.config.attractionDelay=C)},null,8,["modelValue"]),M("label",o4,[S[321]||(S[321]=M("span",null,"延迟方式",-1)),ye(M("select",{"onUpdate:modelValue":S[162]||(S[162]=C=>E.value.config.attractionDelayMode=C),class:"inp"},[...S[320]||(S[320]=[M("option",{value:"global"},"统一时间",-1),M("option",{value:"particle"},"单粒子生命",-1)])],512),[[Ht,E.value.config.attractionDelayMode]])]),M("label",l4,[S[323]||(S[323]=M("span",null,"吸附方式",-1)),ye(M("select",{"onUpdate:modelValue":S[163]||(S[163]=C=>E.value.config.attractionPath=C),class:"inp"},[...S[322]||(S[322]=[M("option",{value:"linear"},"直线",-1),M("option",{value:"curve"},"曲线",-1)])],512),[[Ht,E.value.config.attractionPath]])]),S[324]||(S[324]=M("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1))])):Ve("",!0)]),M("div",c4,[M("label",h4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[164]||(S[164]=C=>E.value.config.trail=C)},null,512),[[ei,E.value.config.trail]]),S[325]||(S[325]=M("span",{class:"switch-ui"},null,-1)),S[326]||(S[326]=M("span",null,"开启拖尾",-1))]),E.value.config.trail?(ie(),ae("div",u4,[M("div",{class:"trail-section-head"},[S[327]||(S[327]=M("div",{class:"trail-section-title"},"拖尾独立图片",-1)),M("button",{class:"image-add",title:"增加拖尾图片资源",onClick:ea},"+")]),(ie(!0),ae(Ke,null,ci(E.value.config.trailResources,C=>(ie(),Jt(zv,{key:C.id,resource:C,"resource-count":E.value.config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:ta,onReset:ue,onRemove:ve,onUpdateWeight:Me,onToggleLock:be},{default:ah(()=>[S[343]||(S[343]=M("div",{class:"resource-divider"},null,-1)),Ue(qe,{label:"旋转",min:-360,max:360,step:1,"model-value":C.rotation,"onUpdate:modelValue":Q=>ee(C.id,Q)},null,8,["model-value","onUpdate:modelValue"]),Ue(qe,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":C.boneCount,"onUpdate:modelValue":Q=>Y(C.id,Q)},null,8,["model-value","onUpdate:modelValue"]),Ue(qe,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:C.trailRatio,"onUpdate:modelValue":Q=>C.trailRatio=Q},null,8,["modelValue","onUpdate:modelValue"]),M("label",d4,[S[329]||(S[329]=M("span",null,"拖尾长度",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.lengthMode=Q,class:"inp"},[...S[328]||(S[328]=[M("option",{value:"fixed"},"固定",-1),M("option",{value:"random"},"随机范围",-1)])],8,f4),[[Ht,C.lengthMode]])]),C.lengthMode==="fixed"?(ie(),Jt(qe,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:C.length,"onUpdate:modelValue":Q=>C.length=Q},null,8,["modelValue","onUpdate:modelValue"])):(ie(),ae(Ke,{key:1},[Ue(qe,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:C.lengthMin,"onUpdate:modelValue":Q=>C.lengthMin=Q},null,8,["modelValue","onUpdate:modelValue"]),Ue(qe,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:C.lengthMax,"onUpdate:modelValue":Q=>C.lengthMax=Q},null,8,["modelValue","onUpdate:modelValue"])],64)),M("label",m4,[S[331]||(S[331]=M("span",null,"拖尾宽度",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.widthSizeMode=Q,class:"inp"},[...S[330]||(S[330]=[M("option",{value:"fixed"},"固定",-1),M("option",{value:"random"},"随机范围",-1)])],8,p4),[[Ht,C.widthSizeMode]])]),C.widthSizeMode==="fixed"?(ie(),Jt(qe,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:C.width,"onUpdate:modelValue":Q=>C.width=Q},null,8,["modelValue","onUpdate:modelValue"])):(ie(),ae(Ke,{key:3},[Ue(qe,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:C.widthMin,"onUpdate:modelValue":Q=>C.widthMin=Q},null,8,["modelValue","onUpdate:modelValue"]),Ue(qe,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:C.widthMax,"onUpdate:modelValue":Q=>C.widthMax=Q},null,8,["modelValue","onUpdate:modelValue"])],64)),M("label",g4,[S[333]||(S[333]=M("span",null,"宽度缩放",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.widthMode=Q,class:"inp"},[...S[332]||(S[332]=[M("option",{value:"particle"},"跟随粒子",-1),M("option",{value:"fixed"},"固定",-1)])],8,v4),[[Ht,C.widthMode]])]),M("label",y4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Q=>C.lifeLengthEnabled=Q},null,8,x4),[[ei,C.lifeLengthEnabled]]),S[334]||(S[334]=M("span",{class:"switch-ui"},null,-1)),S[335]||(S[335]=M("span",null,"生命周期长度曲线",-1))]),C.lifeLengthEnabled?(ie(),Jt(xn,{key:4,modelValue:C.lifeLengthCurve,"onUpdate:modelValue":Q=>C.lifeLengthCurve=Q,"default-value":te},null,8,["modelValue","onUpdate:modelValue"])):Ve("",!0),M("label",b4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":Q=>C.shapeEnabled=Q},null,8,w4),[[ei,C.shapeEnabled]]),S[336]||(S[336]=M("span",{class:"switch-ui"},null,-1)),S[337]||(S[337]=M("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),C.shapeEnabled?(ie(),Jt(xn,{key:5,modelValue:C.shapeCurve,"onUpdate:modelValue":Q=>C.shapeCurve=Q,"default-value":ge},null,8,["modelValue","onUpdate:modelValue"])):Ve("",!0),M("div",S4,[S[338]||(S[338]=M("span",null,"颜色模式",-1)),M("div",M4,[M("button",{class:Ze(["axis-mode",{on:C.colorMode==="particle"}]),onClick:Q=>C.colorMode="particle"},"跟随粒子",10,_4),M("button",{class:Ze(["axis-mode",{on:C.colorMode==="fixed"}]),onClick:Q=>C.colorMode="fixed"},"固定",10,T4),M("button",{class:Ze(["axis-mode",{on:C.colorMode==="curve"}]),onClick:Q=>C.colorMode="curve"},"曲线",10,A4)])]),M("label",E4,[S[340]||(S[340]=M("span",null,"混合模式",-1)),ye(M("select",{"onUpdate:modelValue":Q=>C.blend=Q,class:"inp"},[...S[339]||(S[339]=[M("option",{value:"normal"},"正常",-1),M("option",{value:"add"},"相加",-1),M("option",{value:"multiply"},"相乘",-1),M("option",{value:"screen"},"滤色",-1)])],8,C4),[[Ht,C.blend]])]),C.colorMode==="fixed"?(ie(),ae("label",I4,[S[341]||(S[341]=M("span",null,"固定颜色",-1)),ye(M("input",{class:"colr",type:"color","onUpdate:modelValue":Q=>C.color=Q},null,8,R4),[[ht,C.color]]),M("input",{class:"hex-input",value:C.color,onChange:Q=>De(C,Q),onKeydown:Ea(bt(Q=>Ie(C,Q),["prevent"]),["enter"])},null,40,P4)])):C.colorMode==="curve"?(ie(),Jt(Wv,{key:7,modelValue:C.colorGradient,"onUpdate:modelValue":Q=>C.colorGradient=Q},null,8,["modelValue","onUpdate:modelValue"])):Ve("",!0),M("div",k4,[S[342]||(S[342]=M("span",null,"透明度模式",-1)),M("div",F4,[M("button",{class:Ze(["axis-mode",{on:C.alphaMode==="particle"}]),onClick:Q=>C.alphaMode="particle"},"跟随粒子",10,O4),M("button",{class:Ze(["axis-mode",{on:C.alphaMode==="fixed"}]),onClick:Q=>C.alphaMode="fixed"},"固定",10,B4),M("button",{class:Ze(["axis-mode",{on:C.alphaMode==="curve"}]),onClick:Q=>C.alphaMode="curve"},"曲线",10,L4)])]),C.alphaMode==="fixed"?(ie(),Jt(qe,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:C.alpha,"onUpdate:modelValue":Q=>C.alpha=Q},null,8,["modelValue","onUpdate:modelValue"])):Ve("",!0),C.alphaMode==="curve"?(ie(),Jt(xn,{key:9,modelValue:C.alphaCurve,"onUpdate:modelValue":Q=>C.alphaCurve=Q,"default-value":oe},null,8,["modelValue","onUpdate:modelValue"])):Ve("",!0)]),_:2},1032,["resource","resource-count"]))),128)),M("input",{ref_key:"trailTextureFileInput",ref:Vn,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:ne},null,544),M("div",D4,[Ue(qe,{label:"网格行数",min:2,max:16,step:1,"model-value":E.value.config.trailGridRows,"onUpdate:modelValue":S[165]||(S[165]=C=>H("trailGridRows",C))},null,8,["model-value"]),Ue(qe,{label:"网格列数",min:2,max:32,step:1,"model-value":E.value.config.trailGridCols,"onUpdate:modelValue":S[166]||(S[166]=C=>H("trailGridCols",C))},null,8,["model-value"])]),S[344]||(S[344]=M("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):Ve("",!0)]),M("div",N4,[M("label",U4,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[167]||(S[167]=C=>E.value.config.emitterFollow=C),disabled:E.value.config.streamBehavior==="loop"},null,8,X4),[[ei,E.value.config.emitterFollow]]),S[345]||(S[345]=M("span",{class:"switch-ui"},null,-1)),S[346]||(S[346]=M("span",null,"开启发射器跟随",-1))]),E.value.config.emitterFollow&&E.value.config.streamBehavior!=="loop"?(ie(),ae("div",V4,[M("label",Y4,[S[349]||(S[349]=M("span",null,"跟随模式",-1)),M("select",{value:E.value.config.emitterFollowMode,class:"inp",onChange:S[168]||(S[168]=C=>Kt(C,E.value.config))},[S[347]||(S[347]=M("option",{value:"none"},"无",-1)),S[348]||(S[348]=M("option",{value:"path"},"跟随路径",-1)),we.value||E.value.config.emitterFollowMode==="bone"?(ie(),ae("option",G4,"选中的骨骼")):Ve("",!0)],40,$4)]),E.value.config.emitterFollowMode==="path"?(ie(),ae(Ke,{key:0},[M("label",H4,[S[351]||(S[351]=M("span",null,"跟随路径",-1)),ye(M("select",{"onUpdate:modelValue":S[169]||(S[169]=C=>E.value.config.emitterFollowPathId=C),class:"inp"},[S[350]||(S[350]=M("option",{value:0},"无",-1)),(ie(!0),ae(Ke,null,ci(ke(e).paths,C=>(ie(),ae("option",{key:C.id,value:C.id},Xe(C.name),9,j4))),128))],512),[[Ht,E.value.config.emitterFollowPathId,void 0,{number:!0}]])]),M("label",W4,[S[353]||(S[353]=M("span",null,"发射器角度模式",-1)),ye(M("select",{"onUpdate:modelValue":S[170]||(S[170]=C=>E.value.config.emitterAngleMode=C),class:"inp"},[...S[352]||(S[352]=[M("option",{value:"fixed"},"固定角度",-1),M("option",{value:"direction"},"跟随移动方向",-1)])],512),[[Ht,E.value.config.emitterAngleMode]])]),S[359]||(S[359]=M("div",{class:"gravity-curve-title"},[M("span",null,"移动进度曲线 (0→1)")],-1)),Ue(xn,{modelValue:E.value.config.emitterFollowCurve,"onUpdate:modelValue":S[171]||(S[171]=C=>E.value.config.emitterFollowCurve=C),"default-value":j},null,8,["modelValue"]),M("div",z4,[M("label",q4,[S[354]||(S[354]=M("span",null,"移动时长 (s)",-1)),ye(M("input",{"onUpdate:modelValue":S[172]||(S[172]=C=>E.value.config.emitterFollowDuration=C),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[ht,E.value.config.emitterFollowDuration,void 0,{number:!0}]])]),M("label",K4,[S[356]||(S[356]=M("span",null,"跟随空间",-1)),ye(M("select",{"onUpdate:modelValue":S[173]||(S[173]=C=>E.value.config.emitterFollowSpace=C),class:"inp"},[...S[355]||(S[355]=[M("option",{value:"local"},"局部空间(GEN 移动)",-1),M("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[Ht,E.value.config.emitterFollowSpace]])])]),M("label",Z4,[S[358]||(S[358]=M("span",null,"移动方向",-1)),ye(M("select",{"onUpdate:modelValue":S[174]||(S[174]=C=>E.value.config.emitterFollowDirection=C),class:"inp"},[...S[357]||(S[357]=[M("option",{value:"forward"},"正向(起点 → 终点)",-1),M("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[Ht,E.value.config.emitterFollowDirection]])]),Ue(qe,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:E.value.config.emitterFollowOffset,"onUpdate:modelValue":S[175]||(S[175]=C=>E.value.config.emitterFollowOffset=C)},null,8,["modelValue"]),S[360]||(S[360]=M("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):E.value.config.emitterFollowMode==="bone"?(ie(),ae(Ke,{key:1},[Ee.value?(ie(),ae("div",J4,[S[361]||(S[361]=Qt("跟随目标:",-1)),M("strong",null,Xe(Ee.value.spine.name)+" / "+Xe(Ee.value.boneName),1)])):(ie(),ae("div",Q4,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),we.value&&(!Ee.value||we.value.spine.id!==Ee.value.spine.id||we.value.boneName!==Ee.value.boneName)?(ie(),ae("button",{key:2,class:"bone-follow-rebind",onClick:S[176]||(S[176]=C=>Ti(E.value.config))},Xe(Ee.value?"重新绑定":"绑定")+"当前选中骨骼:"+Xe(we.value.spine.name)+" / "+Xe(we.value.boneName),1)):Ve("",!0),Ee.value?(ie(),ae(Ke,{key:3},[M("label",e5,[S[363]||(S[363]=M("span",null,"跟随空间",-1)),ye(M("select",{"onUpdate:modelValue":S[177]||(S[177]=C=>E.value.config.emitterFollowSpace=C),class:"inp"},[...S[362]||(S[362]=[M("option",{value:"local"},"本地空间(随骨骼移动)",-1),M("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[Ht,E.value.config.emitterFollowSpace]])]),M("div",t5,[M("label",i5,[S[364]||(S[364]=M("span",null,"位移偏移 X",-1)),ye(M("input",{"onUpdate:modelValue":S[178]||(S[178]=C=>E.value.config.emitterFollowBoneOffsetX=C),type:"number",step:"1",class:"inp"},null,512),[[ht,E.value.config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),M("label",s5,[S[365]||(S[365]=M("span",null,"位移偏移 Y",-1)),ye(M("input",{"onUpdate:modelValue":S[179]||(S[179]=C=>E.value.config.emitterFollowBoneOffsetY=C),type:"number",step:"1",class:"inp"},null,512),[[ht,E.value.config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),M("div",n5,[M("label",r5,[S[366]||(S[366]=M("span",null,"旋转偏移",-1)),ye(M("input",{"onUpdate:modelValue":S[180]||(S[180]=C=>E.value.config.emitterFollowBoneRotation=C),type:"number",step:"1",class:"inp"},null,512),[[ht,E.value.config.emitterFollowBoneRotation,void 0,{number:!0}]])]),M("label",a5,[S[367]||(S[367]=M("span",null,"缩放偏移 X",-1)),ye(M("input",{"onUpdate:modelValue":S[181]||(S[181]=C=>E.value.config.emitterFollowBoneScaleX=C),type:"number",step:"0.05",class:"inp"},null,512),[[ht,E.value.config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),M("label",o5,[S[368]||(S[368]=M("span",null,"缩放偏移 Y",-1)),ye(M("input",{"onUpdate:modelValue":S[182]||(S[182]=C=>E.value.config.emitterFollowBoneScaleY=C),type:"number",step:"0.05",class:"inp"},null,512),[[ht,E.value.config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),S[369]||(S[369]=M("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):Ve("",!0)],64)):Ve("",!0)])):Ve("",!0)]),M("div",l5,[M("label",c5,[ye(M("input",{type:"checkbox","onUpdate:modelValue":S[183]||(S[183]=C=>E.value.config.collision=C)},null,512),[[ei,E.value.config.collision]]),S[370]||(S[370]=M("span",{class:"switch-ui"},null,-1)),S[371]||(S[371]=M("span",null,"开启碰撞",-1))]),E.value.config.collision?(ie(),ae("div",h5,[S[372]||(S[372]=M("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),M("div",u5,[(ie(!0),ae(Ke,null,ci(Ae.value,C=>(ie(),ae("span",{key:C.id,class:Ze(["collision-filter-tag",{disabled:!C.enabled}]),title:C.enabled?C.name:`${C.name}(碰撞体已禁用)`},[M("span",null,Xe(C.name),1),M("button",{type:"button","aria-label":`清除碰撞对象 ${C.name}`,onClick:Q=>z(C.id)},"×",8,f5)],10,d5))),128)),M("button",{type:"button",class:Ze(["collision-filter-add",{active:pe.value}]),disabled:G.value.length===0,title:G.value.length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:S[184]||(S[184]=C=>pe.value=!pe.value)},"+",10,m5)]),Ae.value.length===0?(ie(),ae("div",p5,"未选择碰撞对象,当前粒子不会发生碰撞")):Ve("",!0),pe.value&&G.value.length?(ie(),ae("div",g5,[(ie(!0),ae(Ke,null,ci(G.value,C=>(ie(),ae("button",{key:C.id,type:"button",onClick:Q=>Z(C.id)},[M("span",null,Xe(C.name),1),M("small",null,Xe(C.enabled?"可用":"已禁用"),1)],8,v5))),128))])):Ve("",!0),S[373]||(S[373]=M("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):Ve("",!0)]),Ue(qe,{label:"阻尼",min:0,max:2,step:.05,modelValue:E.value.config.damping,"onUpdate:modelValue":S[185]||(S[185]=C=>E.value.config.damping=C)},null,8,["modelValue"])],512),[[Yi,!le.mods]])]),M("div",y5,[M("div",{class:"group-head",onClick:S[187]||(S[187]=C=>Oe("export"))},[M("span",x5,Xe(le.export?"▸":"▾"),1),S[374]||(S[374]=M("span",null,"导出设置",-1)),M("button",{class:"group-reset",title:"重置导出设置",onClick:S[186]||(S[186]=bt(C=>zi("export"),["stop"]))},"重置")]),ye(M("div",b5,[M("label",w5,[S[375]||(S[375]=M("span",null,"图片路径 (Spine Images Path)",-1)),ye(M("input",{"onUpdate:modelValue":S[188]||(S[188]=C=>t.value.imagesPath=C),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[ht,t.value.imagesPath,void 0,{trim:!0}]])]),M("label",S5,[S[377]||(S[377]=M("span",null,"Spine 版本",-1)),ye(M("select",{"onUpdate:modelValue":S[189]||(S[189]=C=>t.value.spineVersion=C),class:"inp export-input"},[...S[376]||(S[376]=[Ts('',5)])],512),[[Ht,t.value.spineVersion]])]),M("label",M5,[S[379]||(S[379]=M("span",null,"关键帧插值曲线",-1)),ye(M("select",{"onUpdate:modelValue":S[190]||(S[190]=C=>t.value.keyframeCurve=C),class:"inp export-input"},[...S[378]||(S[378]=[M("option",{value:"linear"},"线性 (Linear)",-1),M("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[Ht,t.value.keyframeCurve]])]),S[388]||(S[388]=M("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),t.value.spineVersion==="3.8"?(ie(),ae("div",_5,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):Ve("",!0),M("div",T5,[M("label",A5,[S[380]||(S[380]=M("span",null,"导出 FPS",-1)),ye(M("input",{"onUpdate:modelValue":S[191]||(S[191]=C=>t.value.fps=C),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:dn},null,544),[[ht,t.value.fps,void 0,{number:!0}]])]),M("label",E5,[ye(M("input",{"onUpdate:modelValue":S[192]||(S[192]=C=>t.value.omitFps=C),type:"checkbox"},null,512),[[ei,t.value.omitFps]]),S[381]||(S[381]=Qt("不写 fps",-1))])]),S[389]||(S[389]=M("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),M("div",C5,[M("label",I5,[ye(M("input",{"onUpdate:modelValue":S[193]||(S[193]=C=>t.value.integerFrameAlignment=C),type:"checkbox"},null,512),[[ei,t.value.integerFrameAlignment]]),S[382]||(S[382]=M("span",{class:"switch-ui"},null,-1)),S[383]||(S[383]=M("span",null,"整数帧对齐",-1))]),M("label",R5,[ye(M("input",{"onUpdate:modelValue":S[194]||(S[194]=C=>t.value.bonePool=C),type:"checkbox"},null,512),[[ei,t.value.bonePool]]),S[384]||(S[384]=M("span",{class:"switch-ui"},null,-1)),S[385]||(S[385]=M("span",null,"骨骼对象池",-1))]),M("label",P5,[ye(M("input",{"onUpdate:modelValue":S[195]||(S[195]=C=>t.value.excludeEmptyAnimations=C),type:"checkbox"},null,512),[[ei,t.value.excludeEmptyAnimations]]),S[386]||(S[386]=M("span",{class:"switch-ui"},null,-1)),S[387]||(S[387]=M("span",null,"排除无内容动画",-1))])])],512),[[Yi,!le.export]])])],64)):Ve("",!0)]),M("div",k5,[M("button",{type:"button",class:"export-spine-json",disabled:l.value,title:l.value?"正在重新计算并烘焙动画":`导出 Spine ${t.value.spineVersion} JSON`,onClick:L},Xe(l.value&&c.value==="json"?"正在准备导出…":"导出Spine Json"),9,F5),M("button",{type:"button",class:"export-spine-images",disabled:l.value,title:"单独下载当前粒子系统使用的图片 ZIP",onClick:O},Xe(l.value&&c.value==="images"?"正在整理图片…":"导出 images 包"),9,O5),M("button",{type:"button",class:"export-spine-project",disabled:l.value||!b.value,title:A.value,onClick:N},[M("span",null,Xe(l.value&&c.value==="spine"?"正在生成工程…":"导出 .spine 包"),1),!l.value&&w.value?(ie(),ae("small",L5,Xe(w.value),1)):Ve("",!0)],8,B5)]),M("div",{class:Ze(["connector-status",v.value])},[S[390]||(S[390]=M("span",{class:"connector-dot"},null,-1)),Qt(Xe(g.value)+" ",1),y.value?(ie(),ae("a",{key:0,href:y.value,target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,D5)):Ve("",!0),M("button",{type:"button",title:"重新检测连接器",onClick:B},"刷新")],2),u.value?(ie(),ae("div",{key:0,class:Ze(["export-message",{error:d.value}])},[Qt(Xe(u.value)+" ",1),p.value?(ie(),ae("a",{key:0,href:p.value,target:"_blank",rel:"noopener",onClick:S[196]||(S[196]=C=>p.value="")},"授权当前网站",8,N5)):Ve("",!0)],2)):Ve("",!0)]))}}),X5=Gs(U5,[["__scopeId","data-v-a377e4d4"]]),V5={class:"timeline"},Y5={class:"tl-controls"},$5=["title"],G5={class:"tl-range",title:"自定义播放起始帧"},H5=["max","onKeydown"],j5={class:"tl-range",title:"自定义播放结束帧"},W5=["min","max","onKeydown"],z5=["title"],q5={class:"tl-frame"},K5=["disabled"],Z5=["onClick"],J5={key:0},Q5={class:"tl-animation-editor"},eU={key:0,class:"tl-animation-error"},tU={class:"tl-animation-actions"},iU=["disabled"],sU={key:1,class:"tl-animation-hint"},nU={class:"tl-anim tl-spine-preview"},rU=["value","disabled"],aU={value:""},oU=["value"],lU={class:"tl-zoom"},cU={class:"tl-ticks"},hU={class:"tl-ticklabel"},uU={class:"tl-lanes"},dU=["onPointerdown"],fU={class:"lane-name"},mU=["onPointerdown"],pU=["onPointerdown"],gU=["onPointerdown"],vU={class:"lane-name"},yU={key:0,class:"tl-empty"},xU=$s({__name:"Timeline",setup(s){const e=Kl(),t=lt(null),i=lt(null),n=lt(!1),r=lt("animation"),a=lt("");Jo(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const z of e.systems)(!z.animation||!e.timeline.animations.includes(z.animation))&&(z.animation=e.timeline.animations[0])});const o=vt(()=>e.systems.find(z=>z.id===e.activeId)||null),h=vt(()=>{const z=o.value;return!z||!W(z)?null:g1(z.config,m.value)});function l(){o.value&&(n.value=!n.value,r.value=o.value.animation,a.value="")}function c(z){const j=o.value;j&&(e.setSystemAnimation(j.id,z),r.value=z,a.value="")}function u(){const z=e.addAnimation();r.value=z,a.value=""}function d(){var te;const z=((te=o.value)==null?void 0:te.animation)||e.timeline.animation,j=r.value.trim();if(!j){a.value="动画名称不能为空";return}if(j!==z&&e.timeline.animations.includes(j)){a.value="动画名称不能重复";return}if(!e.renameAnimation(z,j)){a.value="无法修改动画名称";return}r.value=j,a.value=""}function f(){var te,he;const z=((te=o.value)==null?void 0:te.animation)||e.timeline.animation;if(!e.removeAnimation(z)){a.value="至少需要保留一个动画";return}const j=((he=o.value)==null?void 0:he.animation)||e.timeline.animation;r.value=j,a.value=""}function p(z){var j;(j=i.value)!=null&&j.contains(z.target)||(n.value=!1)}Kr(()=>document.addEventListener("pointerdown",p)),$l(()=>document.removeEventListener("pointerdown",p));const m=vt(()=>Math.max(1,e.timeline.fps||30)),g=lt(120),v=lt({}),b=lt({}),y=lt({}),w=lt({}),A=lt(String(e.timeline.playbackStart)),T=lt(String(e.timeline.playbackEnd));fs(()=>e.timeline.playbackStart,z=>{A.value=String(z)}),fs(()=>e.timeline.playbackEnd,z=>{T.value=String(z)});const _=vt(()=>e.timeline.totalFrames),R=vt(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),P=vt(()=>e.spines.filter(z=>z.selectedAnimation&&z.animations.some(j=>j.name===z.selectedAnimation&&j.duration>0))),F=vt(()=>(e.activeObjectType==="spine"?e.spines.find(j=>j.id===e.activeObjectId&&j.animations.length):null)||e.spines.find(j=>j.animations.length)||null);function I(z){const j=F.value;j&&(j.selectedAnimation=z.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(A.value)),A.value=String(e.timeline.playbackStart)}function B(){e.setPlaybackEnd(Number(T.value)),T.value=String(e.timeline.playbackEnd)}function D(){const z=h.value;z&&(e.setPlaybackEnd(z.end),e.setPlaybackStart(z.start))}function U(){var j;const z=((j=t.value)==null?void 0:j.clientWidth)||600;return g.value/z}const L=vt(()=>{const z=[],j=g.value;let te=1;g.value<=10?te=1:g.value<=50?te=5:g.value<=200?te=10:g.value<=500?te=50:te=100;for(let he=0;he<=j;he+=te)z.push({f:he,px:he/U()});return z}),N=vt(()=>e.timeline.frame/U());function O(z){const j=z.config;return(v.value[z.id]??Math.max(0,Number(j.delay)||0))*m.value/U()}function X(z){const j=z.config,te=Math.max(0,Number(j.lifeMin)||0),he=Math.max(0,Number(j.lifeMax)||0);return j.lifeMode==="fixed"?te:Math.max(te,he)}function E(z){return q(z)}function V(z){if(z.config.mode!=="stream")return 0;if(z.config.streamBehavior==="loop"){const te=z.config;return(y.value[z.id]??Xr(te,m.value).loop)/U()}return(b.value[z.id]??Math.max(1/m.value,Number(z.config.duration)||1))*m.value/U()}function q(z){const j=z.config;return j.mode==="stream"&&j.streamBehavior==="loop"?J(z)+V(z)+K(z):V(z)+X(z)*m.value/U()}function W(z){const j=z.config;return j.mode==="stream"&&j.streamBehavior==="loop"}function J(z){return W(z)?Xr(z.config,m.value).start/U():0}function K(z){return W(z)?Xr(z.config,m.value).end/U():0}function fe(z){var j;return((j=z.animations.find(te=>te.name===z.selectedAnimation))==null?void 0:j.duration)||0}function me(z){return(w.value[z.id]??Math.max(0,Number(z.timeOffset)||0))*m.value/U()}function we(z){return fe(z)*m.value/U()}function Ee(z){const j=z.deltaY<0?.8:1.25;let te=g.value*j;te=Math.min(2e3,Math.max(10,te)),g.value=Math.round(te)}function pe(z){const j=t.value,te=xe=>{const oe=j.getBoundingClientRect(),ge=Math.floor((xe.clientX-oe.left)/oe.width*g.value);e.timeline.frame=Math.max(0,Math.min(ge,_.value-1))};te(z);const he=()=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",he)};window.addEventListener("pointermove",te),window.addEventListener("pointerup",he)}function Ae(z,j){z.stopPropagation();const te=z.clientX,he=Math.max(0,Number(j.config.delay)||0),xe=U()/m.value,oe=Fe=>{const Be=(Fe.clientX-te)*xe,st=Math.max(0,Math.min(he+Be,600));v.value[j.id]=Math.round(st*m.value)/m.value},ge=Fe=>{window.removeEventListener("pointermove",oe),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Oe);const Be=v.value[j.id];delete v.value[j.id],Fe&&Be!=null&&Be!==he&&(j.config.delay=Be)},le=()=>ge(!0),Oe=()=>ge(!1);window.addEventListener("pointermove",oe),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Oe)}function G(z,j){var At;z.stopPropagation();const te=W(j),he=Math.max(0,Number(j.config.duration)||0),xe=Xr(j.config,m.value).loop,oe=U()/m.value,ge=((At=z.currentTarget.closest(".lane-bar"))==null?void 0:At.getBoundingClientRect().left)??z.clientX,le=J(j);let Oe=!1;const Fe=Et=>{if(Oe=!0,te){const It=Math.min(1800,Math.max(1,Math.round((Et.clientX-ge-le)/U())));y.value[j.id]=It}else{const It=Math.max(1/m.value,Math.min((Et.clientX-ge)*oe,600));b.value[j.id]=Math.round(It*m.value)/m.value}},Be=Et=>{window.removeEventListener("pointermove",Fe),window.removeEventListener("pointerup",st),window.removeEventListener("pointercancel",St);const It=b.value[j.id],Kt=y.value[j.id];delete b.value[j.id],delete y.value[j.id],Et&&Oe&&te&&Kt!=null&&Kt!==xe?j.config.loopDurationFrames=Kt:Et&&Oe&&!te&&It!=null&&It!==he&&(j.config.duration=It)},st=()=>Be(!0),St=()=>Be(!1);window.addEventListener("pointermove",Fe),window.addEventListener("pointerup",st),window.addEventListener("pointercancel",St)}function Z(z,j){z.stopPropagation();const te=z.clientX,he=Math.max(0,Number(j.timeOffset)||0),xe=U()/m.value,oe=Fe=>{const Be=Math.max(0,Math.min(he+(Fe.clientX-te)*xe,600));w.value[j.id]=Math.round(Be*m.value)/m.value},ge=Fe=>{window.removeEventListener("pointermove",oe),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Oe);const Be=w.value[j.id];delete w.value[j.id],Fe&&Be!=null&&Be!==he&&(j.timeOffset=Be,e.recalcTotalFrames())},le=()=>ge(!0),Oe=()=>ge(!1);window.addEventListener("pointermove",oe),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Oe)}return(z,j)=>{var te,he,xe;return ie(),ae("div",V5,[M("div",Y5,[M("button",{class:Ze(["tl-btn",{on:ke(e).timeline.playing}]),onClick:j[0]||(j[0]=oe=>ke(e).togglePlay()),title:ke(e).timeline.playing?"暂停 (D)":"播放 (D)"},Xe(ke(e).timeline.playing?"❚❚":"▶"),11,$5),M("button",{class:"tl-btn",onClick:j[1]||(j[1]=oe=>ke(e).toStart()),title:"回到第一帧 (S)"},"⏮"),M("button",{class:"tl-btn",onClick:j[2]||(j[2]=oe=>ke(e).previousFrame()),title:"前一帧"},"◀"),M("button",{class:"tl-btn",onClick:j[3]||(j[3]=oe=>ke(e).nextFrame()),title:"后一帧"},"▶"),M("button",{class:"tl-btn",onClick:j[4]||(j[4]=oe=>ke(e).toEnd()),title:"移动到最后一帧"},"⏭"),M("button",{class:Ze(["tl-btn",{on:ke(e).timeline.loop}]),onClick:j[5]||(j[5]=oe=>ke(e).toggleLoop()),title:"循环"},"⟳",2),M("label",G5,[j[10]||(j[10]=M("span",null,"A",-1)),ye(M("input",{"onUpdate:modelValue":j[6]||(j[6]=oe=>A.value=oe),type:"number",min:"0",max:Math.max(0,ke(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:Ea(bt(k,["prevent"]),["enter"])},null,40,H5),[[ht,A.value]])]),M("label",j5,[j[11]||(j[11]=M("span",null,"B",-1)),ye(M("input",{"onUpdate:modelValue":j[7]||(j[7]=oe=>T.value=oe),type:"number",min:ke(e).timeline.playbackStart+1,max:Math.max(1,ke(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:B,onKeydown:Ea(bt(B,["prevent"]),["enter"])},null,40,W5),[[ht,T.value]])]),h.value?(ie(),ae("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${h.value.start}–${h.value.end}f`,onClick:D},"循环段",8,z5)):Ve("",!0),M("span",q5,[j[12]||(j[12]=Qt("帧 ",-1)),M("b",null,Xe(ke(e).timeline.frame),1),j[13]||(j[13]=Qt(" / ",-1)),M("b",null,Xe(Math.max(0,ke(e).timeline.totalFrames-1)),1)]),j[18]||(j[18]=M("span",{class:"tl-legend"},[M("i",{class:"legend-emission"}),Qt("持续发射 "),M("i",{class:"legend-life"}),Qt("粒子存在 "),M("i",{class:"legend-spine"}),Qt("Spine 动画")],-1)),M("div",{ref_key:"animationMenuRef",ref:i,class:"tl-anim tl-owner-animation"},[j[16]||(j[16]=M("span",null,"所属动画",-1)),M("button",{class:"tl-animation-trigger",disabled:!o.value,title:"设置当前粒子系统所属的动画",onClick:bt(l,["stop"])},[M("span",null,Xe(((te=o.value)==null?void 0:te.animation)||ke(e).timeline.animation),1),j[14]||(j[14]=M("i",null,"⌄",-1))],8,K5),n.value?(ie(),ae("div",{key:0,class:"tl-animation-menu",onPointerdown:j[9]||(j[9]=bt(()=>{},["stop"]))},[j[15]||(j[15]=M("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(ie(!0),ae(Ke,null,ci(ke(e).timeline.animations,oe=>{var ge,le;return ie(),ae("button",{key:oe,class:Ze(["tl-animation-option",{on:((ge=o.value)==null?void 0:ge.animation)===oe}]),onClick:Oe=>c(oe)},[M("span",null,Xe(oe),1),((le=o.value)==null?void 0:le.animation)===oe?(ie(),ae("i",J5,"✓")):Ve("",!0)],10,Z5)}),128)),M("div",Q5,[ye(M("input",{"onUpdate:modelValue":j[8]||(j[8]=oe=>r.value=oe),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:Ea(d,["enter"])},null,544),[[ht,r.value]]),M("button",{title:"重命名当前动画",onClick:d},"重命名")]),a.value?(ie(),ae("div",eU,Xe(a.value),1)):Ve("",!0),M("div",tU,[M("button",{onClick:u},"+ 新增"),M("button",{disabled:ke(e).timeline.animations.length<=1,onClick:f},"删除",8,iU)]),ke(e).timeline.animations.length<=1?(ie(),ae("div",sU,"至少需要保留一个动画")):Ve("",!0)],32)):Ve("",!0)],512),M("label",nU,[j[17]||(j[17]=Qt("Spine 预览动画 ",-1)),M("select",{class:"tl-sel",value:((he=F.value)==null?void 0:he.selectedAnimation)||"",disabled:!F.value,onChange:I},[M("option",aU,Xe(F.value?"无":"无可用 Spine 动画"),1),(ie(!0),ae(Ke,null,ci(((xe=F.value)==null?void 0:xe.animations)||[],oe=>(ie(),ae("option",{key:oe.name,value:oe.name},Xe(oe.name)+"("+Xe(oe.duration.toFixed(2))+"s) ",9,oU))),128))],40,rU)]),M("span",lU,Xe(R.value),1)]),M("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:bt(Ee,["prevent"]),onPointerdown:pe},[M("div",cU,[(ie(!0),ae(Ke,null,ci(L.value,oe=>(ie(),ae("div",{key:oe.f,class:"tl-tickline",style:Li({left:oe.px+"px"})},[M("span",hU,Xe(oe.f)+"f",1)],4))),128))]),M("div",{class:"tl-playhead",style:Li({left:N.value+"px"})},null,4),M("div",uU,[(ie(!0),ae(Ke,null,ci(ke(e).systems,(oe,ge)=>(ie(),ae("div",{key:oe.id,class:"tl-lane"},[j[19]||(j[19]=M("span",{class:"lane-ico"},"●",-1)),M("div",{class:"lane-bar",style:Li({left:O(oe)+"px",width:E(oe)+"px"}),onPointerdown:bt(le=>Ae(le,oe),["stop"])},[M("span",fU,Xe(oe.config.name||"系统 "+(ge+1)),1),M("span",{class:Ze(["bar-life",{"loop-life":W(oe)}]),style:Li({width:q(oe)+"px"})},null,6),W(oe)?(ie(),ae(Ke,{key:0},[J(oe)?(ie(),ae("span",{key:0,class:"bar-loop-transition bar-loop-start",style:Li({width:J(oe)+"px"})},null,4)):Ve("",!0),M("span",{class:"bar-emission bar-loop",style:Li({left:J(oe)+"px",width:V(oe)+"px"})},[M("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:bt(le=>G(le,oe),["stop"])},null,40,mU)],4),K(oe)?(ie(),ae("span",{key:1,class:"bar-loop-transition bar-loop-end",style:Li({left:J(oe)+V(oe)+"px",width:K(oe)+"px"})},null,4)):Ve("",!0)],64)):oe.config.mode==="stream"?(ie(),ae("span",{key:1,class:"bar-emission",style:Li({width:V(oe)+"px"})},[M("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:bt(le=>G(le,oe),["stop"])},null,40,pU)],4)):Ve("",!0)],44,dU)]))),128)),(ie(!0),ae(Ke,null,ci(P.value,oe=>(ie(),ae("div",{key:`spine-${oe.id}`,class:"tl-lane spine-lane"},[j[20]||(j[20]=M("span",{class:"lane-ico spine-ico"},"◆",-1)),M("div",{class:"spine-bar",style:Li({left:me(oe)+"px",width:we(oe)+"px"}),title:"拖动调整动画开始时间",onPointerdown:bt(ge=>Z(ge,oe),["stop"])},[M("span",vU,Xe(oe.name)+" · "+Xe(oe.selectedAnimation),1)],44,gU)]))),128)),!ke(e).systems.length&&!P.value.length?(ie(),ae("div",yU,"暂无可显示的动画数据")):Ve("",!0)])],544)])}}}),bU=Gs(xU,[["__scopeId","data-v-e305dee7"]]),wU={class:"transfer-heading"},SU={key:0},MU={class:"transfer-detail"},_U=$s({__name:"TransferProgressOverlay",setup(s){const e=lt(null);return fs(()=>xi.visible,async t=>{var i;t&&(await lu(),(i=e.value)==null||i.focus({preventScroll:!0}))},{flush:"post"}),(t,i)=>(ie(),Jt(P_,{name:"transfer-fade"},{default:ah(()=>[ke(xi).visible?(ie(),ae("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:i[0]||(i[0]=bt(()=>{},["stop","prevent"])),onPointerup:i[1]||(i[1]=bt(()=>{},["stop","prevent"])),onClick:i[2]||(i[2]=bt(()=>{},["stop","prevent"])),onDblclick:i[3]||(i[3]=bt(()=>{},["stop","prevent"])),onContextmenu:i[4]||(i[4]=bt(()=>{},["stop","prevent"])),onWheel:i[5]||(i[5]=bt(()=>{},["stop","prevent"])),onKeydown:i[6]||(i[6]=bt(()=>{},["stop","prevent"]))},[M("div",{class:Ze(["transfer-dialog",{failed:ke(xi).failed}])},[M("div",wU,[M("span",null,Xe(ke(xi).title),1),ke(xi).indeterminate?Ve("",!0):(ie(),ae("strong",SU,Xe(Math.round(ke(xi).progress))+"%",1))]),M("div",{class:Ze(["transfer-track",{indeterminate:ke(xi).indeterminate}])},[M("div",{class:"transfer-bar",style:Li(ke(xi).indeterminate?void 0:{width:`${ke(xi).progress}%`})},null,4)],2),M("div",MU,Xe(ke(xi).detail),1)],2)],544)):Ve("",!0)]),_:1}))}}),TU=Gs(_U,[["__scopeId","data-v-016b4c9d"]]),AU=["inert","aria-hidden"],EU={class:"right"},CU={class:"stage-area"},IU=$s({__name:"App",setup(s){const e=Kl();JI(e);const t=lt(360),i=lt(180);function n(a){a.preventDefault();const o=l=>{const c=e.settings.parameterPanelOnRight?window.innerWidth-l.clientX:l.clientX,u=Math.max(240,Math.min(c,window.innerWidth-200));t.value=u},h=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",o),window.addEventListener("pointerup",h)}function r(a){a.preventDefault();const o=a.clientY,h=i.value,l=u=>{const d=Math.max(80,Math.min(h+(o-u.clientY),window.innerHeight-200));i.value=d},c=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",c)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",c)}return(a,o)=>(ie(),ae(Ke,null,[M("div",{class:Ze(["layout",{"panel-right":ke(e).settings.parameterPanelOnRight}]),inert:ke(xi).visible?!0:void 0,"aria-hidden":ke(xi).visible?"true":void 0},[M("div",{class:"parameter-panel",style:Li({width:t.value+"px"})},[Ue(X5)],4),M("div",{class:"resizer-col",onPointerdown:n},null,32),M("div",EU,[M("div",CU,[Ue(sF)]),M("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),M("div",{class:"timeline-area",style:Li({height:i.value+"px"})},[Ue(bU)],4)])],10,AU),Ue(TU)],64))}}),RU=Gs(IU,[["__scopeId","data-v-d7e0e59a"]]);rT(RU).use(lT()).mount("#app");export{dy as $,Fn as A,Wh as B,jt as C,ji as D,He as E,ds as F,Nn as G,wt as H,Ut as I,gS as J,ys as K,Is as L,Ys as M,zr as N,Pu as O,kn as P,Bl as Q,Po as R,sn as S,EO as T,ct as U,ay as V,an as W,r8 as X,_B as Y,Xl as Z,Mp as _,gt as a,Bm as a$,uy as a0,qw as a1,Fp as a2,s8 as a3,$h as a4,xl as a5,DO as a6,bl as a7,ku as a8,Pm as a9,$m as aA,Gm as aB,Nc as aC,Pr as aD,Qc as aE,km as aF,Qw as aG,pi as aH,jw as aI,q6 as aJ,To as aK,hy as aL,Ye as aM,it as aN,Om as aO,eh as aP,sS as aQ,Fm as aR,tS as aS,iS as aT,Fu as aU,aS as aV,th as aW,cS as aX,nS as aY,oS as aZ,hS as a_,Ya as aa,Op as ab,Bp as ac,ly as ad,Ql as ae,ec as af,Jl as ag,Va as ah,ar as ai,Z6 as aj,Jw as ak,LO as al,Fo as am,Gr as an,Np as ao,pS as ap,OO as aq,Ul as ar,vs as as,cy as at,e8 as au,No as av,Ym as aw,Hm as ax,jm as ay,Wm as az,Io as b,yr as b$,jh as b0,rS as b1,Jr as b2,lS as b3,Lp as b4,AO as b5,fS as b6,mS as b7,Dp as b8,Dn as b9,uS as bA,Up as bB,Ru as bC,vS as bD,Lm as bE,Fi as bF,_O as bG,IO as bH,Bw as bI,Ow as bJ,J6 as bK,ii as bL,Uo as bM,yS as bN,wS as bO,SS as bP,MS as bQ,xS as bR,bS,FO as bT,Xp as bU,Gt as bV,Vm as bW,eS as bX,Dw as bY,Nw as bZ,Uw as b_,TO as ba,K6 as bb,xt as bc,Zw as bd,Kw as be,Ww as bf,zw as bg,ka as bh,Gh as bi,BO as bj,Xw as bk,Vw as bl,hs as bm,Yw as bn,ko as bo,Gi as bp,Lw as bq,Hh as br,$w as bs,Gw as bt,Hw as bu,fy as bv,Um as bw,ba as bx,dS as by,Nm as bz,Ro as c,Q6 as c0,PO as c1,kO as c2,RO as c3,dt as d,tt as e,t8 as f,yt as g,Ni as h,Mh as i,bs as j,oi as k,et as l,cn as m,li as n,gp as o,wi as p,Ll as q,Cr as r,We as s,ab as t,Sp as u,Ch as v,Dm as w,ya as x,oy as y,Xm as z}; diff --git a/dist/downloads/connector/SpineParticleConnector-macos-arm64.zip b/dist/downloads/connector/SpineParticleConnector-macos-arm64.zip new file mode 100644 index 0000000000000000000000000000000000000000..83251e75bb318616f57dd4741cc277200709bf38 GIT binary patch literal 118639 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 OZg%hHERk*^z5WH!*4q96 literal 0 HcmV?d00001 diff --git a/dist/downloads/connector/SpineParticleConnector-windows-x64.exe b/dist/downloads/connector/SpineParticleConnector-windows-x64.exe new file mode 100644 index 0000000000000000000000000000000000000000..579e556e267bec390e8a83ed93745359cbd47981 GIT binary patch literal 492544 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� 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

fQl6mj%O^-C-E}Y(w%%dmYr7rJ*{f%oksvL33{( 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%0Di2C0n+g9BA)ctgFsxeU`aSSQRjZ03!F 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 z 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 - - - - - Spine粒子编辑器 + + + + + + Spine粒子编辑器 - - - - -

- - + + + + + +
+ + diff --git a/public/downloads/connector/SpineParticleConnector-macos-arm64.zip b/public/downloads/connector/SpineParticleConnector-macos-arm64.zip new file mode 100644 index 0000000000000000000000000000000000000000..83251e75bb318616f57dd4741cc277200709bf38 GIT binary patch literal 118639 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

fQl6mj%O^-C-E}Y(w%%dmYr7rJ*{f%oksvL33{( zLC$OSdKp4=d30EQ+gnAtHGGIJ4YwDk?APz&lp*fLDTi}$%1{>hHssc#xxYuZp9T1B z*5(|*C*=UX;;{YzKkDvy%C~Ei2{mv|yW98w<2yVH2QGGG$dsIOoaZDzfay)AdyPkV zC=T{mhcw*1rglCGC&^31S|2#fY^Aj1^Vw|PEW=Z%*O2;lvFi+fmrZTD#vt zCU#Pd499sIj&SXdtT({miHnDoa=SRjjL(yUC%^BekKCsVqScyCnnu3(owj`LD(P_T z4c7F`&SN`=yLBOnQ#S>aV?|3_iU>Zb)NKf=0No?Fw!_zaH2LD)!+p&PgdFca*4Nx- zA8@2vY#%tFZnO`jzUKY1Dd_6ST;OZ|wH|in`&wRCd*}c^0R_pP;=IaC=F|)=&qjUC z-s3#x=y-xX1j>91ZzpRQfWiR8VvvO?ziC{-1-_Qqe03?cAGqV2m;=6+^SwrHRwJFo zc@T+xhRo9u!@iV!uMT~Z)W__|Nj4EF? zs4TT*P2)yX$GE$uO}Wz7c*%K8t>b(*A7JzE<0RL5=>??M`fe$(>8kaNvg=L_6F?A_ zTYIf#H(cP+$x4=2jTWR|s*-Bwj|g$Yrdm=N3SZl94|6aW=ep@Lfbb4zRmMBEvT(A1 zVx^;fElo;>X2V*k>c*3?O|w4RBra|F)xMkm)GuxCrny4|>MxW=ly=1-=+y42_8JT3 zh)A*%22xNxmvhU$R3+8U-&Yrbh5<8z=~HrTM35pXbn+Uui2N9MvZ#hPj~jex^nm`@ zCoeS(3Hn-Cf8bo9euHp?g{W_&#tYIaX;22F+2IQn^bKFy@|3<@v_P+4_-ZQsevDLW z)5ig6U47Yg^@trDmbyT5F%L)ow%ZM=uOb%5sChE28B30|`>J{|4ZZ45S z*jypqtn=M8hPFag$SJOuo`>PVI1_!#(G}M-G%<)y$Du{U=hSjiOmH0pJ_1Xh_kiN` z_Si7jI<#F3x*BTyzLo_%5QaMV24&tba|1R&@%*bu;sSL)d-|zI_4%Js8T90aC;1vX zwWq1iT+=FIKy?urBVN-EE7dvdGQMTmP0qT*UeA{*KftQyxt+WA0C)a=EH-xYKV7c! z;FXdX_&Tcp*Q>m*KhJ*s@>~7NHtMVSs6tk^sq)3yJTLXnbBtF*bN1`Q{lD&|uk!os zZx?(l!R%cbMK@&PhO#;rjivZc2WPp+$zE)h#MI0K=bIoEF{qsV2DcFbeFu2Rd*DKK zu!=7dTGo@2{lc&4UhmlZS<|kdkC#JiVrnXbu+jXUqxdBR(Ag%f_Z0+6{Fs|;b!!y& zmR$+&kFTpFAqE!7k__%pNWRtCpaD)>Z=vJ6uML;|Ca3MKLT^Y}9vIc+`Pg0PMho_P z+3=*j0*9)XKB`}sN#tY=?1vBQ)jhi<$j%aS5!0R}L@;hJ55c~Gk%;1TksXRZ(`C+U z6>PzeE3pyOy#@G_67y#s`eGIjNO&x;yOj&i(iX1CjrtDk^N!h2p%rduHoc3i!>kCGiyb(i1RgXku41kJ#a-oI`$haFz9PqZlp?JL>rMQ?-6=)F?2ZR+Fr#qB@F-Yk z?AD4)vW28k2_;hyrPuo6vPFXocH0w8U?uWL_nok~sMK!P2zc76v>~y5vy!RGi+ZpI zdfe7iMm^rH3h|oEhxuB*5HeCz_ZNch0joPVy!akH)6bHv{VV7&1(#cH6xn2Mz8o^OxWC-i7xRluH<=5(+U-cBBKw=uM`69m zox2&(w!b-!w}Atsv->AjsX_kV&CH#93m6SXhfzvK7#&6>!6+pnk9A)t!c3JPV>RB~ zzg$@E(jQ|+9LOFEXZiM-mO6KscR3w_Ts5MbOpW)oG+VZ#|JMWf>d~%L;M1LC@n#*g zyL;Ql?9S^PotU81)(%RmQUXWnm<%is-R|IL67arfU!VE-NBM#;p* zTwyXO6onI(l4G-0rz?H$+R! zL0n;yzSJz14)G$;^2m3vz@1J{+6(jBC;0QzArc+1Va_DcyNQ<%dFg6CEdM?qj<>n< z(p}VP4noxBBpa)@YI7w+Dv<%+@ME-9R)og#Qta=ehxC4DMUw^h@#*MCQswLa+uht& zo2&P+Sf>)9y$%1Ar|NCoYmE1xy`;*YyA=96?KP1ZTM_GNZ?z)}E-4u4UCdfAa_AbFotV4+pz=fQ z9b{adn#2gOaD#h65(lRoV751WYZ|@VU}}G^3TB;qr zUoZzx=NvW&B*y_snz+a16?&-RVT>LQ&A-B28fP-Fb9@%NqLUt%nT+!v8E3J z&M54tEgp|NCfNWze)+Z1xqk}<1&e&~6H_$<%3r*w2;sKQ@ddlgd#|8|7=$1)t{`^$ z8rR64<6bkKA<=SVub}1r6<+KWv`sho3u1$~k7j7PkZGrW`B(z2b?msp*hr!FEXxPF z^zE1Is=Jr7(->FeYtaD>(%zBLnlZE*43)D5)gsx z2_h%>Zn~1?t3hYH05TE&91Xb8Y-16EWQpjSh323=LL*#knwx{>7@&FJ!tTq3tQ*X) zZ6zDbvlwH_D_y6Aq2$N91vNRUK}PQ_|FF}fxbqC$iBd=01GjG39`;S%>Lj1g#nT)a zddNDLx_~k0g6HrCvVw$DbK!H$JgG4Dh^;YM_#AUHY#VG@Hvo{dnm$>Nr%mSny#&5e zXV(X@XYf#Xy49+jS=R7%*8L3wt^1X;pLM_e{)z2qa}|h|Azoz`+mj--^GdVmo^!$O z=yuGXrTh3wcZBZgH+blF%p-eeMU|6n1z`+@V57$)pD_>T^qJ*d$f;&dm;AO)#@#ia zBVO*XlI>Bd_~wv%n8d{J1=ofM8KcFDW2j128jb-J!WacaUTnLTOiQ89_^elw7Sl== zA1}zj9@d|-!*o);j%Aq@DvW6dP~Lo>g;L?k+&!1IZtb_2^;x&T8ax9R7`s__s1~za z^f`Ai!)#@eDnEOqU4D?*(Cn|x?q?ymfVYn2yys`L)^(a+-wzbo%90&gF@4Y^>SS>@ z*Wh)Jt580IsfC*rXt&sy;p7=*Ff*)f;R~P0gsAUw;8LolId}>`3DhG2ELuZl?Eydh z{uG%U!yzv(O%Kx)E`)V+uOfTBFSXYj>a58!7VHYjh=t*8^$;U=+v;7r$KIZ--aaVG zP%L!YX%89?lP)uddC1NeO7#qs*%|fQC1H9ncD*S^Gn?)EIXQa@t-4MJQ(u(_Y~`zG z@?zGaX8o!NjEOmYO0bb**d~K3bR|+;qcUPBi}A*=+Y;-vVSaGSuFM)$Mj7*wD2K5E z;%exe=zP{TXsUajFpD)N&zF_DdLUv1ugCJ{}CS}u) z{Kc-dh^Kz&2|TK~6hH@XB&}(`{nZA8Jx%ld#j%N86@jr|udg|2NAD0ggmL zs?WDMj8S@$%$nI;39HH65$vT@UivI$AMzsztOLo34tBT!iDi=Z8^pCef{?9C%)zTK z5$UzeArb8HlomY@evg>|B!m~&oH3j3C8&o$hYwmNQEx-Z>#W=I^9$FRC9e;hCo)PM zi8)XFgLaw>hA zR_WIzJftSqJ9S)~5o8&Fv1&a5h-oS{9r~`v_{v@T+`0O%U^w`zFx)TzhNA|;@czFK zL)PwNz+MV?#nr_oQ;l29VA~>`$p*TA(fpNn6fP~l(TJ|P{`*Ji{{jae7+*7!h*3RR zee!DosnoE$6#l?+vLo?J9)u!&BkIXfU#$%M*60@^L+oYiW^EZPi*o#?_{Y#&$HaQ& zXrDM8|EH6}*dp_YF4zPB>HkqBbO1y$nCPE5dYX@h3k7WYm zVR2FBBpf*#$iQnE&FL)3SIIcK*W-4PWHp>(roWa%=G~8r5|s}*(@5HzWe3;U-88G- zynwg8XPSlQC>9G@mz6R$asBVdU818Gc7Ol+f?O{CX{@w&PVVuB+>Lv@Ay>UX7vgDo zvFlgDe|kgi$Xol2`m0U*?OKnLRx$D~Z^&InQ>+w~xx)fkaAj}EEj^u`pXWTXFVC>i zBlOeXf~(PtFViG!^%k({X8VB*bE>>!wn|D;IenfF6%YS@3(bzVQ%>1abKmC=S=*FJS|?!&cD{Jh{>IDvWyw*51w z?M=iIF0xo3E8_B*kq%d)mJwH>#9TPc8dqQbThUrCRs7OP9f%?Kh0}0yt_&yUb#b}E zmT=!AhzQla8rzsYJDl8>-k*U`sKd!L5{f?#9G7}oUXQ&) zGX?{H=0c1nW46ik{+4BLGzSSRuTt$;!*&0lL`QH7G=lr_(}-ALlsg!>Z}>M>-a+zN z@oP=$Al%eDq{w=R=*DnPD$MEceo26qgDCJ6k`B?5rv$MF3M_7`$ltzYRO=Bk0xQmd z>_ni55OHq~x$dyQf;s!55m*)*)Q~!(D1DaRk(QUmN&~Bh084sYApT}qAimy@^;l7Q zbVr~_=4tWw3!(=SR3N&4{Qcvjd&l1&8XX>gzb;z3;Ik!^!V27)uQntGd;Fe=@~-~% zydoC$to{{A6eoyYj(oGn60jQ{vBt>D6C*63Whk7<6|im$66qhAEvkd z&als_WZtxt(E{IUAZT`a)s{tS6D9{n97$1%c`DD(eBWT}I=)oW440I=l>de2wvo-&?fA6p{j8!1{DWkM9oQf^ymX61C`xQ@hJ=awb zIkGyG8g^1(1;*FUnGb&AQga>aOK@crN3C7BX<(vlmx$m($mtGU&xJ>V@1{Q@dCRGw ziu~xn#W}5TMzvzZ8j82=LLr~6`k6?o zh+8D2?Cmgj<%wvg-qkNyMr7eP9=tvdvQ6)==`uKAUfiWEYQv&S7iI%qPDMDOulMY& zOWuNaWxLBB2eTvFsi_OevCZ5;O-sVHm+tU2FSY5#7fxZcppSYj(#~L;NXTsq?eDa( zahnIVPu)gJi5ZF0cwPGyw`ZP+m&0_CqoB14EsW%993-MOTL?__4jQwA)@A_|t zWaHI$UcJZL0k1bt{7NLn5ldZn$}xcXOb|Ic&ZNkfa(2J<`c< z35>x_QD_U576V;skJPEdpWaWQo@|LMf(qgKkbu|nWxKuvT|~a5v*rtNH-TEiTOX*E zLPWMe<^O*{{m>p@e+{V9n7e(TKKi9VExs?J*-ab|3svz7@3ql=UG2S2v#$?&xehvm zWVEsO@)LNZSZD$*)0KyL)I6WV3JI+0qlRqU(H_o7%{D-U8P5lMCX*wclXoYcEGv6XG}1U+-0X(_+^o)t z+kxPATINZYJDe3`p6wKV)*VM2@}dIU|WAw z1#(EDIt`hs>rpR8j`Y5Esf>CG=Jg>Xy9gB%Y~F`i`tTkf{(anjI`rSeZ4Y$Sht1bN z^KffH>B_$KsQtCMHy}0-X5R$A`F-|HK%1q!fvN9s{GeH~Og#isck}CFpAczEQDyVi9zi@P0z@}x#^;8N37HsTA)Xd?t z-!ROga&zl`9=3Z_L%(5|ll>qFy$?MqaWNnM{b9Ir$iFuXmjR?52HVDYJNpkqDEnq1 zuFJkv3z}oIZ-U<(l6@1U_Q8^3Uw}aL>?!vG_iO-VA7NN8|yJY#z#n@MAJMWi1 zf)(I(U-P>b1?UcM7-_vA3N@-LY$Eyuo;3tQvC`Ibf2py6ovVSD##ug7kW07?btq9n z=3BN<5>Cu#O_4&+8*J8;O3Jz6tW<;66hFVxbX{PY`M2TvCt*>U;1_huRI11fu*??$ff7z54#;4b1AH!M0`g>9q% zqr%xnKil5F(K&sMy6Ee0<&AnL>0O9`0Px1`!rPrTGVDO1NBb>rUsI-i%`D`A`8$Ba z-PcT)OjFIFn-uLxH4gXAXfw071fFWUb#X_+Zc-3S>dnsKxpSrZzH=q<-{b~7h)0^% z68F06n#m#&iddab;|xTKdb5u1Y4@H)1t8(&aA5DZubJiTYphzv0$i;NeUMZ*nnjwp z#vZ?HFmqK6_=d1_`~v9bap>}l6Mt*#zdTkNqXpwkbm9Y4ojLmpNEX~i|J4D@Z~tjs zV(h{QoL5u~6u9h7LL45U(nmA#7!;xZO2SpgML1|}>*e_5Go3!wb@-ZVEGdP`!l~)` zP8I%q9jGPn*KT#S5}rz8P$=bW&FUkb57j*`eFQcjzJ+dZWONvxp^+$-I--~eR75n( z=_8*0oK?Koy!=1bJ5~FG_Y%>TbF+aZ}o#fN*IxCfR zz3DD4#0!%<1?`q0q>RaRGXjYq<9BW;eq2IDO}Or}D4K)K=I^#+=axqBcg7k4A)>~- zP8uGlIgMikZJv&hHX7G8M04v5W}fWh8=d465HrC2a5pL5612&CLF$9oe`a-p?s>`{ z$03sJ4JY3U>!^>xIF6G>Pg_*nH!gM@P7!FSne1Dn8`?{Q;Eezy(x(^Vs;EqQtYh^; zFQ8b;jRTi%fd_017zBIg9%`Xi`m2Q|vYIgrXa7w3wm2Gt!hblat3Wj;{K5}v8wuUQ zqW-w@@*q^IWz-G9N{1?q3(;r@!~hE=5QDV^+-R=(KC21!fT?q#JHjpO6|Q?r1M$4M zOofI1un>AKs->sQR9hh;l4@i`>>Up_dgl4yffYm}(W*>3Ibtxrek87cP9t#+O5A>D zTYY2Uh08#5qUligWOQ@{(U!g0x!{_XWLuF|B{(7LpseaJD}gpHLm(ZTtfq~8_#g@BPPe4jiAO2 z(j;zoCU@+4-0r9N7m3@2{zGneiU7RO1F+F)d$%}L__5RW9zWcdcRJqU%-bv2MJ8s` zfP$^(A~aGQ+h_GU}M0ukAP65`Tr-FI1nL`cXU{5G()KwHVSy@7+_vClp#!9Wi7Z*pma z^MhWuDp~5Omi^H?DFhf=iw{2lX{lfdimgMmxeS&x$dM;^Zoy<@#%ZscTsQVv)p!dv zdXRb5?eI1lsi`H@xy`(rN61Du3o$b;-ORr?IO#j19z(Lr7+@*9(Q)%i_73ypIY=6T zT@2$i(E{n|6D~-C;id_)G3+e-*vQW{kYwxb865<0*&>0ve(CyfyOGO-G1Gp1XNR|ZyHKvHVoQ8v#l)Nk|5NCcNVtJx~+zxjYn zdu_hvkI9?8khTQ1VFWc)WVxgX7pXcs+=uPyl82=hN2~S*TD6kv2}8HmF z`vzDWDx&M0f2Ah6|3i9W4(G}$HW-j%Ka2FA^9f&2YhOCmRl@$UqW+CcW>xE<^k5&! z8dY17x(0vb&5D*4egX4RM0RzY`eT9~xf@<64a~HT;1aQUl>SSDsjIoiA zESg2(2YWt;T_`-dF;hPFG#m1;nTU~jNDTpu5fQEUP{0RkFc6t#&cHr*NhowT*3s$zG(orV2R9mK<#moPcYYE1R-*PTR0xKn8)BlxDigq4FzF@g~PK2@0w5+t+*VpWdSkE|ObMp+~9m%d&Zo zar0i5&D%*{DK-(;wnl0+Q`1Rvw-jCh}wqLxzVQ0 zTAOC&A=g}uIbU(LYqRFrAY17yaKSor%6eo+&h!U&|LuIWr1%za1?wy7@zR;U;*4LE zth*6>N6%U1B#R$29w!Z!xWT0`9qW)$e(@2td`YlGv0k{V4EHG$y2ceaaH|}Fx8b#D z3dg(W9*N_-UzbJ{mj}yNzQuAp!OGMd%%S!)$dfO&aV&~MNQ{G|Es9{kJ<3yetQL{M zyfZTrv2E#t!aDL=7kUQy6)PyDg$-d%bUBdV0FuH(D!$V)q;26;QKL;jD%qCy&4|~G zi51W2$h!bYT3L}>V;?a7$TKXxiP*~3)v!+UEqesFg+rJ7sBk&=K1;egySE@Ouv$?_ z?4D5#FE=-hhnFn=h-2NySl)fjGWiXx*7821q1G22G9!Na7+*^Z?}5KUV7R)}MKXk` zuujvsC0SVKWn5qz62qJ{N?|(m8JC;5^+?+`MzD+l&W&@^emNYGca@a2mg{ zH!oUit2&5H2HamXTn9{XAWdj&0?{_*ey8Mp65t-q;DgvJl_|EI1Z5QTaVg$-!_o zFt})ml{)c{>`>wOh7HP}GFH)2pIK|sgE zjoBky4tynFpGQe1;SRW+;`vaE-CQg;N4gqLpgrg9FEPE7+*_hm@2?A7xmOG|EB9I( zAO761H7fyMh{vGLJmYPp-TP31J^y6SC%;?QGUC*?Jq~P7K4G3&-+k+z_K7rz(zSp} zb{xk{bdoQaXQj<&D{~UpS4WS7DW7{gH91L5|WKrCC#>7iAG&ZO-OO5UXW|>IDkMtL)|z>=BW5P;0WPdi%PLK$)$u zBVctaruZKs)DG^Due6K0aJHa{7O}ioLQWmC%6!G{TOMYD zy`kjJP_m~%BK}MAYsfA#gUxAgQKIf*V3*ial_XZklBrJWw`t;YPNv%P z71f6VlNoiBdhTiMM_E2^r}a_iuoK?`13H;Y7-q!hA2T{u3D=%KI=UBcqesUM&|5Wz z)LIudnw4j}`J>OJCkK*mq|bmC48>xK48U)Sj=1jHKqew?~ojI8)Dr&>8+JS6Ybl zYQ%53(H-$s8u0~>H}T`fApNR%G%?pjN7B%)8S&Z+G`O{6q5$#|LL?S!Rj)hGeD2gG_+SY`&&0hPLC_wGG`rWFC9$`|-0%}c?#5DBe8X&S#GI^m z@92rp{IN5z#kgQ}Y`+;;W?U3~S+5t3j+N+jdUS&=pbm3Tkx8G9N*+6^8{t9+BT5s1 zG83)BiKoZcHmOvC09K~(&`p^#FL9U>@fh4+iT_o~Z20c`MY0<4Yf}hwYL}^)ti+^# zzu5&D(tZ907bUIg6oCQwvHZ%ly+`3m)30Qko{()C9=Rdg^n`5FHW4?+xHa`x)BWu< zQ(Trx&tQChcDCT}+pl@}Yth*m2OTy-@|#x03z)EO7~2w-t7ZJVTe|fuKje^}l_C{c zV*bE2QcGCPR(!)L&s02}{gkT*#6=Ab!~W`NQk!Tsr^Wuhzv5QirJS}P&%3q|Q6IM@yK26t;0oXOXnaYglG=(Rs2ZT_Y zRc4Pm^wCM$8q-6hUq<<0jjG{4`%G5esds;cmr_%X+3cB@&H)Pi@oZSwYA1E#B5h-& zw08}o16ce8lKZzj>ub@W5CQ9b&2scNV12e5QMQTYhviROEy~OKz+DR_ zU$*lUje{hq!DiGH+flEReif~>3bZUgDzqJqm5X5N?b5QzJSs~zxORQKE-#AND0Z@% zRhlv0flak{?rUvtXEA=SZ1LC$8Y|cAR_hHUQi(yfChhCGa2{RO`Au{Dg|Vqh8bc^V zD;nhj(8<6Nv?F5;aMTs)ofFdb93)9y1~Qjk?;>+41>kxdMN8C4mG@Qx3RLHqs|rw; zT4ktaLGK$@7nE4(ey%p#(Diz2%kI4Lii##lh|CCjmY?lea1P>O7*d&qb*{R`y0zWH zk9|=%5nIH+C3q^9d50nPzIBCi{H0^1JLxc)g>%pdEMW&HV}~cD`R$kDcU+OjK33#qo{D8%zMj=PeN+daQz@PGG0AZ@&4{Htkd{T$ElUU~}z5`M&0P z#ncM1WPw=QG`BD_CUzY124ovqwA;6aMJGU$w5gJ~doi-A4=kh~wrOK*ZM?If)R^Ko zG+?Qzog$ArKeR6-pZ20gF4Ad&sOaP)BQG&FYMp?;Ray_8k~q4h_MIR?+5aQ5S8*oQ zTi}cT)MlN!)Rupj05H@a$ra?u7CbOOcU@(0uuR8XRioWwEXYxmrBiA_z7(C-QnsfaPF*mZI)ZvZe)$1OZ1=k+?N*fLU931psIt-RM+pbe^$9IMYThYYY3vw|Wi$ zufFnS26yhU+u5C&qX!JRU8#A|nE2 z?HJ@4qMC*3o{FWppQFMbNu_$cp;V!aPVCBr0;f4G4F!@c@%9S5l%y5 zE2$H3Dvd04>YnknylJr$T!B6m0*EZlW#wSL9>ap{mPy<};^m>Z;jj$aWj}#8g@w$CY_#;JUQaIu&~g1`Jv|;k0ht5%cLRNZJSWr~^+y9cV8#11CcNw(hrBPZc;V6}_6l*_Tw%rC&JR3TQaE42Y{;Y;N$i z7#4W|C^J8O)}A&2N;6M(@^}+f(+DBNPC6c}m{M&mmSn>IYmDsp&0Qzt3l(y)k9WV2 z?xDXuNuZFcYaGbyq1dngA5KPV0@E29Z;L zV?|e*W7O($#O9}dMAz*x>e?=Vm+@MQpMxqbn>9`%mB;hL;6+=cYIE)n*wuGAtEPJY zk+~NYIXe3}#FJbl@mir9+stXs*tO1@W9Q!Bz z8WKTHUf&5OKMkOuI*)zHoCviigL5LO0OmAh&e$$z!CN%m6dGH$c&$8`oKfqYRo&m3 zanEtH1O6iVRt32~Vhdni3(!LC`b{A-6X6tm0| zN7I4WEGh27Pt3`*Ct|ZCEVY?~oWtF&j74l?n^7HDd%4lW|x)LLRx#5R*L(4K#6`sjbVguHB-tSxGo zbpUWW&2Mpmh;JCgo)5NDUf>szMk>vBc0$6Cb@w5CWPPQ~p1FC+C39oe?`z52K~(Z? z$+au#bdkqQt)kPZ>TYu_f>V5hw=5%GUAi>zm=vcd(ZqQ!T@>Ho7XhKUUQ;Y0NktZ! z7Py}tI9^@`k0NFNAfFN~qB)RTH+AW34y_~+1hbifi>R)mFO(!ZFW6S&Z@&@WP$o#l zvf)Uh;sxlfSxt9$>w#Y0I!N@Qz2Sqb+9Z5(Z#H2v z)*et$aFLU`U4sT*hmqUdhglWMyWQxKQ=%T3FG-1UD&K~(gHenQJ>1;lb>QQ`wup0_N z*o{5*ycWXKSwQZhAG{7<0zulKJIUfhH&BNV6vP-yreC)N$9{+%3;uoM%YvzSgja3V zsnuBYL7OEScOCAE#@m9a;BbH#xsQN|Y&NrBDZqN-O57HwZVsg8<)@FL$VyK)-Vv_- zu_dX!$-B}ltYb5mn!55a$<2v*3rW1g>=i&fuixHL5SrFk5pb~X8!nXw)) z-#E}t%;T)J{DM&y2RqDlFIyadkk}o_19u>X-WRFsfDwHXPT_OuoAf68q2=Miw?lQG zM!(Z^n*Z99!zs>$;vkx@JSDM#W21aHE}bij zv5g}3X>7GxQMGC@@R&~ns}0vOJ*0wnxB%dmIXZR$%c0(BYP~)ISX;P?RcKwPs?EK$ z64y)L_^y8C&PWZz3YQ=}>mpTcL@r{@HOZIk4sp5La^w!$i`~Yb=olA8o4sMjdTy%M z{xg<5p_62-#{R<1@lB=a6W#19MOd>BbqT8@uxhx4y!??ei`JFqK$>F|AE(&L_@*KX z>6k5oX#@YV$818>M)S#*0!HSCs0MG~0*k8nrZR@UG};*725P7NXXD-t80M*&E;&`Q z!ik)=0m$ZbDG(QzlSJ)B(MefKJ<*2g+l^B9c$9IriFwsN!#bIxQl`NUGq%&^+IN_v zd2){f_ZMgQ{iT|*ceA#xu3K9|ZT;3|h zkwSu>D-LV79=ZFJx3+r>#NMZzHIaj}v-{X{IG1z3Bs$hDK_->-x6>OINge53Rx}I3 zVcm>0Nt@EJD7KWB;4&UokiZdItd(cz6&X0ys^NKQoZZvg7p%rmlvzI#`yNhOHDtJu z2)?%~cfSnodvf?QUjV**d*{PwlL6@htCN9BeypO*&nfRi%Ax>4Zw{p`wy#+crOQl0 z#k6<}9~;edwBbC|nDg9+k>>xdwJE(O=%#EjHl6}JG#jEvwn4tH*PhhReY#u)hQG%rvtWb< zW%x(K2>tWYC2sL2^x+(ecmI%LqWNUbwyAI3T<}32y8#(Cv24D-jw-cmHdkzA(Gl5O z)jDWGNJN{=xH16($=42V#-Ja&f^$PzuggW!mV%Fbb`3lb6pUX zG)^PmERJI8r;~syWBnX)_l8BYriW9@ns|f{7F9%;Mr9#H85?gcxafq6aAL(WzVdUo z`?G={--u>=@+4+E1X%*=aj%sp_McYr_x2T<+|wy@&vRnA4_2fYJSTOVcgnWWlw*b_ zBeUdf6-)UPOkGvV;fnA26D;R*3-?=4q1m-Z*~q7?9aT?2)ra^N7LH(OqwM;C=fSc(1s^K#wfuo6VojFJ@Qp5RBEN6(Qc`>^Khs}Pe_zKAWhu^e zEU;=A{ibUZ`gd*Pvu@XJrXe}7*#^Z?Zmz&!oI7^9#ZtTu{>PoG1159F_ia4#0i9a# zw~8_v;J+f@!bWEr7zTM13oFvppYmD0@wqIAwNo%?|+2*^WwapyD%)*@zo!;p=&_aMl zfG9xb$RahnK0AH^8<^LQV)gDMiU>$}zdexW%Dw373)9`<8Hl_-3f&&Pz@t6kK$Ggk zksj>{34v9`pbSKh+S{F0%4Pnm%SH6>c*$u%H0&-OH=4hyAIaV{o!hm2U4Hajc3xs3 z>dz_)?bZ{w5XS^x(~|=AWGFphMsUM0#Vw_&8cnbxpav#bp|52WPuk!8@_w}ryS=%h zm0TvHOVw}&s@od9I+Q#IM-t6-F0md~0W#Gt`bkajK(ABP8LE03qe&+CUBgvfr&)3_ zL;4lw6nNARW^j(MacG`0r)^@STZwUorKcNDc~MDvkee$9$w7}<^D0es^;+mYY5(2O z?M?M9R%pE0<}z<@EXZqbuJ|J*7>X>G70)R07u&P{pV0aOO_>KT>W5a^5L7~I^kShj zhTZ-q6Xs~VKRQ=nJ|Evupz%cQZ;vE>I+EPCV)rAj2q75CVk6jh=|cHVbHSDZnUNQB zO<=l^%M7=#D~RqJfBQ>I7}>G<{E;s+_06n(lL618%&h?R*dPIx_*+E}FX98e{Mu!N zO?#?*tIs7*Wi@|!T0^m@x#B(L)tUA^6z)gnu3S&J0=_HYVXAzYS6=-$Lm#%1MHbN; z&3l%h@Fv4wm<&3(y1raUS9T4qE!MpD%S?_$$8N6|JJffud5p#8k;3M#KZDKMS!Ecv z@YbU@msGc^=?5SBk~5d$Z&`3|t58~wct#S-QHvJL-llW8=v)CIOzbwH>{l*X`ML?E zC@W?SW{VD-dmugqwkm*$$%Kl|>CIfs_R+d*dBk16=;Rz=lm3>Y>L&7vsvB9V`Ym8I zC?@i2HuNf`TxK{ms<9+5IbO`{oURO9W%^g@?1JoqN-O+>L2X#0pl zz039T>Q+g69wS=Jnyk@A5!tBGAM{|qj|Z)>LqB>rIC9r*zLvc{QR)uIah&jCs)*C29S>_%+K@P{Z$#c%ug&m$ z%U8Xxr>6^L-I&GeTdVr_^7-tW?am+Q^8hv#cy#P&I0`CkMvd^8EFIiQ%Te8sK-I?B zAm2l06jW_uH`Ovjsjg%uG-ugH7tgNvv2%z^(E4hgXYL}$-)0vbO8_)rM%x+QlY{jD z;ITYua9`yDGz@POKhm$5j4IlyU&IW}a5t`iQbcif)@J8PhNv>Rb%8`HL#_F}m2y1r zn^c1}@N|Xcthr73a<2!U=p<53!wslQZ;2h{1fl&CZ~mbk4~20COvpcg4-*D zEH(biIq*Yxx@C+@sLnEGTW=Q9V@f1+$ySe)SzyKNf;5&mbW?9uDcL+sCs2cYEqAjH zaEmTG1)0LI?nIIm6$s>ovG9yw?FkjJV4!AhMM3N|ES~$iK*dcOjDOw@wDAo^T5@2s zf0qigpP;Z9_lqTgp|7Qn)sa}|< z(Gy3(%@s4%>%?spv-l13ZjIw;Lsf)Qw=4rUrrw6i1W;u*8yAZ|+-!50Vwcc8Z0&HN z)_B}aF55YQWnSk4ULTd+XUhzh!dsQvneAkgT6x_Km*;5#{-|&ESf9*-5e;lbBQSEX zl?O5J=8%!|#Zdef2M!vCSmFWD z%4d^7PyncL9soA&j#=W51Nw9%rI*Of`)AA6;HRCb&xfxIOGTOAIWR$+#+HNDpy@VxZSzdH<&Tx9LNgV}$dNEsPB*>x z*@t>F)P3-q0zD+L7Jj_?{O*7LnFB!^(_*S(kM>zPzU-u?)QgSHGTqySKxXJH=Lhv1 zX%;sjI>c#3gILXP-V7eF$skYhDt9^KSo=1nd3!@eh}#p%X8Ta>tE8Vi@>l(+78hdj zZ!pI)_rPhyZ;}P>f;;vDEx19yO*{bc5)d%;#El1Zdqy-iSpSoMC!^K<&Sm9hTvn$v zE>Z^Xf0Z2oC;50o0u>oCr_Z)7Kduv$Jom?bn3(C8d8YLq#Z9_+gKan8N!+tST}<4w zil4+it?o;w`_twAi0H_%)%`L0NflpiD_Ecz$Tv|IKfV0aFS;iW*x7FD8&4oCUjiA0 zj{QizEy87?L@B8$J&AK_zmPw=m*Ny|VxcklX9+uQrf}-SjcEl~IU!rDA+=x{XWb2n z2FilfjQm$q#UshZJrH*KD*3h}s3frJcng7b1RA0PI23E&&bF3psC5XoI_lXS&&J;> z8hTD`S^TZ?_>%=dRd)C}wfp9B_G>+Ls~Wd(Bhcb#rCX-B8)f_2BK*Ko2i^KkVJ__S z|MCoEf7Va`u+x6Cffd|t$XHcna5Nu90E7DY&F-L9oAFm@P(`z-#}Qk@%o9K6!@BJn zS{iss2A5@&(NPc(DGP8)!qOh>@s$nXH?p<+FBS(EZf%-p@?teQt~{2jGLXb@vsjN% zn4HiUugSZy*!NI=8gGt5(3fef)@f_;qF{G=FwP~33%4!~b}tH6+Uuh0&MS+SF5-6b zNrZmEWP#L8=8!sODRqytbyHy!cM-Sd@(d$gt_Sm zZdFHk-i}o$}nK2JuMdzKkN4<*5Za=C!UyW zm~9k`v9BcVw4^ED4sh=`M-h*9NezLGh+lGcQS#+VO_`z5rb&_F-M7PNkAnL_T zqqD{ebOaC%zUQ9=^=-maJdS zOPpx<%|i!jQj53x&+q=lJz3r=pC*V^M*7y@kT3x@kQH&Jh%d%=!T#rSs+h>{%dJ*+ z7vQn^Jy52AR^il~d_oDq}lP2o(T*^=*D%;A=9nQ?#2DJ@LG1+QaH^JM)i572G`5k|+CzQmQi=beMvzXMx(nAxrXS`jsDvP(XvUod_Bpb*J z(zSTIktI=hYqYmpa4N144AVqfxg-8{X7xhh?v9|vT{!t_i2Fi9*gAv~*ZCuf2|0SJ zrVF6P9)BhRrHKG$ip8rwgX|M9lWUZJq}>7y@{K^1hsP3;0mpvmP*nq0CCYSSMgpDS zct4>R|V}pecJXxGv58&kfVx7-DW##Yw>HUU_VDKd?zK^&u~Q&R zy3=Rj>Vkxx0u$H)#;tv^*K)iIJVHkVIfK~|9->#w3bZot=X$Xld;Vp(wUadPw*)ot zqn);GMNZ+DPTSl3yyhhEtc1KBd@IX5X5lgk{EFCl^xH1DTaY(@!_azTmn!~v2ZSu| zqWtY^^P@x7Oap`FNHv7WC|>OPdzZ>Z%I{lA>_&PprL=w#HmpwFl(OjH`bDQWnLufJ zh{VzwbJbYTnmoI7M%%~PTxVx~B} z`BvhClg-(Eg`GkdC=MHIu?!Vm=_R`_vXjwH&0I_i*TsEze$&=`5lR6UQVtl4x0C@T&4~Baw#dRbi(t?G9dSK95FQQWO-+$4>J~;hz>$%Jx zK{p^%WxwoAwKydFeqbs($%5F>84GGhkM`M{tUW(ydx6c#fz>QAd7-+tYyEJpLbMXQ z{^>!w(Y$?x3u&?302*z>t`Bv#tb`Vot-zJKnzHSEWjnmGgPp2&K*-?ttO-Z8HMC$(=JYtux}?<7TvNEhgh&vQhMTvaL-9Td@u7kqYB` zXff%}bT?*1GH2(~XUISES6GL(f+x?^C9^EsiT$(IU6IE+f^rjKG`X3ts(=-_&{@6m z%2yuJ|MtrCQ+3gXZ(%hEA0S?2gSS$J=opMhO1}$%_C8f<6dx(MB@x7U^0aVrMrow( z3tzJjinF4VOh*2*}iCPQS@SYy!duRwVW^5;}w&)Lz`m`{w?W5AMCoHf>VdquG-q`V?oteRHuELeb zJ1MS*AY7lc*Y=`_ZRT%fyE2IwzQB_z167m!iQrJ$sVd=Gb;9&557))+i=IU-HZDkq z8yqym;hDOc3s-34gPhD62AGK18-TF_4J0P|lfj|UetC6z1RD(saO@Ph z%lxF+-AZpWU)=R&W=-Rng~%_P%nv@#WFv!ZG9TfKy++Zp_2o@o@X_XJGf$RHZ8A^U z$Em+iax2eN&eOqE5=fp$w`9n{{oe!Lce$ll#Wz`hZ@1beQZ+JJG!fZ{sE6S~#lmwF z!?+H0L}Yb(9_s*inK2l|N%cpPlPmir6WjwefX4Vxx)zFe)IbTA27E1C9>86zvr8MQ zP7WvMEhh%dU72I`RwD!a2YcNItK}H@OVddwh|{9A4J*;&$LM zo;%k^7CD+y)%o7*77kI*QbvZr{cR6jJ6*-Ugvp}>Y@Rxx(eD~S(Uy|;6 zneOB%;L^)SJh~OnIDR|fvcX~BQ{G!oS*;J za@pr@5SQisc+TFbx%`Z5hM1e-foz5mWN>v{+JX&?Nj;}8CiPQyQgeJ=buK3Lnq21< zX~WuN7QxEadM1!X|5Dl+;~?$)Y8;*2{ZhUxv&)G&4$Sv!#GKFmpB4~%(ai4{Q~4T? zv?{E=T~Q@rXSr?51|;bYCyx#%e^iPwly;36-C-LZuIu#usIaM?)jJAD|2BPZe0l|}J6I@JpY2jSi%J#BXh8PFyoC1}@wZvH1WRCn5 zTOvDqt7|1D_gEA1C!`OY6)J4kFP_ebBb#bs@Ri&I9j^KZW@Fc# zszssdMXRFNWVZdGfCGdguFVUUhO4$ms&?6facfS$fp0b&JYj=*gtzn&XQajru{k!G zKe|PUR7O!LJZ!d~lgj8-=5}P#cbQTY6w>>mcO)Jjy9XO5&>v3Jvmfglx#{5~JM;I$ zRfC;X9-)0Zw4*!psOR)X9O{>deeL9^Fx2)1Gyie)#HWV~8S!i=Y)g}PqWYS5XySXj zUZ-lPHcQ&|=I%)A(;2i|oq=~j8ZH&m8FcEh_Jy~pj?@Vu?WEh@Luo)5TP{druy6SGEz2uhA_ z)x;vV8Y`XrG%7GTA69!AMq7sJq~XIBzvAHRQd;g!i<RNDB{HZ8DQDReZgY z(4ZvS2Ivx4B8CU}Cu3aCG3D`3x4!e(HDFP+Rz$V8D%Q)iZ%-?$Zg zV853nCqTb2&cq~sb*LgGgQt_q$ug( zs|jkY2aaaj4)S0-(Frw4J!zyLys6^ZRIihjM82ZQw3V70sX?a5!`JxL2CM(7v2LB9 zDhuXQL`$82N%Xs@h|Y?4=SKtjbAtXHr9TJg&v4?u#eM)B$3S$5dBx9zfBnw&ek;7+ zKLV%H8@%6F0m;6r9GXR}qNy&VKjZXgjQ$*^Kjkz*u(MS0h>zSN-5g@MhbKkS) zDnD?uEXq}Jm9n^XWb>?Z^L(1ibH-QmTx=~D%4@F5Hg#k!PqvyaH_L0eEQL19?rlx@ zg%zorW@YPno$&>pRPobT{d)5!U|qLZIP2M*v0UjGI{8u{HDyGm{Jl42jT{SR%0J~P z*(tpH;@w5j6XV^-5;JM%5wWU(4R{I#*5qf^XA~~Xl;7hPF3ps$jSjQ{cO;4M!bUDXg)S6w0)zw5N+fT}!=o4f|zU|2D1h1<&o+uuORo z<#{_HT?%G6rqV3nBQ-fhA3`5*b@4epd}Aot&HVs`R!i<&uv1_}r!UyK^hJKB$>D+W zq0|Ia_}o_8F`-lSAyidH5@)V*fuNOHN?jv^lT7&&L`lYWZq$Y z-^b*bmQT}cSW!mRWy*ighsRd(Qr8hXJbOK@Kd?$OP}`J)k@+-E+ZoF;Uqgo~(BNGl z?H3QnulppCfRAQ%Cr9_WPCv!wSsrt_8OeQ)cQ*K^!eGBw?oq6l%eDMPJ z93;2q#81HhvDfZ8KOuZ@l4AF}#U>%5(uYd*0r6d^^y`_;0`omTQ~nF`X>HWmwyuC5 zlqr8yNp?l*TY=1FYS>-7g``v5>i4c&H+wJ9C-qu7O53+g`H%T7Dz$V4=;9zQ+}79K z-md${ibhn4C^J#4(O~gOvMP`^wq+TZgm?mrx8M;D?Xdf4dOJTVSK*@QkX7f=f$kOx z;dF%m5L1f}1<~>bbm?WmmQB&3=2v1R_^3A|&M1>3&3WV{%eQ^aFHuz4hAUeszMd@| zq=*GFTQcRpdDXH`Lg%mMDcV*wS6mz{4!9_T$pr3lOf5ft|(2I9@6nl5N4mJDOjK7IW=DESNZ}EWYi9Kyp3K zoPKBMGmfHI=bi4?;#>(vI+*` zpAeI`i5dd&wlem4fwnix&AIeM0cN9qZR7ox!1l_NpNAutwEwChxvu+I+aV?wO&sZK z{*x+ME&B101f^%n@3m!OM`p@zQJWVB|Exbr=-wQ6W{ilkU&T2 zg9U$TfH9aDSS?Pj$^mPGOO#=^`a?72$M;qLfUW)>Jop9eQxrH?5NCb53a~h#2&Om9pY>HB!W!( zS}p#H)XqY? zFp{MfZNLp+=YZ|!U)O#)aH%Sj}7K}3qowLhpqJ8f@5?%VzR}&GOAzg3*0$W-w}L}6Op{` z7|$+TjpXP)*n3UCp~Sc;h>nVz{OEphb38aOL!-murY>4?szkC_L2_dv@?bZ2q-D&r zgzI_AJf**yFRYvHdYmcGbDEvXXfP2~~RU^|jjmyuA z4kp_g*OZta#D%KxX5asd2}c*KU)x zcWy;x@(GR)`4CA>>Or1eQ$_`W1z1&Zv>Nc8GQD)z3~p=)9Nr!s>U*R$RM^_R)UM7a z-Y^K$OS}fJ3MXF=SG^XBxAr8Tu*I|G0=^s923wwuP6{O30*9}KU;3lR6BYOBeSC-H z`5x&^J`*bJ`iJl80^fOUGki7s6DDvutt(un-}e_S0)E)Yi~k>Q?*boHbuIo+GBYqh z;u$cJpdh2h8jX)=d?b$O3?yr{ z0jnkiNO;PlNYGY6t?oD|QELc_&hNYSnVBSjUhnV!`}}RmoU_k$TUeKIv7X z>8E_4wdf-?P45_u!{~x;irz~nYaDqYYa<<9wf*hXhLg4%ja>kv>ZJ986TV2mEd7*r zjxk0D9LDHIs$z`Bi|a5CIM?t2Emfui0=rBH1hstC_>652(uKxf^2vB{6-7E9;!#3} zS*tpi@JLnmgz6Dnl#_V`)GRm|SBWtRXCOF!r8-->=pIek^+8TKXgn)d^bG z)!+#Ne9Gv|0OK02%BUFL934q?wk~beyxgm%{ZjCqYa^_+oyX7!w!O&gDO09o#)G-5 zYq?CGwMExB1+bj2=Z;kp64)CrLh9cD--laoGUuC3=NmLf%#3zvZe6qh>SH%I!K=Rb zg5g#ewyKKU=*i*)YK*QDm_DDETj3$}KH+tcZ%Wsj{!P(NK%P97 z0FST)sr8}Ms^mIE$)sDOvObw03?OVlVl(?B(t7FZ9ea)-iy2a74`t93_UdJbKgE6{+ zERHq*id?oETH#ys#m*KWHH~nZ(f5O~JtHIILZ$eVx{u{D$WUz0LBa~H`SNb>>bJhP zG{ch4Oe>c?kKp=}`lx$UVG7KN00= z=Ify)?GLoq6fd zH~9lPMPKY1^e2-k5Y@&(RcLX zM<=0x?8`-VFUS)6GVaj8ySN4n2D#YaSimivSF(W3SSmyAo7q-7FP1c+7zjOPDbAD7 z2;)>C82(p``;OvkxBE3JhWaBHQv3kaf3#f@)c-!<`;x4GEsd1!7sHXYRekzH?q)IW zX6LI(T-qh;-Dv!o2v)eIxv3yFpmmD{*GA$+wC?>KQS6H2(Um1 zLL=gfwO#$*t`KrywOOx1WvFH5OkF{1@-9vKxF{!-z~ooD-*kSIp-<9unm*Zur0I_2 zxhO|R*v(^go_(5R%Mw5+(s+2y9q5I<>Q43@mdIUZs+F9xp45(zLPupsHcB*Qg~-U_ zUv`|pNBiGj&kEUYmhO}|7X-${U$adpPPlYKRfRM9Eox?#)AYtQs3J$`O$$>b(URG2 zpf|0_M`%*wLi%5eu1_vbPkUM)Fs-1hp=t$YgT9pHvE?a#<~T`70hJuXLdH16;}d6jo6;i|=VQOikUgRu27aRl&POwvI0kD?q$a%Ai?&-~$LJyxQ; z1}YdY^(FG!)x%O@#?+NAYhRS%o=M{bwz@~!AD(Xi3cG!?U;8mzCoFoZ`W&b;!Khc4 zbT-g#tj9CIAl>BOA4)e_Ds_+pI@Moyd^EyavDY zS14$6Lxm$sC=-kg(~;*kt8<2f09=B|ytAh_n2gYfJ9mrLa6G;`Ng&0{XKpL5stB#dlz3GXDxpy9z zg%v{l)I;z_a@Ld19S7Texd1dyH00|r0u=`2O@mRL@gA#z3}Z-Y75Hek7++w?0i-C+ ztPnR?P8y9mP6{EFn7Av>)Lrh7@pkaoHqLj6^en+35`~*T&vht~ki-vMd=o@~b8nJy zjC!6~S;p@IenoNwZJc~JtpH;9o{gfY*Nt-CgyMRDX#n>2jWK5Wwor^3*4(0GrODk( zW{RUxd3dC(i=2vwHwQ0zAqao= zsIFF24u{R1cIMTGA5$P4wIYbEc#<92sKQb33KN*Chom^jgSKWnz{Pl z&uB7n1+ki{03R45m?EuoiVa8TlHj#9kz*{|A_FP?h?KU`w^!F8^Rq&bL2W8TYTPC~ zbA@iBIa1LUkkg6wY{aj^3h(wwqw%YX;#c_umln@O7dCV;2FFC|3UpHVc>?Zo`mFjI+tFbj6E~8 zzt`5a{6GAd_-n)$z>+4LTAOrl zF7h}Q*2vU;e!Ffd@GAE*Gqq_b}0^avMuG>M+FMU@LN89>YUU`RlQFIhM4wdsTql%cxopSIT+7 zV0VirXjE;Dz4bz6;qsX-M`RSOJjnx55_|Z8n}{{L@UMXyJhSNlo36ksyNAUX>V|t3HBvCRIC^o!5Xu1XO)fbPu3>KYTrezW=ZKe08SJ z6YM@e_*H$L(5KHkHI+S5pU3p+^P+|SQ=ikgvrEkyl;c>5Q16I4SD@u{s8R5pW?XPd zw^FC3(c}tQ0*Q(9IK@bGN5gA!9qJWaM;X9-W4w=dF2=i}jQ0TV0p4qQujRdt_d3)0 z8A;QTWJpES>CA~f-!{%GG$ZL%c`_s#B!vWrs-j1xWwLEdC=z@eq>i<76!izbhJEJv zLOt^1XTr1%Q!ZV8x>x-is${7o9tJattkcAsY-nP_%drC^661Wv_}0#U(%PcWWzaJx z3sD}*DjWTR%)A|GihDlAOWWGe?V6lpG(JprNw7Z0v&~~Xzs~q;0nyEkmXrs|Ss_O{ zrrKAZEWV-m4(wsybtKQ$i!2pwvpy%AI-w9vt?@huG72Q>djsQNO=gM-EGTk^*iS3u zMR?Ka2ql~gs4AW+%oS2rtup=%wH#75mb1L%_^p&e3Z900GEUueyZ?&0w3>cZ;g5bA-VLcYdvL zXSd+an>6~8ESod}U710k1=vglf#e`b5(}6{pg`lfla0n7ll0XHbdE-#Uetl(g+8aE zn{3p17v}#E)LAd6^U{$qM|1i8P^StNqk|r6)PdhulLveg>_NtxW5W;G$L1AeUrZG~ z*DSjh)5KSOp3UYX+#iTxlj#|*_s>+}L)m(n(%Y<>a;N`mh`HI2Xo@%hc%7~F1@RHMLHs4tt`A}47i^7EZ@bmW3bN=I~?*)Zn3 z-?DxsqHPVT=SjO!poNi&<$77V8e8QN89DYAE(B=XR)vjA#qA^P-&SK>x=O9mf$*sd zQJV51B&Sa~9x?oFx%vaA`Pl4Mp|}af2WWZSK5)~;(#cq3vW^coiJLnV#>Z6jjf$~f zA9wHNHHa&}%S?>9=%O!D%0FKYDKCBV(baBRLPKFa`0EaynM!2|E6tt6Vc;vD)ZjDH zK1ML>OptmF(hr6V%3=>p(@peM{q%J>((-Mc*o?GaQ%UTOa87h+ThL^E!+W*B*wnD> z(oO_6AB4>eU4Trmz5y)2)b5&=o?1aq_60HGpFz1Q%W0{gv9ik(gkDCEtsG~Ay(E+iA9>;@otqEc9AwDil-xic{ zu#lx4JuN;V3>iRGL&MQLswOrsxqEfi(b^^W>~UA1kGtwL&es z@crXM&=(Jus1vYAvcddWe#W`f41UW$V5{+3YuM4bDM?l{TYIJTh4rZ#f{JZQWy$Qk1~W9h$o6m2C|3$~3X zOzY>esS6YSBf9k99U!gduI;g9#?<)V_G5BMRh}3-DK0> zLD<>g=LAXiZ;9>Z#yp|UxZ0fY0=6A7ce%y1q*`U@>TkLYIR|iHV{>mV?kItv4DGx*g_9IfTG}h8(P? z|Fchn78~5CG@Btpkau^f2eIhMy+IhSYXv6PwmCQAh><*6{Rz*6wCp>$&GAq8NPUO5 zXm98s-PDd-bkvsp!AGp0-($I!gKp7ER(;o^N+}j4{=ou?r3YCD8kAZYF66=JT>8PL$JzyQ@9bM|m>xs0v4sV8!& zRXtgtay6Lh?=l_;^ZS+60bHrhs%GM#YN^7ZRM|N~ilB9JHseqZKwHe?wwWhwH5vu` z3GY7pJWNP{a21i_muJB%ki1N|H-Y3lfg~3B%}hbtKn=}fu#2c`T>?-oZ)5@5#@Zt5 z?_{=^?f}2I+x0pU%J@kylXQUrE`Yr-s1so0TN&kU`zyL$7FbtS0&VYnY6JY0mC0*> zi0Co!34t||-!e4!6dA%}iM;!g`3%1#3kT*lRk-9# zrQb!WLZOK!c+7~YGI@}>NB7F>k zHH12t?~zsKO|QCy7N2^OgJP_XrAYH2({qnej`%C&;S|j)>JFW!i#%VF=XLV1LwShM z+w@y9`oA<9@ql%3yvlgseiE>^EHtgeQ#`^S6{QMu7@A@q>rSC)B^9DEhYE?mF*~lHFfb(#V#)p>Ij>)X{ks zDRy7_$QMLc02q3mu6b5Sh?4H*l2vf(FcQ)!OW`mQa^_(qWMV$~dP#`U_!I@RWTc*L z@rYyu3orSyovdQd)l!i3Ki$jG^isNbd7q4%GgJ}n{z^R}5`2_#qzdG5(QU30>Xjyx zxILu`tLUn%T)k?8l@~`n!cc$v9@@26?(NnjC;{{dS|MQqM>$iQ8;z#*H`Mbp4I3 zHV^hjTAoSdUjUbhpXoEQblX|BXZ6TaN2+jvBqa*vy9jo1_j57Wjl$a{IqrUn7utb^ z!EC1WvF?XR67B*|-wUBR%k*-WKhTYJfXJ4`I1-U6T*a#{t@$+D^weu#HvReQZo$mr zHCtM|Q}(x{Qqi1Nvt^yP^L(TMv7ZVj2M3ol=$U!~p`B)rmgkl)889#JWqO83-~e^! zE6_EyA}BG2=&QOOEGN?mx0#mfWTD5RR7eu_fM5^h&0VJPbbdR7iGGMZjsCY{KHHzx zJHrMIT2LRJuo<^+hT=$E?q< z<$)Q`mmlZ)MU}PHZ1^`X9|BRCQW-3YUQHMy#{squGGheUh3#!IDpWxmq~iR4&RsH* zoezLJy>%ztcX!MB=#8gR1Uf0M45z)cN-EP2G9~ht(e*blCx6?r4ux|KhfZUxi4c0s%4ZoiTDxJwZGX^Lfrc?N~W)*L48pq%^V;ufzk z2covCsF4^t9k~3h4YUL2&qBtNJ*Jc6RddjDwwfsj6Rw)FjT`eYqeh&ep%&x7RGC&XAlH`9fG5C%_)QzxQ<|Bc9qP$^N3vUR2kZ=p&| z{K%@^byUyW0!GbzaOATkqS?%f_Y*gw=;?-Ln$}C4e&DQ0J7pZqJ z(ctGaQ;jE|%rQSoY11wKrwrEA;7au>i$b~i%vkft`5h`#-J4Dbu4+?-0$?us0DrM$0RQ4u<~c)hXSoL8b|RJ z>Umk4yN)CoKA5!2#`-1vs7Z{4u?=3H;#+5jonfk-VW?y{h*rJLeIlg=yh#sE!@4b2 zehXk!|JFK$4l^Azuw5N(19upVY%o!qE0!kCQ2i2oQ(OAvMSN>l@99Bc#kPj1+tH?~ zp8*)-uN~?fTEzEK0Eq}sdl1AxTTmweM2TczPr_U5B+Kl_ojkIU`KW9ezgsAo;`0qfN9LqIaHKh{zS8ZW}cr6%v8#Ud!V7Ei8Qjw#B7`STcYhC+0M59;V z9zJPnsJ`_ws{n3!oL3APSmwH`a-2rQi;6zSxk7{^PCA60?O|eHS?jLvoQ#*d-~sEX zuP)0=*xPl+Zx?-ZSLC*7i$1>NuG>OGwpvPeYtbj;Z@VixWP8F)8Nam-L~lB|>k`D- zHh0-|(DDX`*5*EgN1-%hni+qjWK7+FTu0=DG1KMeSoc#04&qVmn_X;zc=A8W7{6hNeuNCUG`^z@>_jrIN9Zp{Uh$)%M%7hU*tQnc3+!&2d|=Q ziMzM+g!{O23;lk9=c<#4gR&bJQuh<`=3f`RK(}z>stZ@)Q)#&$COMY>bN+&&yI*f} z$9a_AQsiD9lLN{0eIAUJ?+%}tXQG^hWV>%B1x4jsN6*9vMUQoTmjvyN{kZ zh@bO5zQ*OC7noY0R_LC}Y)fZswb$0C_46O6bG_&KuVt~|Vb^6^o#J+AZ5E%q1RB3B z=%lP_SMikY4vnnU$E^$Q-&N&ouWFj$iVW4!2G`1M71kzot9XdhI?ZaGp7tl}dr+VC zx^ZJ4em1rjp_N-|gl^W9zaBI@2G8tiZkAdkZUzaL;@-cQKaUb~=51jARuk9=Gif<;n?|S%%fBz?0 zP!CXkZ^eq?G?pq{Og@P1K)q9KIu*k9>OF8no4`eZHi|EMp0MSiB*Oq6ch|_gS?>Ro zpSXKC*(GOy=i^9fbAL3)<&b9E+)1A7Rq<*1X*qPzVcyv+Tigev5ilV~R!eWXmA_+> zR2+8sGKnZ@^Bvz#CsHtv!^bKG=@ZeS!nW<`<4H=;)0Q{V!z@V;^Ebp}V3-~{T4uHD zaeheiDk|L}5w(eXhm3@AmZZmdn;x0_CHaZF&mw!9yO6*3*bJWRv5iPSWx6Y48%i3^ zcxCXzoLA4kZZAEqN%vUGIzlruT7Pu>TV-mj7kZ>Sa*EAXZ>9=cB%O|*C&$uiMQJ}- zbVn8BLm+L>D1YQboxGH=w@J;Z!UuGX!kWO9+zd~h371D}_4?aiq_y%Co1!#X$0A4- zPE5B))LnfMPMGqCx3^Z>o8G^@(UeTJ#ZtNR{;XSs!76XAbaxT_)p)46watAQR8{^< z`_fG^6OR`M*dZlM8YBvDEE^-c|DdPJWo_7Wst!`8n%M|s&#mbSF5f~W>XYvR6<(27 z$!uD`RMgAmlpTCz4KSiq;r;Rj$X#Mub~<+<%ICvJgO5i-$tQuIR4WfYSyK~q?M>o? zE+eir<4w|%^hGBImp>v6>t)fjm`8Q3^vtqLpn|KTwOZ^Ga_~|Vm@K%_)M<4H`^+cN zQU=f-(IgI>slxYvF9RbCH|N86gh$KgKug4vFr8{8=p(1rwg4<*c?--WHnDwdM7l($ z@d25tcA#R?Z>hqSRKhve8*=oO3{#A1IXqyywnINUPa!yenx~NA{^GYb$Sz!AON5>% zo|NWAi!RF165vTIZ3*z|oTBLP*xzy*8P8F(@_7XbmpZVNB9ue^+?tAmIY45WA&MHKs6Zk2C~Hoyps69+tL>((wbK&F;pDtl$^U`R$u${Iry^ z{?_PhrkU$}>_|GP!t&qAtW|r>cr`fnB4EI-d$v3;;tS7-nj-uC9{E;{kpV1e+3hpS zc`j%AxN?4l@GEi#Mvj86DDQ0ziIM}M?k{WU1=PFN+`mQWiF69qk2zfK2*|P!m{kg~ zNu4~5X64;2?=}zK_7cIVW1eEg-4pVVOJM*lYpj5(FinZC(mg0!<@XN#+Y9r=s7tot zd6yVd!B29SxDv89I7R%3U|g)#ga7ReJeRXBQhnwtG3sc$Y~CSdZ}^I`dfOAc>MzTg z5=)+~r;Z&fee|3pg{ar1+_IGl;S)bd@kMk{H;V?qz~PInJivJC#5KF0eE4;BJ}sWT zed~N2s2;ISfzu)OLF=A83GmJNvPfy-=9Klh`i`!y;OF$O4t2*evmS(Tw)m&J7P$S> zJqre)yV)UpNPmVvBdvx-pR;V57g;hQ%-Qb6$HJDHi8FpZ>I;0PF`i@EIv}^}oP;59 zaBL4T5?^XO^|5xhW69D}m-7R|5VXb~+^*tdUEQso$l#!r8;Y%R#m9Q&0-xU3yz*_t z!*x|~ax8j_+;w+D5Ff{2<*>+Qq552Scp4aV#0J`{t%(PN+uxUySZ4;UoS+qQ)g(e5 zqJa)dtqS_L&3K=1;DlmIdbO~!>C_~V8*_v4abAgVQcT4jyW$7?_k2~*sy(>cBwa+M!Pb%U0HO11PMsGsw@++2m~YNX7&3ErI4P= ztYfmsSqM+CBZFj%D2wDHK{1d#kcU@0)&LLc6F-IZ^0e)iePp9PvCMoyYib^rLo9|m z9v!mTTPi^JYETp7#1oDmle{xjKi-?DA#T9DVvp4c-o**Iy12?8@w*mWE%) zL3F+G{qR?!Ft74^%h!dS>@gfk^XFAroVZ^X86Ha1=9%@mA^)n#G2&*psvziJH{%2O zGXPhiA0-QPJZ_o^)rS{*85_4c5JO!Xro#2td#kP0)z)5XM`A3RsJw>6vCMD6^}wb6aFJ`l5c%;KKl}xS&^*3g zgKws_joa8qbBZ!DG-w4~l{pKJ=hssibS)%0!P)b?RsQe077niVudcG*$8mEN?klmD z0{@N~NHMFzqL&w66fDB?BtF~qW#l9vM@7)6Ze}Ad2_~v@3~v?tu~7})5)Ol#sthlv zfpT^L|1JmPX9m)-JM2(piE(t^B}&x$Yn&T8Cqw1c&)>86vm?kcne!KLeMpH2_k@}4 zfL_UKS$T?%!OGO);)8Pupv28*I;*;?yjxv~pjc)30cW+CDYs~#Uyo_yf!ePLp@$H%dP zoS|5&%YG}a_U|;B{IUtJO`n@&Q3Rj~6+%0%L(Y&%!7ovt_K>J?K0AcU+zRF-%Hh9A zaV<~P%#K7?u>;B7&>DbOomRXDR%^G$Ja>7BU0OR}8Ms8jOt>fR$)$3z7u_z?Z2Osl z1L9^H!rfHdOoO=c^a;%UQ0m0pTkd$yj3Y)cgb$NH|{o zq&U}=nej<4hpb`p-3KG|iZEZP!aw~?7@-CJ^Zl06j3P`fdS4F96J<8Y|!nIWP0nI0>;_Uwu2@-#ZduFev|3!&QTY+IFVF z)DJ#Oe%cG4oBq`oKAK+=6)~1Q+=&unUMa-SEFScL6204DW2L>3SK1qSGy4a~%)VK~ z#RE8nXSU5F<&zvb@5uilU!vA!=Z)R#LC-F$gzJN^^6*$}G@gwZVqGU~u_m{%e#0!@ zzTL9dV@R)E=~>^5{rVLuO|RW--t^)Xj-_vnqT-PMZxy~pdZLFxw=~}(3G_sIC!P9# z(xdH4`b3rAq(|FT8ajP@B;7H&W58(IrsXc-5ZQx8?b64N6CbK3pwTe>lPAv{q5|@0 znS>M+DV(@;XGubQ^5k9T@#Ehv9z4e+ zKTvO>jI=8gu7v#;S?Jz9vOx%6qFUv%u%>CgL(-nK(?kUzGFjG!q#m~G(%X2SSbu7P zoh}8$o~!pAq@tF{!NjN8;i8AfyB~svsj(skIXWV{M3_LFVSE(DM&y9Mqo>u@AXWWuHWSge zh`1gQzcDJ01j!~R0tkUM3MkX~nUd(e= zu*9^q7bTKCV-#_3D2_5TZeq!Ms}G)jD4G|mc5-r%S$S*(vGq#IZHs=)iGRDRgu?3H z2t$h?7DM?s@0f7?WiGS+N^mr9P`KVTxP}-D&gQhvsn>sS*P=_V95-%vWZ0rhYOdgS z@S;m(c##uvl0)Qn#MomNcodG-7>vs_JhKXjYo$}@k~tXVQDOZu8DD}Q*}R&py9*>S z*6gE?S{EW|C)sHz7kkrANtdzQd+y+{pXQMzZ&E~jTR!h0=!W_+-XF|}@%$>x^;OoE z5WZ=_mbXO4sv3f~_v_eT+1%wMwRijODM90|RUaGE+vODZswu|wJv>CV^KZ5BZQgfo zIcZCj^TW+vDIl3R*dJ---$vuxJnr1e8wvA95RTaa+99*&)c)?#NLE2rpR(oN7 z^s=CV5Uo+&x%y6V&X~6J=!u;S-~yKR-3Yj43f+ijTR9)Ec21x~A`*aaa<^bDTt@%&mufX!hu)8cC z+6S8lR0hk8UpM!igP)w2_1hSxWV= zn(i;t5M>-v*&ebuWAeW8o-eZ9?VcLzf{=A{MNR3yyDxQ330ezHqv<1|Dl$xw6)QT$ z&(L}W|1E2uRkgtt#`E#M<&svl!6PrR|K=q&Zv&^A8XvVE^Kv4`@tLS5J3`LYnhi~D zK~`QYPQeQnEV@{)U+`~?ex{mw#NrT&cDlCLhHCOLMD~CMa!takRquzzu&m; zH1N9fC8{iM?))1+A?t2msB~}VuX)C&t;V@-Y<9G9(&SBsJ98m`@}aE^2i|yq1eI z`zktG>W`k19G)1@an~Ke_;|BQs(3o5#<@C}+QM})mNV$@G47kh5HwV@04TB_B);M> zX>Oy$eQ(Kc=l3=wkT8>aPX zGT+MoPx6*;Q$LoL5VLN-QZP4FIGdmk`bhl|x1v6LP;5*+HKYib-kdB=6~4#8Dl2~? zNtn&M&!sZdHa+;oP@j-snl`GSFDQ<(e2}a|fomfFm-J1QQ7Y~}iYmk{oZtwBxwleX zyV}PG#&cAg`!*6}7PMhZvDi%N;r9SvTK!+qUZlrKN0jtU*j_xp9GKTsq zM^af;+?8wd3VOc^3JKvpAabieA5z>u&*NI)iu1QGH0VU9j7ff{@@w}&v|%9LmErnp z@%p;bGa=zRR%SO?Wd#e^J!EN>5psRQW%UI^L(Xl)u9)Eordq1~?K6}pkB$x|LMg5S zSkLMzO81(LC;6%Rg9I6^PcdCx?zT=JQa3s zMs>xyvlWse{GXjxC!B3dO6V@GMI)K4X8#}-`&cgut*^f|d0Btpei`rsWvKGQ8l8t?Jaj zv%?q5pV9K?Sou@PpJmFBzuEo%8_YSr=`!axe|+ei&#>n_{rwXCz2BTqlxd!u7adeN z*JUKe={MKBLDsmu^rVk-^_}%mH)m&kJ%|1Dte=*d(i7ytp7px!ajyUG)4uc4ub=k2 z!QsQE{Vut3?|(JzB~ndx+P_1iN1pbALu&rNoAz_IG0$hnpAz|VlKeTIKg(2+{O#rQ zvh%J(_n@}t>~Q((!OEifY^$FU*QOqSMCXNS4~A_Cjd&4;%qYk31eq@{QCEVba?4Bo ztRj$ikoq?69ddM!Za2)LpiwC6h=FoFp=dU!GDK2RrjLD3|mW!se~;E z&f)RmcFD?)Ml2f0`xf!iAE~uGON%@BWY*u9$BjVN+3L3+;=H)DxJMG5#3pYneoBg3 zuPnwJK*H=%Z!;+pO2`z>J-|j#VYBhbEi|tgVYRYTu=y9okCK;Zsmq#9I2#2``M(<1 zl5aFFSO0N&?QyM#kNAHvu6Mt7T=vRDPtqY?-pYhLK{;@j*ryOPJ+vmK+YX-dB##4ZXEtgp_kkt z;IO56qvja~Ms}@u=nr-HFZdAy>UD(%v*p zhvxWHy?(f&LfX#>TXWE;&nup)n)i}l>?mBOmu@zCvNRbToo%jHM}kkAG}X94svc@L z#m&|iE4QwFa)ml5+n5BqA)b1mf*v_kh=C%M;{CQkom?!>M&s>N(0MU`*vf7VS(kdy zYd3RHad~Fs9CS>N9FN%}j{FhH!J!!A2Wy!UtLahN;*isF5#jJ}=%}$aYgxa_YE@(3 z;YgLYrUP98f&ON8cqG6lmXexwKNo|?ny8@4n!jaA$XI}hp{4;-M7v4og!)=<5KbMV zTnPJGIN@5tb>c2I_^`tpuX##p;k^2z{#N6GbE#vBNrD)j{2j&vCy@|xUQU?SckCwh z$9T;nl7Zna6Yk~!oraP9J+&^PrXH(mk(b-1IN*xw%H%xt>HB~)VZt7h;KWH>{Fday zKlo5(onBPk^udA)#RH7wBDI!Ow180F8obLpm>p6M7w&Eb8f$T(}{a zT3zM8ZCPX*R+C3MXCNXhX?lb{0lctvD;f#W4T8$hBGjIfmw-I{!hBROmP&9HdX(He z1(2v8l_b=W)jdM3(FDj$h`L4PvYl}MUxUmxG8cd4O}7w4HucX(J+PRSZVfn@E{q;? z0y-JvzK^NetiQ8C3b7K?WR_e^v5Ox(5DLy zQNNOci2^5_(>B?gR{AswHa$r8aH3|hUY%65QF-?;{Dcf2*EBtB*j%BM*w-a~slF~C zz-I^3P{BWBX9PjcKZ;`2Cm+-@FfDnJ;N`6I8(x&USee3B+K>{sih@M0PCyq6Sb-FC z^NJ0pXK;#A;-$yT^+qlrkhw&cs3T zzBoNY@}_g3v5PT@TxUJu;j`RX7N7JO6pvGiGW*jZbx^!Vp>&$!sk7KZVYf|()fFjH zJJ>*DbLM<$G%bhR1+7_T?8DsTX!T+`JyM{a;nA8tNBxQ4wtyDe^`S>RgW%f<0>Hhk zr+t1f6*)are+BFbciwQ8M;l;7KFUc8U^yaynWbB_%ZYH$XrFMD%@8}I>1_sL(^%9L zN2D|@q^D`@^E|2|dX%QIqMcJ7dA9&!hsi1Qhe}u1^ZeQ76(?ftl)#lCg z!)S_U3GKqKAhfqjj`=+h+Od+ON!&&uv^{!xCu*M3IE_m|m96hgR|o9!MrT^bT<%CTvY{%S0u z`X?qWP7lQ=297xfU8?r6{-!cDLW$-GU45Tt!&?m_IUZ|ujVVz@J|!;?ahs6d8K@2-pmgL??T9s8?lsqL=f1^XqqxBOX!1aJx-vV<@%;+4r4= ze`me<)SIk7p_ZIs;;)~+7)`TSL&-@?ntJGwrm8}!StHh@#}1*WntVc01-_IQimHjM zP}D8G6ji%#sKtntRZ!?#u?gXHG0N9-kZxi#OyS9~O~W*8jTGmG5$VM+;;Wn+#E>e^ z4Toghl5uXp5-I)-z00d##(oA;@tE+1aNG)u2@}g1cHj7fVz!xfEz8O+kn=|VT} zT}#rU)k46IKsWy(v(FBocIv1tg#`mN-CV4;OQb{_xRB9Evd7?Z(H>Yd5dAk0% za<$M+nHx@gaZjhPd)~ghy?ur9qDodFECk`tdxTPQUsvNm>GEd1i$7j0CywNj8zJzf z^*4@r@f(}tbwsWg$JX+DL>Jkiel6TU@#N3#o7#Xo(XGTL7}jz;#!Nk(y zN0=4W&5Rjd`{mGO4s`ssjA6vSMNJT%IccV9X|c?s&8gU&6&jJl8LO*dtRB>!R5o+f zSlmFPK_LgCc+YZJxb_$iXl0x=-@~oId;9QM!e3D{oBoop^Rt@z+hvJHPF4@Hzhhd6 z9G6KNtQOfxvM)3M?&ytzoY8CgfK!AfqUO-^&8GEWv21pb_sR077T+>>ATwciQot6F zl!~mKRj`vyKmeaY&=)aIppa_y|3XV*#(haG-~6JuNSeSaS_YfB{t@9yOaEV~DNtjLMxq0hT}5M%Z24k37i>pP)BSo%_7&eC0WC5K8yw8~ za^+;B$s|}e+G+cs8~9j649TVT2o>Q~A|Bqj1*WxFo%kkjbGAl~O{WZ2UOOd=a94L% zZwy2)?*~SWYLgZphGvXF0F=ftxqpLguZ$5mWM#d+hny>~3<2A)l&^khtBjmt9*ZFH6Gw%DgUIQp| zq1f#lmS7zSX7{cGI9+wc%X%RQt%Ydy`e4c(PjZUB{#tIV)$|p&=Z~6RHyY7=In<;7 zlx5c*c5W~lTLe<|H@UPX_kKQPReH9r`Zs*<9?*abG74#<=|6P#yIfosJ48*^*+-U$ z;`dE;6K|pV%U!0k-SqDgkAZZpXX|XIYyI#(bh|E9u2YE3>f8dBc-8oe?c*U>iz=VW z4K@ylxVr~<@Hy@tm?Mulkr6z)TmLBAbp1qhX6@9 zU^8)(OEmWYY9N669ZBK(Stx|Nfz+9l2_;S+AduRp&Xu?ND{M%0M*Kj^u6m%ZIt!_r zU22d{>4ns&F_pcY#O09K;GY>+b)ql3%8#bazvz!5z^ z?Ur$7vTm)OLhVtxUR+EdFsQljP72UdIxS$>K)r zR<#s$K&OPzr$@(EA*%$j6B%Mt7A^G2&}Ut1 zGv8A^RK?vsR24>b?%WX}?&8v7QK^Nwj0c%p*c$fGM@bRwr7eQ5B1Je8-h?C6+*qn` z;S5yn7t2O2xhb!AW-1^>a#J3nSw?{+jk*cAakgqWIpsnprk9!6$ZKsk+e2^{E6FI7?a!6!Q_duV~)XijJ6#-dJ=Be^-kJ0!x4<-UJ2Fkp>2WjRI zxwxNUG9wp@$n+8DNjz0mPj% z>KDzm(epZ-%FDv_(=~ysQMbTCgP%3dS8e?4(6y%VbG6{-7E)kt`rv0fDK>th!-E}6 z6~1|Q20tZtFMh5DKP5NiZT#E-eo7NIehMpjHS&KNKYvl&p!13+cm_r1;?9wA{Z>WG zZ9MHf2^F01k#d45K$VN_Dv^+F?p2mY8O+=qVI^!fohP3b!A$}o z_VN)&RM?<1CiESGB>%i>A?mSYZXBhTbU`~EWLqaN08M&nvWTWKn|-FaoNv}#h#m#w z9Ql|?zyNXO{Yp)eoiiv*(>KW0=TyKEhZ&3q5n0B%q*iNi2w(=|p<)@Tc&^!ShLT8J zmqh+Q@4`?0usgVr@{*!CkB7*BJtiy6Ug`0jI=2%Y#+x!*LRU6n;?!woB8y zH8BrYE}R@0*=7rztYn8;pz{;(I=)o*lrVgxYeQGK*i`>LOghscg+Xzf{wD8&iT3Hz z0ZO+80#rn&zC_Z@M)(61i38 zyh4@g-PoRMQ;m{l^<3+{v(H2eiRwGQ40$%4vS+@Ihp7Vgsn+;8pou`x8efq`m<{UL ze5UVZq&$rP&+7*e;0bx?g8GLey#ez+h_J; zJ-PFbX0le-;h%0aj-<3~{v{e$HmHwu-gy!V`&qqBC-2Ro$q3p=qlwDrIgJr<6KjcW zfCX!$M~+AySThTZ6}?f#At-ay)I(9m6tj1>ML`*mD2+0WTmE+_Gly33q)DU9#~_@# zr9+?#%1q`#P)1$B1NSD+QJ3Uq zr#D0F@s0LWEkT;D&8b>Ek$nJi+P#X)-+ReqKgD5&{|LqdNR_pcIX7|?=k7QUs^8-Q zA8D>{QbDm4uyVtR%Uo1f5?r#1+jcmzOLR=)v+OWQdEW7^JF&Q;Q$R6*6z8??Wcg>YtX zBZrq0A1^79$jg=fd~F;3^H!wygs{cg#18FQ92Dk;Nvj+bogR$gnu`Wjh}+701~&zS>)K_n63~vnJ!)3iHC0(2^Pp_OQbpw_p9fgbdnaa@vfYE67ds-u)piJ!Z2`1U`~|IxWBbGa z__uU22EeCzwC2oFf8;k!oYXIQW||TI;Rv5CZlEjp>tWbMX)K!xB*_?R?+2Avc_J5^ z^{|c^vmk8efj17OvOFEshXbG5KxiLGPxCM7x{?EVXqFaG@akU%RVFHaEHb?*@H$t+ z>mgFjYT9Ljm(9HFLgHMou4x^|gWF}! z1Gv{3jSUn?jOP^nfJ6{AM9!>ZLiOuR=TR9H|GO$31pkh$0`)A{?NHGhd9eez(ZST# z6}DX7q-P2jsCFSirc17n#i1Ugn2dj_`fMEw<2V3SC0rGY;Z{_lwi?VvhR%oKd(>=r zg!GD-#-ly~vsB})s2Fd19FkD-Y;hO;Wvde;@3+rXOUhv*r#j!}>v18O^XudV?T zWvbz0MaDEaM$n-)qrJ?&t7djxf5(E8@IVm&v%T+B9i-_fZ0SO3I|)f|Zy}3!Sy?y< zWC$fg4cOGuwl%S@LMr>3nNWao4Ib|wLqTOMR zp+AOOikgC93X5owFfdbt+|3nh!^wna>Rb5Nq%-&|oGW*}rq%@gXBtbV$(*nUOb;$u zEd%QXKZ@Qde-w%JNbr|P_6I6YT~NzufO-^$tJ|oi52YsQX*OhX&z`uFfbhv8ZEnpju2az_N4v>aO! z8gj^nj%q^=!=h`B=f?IpTNEqdvVvfIte3EXTr_Fin%z}SfKO+zUshHw7*}o8d)Y^bv}kn&p34dPzlaXN2Qm13 zPN4CFh`YM6TjG4{;7i<-B_apsWabalsFGZ(muJXw!I?#hJ%-n548F|H6LZuv=F6CyAmicF349YczLi~O~ zzh-plKj+_i9gbW@AkHA-(3E={pXGY)oEh8oi4Kfn_K6Oy>)th4k=?AQicP>9YHJY=vJ<5X3zGjp zw|@W0JFJ2GM)V7b!iT4F9D+kSC*5XdqY=j+5$fYNy)y>z*E4J23dB6erc=}B8T;zl zGj5h(ri8K^bH&bssgS;h6BbZm#|&AGsb$vA!fW@wXU_Lg=h0 z{L?S?&yj3$?s!PZ|Ax`j!k6ToHP+wudpq2m^?_|fH1x<}qZXnn*r$Y|3sQxpoNNKCL>e8vgcyGB&3DQb`fBh=`y}wbnZN}Dc{n=il zNeErd{m<%tGyC92tx)#Kni%#&aEL%FwOre`7MdIc1C=V=a7`}b+M%DHF z-M>^NACmabFZ(_sai_nR+}gsFSW9Oq}Fn&?oWDEZfDl$8L_z+P*;)&QJW`I zrzY=I-1nZ6G#&8;As~r-Ln@{P_m@vdere($Pb=Vw9O`oEs&=@d?jblj5eF?@{WaO@ zS@?t)Ot;ayP_e0lz>bI=;>Dd zZ1*(X%^zkflsUG;9+|O9fqgWPD*W}NTt~w~uXsY0Mf1%V@qNp;tsU>pN#YE9jaK28 zshjq&<^@2a)Eh`V_HQ$Hta~Exy##Vj$I zKdQLS8|4~?Rab*-?PmODkBlf)IGAdrC88!ITpUak@wgYAG<3Z0DPW)hG^9*2G)M1-;k}fOnd?_aJ1~kJ< zhD?}8IV(Y8tzb0DTGMadkU9lJfmPF z2(&GJAhYXPKzdONhRQ4)>Q?|8BZOcoc8BO`Fwe!*n5`gec|pH_Ik@?=d<*u#J(q;G zudm@Oy*tF&!$;E+L;4KKiF6*=61r6|#3!<)-cPw>;K#y$#UvD}K9`yfr1`{^+WtRq z1+xUtU?1jQIh@F>!GxKk-W3{F*gz&opiUN|$F8=iR-aVfxY2U|Ou8o8qjj+!x3Tp1 zR7Bh;6qdo*?$OJAyoO4fYnqx#2@~on5`?-2{^w*aS8t?dhhxo0`_`@bG%|S27du;;n%DHq zj&hWG73}A>=sObST1`=-{*cvcbh|{EksI-&JLBr^E4A)o9U$#%MdgfHYTt_Yv`Y%&nhsdqecBP@Cg0aJaJ?Wc{+nLtSNWuSE45|WaLc{&3xQ`AzhP4) zcy>4OvTi@@+wuypm zjFEZj3wNnQu==JNnw7PI#HCk-S=ufbk|+p;LA6n`AXc|TqnQx?nysd`h4(!nhTCxXFhBb{@;F5xdiybI(w{32wJGtEG5>T0Kdk z`EX%+nVE9pcJ!r;@&Oc&R$J$LvOU@QKq6?R8G^brLvU}&S1|<7u{g5~K^TTWT}4I0 z0$4r51k^OgescsS;6skm9mWLg(uptuC`V-Po~MJw)XB|s_(O(;lhQ(x4sF$8T7y*^ z^6fH{69E!d$qrX^gB2=RX0^1a{Ks-4S6D5@&Wm!R?(UZ6=wM^zo*^?_soW%T#5ga6 zoNIe@Ibtg;+p5SvnhPZ);?f1k7!sC(ddGQEI*R_dqL>Hv%CPTV)Xb|EgL?axz6GVu zj=V+h&VE?;Zq(T)!n)SGPvj?@I9HFRLS**FxSl!U1Tr$yI);5Oa$?`^7xwM`QM&t{ z6n4W_PjV%$LiGM}dN@FW;Az)<76d*AQXLGa=<8AU_-qc14`rgsC036}STMDi0GDdh zi;{R8$v-l*zdt0Hlx4x{S3Cs%xO=ha2CMM{^#~ES2Px5FOX?6EUrgpNYyVm- znp~U348(3Lfr+gyiQVP{8a2Dkc(np=6lpNaL}^Y;dWUDa%?Ud~I_rS#@#@|2>UY#K zjaptg3u9DQvmjOn(!6Yce_8l1;0crXKF|~xE&~Uy00$zMS^m;w?an6L8l%onh zUsl1Izq8gkSD<-DtW-aG8)I5eWN=q(LV=ehl^kXhhg`74-4&}Z_`+6olxZb)AF1do z))3u^jVZ^6oz-##zWT1u`Ya=ayXX)&#x)F=CCffHsaX}Vq+x8`u~$+_pWT-s^ab<& z2IZmi^tp*84&nG`xn6%?!-7x$=m@LtdYyQL)wglu(>a}$^u^|D!7dX_CH~UMf;TnR z!~$!T4PtlqD!t6!Vwpk8=(t8lWGg|vT0uus@DEW-f=hvuwIa_1Y}w&q;o~)fY}0zs z!L)C#u`k(`M$cS37NR&dO%!Xp%o9wN;jz`GPqO4at(=sF4ME3wcA&bw69w6B^&nHQ zOhjGa=4Jf}%5G2uz!%5k)qVGwi~<(U0r7bq_ie;$yJ*aAv$;=Ch^#ZwZaX=NCQ;}? zewHyiW7I7&C~E^TjrY;MG<7{L+g7`nNhZE4^L3A#{7L3|L6d{kK^W_Ju0_ye9cKx;Z`*-v zT{zplUf0xlyxLclt#heer$DKel8AE(trpWvc__HX0qt8JXl#ql60p9y<&drYxf5It z|0`d=v+wCn@9Z5sWOw#r+1dSVvyM6P#vW+AXG|oQt65Xg)0Drr&mAncKAX2s-Oi0P zdh|od7&Wb=nK>wCXdP>PQs)k{<+B0d__^%Z zYht^F3u=Z7+5!vH4oPoee>;#ndqCR&hMzK1YeKQLIIk1@UjOdPiT>(v$_uL?D_$aL zfIEr&wvU{0fyrbd4$A&z>uJ?_D3sLde=~9vRrxV{QdXwQ@#fhG7gcc=?LmG-AG1GX(UAiH6D9c~o+oY>|Fc3VWaS4KP`!wPT_+_uOW z0+SK|5-k-i5{QGL?kR%epD^LE@^!+^ro4iOTB1gwf%EnC4@Iol#TgP<2*N{2 zM=y|$o+DdxIAhk6y?{NegihPMIl5aqT)r;T<%{etLze0UK+^>}^sX`TQ}NWDq!X+dDw|7qC2d-nZ!ITbAXV>8GX8BlHA<4X<*zU*KVGp#SUYVV+F z?bj!;&lGYou3&{MpkHHXD@r%rz(8I?#gQ3s3)Z;c`bqm+)M+DswHpX?K z!c;%`l55mXo#_pgc87DyJLQm3wY5Lw?>6oe=}=c8m-tx^7B}!N)M`$*wvN~9R*5O6 z11n)j+E49k%~Di91jYP_oK?oyE;&FqRZZL=n6y+^VG%rxFoio*(Q7vAUC22$t37Cp z-%K(3!9nAxGsBu4L>>d}pM9j{hdbA4uNvl#q6 zLGgokBnJicPQY+#oFAeU@7zcYA!~K#Bz}*yuV$2@v!G!|-dCUQ>bI}jN>SoLu=UI4 z%G&%IN$4Gp;U2cTzM>P0TX2T(XqKmI(Jcj|MUEw;Jy+gEFhNT?B7!-x zYmr%iZj&g%K6Wxk@+Q9dY%wny;8qUt6W+vz#4^M=uAIoij5j(Ybw%eP=lz~JRxx-u8|1yD= z&{(k(%-F}j{rpSWs`8(IC|I#itIFSm7~NeJm&oRm1`@@5q2^_wMr{<)2W%lC>oNj9 z_Sd%RPh|T*25X<2_)1T@KAeggxreD>Us1K;e>S>t2Ppj~2+OpF7 zeyy$lgv@QKj5FmLXHz=ybDemcPAmpL7OfTl-OPbT@T2qREa(iLXq>gi5}NKc*mCQD zCPY6Zvs}|YmYoH43uekW9|$)w>I9q(liJ=OLTh+idW97lRpp0ZT+?zBFAp#0M** zAmEIk?HVZ?_B0ZT5}}d<9+kZ{*^#Dy$iCn$u78DcEON^pSQgOup1tLI@Dm*LR^J}?$aCN z1bbs#$-cPIuEA(bfPLZmncTcW=)?wIjKx=wE#&`@jp|c2C3Km_{UbwEUM|HIz9$46CN4gX0dA%OrV zQIIGgqeP8HG!m)_2|9<&z!{ie@KVuwp+!?~eM-p;7g0!qO%cZbK+EB^It{*HUbx8{;))n7K#1F}=#MoFch5TXkw*>#|p+;RHs< zCRuh9U3fF#JR%AhqP?g@2_C&u7df^5Dbn2p_J_%}4s6PV$T8zBgUcyz4o;04f_v%Z_}R==2Nn1HOR<)}-)D-##s34K|Q0t$8D(l%_1T=C#S!$GF5) zG?2=BD!);nJ@6BPfqAowz|XBG31Z%~QlVib&BhJI##(b|Os@#;sJMHnJSsy$CT?gt zHv&bc;e2vN#D2*ng2|_ z-=W;7Kwv~%k%j`nS7=JI59A8o|Ii*QG2sJxwH``}74xVzx2wi2EW0_gNDU@;-|Sv# z9r%DwW088ahdZOw5=tZAX<%B9vmf`H-bX$z7g~i+Hwcmw2p`}1TR-|0s-fK~XIXxx zTPlW5*{%{%d*uMeo5tiO(g7(e7oB*`DROAUj>(eWf z4Xns|cw!n!OvH#;xI1C>*Cv+3Tih>Z%~K@UuzQUhy;w7rDT(4{Yb0+l#7=B0u`tB8 z!e7qb-naJNv3~iGd_F9?3bo=R7xBerq#f%Ut544e^+EvK7a4eDGZL}JYDkV=qiXZQ zqQ>f?DWQ`blXVu7mBE6dfYZ@Lh9=3Su+XNDldkdwu^QGKe@pG_{d5vRPi}N}tg8S> zbdMECvjil65~TXd^KW!OnwSKM7{dYS)cSDsoB=Ssa74j0z8_2*(=er{tRk}nuxK{u zmSbP^fl}vt$KiP8o&S)7B9F6 z5tS$Yp&=uoTxHCIujuvk*hWdqnImQ#}q1*hp<)tr1 z8&#bPbDx&|%;vOXx5!D@e@B83HfYS+B~%!~~K?E6m2c87B`Vz?Qz7lT<{USA`@hIP&CGATO*=&1+1&_wOno0i0qvQv5X6q_B$^orIA@1 z^^gv~<+N)+(%=FAyqHiU+}inq^`oUiTsSm9x<4?-O^Rz|>dIA&(FwV~{t&-=Z!j|N z`b*yvR!T^M7?*DNVRzrtzCIijI($)s+1&E4FVaxghQt9e@yN92$|K9ZRvs?<3VCGP zGv$$Ed*w06o+6K2`(krs>qE0NfqC4Buiei;y+8iy5!Xr|4#B1dlniOzc2Z! zz{|0h5_@Ejd>UkbUBbB%&b8-B7#E__=4&K8Si*x<-yFf1MOuHE#OF&m-!7N1YWYz6 z90?DT_+j>F2@jX>a9fkG{M)D5E))w|ki*ggS_?Af3`XgTn9ImzD00t#f2^wM9#& zn)g3Ezh6%t&9rX;uA^D@jq-4*CLhhV>*OuR_RC|CJyjmLc9lHx>`C$%Y)_EK5c_O- zZ;_kkgN)g)~`JGDpy7szf1UC%Fo9y!0$?a*YW!@zgzizo!>%! z_wZ}xXYz~lJIpWlYFEZ7{LbQc5x*(?{QR!w_ho)x$cko-lZwbFfe)sWvfZxOXe!wr~k5gP6MSopfCX{v4Tic;k3^V8J z`;u6xrJYj^!)z%d9$&ML<{$QwA~-%@gs!sYld@Q(CyxGy+@yCi66+_io`jl`gfk2=>KthUzh@xnis5LKBvI3V8 z$&5D;)Y~Q%`b(RiQf0|iW8l+z43?x)z)xqyFI=SD&Bu-pX@*-Q1iYK%b|^lsx1v=)PVFt z``w1s&~9xUHaYj{O;ImS>cU&`A0+@HR7@#0UShVE>Ck$aHOZA zELdP2K06Kc!+*w1wx=sEbc#qp0uh!9=WBt8n`?HUW-|~AWn?t^qK2f(4h~jSlDW-3 zo!89Zm-J@zrhQe17Jkvr0fdEDC_50d%R4@yclv}q_nj{UpAcBOoY7w-nnrT2Q6SPE z78RO1+~nMDpEuw=W}hZSyYya&T6jQ!a?<9B;6}+Nn5(zST;*(`|6x#?20o5YMVncl zH^>hNbadf*7; z{Y7R+%*uWY0!~gQYl^TFNXB4S(9*-feD5paO`gb=CE=wwLysPyn64Ue;h7P)`De~9 zc@AC`ocyt(Xs!0#MfMZgQy1BfOFGGvPR9{^s!mC`?jrj>ZPi8g3ZNaNHDAxPci_Il z2_c>^2*oetpBVG83|W89L0b~dOLP+ZI}6f!9(&k{?eT|`aDpuQ>hEhZ0@-;N#RpNa zc~Lx}m;gpAI z@bArm_HF-Lb6^Nsqn|bhzQWL}IUx35|8EYYQOf`Sc;FdaO#JWQfkB+6eA*ls4t1sG zfcP!^Uzr1J;dNdU!-Ga4d)P!$3Oxwg+YPg+PGWah+!c>`_;#Goco1`Qxo1oJ@*KGc zY;2-CqO;$|igWc?+?8FXw<6g0lS=p4drD_}WT%hJHVj;s^~tErra6?0ZWAgfb$Z)g zFYI-{su4Q*(^UguBH(JTr2tGW&`n6zy+1fT(T%gOvejE)+V$QyVh3Gq9qk9QqC*R^ zHhRz7r#G$#u=RS|W{R(_T$bOqeo|)pft>8zteD=K#reBhgdwa)k$YJfzr;_rRK z_~cQdl1~|>pPzV?29A-K?DvE7v&Tpbton_S|9><__#80Im5Axs{EclOUfe?7`>zpqK}%FT}rt5Q#Iew#@3XV6Q$I)iS1&=GzfK zCexN(fJIYl7Rla|IjQ^*px<-{dQJ^WQN7GCZ_5*Z6>{0QdDI_;K}d9?0d>e9y%P50 zhV%8`bA6}K*y5c4MJyhcHI*ZqNG=o&P8=(Yvf!Zb;`7hsE=q@^nf__Y%mMDt|wh6%;Dyr)U))2QD)>@(Eqo zFIH)Ez^E!c1yPn#R2V$i9QGK5cqP#d)K+oHw+lmy<#12g zvs!D4tMjz5+}B`s%Pl*FVBByV%2#e@Re}F<0>Lly7Q9OSohkoLMu|XcsZ)gHX6psP z*tg3O*<^~c=QbWa4?-<^C4;uvx)5s6u7zYPO3|ujW~2uEw&dc-9cA`Kk%qGPEz~QS z29fD}o6#DW_OJO78eEY0S)$%=r6Gz#SJ8AY!uOZxApd4JCAI1z<%QCJ_q6QGQ~+ zFU^w|PsO4V(O1}JT?HS`E%G&$-l`3EbKpB2l0R>CMk9jBsV&)h@H)dZWiH6{Fe-IC ziFqo%Q54KcaKJu3at9Yf6EYGqlfzEBJZ~#=(0NIaucpA;2EJ^Eohb0O)>QhW$=_DM z{9l)hyEUia)+;NUcWNz9Bi?JPDQ3-PSLcRqNQ7nPg`bxHSz61t_^MQeK9S58#w^83 z3{W#v92?S`5~UGn-L*m3j+(pyD?!fnND+SrS(TEXx9OGD(?X~8WOB{ooeW&3UYsj( z>-blBsh$H@}3XZ70OKUm6w=R9sARh5QJ7JN=#1WfFJSPbm>WW`MP>mIL zhG0|}J-uKx-IxLQ&l1Uq=#%1)IO*YaGUE61&q;r4UwR?$~dgJ2EiJ?M>k1Re5>XQoX%Ib@qZ<9h7B)`eon)){O{5jR`MWc+h znFTA{Qj?+mq@y91?1OnxjzG{7fOp1l-0=dgjG5;eUB0~{xx#D=84ySEX3n?`NqHiw zp!hynH@ot=#gq{~dh_zz9o9K~^vdNEwC42^dr%J+g%4&0E9Kwt@WIUB;P6pUNGBhy z#q?2J1PtM$bF}8iRN%VcY2l+^4!#jSI!|l)5mAVSeogNy4|~=ox-)*SO8E8Vvw{=C z2X6_kmQw#H|9&f#3=JR63Egf57#aJfu)m~$0&En;?JKyUU5uJ?Y?*fVN~1DsQhxg|^lAI_TZJvLq!Em>_{c)IF%vcVL2D)KgR9giGzAW`{DJ z8p0R1u0$+tGb^JylBdvc$tED@u+iBr-^7hk{kg|p)gEg1aaDIVt9Q)QPH)bEvc@BG zf;o*x^pMN*)SRiUcjvt3=TOjWIA1S4RN7$lbPNsM$Z~DzS$2(irTchHbyDM!qKsg6 zq60D0rbOgQw|xdgW8`>r)tO1o6uP1q(G8KibG=nt@BVcl`V)oKq9}}t(1r!h+0r)j z=e__A^AalKOc?p_la$ecSj0%_y9&@I_ zE#5_Vv29vBH2x9W_!k3b++&FdQl_u2J#|WLbYWHixuj!YReQkN`kv(FKpU-}@h58N z&nR5oR<_g#J!>xuYYBS^)M_Yv%Yh7^_SA4GF`Z9eO=?s%uf}?d!e^re0g(q)?>itm zOC9NiPET6Wliq$6{0c`u{W=?^BZ!zQIo^1|8cQg+!abTdzUNTjC0uS7Oe zdq~b6i*FM52`Cbwd|T1~>hSB6{u4}Ge@3Z1qNA=cL`eEsa4qQe?+p6P*^|6%3bLfn zki}gTJ~|lsW67jp!9u;!nuq!I+uFnJ_8_F*SrZX;&h|97Ghl^gN3f_<4`lAJ>=9Up zblsMf;q);nhzA=ZK2oynKJj~WNWGTS<%mChCFunkY!JOV z>Tj$rR4OKjpG9YiC3ij2=C&# zBr~MWf>fIfS+(#z$%Si}ldYTJ8^Br!_dk;)RL4D5{nJ90*|W@hWKIgZUo885Ru30eB^ zvA;52U*E`~a#7L*dcIgI!G1?V?HoaRT0`6US^N(1I}FAQ=4b_|8C8BEJMMC92`*pP zPeV_(nhH^iE*F*83n&ef2H{we?s(kRW9X=vhhac5^)C+}J{FqP<$LQ)`pV8FAj(pb z7RNpu^^wtGgcQS5z7v+dg(-%~foRzcFe3I;gbwxj@hN>$>DUo@xX+KzDJs%2TuIrj zG+?)~)Sa?j(XPt5?eeUQ^b|_3O?P<8$rfX8%-a`Tni(43l*nLlF9I{?9DdrBp*@v7 z=Pc*ai?m(2btOkUVoO|Mn5{C&1kn@jwt9B+g21FAS;{ETFC|=id7lZI^N(=1wJ=#DFO5P40AYzU<P*0p&?yt ziAr%~y9R}zqg+=#&;N^0?r@C zx%nNG{vYk@jlS=(_#`UkQbBkkslF+WqZ4&$AyWUrC(hn)zX-o&Xy>A5qm_VZJA^zK zYmKLZF?dkV@=~YnECtuMQ4`0qNtE}wK-#Rhq*G=a`_dJ zyQ4GSvAzmn(g%@t%}&Pe-MdZ>6($|h_kDAqXxXH-h+rl)BF^9~PYvE2X%T(sPY(|L zxK*;MVPx=RE(@+@S6yNLj@>dSg-w2C@r}ER_Gql zmN8w{Kh|fG)mqDVtmOH?jiO7PqA~h#7oPFEq*yk*sfMY_mL2fo#-;8IJOJ*YWJ)Z6 zKty5m@JEYqiMiPYapTaXPTXK~Ph#Yj96&U;B}P6Y0si{-Xob|#AjLQ1+7bpRI%A*p zAHNbsBe8P+^G~Gu{ULE|F$O*qPNqt<{UZ%|%6(>H_xF>TtRtz5|{tnrYqsrmnV(KwHTSRg=lp!{fE#}ohpY5U!xb5UFba{}?&} zcNB7YwtS)Vx(Ij@dl98+e6gTXQ&LD4Q(1AUx&V z1Hcj*hDX8RlP*+0mk+XMSuNONK@ThS>g0Bg9$Tx>j7Eg(D`~>%+oTEb6W0`2%bc*; z)SqHhFP+nil89YE?i&di2l!?#7D$m|ItooF)d)&JfWmHv7-KU1jZEbOAwL=>Kweqe zs$IY#9H5sYh(b@rJ%_dCEs`EdN7Bh*T-0m0@EAhwo|D3NK~|h@u8$q&?k9-gtoq7o zdH7TnYZ_DD3zg=3v z8JJmnAZg>Ntc_7;Lf|13TZu!l$=HUcEI~ayLyXWYQ6x9J?R+G8;lrmca)o1V&d8kY zP0fSnOz8&?Y(zU=SBAA?9+zP)46v^Itu;jtn>%2G7JMyyWZ0q+a+Vw&_9}j6b<-Qm zRua>uqebisivnvV&^*4z_*&lMHFrmsV1R~GGb?x*QaC@j1rED=R&-3^%xLz$s)FDp z3vz3tSHiY;i~hHv)i4bX2T)Axj?VZ;_(oN*s^%YsCksf4mCGU}Dv|2DH`=7{x{>^BM4=SDk%j=*DW|LFwp0I z(_25HDdr7Ddov(DN|SsM~SjM zsYEG^hGFV?rj@Uq)K8`mmX zG;sb9gkkmklg0EV&oyPl@-pcVFKY`Zh?k0b#OM0zxd6sn^?csE(Yi*$p8BDDdHRs^ z#XDc#*3@%6!8hYg-gpKMInTO!rXKHC&3B%2>QMRR{rc;i=iKei^X8YF=dEr{eZTWO z=Q-blET8nj8P0R@0SFb|?>;Ec=Hf;mFDO#MW`d^)?9Iy2*QvbfySp z+)RlJYAaftxWy88iNxKltx((g{l$&cK%47JWA)*~gBP6|zm~N1+^a1k>kL>2BB0RO zIO33Pk_7->uIh;DKU|n6MkA80szb2!fv7IZ!3)_v^);{3Wk{RRVaWzIVv0`|s}za#-d=s}mjO^;CkqU%Vqf$t+n6(d(N;Vr!!DDO*|u3PeIfp!MCdrp z3omv;%#ARi)y}lsn@rdpzs>o~w7gk9JJT}td2@V*M9RukvrFb))EGj~OJ{Dz0{cAq z{$}d?8R_o}=)Z+3&oJU-2n25|*aUUNBm|fqUS;qmEm$RT2Nm~vGOl{TkBRfBxUI=J z?}7)2W8#rlI2_5##6urn=s6}H@lawao{4v(6VJpWzAYKg#GB^C&n12V@TrM6(TQW? z?OpH{iDTlO?!+ar*P$lf80nl%c0qdT zIm5D*vy;#yzJ-tI3v$9ou3MO|S8ZA_j*+`-(W#POFYTzWaXSDp>jxr!X=~Bx&q>4_3=N173|EU@ z{>LmJkhZ2QAUe%MX$y$Qaaxq@CW9u61w;kY>0=fUJeRlEyc1t@R zeID2Wt8+p-`HesCCxyqW&J%d^SuJarwJ`(=mxJ&p;2_(r0E$5(J%{P|6wglwA5{YM zfsXKBRFR+H`6($!_&CfjZT}>gM}8X2Xl0~f{*Y5ef%#KGzT`w8pV<%Ol+1siuc`tO zt<-^^L=uqfFEMKyX`M%{$pzT;BPIB=Z^h-0oYj_DzXuN}ZXJ1G@?aPSzC;8+^mvtc z5}hmZX}2V=uqHE=!|hmXWiHCMcHk1y@judtZ$Ob#l9;<(*jvkz9J@@6f#;q`W}4pe z(3QyW|MjD!s!+3HuN^Pba^QmX;KtC|)_hfgoTXU9fLzv1zons0*6k7j(QWA@5pq9p+mvaXJe;!rj^szm>>TaSQ=e2 zAu?%5E_beR%opJDhPnRmhCF{$hX7Q*6ICO>`Mwl>vP|+mz=#SS;zl;qBR1mIDI6QD zV^bVTem)Jm7z9LBPMpv>oxXC(HgO^b6zjuo;P!SRcz51%Jo;h8_a1PWF$JN zfrI^IW-gwb<{&gu!hbV!a*@{ZU8X@lNZPO>dOtK)U@W4nwxYx)r|$&BcO-k; zW&my5(X-b#x}CcmFhXk|+<2ty?qQ8bE0=$MV7V7{(doxSn}W4%bK5TaSAd0PGW{uf zSr;_#500o1`sscaU~(3n%OVd%F7Y-0RcrYrhI=?>eWm+rF1z#KWl zxg&h=8haQF6R)M(I$kdcA05)*j%I(K?uw3?s#m?bykCVo>?fX{4UiOi-g;-g#Prhj z{Ys35t#pZ}XzO^rBz$;CLw*`8d%cdbZz!vGzx4FE{zNxj(~RpZy&{heAI+ur$qrxr zebwR8dvxOQ3E#!DWHRA5NytnJo?_r0Mx2_n=N|G`Z3w+B^DEa;%KVx%<+8O;;FqTA zrMoXoF925}ru~i^Wn9QWUtNAW-yj~qlzQp=k)p`_Y;eZ&cA4S`?Q>Vd7U9t}dB+X2 zdyn-WOa;53e+-fbX1O@xWwRIb+UNBP!{eln4@W0G?Z?S2TSIh$e*1?BJb#L>pLe1Q zTzcD}$<5~(f6vJX4kHjCptU@qig$?`jpHoXrMC_@s&x~2iNA=G`QpB;yS|r5tdo^wpRN-1!Cu&x=(i-&I|rdbQDuKO zMK6gE5eA$;rtM+!-vWC)cdFdW6pvQ+= zUve^h_(&q504`UW#7PQFZ1KM`57fp#yWs_KVa&#)_W8u)~RM5u4oW`R!h43ZmO3lW$9j(L3 z7up)nB%?E^6$SQ4Rn|XYuG8b}0DP`f_onYsH-|tOPPfH3k`f&kbrJb_U;QxQTa-!k1SpHp%d|zu3F-_YF*_V6v z_Hh!%=#6q1yP95-KhA5hjLD1No=)6%?t7waRKwpPjJr58?S>VQ!^`|``{_@r$^LIe ze+lt~F3LuHIh15t-yY9sAEBTVd|Sj+h`-D?r^HVO2dMe`7&!P#%8Z{y^Uwj)nwv-> z-SQ3jH-o+j-SK(KRz-ijY^9w~m)X^y)MSPFCB<$SK~y{~!!Y`%}Hh9jaZ;4=?84utjI zm-X;Ro&~w(`{U0kD7J7nrm^dQ99DwmB9&3>;F+r6OO#YoqTU3Omwh$AQ0Ug<$O)-Lv&gF$jINS#Iu zy^lyH=B%Bu1LGo@Y8u7=33SrctXu#17mTJDYc|6`zJKp5zQ|aV9xeSyFFh8&RK0JC zm-EDTL_}oyy)UQw?B~*F>xjxQxA@F|;u68X>u=I^^w)U%^K@CAHD|BtvhhxrjY_rF z>8*>By;Ul`b&~YfDCw;naoY(om+mSXzmQHZO>8%}NN@D-on+Uj7R!oZ&Wy`Q;w))9 z22WM{7Jkv#VYhW8x{{NL`4)~XuR5~q(poc<-ehCwOex@?(j)zvA7k0s!&KLD{?oV| z{dBdG<09@_mLr4o22R(d;@Z*ewd0@nH?>Pw2ga|b#OmmM+%A@pLPnhG&FfALS?sk* zMtQ8C5(nsL{3fFO`M5F5ltbg>b8!>zk^`(1yLyt;W*+_-+5>dkFFio}M{ zS9z70E!we(E?-+WjvM}FFZ78Q)^4BckmA$5u6J3!=2cH;V;74C03KS#?_n6!ig}%c zhU+DBd+$#F_&*!F4)P+jd+rmN-j=`P^e8@188JTH!rG~?CiqO-kKFTvb;@uO?Lt<`jROZP%{xNrf>u?7q`Vsmk(>*^33 zcdK3+<55;ywL@#JVXp)$4%S-Um64}6mN0Z)bDIv)l8Bkj5C4nGjN7_1HvMOnIJk8| z&cq`3t7w1Ba{K5d{I^rQ7>;})tbl81IKylaDDgqtA_aKOC*@U7bb2EyWS<1^PD^Yo z4^*6-KHo;|0>vcV?9#DKM~varr7Av>tT>s$AA8$PI$u?1Xgifp(8I?X8cqi>c_Yt! zLbXiVWVKFbG0(DUqC=n4xvnD7;f+=s(k(4LYSVFgOm|i!y3NDds{6xd{ta$t)t|!Sc^c6%f*dlU*=Ww=^g4PoN1&0G zx%{`HKg*PDbm{%7AcWCO4>ui(=Ce^2s*=YOmi*)?RY|gY@$M9FQxR%x<98Ege1KaRLGw|W6}9Gif9wEPtau}j%JlG=?}?nw zv-$;g8G1m{aL3*vta~4pc3Nv5MJMGn%%D(bsr@Nlfq(jn@E&JUqNU$2SAVL?TJ~$r zLa|FXHKRf0^ubXIP4&U9&))~}UYQG3uK2N8iF_Z%BEvK1O1K6NQ-2g8qLm? z6*OW6lTZ8IZVoG^vZ5uG1o;ZTIW_W-ilOf$j}f!odewSvIf0Dv*xzSv?Z=@RRbh0a zAXe2Cs#=~=Ii1RwOj5Aa$Gw}~tW?#6RH<>dxexK{DyO7M8DNmcTvZE*##i-%)*@pj zmq{=ul4#-+r-PJj{p$OD)8Wz|GaVlOOL{s?Y)elEwxHr_>@=cdzjy7242jkpqno^? zHy2l|J6l3{daKr2&WEB*Ep=QfM6(}swR=k~t@#J4Q+)}uIlP(`iXvolBT;IFNkH(` zQfFp)|J~JfUTSq+^ckzmJ~cVHZFD8aZl5DNMsleM-sGwfg*VID^cVuLqWO?oKMZul z2_^I6F2W5>Zg$A5*}-zF^s=Q*Qa$lG5a`HswKj$g36z3uWM>8J)i zt@#B|k&V~bu_Fcas$)L$Z9Js^6Ccy;sug`0-{ zhaL3!uB?}-NzCbQIxKj!4|^_sL>%5DNmKaM8u~+4%)EW+6_asadc_Euc`JoL4^fEP zME*`7)eHX)0)1a0(A`O}eCDx0^k;(3xwGcAK=d~Xt7=n^CebRfanPvX&i-hV8(~13 zOeFCI3EI@nNzG}z`BzzmAIF>(0Osrn{ir|6j4Eh931vFCSWxEX&qSFuQj#FbZCcBR|0ber`c5CB9LXMP z-MJ?{?1NjKkl7HQP#66uYaSML)@&8vTJb!pANA#VzWekOq;YF`1-(b3x)MXDv? zIexQ1uUMQHoZPe5pOmn`oFzjrV!}0dr@kCo?suVW59gNUAK#AHiX%Y#%$~iXf6}AK%{e8uc{luI~J92{tAoLmWo&PX*}(O~XUkcr+ZVM`tBKk{<2ZW`(bjm9*pQ zx-0ftj;q@XfMw7X)m4FFLks)KU*4na=X8R?ip=+lQ^33NS!%u+dD2azy!f)O;+XEc zvKcGN{$hGuEuEFBqq(_a`)#3JLIutaKP!bR!d}$^VK0firivHC z^N0%B7jT{)c~bCfk~ng}TAQTlB$G94WICrJg&uGKlZ_0*|M@iGub>l-<2A^Me%1M7 zZ@Ee5!<(uQ{#WSXgd+R_;-~)?U@hc`DA^#olaAC@xnK@{3Uh#icW;z)0eZGYt{_v) z!G(Pr-rvMwf~%!HZqhz3d>6W+iu-|c&Yt~YLYuw`9wAWdLH(IsZgrAHSp8Wn!tLx? zun2F|ea=1ZKhd=tu*dBMiX@BB1B)>F1mnVJ#ec)*qL$<{1k_CVquP38rX0sF$RG^h z7gU7e1Gj~QU(lN8OKHj3!jk;d*%C+4h+E*#oG^bmDLpa>hvKJ@D>=K^H3S4^K<1() z=A#m>#km*SH)_UtBM%Dz*7qr(yhrx6!;D^XkQIN>omw5@?UIW)XtUQGu)TeHo8!62 zlzdftl01sfd=ChZEVstM<8TLq}BsorayH( z*q5utP$x4X+Hw_-6JXD6sFO>wP$S+!nop46w>ii5)DfO=0=ejeoh z`8XFx*ptHU|J@(EYry-zfZZ$lu)AYs*AKfN`WSXsb19+*u-}lp3N4vlH6p$dfsBZ6 zJV>pvZBRHR$&Vc9liVP>Stw9ul}DcYOOiM^84J=`f?Jhh8*9z6ky*&2S^a_ z9K``)tERU-B218{Vt!t5jP-}t5{aJuDLw}dNbx=B0o#SvPW4SrUFrD7NS<@9C?@_o z$F3YC3HPGt^Cb7u8GAj)wVlSp<7^ckr#6*JEwXef;c;N)pK()eX-CzL(fh~ml_Lx7 z-b?6Y4wK8M;qKzsK=tN(;Wx)&6It4+xV+10yUc6pscChgh#75Se! zaIT4FS0K4ucwu>uY?V&es9th*%_L=J-6Jd5;bfFGs9f3id}*xekoMgU-L+kJ?SYOf z!%N$uRmeRP-sp9Ru=WNUV8A@S=-dP}O9kgI7*{dj^s24~L}L#rNH{a5FbpP$xnFI# z60^}eeiObRcE!Ep_rQ$pdfk`5XAI60yjiR3%u!hUA>xp>-K!;RvfsyXY1Ji6q;8Vb$J+Lr{$~_r!+@qAlI!<2Y}8 zLpI*s+%kyvNeG4okySba8Jd;YgnP449Cx108>2Ou9FY0Uw=~~gbpou1Umu5a;v8S; zK^ZS~-u7k!l2(m{XTVqt=I}pP`%cV$s(d2@QYiycitn@Jh%7fR2|36l^_dez3z+fKi;M+iy) ze#LPhX36kYsxic#Th|`KX5iUwH8VLg-6mRQRa+OjOSf_+89Z4XXEHz>rYntujv&eg z+c>mTGK%Q*V+ahC28>$0Fd1IWr_NA(<{ps?np=B!Ay0kyFw{{?!sp007%hM7bvHc| zaBcVRdVNN8=t<@->#|o+#VutL>Dt3FbBC${s6~X>uL`FKYZGgq+dSm3QgocV3gz_& z#Vgt3MaP*(`UsR0W@V?X{55&oW}sKHk7LyGjp!aAaIVP?M8A~h8_jKSHF->+u>sd! zor7hs>*QJv94^*-_9?Loh)fRbcZ%DKrVidXu-~+36eo3%9|yBJWzOc33FKwu3jLKn zvkRpQ3-MD)ym(`KC?=l{dfUQ+;B-6~BVln{(_a?Y#oumNTK+;@CpO}+H>^O~(p4b%qdID;t<#pzz*ZfL0wzc68u_rRGrE%V3FV45K zBT53o0kN9Z))`X7`ndSHqR7z2sicu}!2>FNI%yBkmhS|Q^!}@5XXK07+#I+eazT8H zG~zir0_Z;qnD4`E2C?yeVXEoLR}9!HJ(Iye7I_j*g;^G5!pzQCEzvbCorKAF~QzON+3(34wt9W*!ZI)Gnxeb*b_ z{O(k#;Y8NLqUiLGNP+qKec8J#Z~orYM?vj!=#N{xmxYmP%>)3Bmy?5`b{#Voptd4` zJ$gPS(`ct9?_2X#9bA+<)x7Gr*~s%=j677lSaNgFq1qnxp&D`hz1ebX=w^2*2K;h4 z607jRhl9i2{#_PgVU%m~+kqL%+qGa6*#%V7d#?kjog=H4(Zf<(uCZ-r_{(?Vq}vI4 z&5qitZ3{;k3cbh-^1EWS`1sR)7ZV5YRb7iN#b!{t7tLJ;nRqU@YNiWic65tIhd+Na z7n&_Zk$EGR!PmMv$+eL49jDWAY2_TJ1K(@E))dfsDZhUe|bNW6Y zW){?8HmhFshu3HOt2!Dk@tQ9J!i0dip?;-q=2OX;9G>5+Cpyfj*|pIxWz*__i#atl zTg02*syz$#(lB52YV>4L?9dZi{Gyk_s0wm=3;lOuwMZGHYQS{HnZnpLyj7<(3{`vZ zo%d!}4PWptZ{!r#cW_L)|Mch;kfu8;@BB`7Xi(%7*8V^ISU-tjQ`7T;Y82w+-liMA zr0`~*sN^Vv8`K=R%N@mF?DRJ(za?K3)0L6dlg}j*sVfs_e+_%j^>#Iv8{jOU>VpMb zFTljvZ9TLMVgF{#RyZUtX@R{Z!3GjE47Ea%|4hc#UZ>n7^waMRiz6n{H;re%fWf8Q znXa7idVoR{`lx@j^@V=*@3>Ry2bFr{zHqL8%gN`YNGr_L3UzLSTc+dPAQ42%aB{{y z!>te2r6I@T_UgoWbG|Lw(?(_1@;9vd7{uN!Wo(_bW#L;Y2)jA!=b#I5V#^$QiVqdm z-ekmdC&F#@CL=DE2#h$_ex%nqrAC{U=flurKRwr&=W}B!bx5wPjo=^@PhpEV36hdM ztcOZp8M*>&)$-v?;1CJsEAl=M=WLSiT=6)(*_xWnluxFv8aF92;;U3Xbj&wfhbqll!=Xw%mirbx}0u9^b;K4jRg$jmWJ^Qj*(Qp#+WEs}Y!9O#X? z-O+E2e}Kdg{p+Ov55Hpb37W7b!WfmDpu&rZGTZ!bRd z+-|zbk6mc&D9-CrJ=Jf{S8ZRGtvq^~o8&u)-(^HjW+gfP8PVx2vC5~(tcUVH-apxH zgn6<(l$oBPWWhI?O7Hrl^gr)QKcZjyUA|8!e_<-Uky9emTUFuI@xxEbGc}dR^q|@* zFdcuVLi!H3rnlq}3O%@4x23K0T8RmmO%+sEzP}ue$C;1$BVT#~+d-@jz2*mA^F7n{ znzneDov%k~x|u{;^IQ&J0?{uI6_T?q+5piprZ{vun;+U7ZhcKQQep0Gc+5Jo&ROjl zq+bgWM&(Om5!j6c{N{`1 zdOXa!cDp*2lI-2@>Lw1VnF{k0BVR*!C2gNXN>qsF=VA!wAX9i@#r4GtgXdLTn;ASyTUDs7(lc=}bCNNy!?k;A zXLgC(iCOkfXuPb7Q$xGW=|la|2bw4cm##8Swb9y4`dx|FS0{+4_A=!!267XE#ETA+ zb<^VxI=vSPk`iDsPEZ0Tr*u1cDo#|6H9A?wRHqDo^qV3VmQ7h-qe9SIwOA?(6=m+m z1?Em?xSI>fAc{Y8>h;JE$ zN;lL}8^EoRqQ03{#)470x&$2rCP@LVG@b-t-D zj!a#wJ*D4WADMc$Zr;0?*63Qnz0xY44-}|pA-z>_uiFXFDv%E%Py>i*Zu#O#egXP| z2SmOmUp(?dfUAaKMeJ>Wm-Xtz+kor zL|Q>q0MQD41X~0St+19xMgu!)%fYmB)=k2~?GH_MC<>NaTAe zHiAlB&a|--(d5*av-))PCN)ClM!qLtb?Ne-8tzw~ZbXXElqm-bND+v4ytLop!Be|| z`uOpWx(Nfbk{+en<%`^QYF z)2YK8TSp1F&X4B2jh;XP#a>kr4jBJVy2P-H_{_1%t0*g~B46k$a~&CyWj^kdsru*g zdGt?om`7@4=cUFL`AXCTiAtQcOeI!&|Dpu0To}3)e{t9xV#y7SE5&d6Xc~gk12f-> z5QQ|rVGV#ndCygP?aE|;t2(aMMO>2N4!FXR>nx5KCZtNHm;anx7r>)h)#u5!eklGM zDLO^o2h6SF?cGf!%js$BxpsE4!>4G?B9`RJR`k0F7-nsm+KsJW%uyS)a-tY=TX|Q= z#1emZ%$F|>oHKa$58$6!Y6#O%8nMfoOYzK&QL2hxF)>sX|4jhm+7L+!TEDLr@U2?JtwJ28=`i6T9M6VPI0Io<;44s7tWElIRwSkM#`FCuo}Q}s zQUdX6)xji3fMWgP9;y0}A-no`KG1@SKy)#Z72hGMR`LWtr&Fp$OgPgi_cYZYIXhAf zdQ-aC+#3Ija35HNn>QRX=HA3LC zry_VaTOMQCwB)qcyD~!FexE;AkvE>8NIY2j&8`SGsG2da(BP1ODRmn2M!hB=m0!;Z zM5<4VkCt{EPn$R1C(dIBj_jiGsA{>rPwZ4a@@C6h9}~HrWqGSCaZfe9^kQq!^(> zu_#qMh{Ac&7fPl=JRVFo1_MUdddf@GuSBJ*K3simMyQ7nsCBe;@Q45)i!peXxcv|V zCM>z90SGP!b&YQ40WG2jj{dd=wFH+p9;rei||wLKieecbNWnI%Y^ zc`@MBK}or0M|>ZRGq`|^OV-Qm2X!u+_A+86^uC%soYF*R53y>yNHy;eqi`zw{jZhd z;mThp64p=oXJ*93Yz)UNMMl-T3$O83G^p0hEU@;?bXvpcUTjqlfKFhPGltzj>cdM% z?{>`6lE9*u)d{dhc{Q@O1HoG>j@c?ou zp>0O_Q6n;C3?IlACz}-hF{ll5*bz=G;+QBSwHJr4i0;Av>AUXDcj<@8Uyy|J?L(# z_)`|o!lsHRd767dp0$*fVPCvfG;8e(*S5%`WNn)~&RE+lkJHvR$>Zd;_sV1F+ORxw z)~?_Yxw2plCz%o;s_KGC)N8mG(&vkbJB|01EH-tWt~gc#^aGY^Ex(#siljl7R6k?5-J z!BNh7S7o|)zf<74Gy$owoY2;cTUjwbx@ zlNgie$OK`c4oTDpg@R3L@+A52&YY)LxH90AYYIAfu*H9Ay|o3Oge$#l%8m`ZLkrh& zZQTL3EH(M&n)^Tt_TyeI-Dsh!~5fTZkE+U@6~WrH~Qv{W;>>3$62K zp>dF1?}fbCZruP#E5rA=GeW0Zw|z$l#>`Om#GUpK>+KD)&u9;I$X9VFE#BV3&)40s zo+<$d#wE$O?8AV$FfsBEzn~#zx4A1ZGM6@yO7C4m(C_RD16nf1- zPKPD}y}V-texT`*!6cVGUwY;AWPD;|gIGioBQ5^sEy)zJXXhqHewA-4o!$p8ozVnd zQVasB6w#@P_s7WzMUOu8hz)5WB)M zARj?AoBZY5jmXILe50z8_152TEhy!b?~D&ug{Jq^`5>0X?2hx@`Zen0sJus*sz|xN zON4;5gZ+)0a}eL;dE2(?&z(smjzFNJDnoK!johM3DFq-pvd8%oESTR zGC@#7Rz1;U#cWypdAfsx#H(j$l_VZQ%K67^P6IZ1+K%b#uBQgcFRa9$3HM7sSW4oX zZL6=Vjswt0xODO3pJ8^|coU3eCEDczsCsM?gNOLPEp&K{wShDjT!sa! z`Hq}~PNNrbh|U^Yc#4(F?0HUzZ2a2%WH!FsO8ANeT*ER~hQ3;M!>wsqbnp}m{%i3 z*=C8+s7NhG36hej$;!2BWb%!+0o7UEXQMZ-T;taUm?i84uOgz57L5i|Bj z$ZjJ!ZTz<(k*|iuy@!2pv(*eiWEh4UlC`jFxUth9E2+(Ax=q!w(X-K$`eNA zl*;8UE_UKxhs&+3ZBWU#?G!jRw3W z7{}LEAKmUaiZVOfPO;BwJUWFdGcpa$8xu;FR>A|wEqAapXu)t?r?(X}@5BLCBBp!- zS~pBj1Dj8K*Lg&eVt+YczK5Jo{NW}xG*(|A_sbcRG%qQ)@5$7Q&u)%Ku?*L23^^J;gq^K768nspn!vPpGFhn(Yz1MA8D> zV~2L8`$nHOpl^PBnd+Nc1Lg-dT>V!1rc=sTD6C>9$V<8>D?{>ZwQ^Km)jf4`dLZ5+ zx~;drn(UrBf8;WMxGT@9rO?{wq=nQz2rL}>1+A_mF4;wO(nWIwpUEEV%z231&DI&z zL(<_SjnAcngm{Ipb*pX3x}(E_Cmd`pU5 zCvgL4Xq8>@%YFXI7`Q2aSqi$6P7rn2M}P(m7|995Tw^ZCS0MI?ynwN*K!*nb+|8(N zVyDluBtsDI&BbnM#fY`kI`0tu#%y}Z!M4wP1rkM$&pNIIQDxyib>RpV;r<$SM4^Z^#)&1JC!4X#;R{Mo&%cX!$9)Vpb69@ig$)n&u1NgHX z_{#^tANp2&5e=Y%(E|Hzgn?aT2XfEdup0q4m}BKDqDGEd`+b}2e0v)-uIQK4x12&g z$jF~ReFH;0!bJ$%@{)+en-d~8Lf0~kMDF-IU z$*%9`s#8kXrta)eqU){1oB(&9fH$d2}}q zxt<~d=E!?yuuM>oL-nqFB1|!+5yq~qf$|x!Oz^eW75H~;gsTlyVb}Bv!5yWqIQMGC zK5!XTdkymgLz{kB2zwVH?_p8tIo%ueF|E-s*=oJ~qD*#?QM;;?j5>r&b7{7&Ts$Vz ztVySNb+SsMH6wHr=w9`^z&=A?@khrT^P4@)L4T=eALgR`=K?0`-Xf$n0@@D0dE`Cg zaWegiO!{gMCHSLDaPp2T9O2VTyScp>unM4t%P z#AA;9(sADvUr#BKyC`hrl+;&mX**t6xoMT&GRhHBx zg$f)gg=YZTN_PwN#10nS1q%_4e2u0!x*0Q(JG@ol@2U|aj0AV> zwb7YHwb2^OAHC9zCPjhuJ4EEdgUOxku;tlwB|8*%a8_o9P6Bl-olcv9Fam5`4PTBR zO3CHra6T=Vhv;O)Pau<5`{_WLd{&=KKAQ6z<_GlCx{!uSwKoUS8hzqy|wDpXmHChb;g!%v8b7v+2@!yu`A#?A! zXFuGu=CIIWFC=DIOfi@#^eF32pnl*5sE5IwIj)+d6+JS0KoM=+ctGvu%J&_wDHNSG4)Vj)$af>Xh@0vHqA> z;ft0-_;zz6RF|-waLkK_2nT(t2rzg(Ip}D96^V!DUf>ysFx|nDLOP&_V3oFO$uH$JZRm( zt3+o^>IQC}p3)5rH67;x11oiKH#wXoKh`v@iNq6$X^BK|__BSrR+csI-hu)$Lf99n zmVufkq-si%1u0xfJbDqckJf7DDL39Ct3%KMOv?9VgXrBa+iY33S?0)X{zz79jq^Ew zTjh)uSF}}`yOw>>1TJwe+i!Ex?1l0`LZI3mxm!Z+am~!3MBq3t;e9<#8?kPoG#f8)Hyy};qRPNt z#G`3akfMx9qym;r?clQ?B)ikhQ8;-YG#D}T}XB_9zOH)3uaaV!F#_{*ZeQH}HYkr`!e667(O30Qx^ z@()c)H9uV-`(=a(7p3g7sMYdtH8CzN(3c@<$j9=id)IgO}J7MsB#^UG`BNV?^D+_T2azG~9GDA|`c`#37;s zQO#t1J)%FHIa(eNUd$|(2bWeC^Dv+P3)F8lt$IbtVmeeei0&BBGh(~lZD3K+43 zT^5;@UZHPv;h$4AZJvbdq91{avH29Vq-P7-p%B_3SLPA=VYEymG(@g?Y!Gj91ieOK zU<^VSeEYe2dLHENr%cp!MkLfk=Nqd^17o>M@FkouWLdB=^kRvuY2zDm7*`}DR!Nd= z9NB(we==K2E~YcOB;z+oNI>u~t{UEJgf+fzp(z29x7@2Y(VWQOVk*jcg@YKP(du9h zw#5gezoF_ggJ{7xzeCC&`a!9*>7jR^3#T(94? zFhJ_nfgjOm6ImkPofbbibO?09$HIk|He#NSI5{yf=udV_cabKjU%j_k14ON4a5k4F z(3p$)>WMt~B3ET{aYCf%bSx5uNE*I}k;zbI@)c@GW|+=#!oExTZrpTZU< ztz%Hrj$>xbCc$|al{f9l?0bu=9u6b|=dp{ca2F30hYn;0iqz9TPM?vpseu;pF%9(` zjAyyId)^b)Rm5{b1zBLH1XraE;0^#(Gi^^YA>eLjv&GP1d1nOU_gkV zXc+c_v#?hjW?(H?gRSB)7q)`4uu~jnU@2IGjp8sDc7n6&B&Cj&dP%9TwMR)@fDOK+ zvkg^7@ag}cM#HQ@aOA2BT~laNH}0m3a_S@7o;wG@^Cd|WtjLok4@17=xhB3a&_esF z!N3)S>R(<5Fd61c-TVNUhWXc>Jc${;;ILXVCWQH7aT8-X>P1!r88Ba{`UygpXbVU& z)Z59md3dWx^=ZSrtHj+SR5d*~(NYCW;P@MTNF>(&b(w*if1`WE0b^I`4|To))n_i5MVWEbWcR0-_tEXeR)@Khh*P z)E`-OIwMijFpQBVrqP6fL>Imc;PNFp8)sDI-+>HtSt3OJ3ugh#K68C-*?Q;mxpFky z$~MW-+-e=o0Kj&sRm7AX{<4m5%k(6f*y@qmCTrWPZ3LZGFT;pyIeKlAYelb;ySYJF zx4N3e+qg+kIYX%B;f-L9+W3{|SJn49>7fX|D>>Fm7jfiMpCjpD53b^s>1PmCS+^mG zl~5?SmrJtyWkyZjEimy@l^d=;Imh3nXR%#;w3=f#egdDMKL#%IMrzp(;=qOiu6!*v z@x`)VUxsU-54mD4Lx&x!V+Tcb)LI+4h$EproSp92&Q5EZduf1c!Qei3#IDqhp*^T= zQYufY5SxER=aK_ZH_<*z(;OxZ6WJzywASfQJowG!E&M?Fx5_27k&BC+Gq;EK2ZQLF z9=e+^1m~CZS)>!KJ`kKpx+p{sPj3v4Yz)1059yV`yhaqQ&gLdwl4)lIhcyyVMm~9} zo?5|&z;(6e-@MIzh)mEr*6AZsjFyb#$t=zsE*0;v2Kx_605h>KVL#p4vgOD*w3dpi z<^J7yT$!x;ajG_~6_sW7R83qQ>~rf=)QCK^im!e<*A0nb)o(GP@T@?>O0KfN_|*a{ z{_6gPXk2g-OfHq#ttRQJgBQ!q&z!cLB&BhvOJENmki7G2@t#L$0J#JGO2T4w@x{{d zU~Wu-KFFr=a!RHQUM@mZhu+h==QV|_ZIZ}8ru$AmN(xWdg#y$l78hF1Zo`NyF0ObR zK`g}27o3Wg#F@*ju}9pZ4z1Tsj!d+317j0oS@J$O&9J=Rv|N?;QcXQ{9!(u-(^s#r z`QlHPje87k9jSibl0F7J6oBcuUL6p1e%M>8&Vw3M*S#f!pFx ziyShAN%eU*zg-mKvsS0~@C%|89lDlP^zsWy=t;$Q`Kja@;Rn zOn?1m!K%IRIy#t~V9ZiCx|oRL{{9T$RojXdtE=Qdh@7#AjNs)3`qS%zmzTC%&@E&} zt$ArN)#7q#ly$T9*r)l0p0a2XGj0sVS!BOhIuQrKYR~EE6yKD7BeY>OZH~3tM6&^^ zh8XjkwKla!h`Wg6a@sbkmGizkAO{eu&w+QU1V;<6G{Wo@S&6+fI7Cv_`KQPV&Cw>R zBg}1l%d>CO-^$fkzWKuq5QQE5(9Xh2%+X3?tujPLbO069|EKDAtj|<^WV7X}Rezg4 zU#ge7`A^*qrLk-Eh5+zUSfrpa=Uff=n#~y;+k4q3g&<$UbliPz^4M)I5g!dUl%`|% zp{y(G_bD#MywAYY%3*p4`%yM9|U^kKE>031&2{y`oWXHIu6 zzbyHjb+vPOEzgi%_xH(xyIJksDR3bsi_T`bUPXk6WpQKsK}aFTVLgT-Y%k?LRd-UHS$dO7nV!n#v|jR8{5=PA~7`Y z)5{?A%joUUFG*iv=oneA0XpW&c2EYgQBFaP;PsaBNA4>T;>oQMuGV2_LIrNoB@=$T zn4i&&N8IMS{>Y+Ime=Joxx$IwvzZ_u*iTu7?y@eR7&3#66#N(nJWh{KEK0YjS<+iM zc)1um&gc^D%qq0429q(wUDhp=5lv18I+M68EmHjW?dIxo9SHsHa!r6 z0Mq3#ZfoWnKJ&t2x0&@u)y(|BaXuahS>OxjzrkHr@XiJoO)cq(k6@(($M}eDKn7np zTQWd}IGoGxmilJqdn3l}mlRM-qC3uES&25nH}~p8GHtuCI#}L{jqQU`&4&BTH^TXuwCxU~ zikOiVo_T!ycpb4~hzu}1b0jh}wrViPdIhr=O`=}_>Fh|>wT7A1rW`J*GtelM1EhMp zMqgonWoc>w)WTwcG6;Cc)6`6=t4Jix!whPULLg6e=AwB_E-BSMrm7ET_V%RsCzFbhL4xA|MZnoSU{8i=ZV-nK6dUw#*aGqiUtg<@v} z{&T)`K&kIfy4W`7^dP8zV<|32Y ztX^fkB(2R#`$*D6;2~*GTWN{dBRsg*k&`%fOkAqIW0U#rvGVEq?$-5j9!BQsy6)6@ zf;Xhzh5g2GS>a;txSMO%aep!E~hqt7wzW0Afl4*&q}2*W(g128c@h zQI70MrS3^uet1*KXt8BGtWPn5+|sCJ<5D#zHwYFSsxGo7_k1ICN3PwuT-Y+dSwUPR z=kw>@sjl3LpIw5q#_G=(-3Z!W;9T32x$qkJ9AMpk%Py;fU0D8}gS7P~`1VnCze>89h^qn{X3)9_p>c;|4~nWo8*gid7;${j3QDwQ8*F`v+G7bz^(rv;(kJVy>axE48>{f= z)6)GBWCMSJTud*6Fi~Tc9+?$U8EbUdl$hL=ijn7YNvy2Db%ni zqhCh>2v-5$K|nUqgNSrp?&~|JHU4+-m+80#^Z1pbI@SMJ@lvqqtwri82=%1S=>U>G zk*DR}Ti_u#y1I}Eobm+R(g6{rka3QpW-r@pi_i6+hHuVIJH~p(Cl|LMR zlv|*;=|t-mXcLa<@WVk?~K6G`FU_~d*( zuMAzJ$jG&FM36>t+HZ5^2Cc(_vxe1QCL)#IgbmPrg>(xDSbCHb-&VfPD(@8W^$>Lx z^CbrQKR%*#5=R`R{X(leS`^WtVPrO3>Nz%9&y0V&p04$S#u1ir2soVp1g13V!vVb- zIa=|}$X2MM4DjD{QyI=CVu=PFU>$mhf z-fj%&Y3$0mG=@iD_+l~^>;)4eL7+bHZNZu|_{Lj!rN|GgbnOconFZP=S7dH!W4J|5 zDS73wjU5VLjn-d7t5#9WrcQxtNs1)s#9Ugf9j$&MTrDakORm5yjM4fqqzLL5UEgMv zCn8i9_VV`BcwLM^F=qaYH$ag=cMl(_d`XS4C+tN4ks&T)AoMP^7UN`2K!vhufqH7- zWu96!@KUcH7x&hJ4Y$dnkB(w5ft(3zx{pvJzdAJ$|e%REty zLXSf<0G&`>@a}i)w!kO=@x@co$+ktPS|T;3kcmi<>~s+h6)7^rDk5GccL!yDS)VjXlXj|o25!I_-*MLX z{w!d{`0|V!-WTBD+Q782vZkB#`KCHWP!uT;xk8KM0;F(iE;WT6PN}`0+2e36Qh&21 zD<~lWhS&g*Skf3r&PcOhPl=usOo56i94gq(d&(k7R>t}#dBJ{!`P#ZLeIDO6;^yp;EBy`KeNo8upU@+2P=;lk zlUsHNc&r8+EjxA&i7uQqmnZH#0iSs;;J|uO%>mbl9op>N>d#idthQvtf8>tTh}-zB zC*x@Xj`7slVN(!e^=FH{4?H4l`$od7b;Y^grzptG^wm@r2i8gy)lGQhWU7ZSWE0>D z{;oGPdt@P08@FX{)qcE|@LQVRi4=lnaA1@Lh95&fA+(GpW7tJWU!;pit|Z29Ut2~% z2<@9p_sErxV_<_JS}ulYfy+$a=#{GQuQbT^7J!~96mTWj2I;s((#feu%!LsPHD`OO ze3#&3I@%IoW?Jc-YD|D|qLuVXQ`H*x9)W|*&$YTAE&5xk3OF#Q)1mBOQRmEw0ty{7 z%QN(#g{rzsK1Nmk;~9Y=d>5J~{+=$75jbA zeV5U~`ps9n&l3XJPf&%Tj{g#7wht*GViZejD)WTykaq54Kt=;ngaujaY{fj=->a&0 z`YYjFHa&xP>Xcm2g!7^)8T_Dqu6LXNFhbROiK-6;+&oY9K4T>=W9d_er zVvImT-BIcz&d607FYCR;G#}w>QOq?fILkKxqf;)?4Mzpm0eSAE!oXxQGwgXEnza?G zjjfT_xhi3m)ss1@EX4fSURbEI-t{OnM_JvdRGbK?_q5_tIiQa}!r>bOUY zFDW?`@l$rEYqTUIH^ng{bO>e*Sz(f3Vq3Adj$je2y|pHX{;P9e;9PqfOg8FieFo<1 zb6FutP5dRp%5oi9R={IviyXZlGzx-oiA0m$Z(c%t0(X9Ec9XM;`mOk?#4c$wAO=jp}|e!Loo zeo;?hKJnfv-sbEWmniDz+1#lv`w^u2Xmu+;oi^E(q0I?wkveF>a!@Hxp412tbHT%v zMgv;OL%{+yJzXSz)AEgr=T#SZFS6Sf)`4y5N|kg)aG=J9f(ES~bvHfq3sC@%N}vYR!N6q6f46;UA)8EHFPl zkig2%ADP@b%WRJIUY&#V%+p^==8wGQ?pk|~KYZPziK4&Uh@{f{JQ17CxxaT;-d-Ba z=Oj=sUM-GibE$XMXw#P;u6+U4ENl-GEU@ajbq!kd0`uRk(jU+h4FAjJo#GP>FJ``(c*xhksy$0XW(?CV6-7dqrv z@+kpYoIj3B9<%uq$s?wT{ZnT+U;fQWD<|a;rcO2-&5FzxPXR)=D1u#I_0}by5uoEvqV?1gHg#()0BF9U&MOo9 z?zz9GirG|w?E)R%Pe+vQY|E02sk-zVOFqKAZ5#AC>*IZs(>3&U7Uu}Am1d6zQ*fXH zFsLQRTrMA|eL(H>%U0>f$YvqEG`-K@f!Dwdwx7r3$}Hz|*%vxrezI7PkLYVC+!)wa zEI098bl(3lS!nMWBOH9+?Bo{tWK)C%PdD`pO}($1`eC}MT$=LPzv5O)zxl(?*uzY! zKQivW)PclBW^-JIG<}7?e@b68D{#{E6`ua7E#4ei$K0mf2d201C23w2nVS>$d7RH3 z<1=euc5)kQswVrEV*Ye%hQB)as52yyvT%t=Sz~b<977Jzlp~)JFXJn23GuP$s+nc+ zosjQ0q`qGx!vg{kl2po{as=se-5{ru*Qs}u*L(%G;Q_)Y*FLYFS}vAEy>cX-O3Coj zpKI|7)BSVigK0qhb=^l;UL=Zs25?Khy;LUj(cE?RH;9nwsS5twdH2U8HZ8qBFF18I z#EGpj?7e@WqKNBDYPw(7QkSenY#c&Mf1csIo8!)wn4X)Mo@LG<0J2QMFGc4XwC+2(zEFV?KcIDo+(@)kUIGWOi13{7e>WDqyPDw5Exb%YqIJQ(JDL zX#0G2ID)nIlsvTOua-QtQ09Hvdcih_%R?nN{6>i3L9_wWUxk=pnf!sxPsrZ&EgN_ zxUREU0Xd!P{AFE&WahH*CASUQ$hUnTM6sOTYvk-wGnRof6f<_Q=o7!)(b(F zqiv`pxHg1e#kbTVy?|!F_HfNi-7qHn*JA%?9`Z#KQ1}JcxS{KWGAe;G%Gy`c=jnl> zdjj3uA088h9XjiXV=|fe+HZXg7IjQ7&*+?PF@4i3GeQmL+Tul+KzPN{;*yg2ltxq} z=Mqn|e?vWHhgS1L;~j3-sYC0{ui!4^UVlRjp)UqiXqTPMp9}edg#3IxK<#2runX0le-p6N@;`qE6|dSaQrZ zvwCVO{r#2BNItKXvrB`x2X0p8ToIU&Ig`wAx1)`!mP#@Nov9L4&gQomfW+x0^!98s zzh{=|-&dL_Dun=$>S60`&X;Su#Bx`(i^5?IfqQalgVzfqCFjwtZdu6cFP$MBx5^B@ zh7Kji`Ft10cb7Vu9y_0}?P{!!2CLj)QBOGdT4QKmUU1wRIpb9Z8T6Cn7^QEl55C43 z3^u8){`!``=-apxMZcy;VQ;tgB@~ZmK&x21U?Zf z(U8j;SfUf33I7Vu;Hq4*sdDLDYg~czWK84qm_ihky2W}84|l4)j|gS)-yfd#AjYHd z2M$lWq8}5IC7S2+ZxZvj*Em*Dt(^q!;)ZP~Ql#BG6GabyU*?rVwP zxzE#8=?XZSrj7}mC_5!t7qVF%D>GuVq$2N!Wt}=+erWyt0rCU$V=XWf2J<{EBgbM} zL^=g|9^`68U!pputH&ma_FoP6*QKVxsK5j+rbA&2;|~i;Wr^Ob`b@`0j+<}gNB{U} znja;QiwM)wJZVAs6ziP2D3T>iX_Q?f(bwD3|N#x{|nrzUG&RBXKU z*{ONaHks#)z`2&K4fxmP;rLptWnJ=wVKDZfS~Mo-TBWe03)FsLNheC%pcrYsVxx3G z@ONo)5E5q_d5{{BpW;>LrRCg5JAb~Y{8CdNS_Q>ErqpF~fL&wVWCo)kRj+O_5&l{mrXhbWw5n_r= zSWAcLwaAZ7h<~tl9%GKodP3dGF(>C=j(X>S3{4_l1X^Xlz%r^z9n%+WYq@$cS7zzN z-et2#+KT0IvpSnLtnmu6W#lLHY9%LOsYsfmDw{{FcYV2P3HA3bYZwW+ujfol zYbE+&axUdaNQvgf&O>DTdB}~_Urt5rD-(lP!1+`XA7+FO^xS%edgF4D0p&9i>1rA? zsG1&eEC{?WT|9+wqC8_qSTL3Y1^NO$u;SH3(N|cB%2>C@*ALc{$z~jF*%int(T6hi zBi)XW3To&Ozzow|Y0aY8Tr$5J(h!kaV`kw3Z&{Csu7lg;al0Zhr#IvqSr~s=eljH0 zl1e+&i$brOcY-0enpYJY;i>9`kL0305Z;?$^GT9(SXUih?rMhj3dox=n-3>~&7QB*W9wXOx~ua^x1 zkkmm2*18RhqOFxaz_s>wGz%{Kne23whhonlW6cuBX=E5ZZ)8}Q5j6J-&*+1;@Dl^nKu7F{ zw5@#cfEyEr4Pxx(LF6dPlwR)Nszs*N`~rpikuyGg{XoK;>N9_N&~|MO5@8SuQBQX| zmrv(xjfKhNGoL)TYQIA}<89$W0XBA`NUWwU4XyBxAJ+3yphOl3TAg~&Hp$OxI2?VILFl4&!w;w!8-6vahkFx3>t?M4ERznsZweG7AuUqR< zO~(@t2%OU8v!u%>(dF^4p&Sq%KOc&5`vx(yc_hC~G+t zhq<;hL&YIyH!$LOI#lM>Fay}RN?CBCc)}Ynj>)^5)(3#zeDsd zevLn29TPpAYl#V;;x#cKce4g1<0)r6Lm1DXrO``YB}*^R`sAy6NWbETA^n=4h>@on zr6;W3aJ_1sGOJtEFd5JoYx}F)rWajAAD9HX6Zg0qxP^zq!0OQ7CfKTeHH=Xg zBuRv=YVA5}u-};Gqpf`%!HQ~iKhoRMNA#$`U9|{HPGRj!t$rM5^IORE zH@l@Tm&hJm#S9;|(PTrq1Sam&8&_UYp5CYTw!8pzTVyjHwiS_Js%=QlQyX|1wf;LB z_%RG@zhwg-23rg72expMx3F;vPo|KdDK6Y1qNEd^0E)@$%s z!7Gz?QNBxkPh0jgbMb6UT!=xu1|6Kw?NZUePBb>arnHZsISVpZ8j!n(PVAv7|Y>CT=ox%a5(w{BY0g@Mz zYc@>D(9Y@NphOIUWRXhvCO`2#_>M8XSFmtmyZI!zi7 zje%~Xbx_L~y-rHD75kb>)#Yz8lsk|mHS{jc5<4^r&$$id7K&tb;c%f$CA7@qEwUz$ zw+6Y@WqP5%Y$vy##xyTyjsQ71O5twHM0naE?70cIu7zN&aOqvH6@l(5UECfpTunqW z87s-y_)N(R6heXd1f6eIJK5~%1WHC~`wxBIq#JUfy#M%LXWv|e(? z^&ZyzwUF_Ld4<8vN?Z-hw#(jtx@hPDp9~WlVg%u@U@YV@d04Myv=puPM@b9d;qcE6@$xiG|S(Evih0FP~PVxNV zGE)R1kNEZih+WvsLG0_7vZ&9l%@GghQYFf>rga8cJgu&ycj|;yDXsCyy_spPI$zKW z8|KF{-!Hrd)6Iba8{%9k^N5RCv?+4Nko)Oy5czQ;AjA|W!i_j468IzHwfeUoF! zh69$2&@u+%VyIc>C40(Mz$w#=p`PP=YAzLo@1k(wde*zAkr8oj|R!S>`h*_ zdeg#+rm6z0J&ARXN%+DsO}Ay_@tTOnozCYnW;tJOwuxa7R|?3aW585>DA*+onTvaG zXGOA3q1Vi>^9-$*x2LmHIYA_u!^~~BHoTD=zmh1}q5Wf=&BdB>GBA#)-Vq$hB`6Ee!n}7#Q2f`kxH33S zccYEr5w+$PaIbrfxJb>49A744&9$*nloqG?CQ=&#_yy>@xvN`V1)>+|O@O^%qUZ$# zcA~_6f=^Xe4rjAAii#9`c9LE6#=HAGs?vB#S_oY2lxs~Jt2YF58^dKWk+(I1F&Bfg zz>D0jDY5zCy0Pk}k_8fh^}WEOMrRvRtAtxz4{PiyJe0QNb6~P=Abt)p^`R1d^b#y03qzeW zi@j%l6wP_G@^M!%&z-lSriJHtHnZikze|W;>}w>>0sBluH*#Dbw#j7ek2pQbjfNN| zc>icU0Bib{-#jQb3DW&qb2lUcCR_)^)N6L++&-4RS1)~j(*=6vd##o4m6gwDZ(xG) zzFYj~ITZFeL;HDHk=wM7HGf5VLzt(geFec0zUu7@i=_%3v7p1A7k9LK4-6KdU3R1URz+d^SKc< zAmTCd3Z*_mTbCtdI8dQq~(#24RCyMTOX;u4g zTqyl90^(%Z0^M`k%UBqTeY75->=(m)uuWSkn$fcMy*t@DZBxcOaq+b8@P(p5x9Aq+d<~WU}A?E}ui^-5e z@!sZMCV1s8oNQm8X7%TDel2I)`18;K-@6O&*ev!$pB$gIC!#2BK%F`#uy0cjTZQ9J zj5mDdYm|fB7QOOTmBB;-yeB8*;L`X++gTlcpwweWM5ITr+2al!JQO@m&7{JLzHqtv ze!7vEoihtVwvEn~JsiZI>NCDqY$rI&>%3sJLdXq)LPXaF7cR5$CevRZ3Q?heU4$!a z1%J2KG+)wN>1_TV%D9&yEoSJW)LT>0)t9Ti{8%H8A(yv#mw)JN4)DNS^;QyhV?NJV zwg$FANA;F+XkpNONpICUy2Y7^^DJCm6MT>AOR_D`!nbJlzYb}8Ys;Veg$|9|hwsjeR5hpQh%K|5B} z==ww_t7AfTigL*o6V+47A}T|D&mk0|o`rFzjJ4Z5E38gx!T~F$_E}-i=jAdz<{^oH zSZAG~dfZ0fHa0=;1?~%?ft#0q8o1Hjl9SjXdHweN=KdLi7rjI;o}*`Xg}=AjeZj_n zmz-{Qi_;ys4dY*(H?c+XR(mdZHF#<&?_|k)9C?eZy!#Hz%g&eU3Ch*eoXB!8i~EYu z=q|{PtHuajk0ncGpto{qK*)WpLvWEw6#b%FBl`NL7fV)AA~Sfo{whSkYTmaK{pd{$ z9>dS-S8XhSz0?I#D0pI`=vty2nO*9($?ONwJa1O#ydz3RjekKpQb%O+%=k=Ki&pg0 zaH{HoT19C^-=VIr)4g#v3!3&+{YDpe-urjn>@Qj!!1xaM9CzPwz^j?H!y3`Osowh= zI_0*<`$`_Ch;U}xp&8!P25v|})b|i^n*Fi4fU?DR)w zW};1!qjnv(0Fi<{qxIZxuW9nLF??nFjqM40A|@Ui?m0`8_#6t#df?{m%?J@BIj@{Hw#T^1~Rng0+rf$hqe>rr$E; zTu3Hx_J3l?iFpG%UJN7~UU+GI5HE&hVXOKG5!b)w#s0eID7@Gzo%k)h z*!|R-;>C_;Q}*kkZ|mc(kB{u5+zI!u`#9`qef)a2bo^WTDEF|?NBJl6=wv($q>Qfy z@+9EHi50Dl;SBZl`KhB%J%Y3FVG%K$CpH63oKnP0fzy$I7@3Xmb7eXrMojE|i>U?6 zb@f+W&B^S}WDRqn*=RtJ_f%=3Pe`!lUm=IA2r0RFPT`0%@ zTSir8;8+WumpiIsnYLiAdT@n|(k^_9)*&RzL>#}j%5aRe9#+n7mAm5T9pwB`2e~I?msk9CJuPG0=7CysyVHk6 z_bos_GIOYQ+>9=&5T$z;Io*-VPZnOF)Y6CeMRr#4s`x*IFPjMM9(w;!0&eJ_hV_g! z2{?01*UvS^BNB}|moF2jq*19#oD2aW15hKSl@!4&Ndi=0OERt^+0%k?Bw$r4*^5;x zb+e3kq1j>&@x1mr^2oBk`44`Dj$TUYiu*JL)%1Br>uyI=w5}z$17q#j_xV&?b;8o@ zj?6Ok@2yoG6uhbvbpq%})&>hWXcfSM+ZV-x?wJFrBr9Hstu0 zX9q`nT99pL`xxBbowZ{V?qwexqK3G=!+y3e5-7=F8#~-9+T-U7LoH+WR9;>h1THtL zL#RKP_JKORk?E+QrjIsE>mms=V};G#l2uZ>{21pwfRCI{-M+Qb8|Yjp-AzP}n5dg? zlOF6)jc$7@K513A+8gZ~TCx+{@YwT3KhA0lwS9ftHrzv5!&V9tAT!FO6Ma_gWPRub z;SPvFe_>+9ut?3?$KMa;c4U+riH-5keATZ6j%nIo6|}oDUq95=GAwRCG{&#`ZtHWX+xc-~ZKK6b%8tu%R4z*0ckPl2WA)HCA6qab@6E@g zlzqF1FOMi_Z#DR-; zE6Oe^#jFWQLNVb^AB`Gi+kIu*jS%_>r{@iBVMPKbvPPHsA5H+anxiAf7N6u{ORZ#a zv|2-|uY?`sa4%=`y&+q(6yqscdYC+VqmGr#N1VS&m$W);n~ydJb5j>fq8e*Z-sP>{ z706APfPK!3HiTM-7!Py%^rBk9MlIC-!pZ#cg=hCLU|*u$QUlygH)(}H4g#hEd9f9JLg zbv|cF?ol;$Jtd|KpJy0I6z#i=GE5IP`$80ojGV?kdQ%Pkvm9&AG5U7(_Fw}V@ z_-aE*#+5!(As{j8wC*BC1_}*YPoZ7D249v>jPiN|W4Vu5q|PJo77SGZS;(H-8#_H2 ziE=y{tIh~!ci819@-?{85pH9J?{WnTe5PC0G$=84h$pG*4P+5olfXTwrv)7CDR7(( z@wh{c`xq+T4%%)xGI|L%*F~J&a26xk47L;yN*N+n@op}V5 zn%=DCt+!3yyHocgm{r}eG!va|!+U6Xxb$`^Jwb?)fo2F5P=)%buDE@z91YUY$-UN0 zx?q#ohK3dZ3k@Z*4IQ8BFgUqmbZvMc_j<$74Z?>Iszb!W@j<=2lK3zQECZmDfbR7$ zCP1Y%2`XJ_?Du*KM*=FXzOrtOBLz;}iESQ;8hH7GY`5b&m3`?XPj&y&{1xID&rWl#DsJZc4d>wy<3Z!*E)Rx+5Gg z9KXTO=N$_9TbktZFK=~Yz~nx;dqrEkbcz^7&>P$j9`jdCTk`Ap15<49S60$Wl9rnB zCd)*~H3-ZAh5HJ$r71C4y|SWV_8Dcf%#xL>@c z>D-&?lNh?7VYDde7c840)~dq=O+0U6e7%U&d&D5UiF!p*yd!yfh4#4v1rhfP=#y@B zxX$T|+g;DGm4B(RSzmjubGb-Sxl+p_IV_UNm?DIebNOcZlqN{Y;a)95atLh<>o&&E zFtGoUe;7S2fAzLJsP7=r!Moy^O0@|!zIUfFcB2v6{WbP!xkmJ39Cd24{M9=bX1hBw zZSm{n*hB0+g10k#i8e{B#p2BFOKc{R72!k1`G1Gl^NS4ot5j%@`Vq5(m!>x%T@Lnv z!|@RLS*s_K1;Mw&Z-?OAbRmLrHRBJ~Ax2DQIjvEC#ZKoD4A%5PG5yF2?a2sj%Itf4 z?AzmismcFP%CHSu4TD(d-4Ua!|mi zxWw!qs#oONVg_F-niIIqcD3{X!d!vxRAIT9fse2tLeV74A7199eeB&^QU(5#))I)0 z<5c~h_w(#8(tFl-r;(-d>QdsSVvJESic{A4 zJj!XgyUjH6t#6R#^*jV0f#C*vlmbLSTz5+~TRCG^pDqhKbD~(4rBR`HGjJI; z!5E}eu9UjX+j5KyXl7?NHQVCAI-QaZ=|z?o z2k)0k=r_Xqm5HL`$BWqicI&?Dqx5hhJ$zXR)bOH-ERRT<;F^U#rMvPD>#XKbO;cFchnn-BcNrV%SMH4*bY^H6&CC=tCJa{V42{JvbAbt~am)Y5|JRZE2|5eJ3 zA{<>mDU#~vjP{t{$>*v_37#Rso`PLjNFSshB4HD0+%~ns&PLlPbS5_wchGx()t~ix z5SNlbK~PQ-3aK%iql1qVaL6z-u~s?PSbB|znA~pm;GJde>e!M~8oJC#jE80qW zCbtH&^+jaz);qa}H|E6FPEVTl^f&GAjTjDG!rEPO@eaZi0;_PMQn_P4Qc zLffvQ7>M!?dLUQNM5a8F0~TG5uCooM2J5U{tff10Q;Aq=DZ}aAujL4R{_*V0PlNeJ zr(Cs?h*juSt!l^)UL;F2n>2qztMj=WA-^R29TQ+23hm2u-pk5D2tU`ohC_m@w!AAW zN0J?T5}U?%$EyTP?OaB{!5w>-9G(@#N5XP*cD6g>Iy9LIUX%)&i0E*)pjGb$UCz)G z^5A@Km%sX5FSy(}{q^_>&gYyoz9L%EI=RWY{9bZ!^Yrd%(VlE``_OJIUwmcQ|Fqrm zW^MJ3g=6SZtM~Lxjl@{t5nHC|+2Ii}NX=X8fDvSifbnKEo)=3#UGa+g=}ls? z3s!*Kg#Eti%0aR_HW5qIlVP{5wv`Ayyq&e!xke;G_O?*9EjW`n6pNt8i8!!Xy@Fgb z-muz6SL|)_;aKPMZPA{*3AV2v{n{b@3*(X*2k~K=OTeQ|Lgii_i~WIZN$xd*tXmU zUV2`yHi&En8*QM1me-=)2kg@zRk0f{`0eIQ!C#?`8AersE0Jk~cS*$pNGUM1 z?qb;|(tpsIGEo`Z6^&<0dwJeRcT-g@SK7vnJndzN%5Zj*cy$Dv}x$0wXK0?9uZ7u9Rk@HO?0Ds_`AkFST7sMFV=1ULF5y zz7=xGS{#YzZfOa=p&@{WY-_}Hiv-Az~4Ms)JKv~yu62vbE#R;4t ze;nN7862(RV?+TW)Jc4(dQZQc#LL=N!5y42&wz5RT1D2@$|qS1-}Q$Q&eCT~y5)V@ z`W}9+zDgrgU{%M0ULZ(je#NJHQFC^(X4;Nz;uBMp>1=N0NhV^bGxS$0f2I+(Y+T*u`%$!rr-5)oA7nT$O*A^s z?7Tfcn5O|NMtoZ!_`#AU8TV^hOkvR)A+2;1rJc@ymZpqEA%Q^Y0_!wDm4ck+)Wwqs0)T_ zVtH4n7;Fz zrA)B1RF>kSgL~gjn;~OF6JEkw7_Q5;e)8RYt%U(OJ_=vHpYI_fD}$uWWYPmx zQYJ|m$t2ER$(2P?Rx$}8wj||}l$%TfS4t8SGnfBE;XiVsyR-Igub74FNa5LB_>=xH zglHnk54neZ$cygIOn%5Z?88v|#$2ec0jYMPl$;1p2)$JNDcjID1Q?-R5Uw&a< zTUPodx34W%Uc7}NBR{LJtuXzP+1FN_e#tQH8X*PTNn~_d5*ZD%kWsK)SCMOvpQ;~< z4_WV-azi|I7h@~LPi_XWQuO=R(itvytEgJ`Q4cqfon0mAhPkvdWE5wFmbz>KtIGP~ z-FzuGbsxh9S){A=@W%Ys*UQI3(-}7E;&>(07MkwjP|pWqr{QM7z0{!#;t)5eKw;(e67 zue08ZdDpc(ip`zOOpfWU3+KpGx;d=*(V^`Fvf+|9^rY+z*gvHrR2n0H9PqIi^sOI} zIwsjTrS0lj{eF_Qk;FlI&_6c(6(z;|y`*Hc_$AiC^b;4%@u1*wf&e3eF?Y$2i%^ej zQMV~^FrIrzB7n3xPqbAP2Ik;76lyJ$NVA_y&eD{kOP|Y1czw=rXS1BYa+nX{Fn2EB z!kZdH&%k#UgaB>&I7lIoJnJn@8eh&OaS6YZL1|4? z$)jlFo2^IBKV@L${AB{Q=;A&;2uWY8{`U@%=>^Z0E}fJnGEP?a3{TA-J)<_OL+WOo zER%Rx^1Q*xRu`-S$vJjDP5c^ogJjpc2j|n5l;mPysA*-^Px25&hS~LyA=hr^U~Gpi)jvyOb}Pf{CR zID&FZ+vQuTOe!q}0#^U%RuU{&ze1_JF!|mWofa6C&IGeef5@$eAXx@J4UETheD|N3 zwv|k78KDEq)y}i@RRei4@8#-(wPHw$nxi~}Ga=DxcHLWW3i)+cllCkXZ?jnC>e0gr z{uaTpRqUa5^rInd&ElFnh%2l&5KFLOu5=O6+90T79mMn)ys3-|Y_Yt#M#Iv2pZPfk z?SAe2he-gEVV&mC8=7RjaziMLLwM`cR6}OIk z6`ocCqg`84jOAo*qD}3F9|Ns4^ow+BAxk3OKK54P^cNz;HpZfHAU4qy`LLR+BjukH z#0u(ObT*lYCfv0Ms|=XK-M#otsq3Iwjk4W_DCFUaoy`u4cG_Qg1xzto*zMoE%`CoZ zg(?cWCeSIZ2Iz>REi%^-;n;d#2N($7DUP0Vs#UXgSnW`_Hh z-*SR4@`KC^WjoiZs&yz`Xsn@EO5H&zm|VKEL7J{MKne_a$8xNq}1Y zg499{S21YKVCgyQ)N{tv0`SMC=S^L88XJ=t3yz7O$(8{triSfFehG{R3JLqE;?T`47g%(sKRMJ4K2`L^^Pq5Gj$xkoJUdm=p-$y9a!a!|*QnT{F8dx+ zVX_BI_JGMAh+J2gvd7lPhQI@8HK|Kl0K=oB#cp@w6w4N^Q>WsZ4-##ai6LPg-FFeU zha@58Frp!$5}6eVeE4^4<4yB9&c7D=OvM$Lei>b*1OihxU@drW| zYT8cwPhu7aq5u3_jof5}Y7MC1Y2k2o^Rq7@OL(43VzZ3#?eQ}!5{+^;iK4Px{0J?} zPHv?4u!%l|R%f+{;z|eO-IhGHQV_=g6)NYadh-#MioHi1rx$rNRyQrM+2nuN@!&te z9$GF-CwOns@4cVnr_cYeV~M;+91lhL2|I4J-hOVqE#Qq%XL1kT#XJ%?%u$>CouYqD zhxf2w`U2e?9HlY|keRf3d~{9H@;9DmI`YUK#!$z?mC|=B|EojO`EMSa|2_EAqvikK zf&9}3=l|W|`GFJd`CmK`Wni>wq^wpLayLdMg^^O#%K|xXc1%N!<{XB3kGrtZd8fNr z02xauxI8&Wr?@VKhdM@07^ooLW~_Ptvw07Q+?QQ_*9Y2J#4^ueNnL6fH7A{9iuMtJ zCp>+m?}bZGyLjuWE-z-6?UrQSw^v~r1#O=)a*_+PZ|G`znvD=~=yG$8N1X>8mfQSJ zZ?`WpD=VJkhH#1avZ{tH`N|#fVL{Lyo?Yl`*yt|1WX0FvIr+xkvqBBUAf!!18=!XX z5)l)suGJ5e_03) z$u(AoTdaSgXxyuO_HJ@J26ErnHd*czC_`L@c-Eo;HS7-TU%^Z1IE_`7dd$66EN6_> zYZeUO{FQNbi?R1JKQ?B*Xg?E1m{&E;j|mN`*T}pX5mV6a-k2vcJ7I2$?#nTwQFWrd zOFr+7(Hqk;y>a7sx9O449=p9Q+MgL}{mkCwYiQ-Z6K45`)F8HLH?%cf3?*IGPvFMe zCK$^)n<{o^KrZr1bS*XgN-g;T<=w0Eg|p*B5%f&7lC#_$*--qLXIYj{;1gjl87{hx z*g}YKXpI3~6Gov64vPg?j{q3`KgVr&aiRJPIEO=N`5!qn@fjAD+u8gmFJ^G0CvsOt z^(4p3*hS@6Pb%Qo+1$?%s-|qm{@>Yr9nXzbQ*Mfr;d}*u-z8peGMos#K0+Rc3W3)DTk)-r+|byj*4xpw3#3N9z#tzK4&Wl@0U2!-u|X>E0T$ z*`wh}<3W^R$4UHk-?)LOu+aAu6VcZhJ@AVJ8RUEwvgeINACwDz<*d zjp3KZi>%j4PJV;PJ{^ZJ5oTaa&=)*$B*c%Q&yJ6HAuv}bF43GXb&S-IA-nVhc;ujv z`?28>;&(6|b(|#dGZ0q%xI%|+)S^R~?O(N0s?u$j@8x{phjaK%Dkye4e;JiX$5Ffb zNaoJ;j*LvVlcCPam#WU~{8dy};;hxRP$Dl`4IbN4llr|b@A#T#&4TO~`RhI2QypDe zf$7tdTfj#@;^EHobqe=paAZL~rsC%xVI5f=UGg@$?|P#;dZ$CmpL1hv?qqvy){WaI z+vnPD*raD1ld5B?3+|^um-APh%-a7|7yLxO{jxLOixTF)lSb2s*=4ZASfGWView@2Pw|8uUlS@QT(DpMPWptuf@12Zxs z6Tk(f;zEn2)U6a|1dC|mB+78TmRhX(R$FUpm-nr$S_Og%SuhEUY*r1mLQpGr9GAF} zAe#AqpL6d_5>V^!_kVwUG;{B{XFt#Loaa2-X%-|BFXVL5Dm=h4c$dC)6qv&tu zn48Ei2}318&prAM>xB@~B>@eJb`iG%`h?`JXm?lzEWk`Q{2mThq0uZ)BmXPwa^9$NB{~({D!|#zc6HQXjGO6cs zF=7-A?2v6%-{kBR(6#3)sUBqv!IEBRmXz69*4tmz+kofYsqc@dlv(!o`*`c-SNba=WksP}ZN0N1A|mk4e#@{xZ%mIL;=_62JC%acDrety{C!I6EBzoA zg`7uJ6`jRPPUgY{?DX+tEnP-*v&MA3${h-k&f=xi)p;JaYNG7yRad@Mm$Q>v;{C~0 zik8nRs|tP~LkMSf9FSJLrDJf&77GgBoY1gxjEE7&tJ$~$IUu@jwthNhKEzcD(GvaY zIp!VmR1hn}C_!XfNc>Z@bs-F*OB?Qvs{y0-=+%YMtBcL& z_$+`XYBxR>nqE6WdAJ$n#pXggVTk0=a~Hn_h(vxvrAF@UJOe3L^OMM5{}mE3xyh=5 z5!{%6Es0amzgCnE{}qp3J@avXqPZpVcdjec&vRql6ekyyxybP{iCnsq`3k=rasceQ z8(XKu)AjB2anjysd7*+bzdiuaGUvV|JxPMm4E3h<0JF1IN)ilD<<0!>>4JYmzRulo zkUr}}2-|?WI|?4qeMT1PSv2j}F9$ZaoAXH4uXdTPPi40Cs|(FO_EWK$p`L^oEE4>| zl!2f>mMKwkm)rLjR-&7)6@{o<;c@2tCuu~?Q>w=nlY%`9CP3+T5nAzZG;`Loa3Sh^ z7(IKC^wL0j5zRc6WTDkAixjQe*~NlknSyYjSl=IefZ2|8jt-qov;b2CyaG6HKPtcX zszyX>c*0CegDc(Wbxsun4Hps$a}-D|G1I78u5f*v3gS=7VZ}uc7gUK6b(Mae@kq8*{oZp!Gpk~I4H0)Yw{()R0A$K;w^2IXPFg8L z5wkCigwFgqg@<)&-kwE(3#<|TC{`{(R1R{`i+lmcDbuPf#{oE3B`YAFe*sne#tGPv`$h?ulTsTxYr zK@@H5?FZ;t+-ZlKXnYvpY>tQ25rvRfWj1WRDt4WZ6YyR&7P^>*=Jvk|ZADhNcWfPl5W2MDLe{Rw z<$9K7n4+hQBuP)Be*|xjmyH*LM+?9s|E2<++c_XsV7R zG3@JQx(nu{FsxW${AL@&PB8zlCAEktX|9D{0Zca`ZvfX1HmQ!vIkb@8%I0DT!J(}a z=_S*QTZ&OhPvm+>o%k*U>;FgRx8c>M2fr1s4tNz_EdZ~eP|UE6Qy%>1z$>-CDV3TM zat8DxdVljM+bonYbLk&AezvH%N5hA{A_9q3MzLGEjKF*9YyM(15#` z)kqARk7w0GhE^?b6N&ZHsu8gA&_}DjM;PkK;(zqsB<(ce2KZT z63XJvW963fzstOt_hxsVXeuScS+sP^LK$jXM!*Ro<}OliYT%Y~w5*=nW#oz;nSgkl z0^{f!ieo~?s2->>C_dRd;1ReWMrvOO>BEp@X=AY2c_*EilP3p?CUXX>hPYWhm+>qE z*rNupy*&EkEGf}oHc1K0=TW@JpOpr(j9E^zlIpF7o|(mLC3(7=M0lZm&M-X&c#FlJ zANLAVtgZBqz53f?)!!Gp%}`l9Q|yQtHWQ)@_thYkXUbyBCLK&p61tY(DpPbh_*O(M z3tNA5m~dgxH$ayQL4(?imjYFs*6{@Bt1689#I|2T?(VeW<4a@}OvN!Xu85B4Vb?!H z?rb4>vcK%5TTl0kBqBjP%jk$rqiGNmd1b^eQY95t$FINSd0~#~%2gM3DRbXIv=8SM zo5@N!b4En0pnPhTOmj|N(#^r&>~3XE;MwMZk&9eO6Z(%ar}yYxa-hv)lGNhi$)e2W zW#;4xMC;;1%asQyqjCkXHYvEx$0QOeNEO5S%b{%S5om8W$GoOQ~F<(zPL5!8c zY!pni?Bp;ATmh(Z?KCU?0bgo)zf`ItkO2EG1}!Leig+#z)7E7St%&yVmP{UsNP*a* z+?dCWOiK>IZN)y4nY&4}ix3>~9aIcagKG6=GN-B@)Ix*=GZ+C z=h*>zq^mL1INS`~V#`5pQhsihn}>bY>5id;2gvnxj>y!mog6s6Hik|qINjsUGhdyB z{9*&6=*G`E`bxB#Zw+pG-LJkTpw4WSI9BQ8bfP7TR&E8_0-{;i{rpb&8!8t3EnfAX z(eOMA4Q~}_VYB`&h<@NvLG<{Kx-mD*42$J*_ypzQvZ^QIPO}krf*|fGHsa>5Iv#K1 z52lcI)m6pZtPBnKPdJ;DS6N3CC9zr#&3*dUvTMU=_=vmxjz2ngH-f4bg~71L7?FM{ z=$n&7-&WSS8+D;)$(uOk%%V=mpzw9<2mgM=MqM}rQ1|=Xq%NqtgkUIQ|199{)#s#K zWVo=Vyp=N&4uY2EA8E^OxKcB>3W)rHw5qQX#4Q))H&=Vmi>=`xbEs8&`0BA;m`c-^ zow}M>m>Cyn>k%n6pv9ZJn-D`>*C};?)n#2vT4Muv=?U_e0P>OLS!v-P%c>9nsR1er zF1nxukvb}hA)AUbf_8t=C;mNMazVG@YmpnUfZ`I=>N0APU?|o5Hf4lw4(v~p3tIrM zUwBKeZwVW|lIt{%&mO%0ef6<>WfVPX5!_YPfTL26MBTG%YGy-*L6usxnhPmMo&5sH z!DBOcN#q~>K#?4+Mv*v~6m=S8qP@lUuXW}KMSfy0RicVnJs6&E6jkMPkwS;!h zY&nKW!9+bd_#B2T*T)H^(Y*>i=g-S>Bqvb7@otQ)6_E~QtEI?23>TagMz+^Tip{A zzKMH%6W@3y%~M(8(5iiW^=O;2B1bOOe)b27Xw^~vMq)0lT0$vDV%ed9SO89m#0o;= zBC-D1%^%6oY7X&{K#*F^za@KiUi|yo#-hHlgS_d^Ke;V4yhw{X_A)7+zo*4s9;}EF1f&%ew@BpL zo>M4Wb3Y%EvpZD{tNXId9aE+vCAX^+qi3j5{sR<4mnkLBxk^fg`!M-~;_gjgkYuRr z&XC`oVPJgZroL8&A9iQ>jJUbfa3VEuNXa>0+OA)nCT&;O#W}> zE(s0dFOVJn8pzJIAR9mzJdhe#l@GkDUv{tl%Dehi@9H;=FgLB27HZXgz=7%&jNkJF zxwUE$K6r|DcEh;r9-%UU@v%iaZ7}NkdJun0`rix0#T)zULHtj|krgU$LAcl!_XhEY z_?7~3Z@)=4h*wFGZv}BKO70EfZuK>Yk~1@W=T%od0bv_U-6z53N|7+>9RSe)V` z2h%Yl5im!mVS{ z;x5ky8|WXmb39|^7%dQQEFJ*RpG!XobEvIPv-?p~7duNJ{}oO#_A!6)T7mqVdO$vC z;7*xMV@=Z2jzn<4WrytGrhy|Ekf8W(HwPhmpY#TXz8L%BkyKnVFDo=tS?G!^Uu^$4 z8gamURf#xRWYYmKfS;!%GS7qL!_iJ|?>A$x97Chm(#o|Qcdljc7>QIdI-@}OP1v}( zAgLh5E&jXo?L650|FgdRr8?QSUt{d?f8Vzaf7y?bXUnqLA@7DsTh!yoP$`DZ=INn{ zIJbDdX1n@jt$5}_J;G!*xM;czx(HQ$W2?yXXVEgSR3ia8qbao>VtHb8<(V` z{Ko$Jl5`)kqOrJ5Z;o^h!~fdlF+7_++Kd)nF`2{+4*QxJTfJQ2f&E7j;Wy;ayiuft z*1yQqtLq@;a^~8K(>q@MHBnG7b{T&-!^AiT+da4PyXT6y$B&rDa?vH`_PFjbG_2_! zgCDh^92pK^{#PPl0z%my5K!>1Fuo)*_1~MN-2ph66%#+>Fz{HXioT>{rdI6KTBZiq_)ULIVw5A$oo{>PtIaoR238MUBC|+ z3AU{w4p{8jBzCIGWiV(=eJ6-1BnzRfznZQ7W{B4Le&g13t|<5k#B2Z3leBf)iPk?m zolA23`dxVx)z;;t;b$Hnq{gAG-)^1?QBmE{*0)mfTuOE=J()-*yZ%GbUFQ3hsiK|w z_M%+A zOmT$10>*fLs&KjRfXE5u#jca2N1IEkeP z%65hiYU>Abf694bIdUQsYYBh9BJv)&zZk!aNZ$>T`>C`gPS5HsfufzB4Rd5(_8fuN z6Cd>ta4{GYlPze08G%JYPM}U_qCr9}%IQpn8A;@KK~6=b)9~lEM3nI{fur&Y=D-merA!_nsNf$IMEeaP>7#Ijdnu$f%H#SK?MRer=t5z)s75weYqB}^9aBp5227}=bV!}D9((k<~ z4=h!8896ganU0mc%EUuK{cySdevrW<{$l*w-6MG?YqCl;}})U8zhBIGBYyB5=xi+p3Fev zrHaxiKMHrqWjsuK$8LX_dFyB^V3bfUn~4%?Ch~N#%2IJE%Q@g}q(hFN^DB{iJ$#p1 z7ZL4YFtn3S6_!@+GLh46>Lf*dOIc7}Rgg^P)KlmflKy zD}xkt)!`xxQVoBGSxWsfkA2MFtdN%a00E(C{^*5SfQpOXy!h3@qH~gQ!xDE2gaymm zmyN(UXQpw+Iq;F?db4>JqI&@zu{E2kYTCY8wo}v3OMILF2#xrov#`C%G5O6S;~6R= zNhm$i?#LqLL{bp5?*m(o)e0{qh(9ztwiNc3U&TMA^pU992)fXUN^;SuO3&p~u9a5! z>_{C)MJxo-KCOno6)1HH2Y`^TE_Ahp20k%CnRAEQv(vOZf1Wllkf-IjUHAjIcrWI? zn0GhtZr%w#5SYXJ0^S$+o!dwv3PGUV?`#lRMtI$7$EvjWsmSg&qycv3&mZHDNsLCD z)vsB_ZlHpANVB+V_2_TrFacC0gVS@{;Chu2jP&>#>2dIXr<0i3t&0zr4$9VVw*Q7d zGrBwY&OL%8)3a2+2C^BpYxU{Ez7lxNN;NVcksYs8`R?{Juf0v+hjHX3Gw64%5@-`4 zQ;*@bCmbk-^G}i7V!fjbcWfIQ)V46zY!NPV!E4;hFz#dQn$h5Og$FffzQr>=Ma(&t z8v^6`k)vOQ2RCPKPbKG*Obqj(k)vM<%L5P9ocW~vRiBrW;uEMo8CqLB@g!P{4Npq7 zjYy16MCuFdrF-qykR*DwB8NQ=TK|XpWJNB`P!4CmaM3~IqCOR${*T|t{2ib4FM>sN zz`Kgp<0;@irY!tu69NUdo8+mKNh@k42k})JR#(Ylud2?TNIhb z=f}@B{BryPfrZ(_)Rb{`+HW|IxHy0;%c|^`XH0W(tCaobGN!djB+*q>Qb~fl#p=sm zS+awTNES;rqMOFpfmT>e6jvy%R-iPs!my|OMHc4;qkdN~>Moc|&{Mzhr{%&*RJ|`_ z@UA9=3W1UWYzSq%qgi>D6E;meMw5DH&^kkS%G?=B>nh@=S}{5{M?Egt)PAo)cOMTk z!zftal;P?%Qd$7Ry)grX^NJdzQgGR8Ty(ooA4MM_lR_SaObU4vGAZOy$fS@*A(KKL zg-rSv2b}dnDG7BfR5HM^GrZ2O$*)T_I9>&SbB_!DM=T2|{r|rmb)UpHw4?7DMJTja z%yXFzxD&m-teGnve6I@G+ip{7J*2jyW`>TDKseLv!r&!2KRVFCBsW7C)11w60jV`_ zRyvrzay8hA6JVw}oqC#`OloR!qYo+CXce*UC#cEwQy_d9_@d??Tu_&6jwRtwvLJ#S z%HGNrSIH4iXeH@m`M=OKu@ewu23R($1mOjuxlIrWmU#10Vb_AjBZL-K;0CCvsQ*On zv-KLxznD32=4BN)^B&PNpNnFlt1guYo#2nuiXn_c;>A5I-H%^aD}pogvyp1g{f!!u z!oac-q4UM+X|%O*IA!A)!j#-Vb;8jVTk}#xpM>X#-eVPI#B2|W`dKx9NX=3YD+Q5& zNfut*ZBa(^GKR{jFRx=v=mCvf|Gl&j&HXb8wD-j-`N!4WIOeuH3CJrr$wh+~f4xtA7exY}}Yu z$_YV~dtT?~Fk!_+Z_Qj1uS%F-aayb%#|Lfwu0;L>q@OjM4hNI4LE;ORbz;E~y)eTc z{k0I&=rsiu(Q8ij8+Wj8H7X-jHmTTa0!ff|mrflK9BiZxq+BGZJmdWVIU#G2NyLMKTR_R7gh$(Ey!?w{Lxaj*79-@!*f%E#pL36_4JM6+40TD;-{s^|V%Vl$L~? zF)O{t)t_+@)36-0$wSa_5^&+!Bs4B)oa_$NznxL;#FTN5r({^@{E{ovLZ$3{>9YBG z%j%Ym^>KY9!5n2PUpmyYy06#yk|)bMvB2wm)y{Kkn`{;(Cx+ny>p5wC6)gHZ{8uKC z9#(y%276lMqm0l=k&kjixn*C48Rzf^F0;ltyjmU@=kTTSz&MBhfQKM=YFbN*Q$~(j z$eG5JG1_|X(9Vh|{s@<(%Y1UyAx0;TC2@GRo#q)l2}2;4n6cHQ4VSGZWs`QJpM56j z3!-2=k$)I98c6cTzl(MMFcc2FJkE=a2*M+YCE`42$|5L55B-Zfk^eD;CmptT6tT`~ zl&RO_6{W>u-o-tHgzG5{`G{1DO|*|a^(A7Rg&pCyh31s_i{kPN&+}5cf6rI2R$kor zL!!G?rZ&*8?eBrG3)_(baLhpL#2LGqM&rLQ=l)8lh%&tsTlUuw6vZ)rrCKUc)k=L< zZNh~B*XBxUqaOTQcbQK}f&P?yga<#zSap7v*$@SovM^5>KXE2s1pZ?OW6Ok?jg)`tf6=GP#t3r)Oifw3 z8nGu<;|UEEI|wUA;ol7D&_{Ihb0s#E@zauD;)n{jWa$l3)KSqUJU8=tUyE2g>9AZh zf=p^F64@&->$kSL*r%Y<#;Gh?Ku?%&<8UGuKnrbX=0l*YS*sRpa8N&c{eMF-%g%1$ z$Gv(HG3p4V7akI_;zXK09%gL%6QV^i}0q?stagqW0vau4)c0; z6l6>x!^&I+(D96uT1g}RHfp)-w)n_*WeK@_#>U(#V& zKkn~E{4~8}^10y-#ry}jf5iO9PiW3!HU&Y?rpoxGNDTtU<>?@s`TIGR$__($s%#7p zpN?Rrn8qF!Mb$}rr>&Y?h;M^rt@*L+Sm9CTBin68O>EW7w{SesKNnW^&i{$@0R?f0pgFAPIi zbu5P6+6%)Rs#d|UQ>axi8(R6bL#`-2V=+U99tfM9W)@Mv z9`c&&yNB#f4mtb2uO0Gr`%#hWBaw1BO_=Tl1;?VBs5jz$`bNf6t4Zvp*IQ@?2M=5OQ!wpO&BOS z)&E5361)hjJ%oE4mk#t79YFFdQKE1_bF$Oe%-wN}lPrw=FE*b6C13c3*gnjzC*nf& zPtJyk`~i(rMoeqs>F^PgEmr54Ky|77X3lA zviEqHpKrP!^k0q1?a{pLCw7z|HE|V@QhbBu;HacG#FdbXK;t`uMfF%%^|~(<+vxYw z!ZG`*(ABEO(Ex{es?;b?szz|gT9NK4MO#xYE)-t`CEoT{gxc1hz2Wl#T+9b7ou8Ty zZW{?<#*he&;S(?y9)#kR;4r=O>JW>YK zzxx7I+W|)g_3!vO6>HRIY_Pj?u=VgYggy-&LmMcAFMZGHsd70`22~Klgog8$c=QhuPiSOUP zX+{n)ug_BQXzqDl!U3t-kH8i!+DqXL9I1f8j}{1q%T&q{N!dw><&+J=m>+KqU34rW z8BePY2@(O+JH-(SDah6J0w^?4))oFxcFVQhRj1~xyDDo>67(q6KgJEv6}}7)?=HxwsBIznBCWG$U$_aAJ8*nzh#dHAY5hbx1WPVV&9|b zjzH;@1EKWzXcGgI1pChcS=>xxc}{$=p1FYnkvexY^KVj;tEcK~#rDkHLXEh1t|qQg z(8#=>YOr3Ho001~`#|{iau0YNzbzQ(%&o)B<(tm(F8@Mi=Zl)H%Wo_jK9e?sJ!-%vyq6uw<_%^51?@&Y6^sQW{b|#C&l``D-2{E|K5Z%c~6Hjx~g{#`)im ze9Jh)n`N9r%M{{U>y{ML67vrG8e5oUm&pLYv4rgkA2~J8%!cW3M)8y;>8r4+{$AwI1yZ>|8AiHmVAc& zCvv1KoNr!a!AzHM&JveG5O018ArL}IREj*G3 zF|`g45%VhJ>|b$|^&1a&(n{<~#JHXp`RLdvCeJuTn^$qVlw(1=*>EK-gTlmRdMS1X zIiDAyFQGzV70*$*f_j_z2)W8R&>5Vaq)WMP}_6U;E`idZ@ z#QI+7sl}?|*zeh`W&z)`TO~hjaD~!Pa-~|L{?1LHb!~y98n?jmHjCG;OYU@;i4 zzOFLNk;+w~YW+gD)m7u-r_FUL!^OvB@Fz1oWj;WLR2SxWYBAeMbpZzZ)}Eg)_S9mJ z()05bJwIRKslBZC=Mww#g_nA2=l1#}-8F~xEPa`$7F+9{m4ESKkFL%2)Lzm1^BX-s zU+$^Br1$3+dVapbQ+sLe&yVuCdoiZ=E06SB zHe^+Q3-todSCuuuA$4Ell(Mjin~`U=pF4%K$_;lKjxZlvIpeRRo_phm>5h$+)T2yV z`dE79Styi6BYdIDQY_Cxq3m|^j!IY*%d=1@yBF}jfM1MmyhGZxyqr93U=9KzZyquO z?~pv4#}zFI7{3?6dN$$9X)m14@PkJTCA>&)_cTM9Arj zP6+6Cw@W=7fSm0KO#1F?Q?JD6g7Aw9ST;2_?`-pOPX6|H^CF(hqno6tT(bHHRVX?s zsfj5@1zUpF-<{OP*s&JiT`Rixh<;Gerz_MJ@dcOcK>o8x`JgzAf!_&A+U(2HZNI& zY!uW`N(QT5l_^PN08hzaT>P0iROL|hOEt+HK&_SIQ}go;3bAov-Dy7gm4(TEZB!n-s(--wnnL0ae9?1#(aB@umx0I#wvR>RI0uEyg6r6V zvFy_`ho~nE2ldPotVi%FbB^^0US*bBkKon0L1HH8HKt6EjZuExXj89S@xJKBsC+x! zbg0gkJIoH8bc4|+q%2O1(HEsuAQ}b+E$t>abt5>nv?op>mr(qMCDSmbpi0>1FWY6= zw*G+%l?)kS21-6ss`>#pIRhsYt7&?{CfS;-ES z#gk|bL_Q$)32>h987oVC#*hCIFkZ0k9WrJ-MnO7~W7SPXYHu=sMqwIN-6e-~MfEYe z-3%q0&LL>7gA&h6yOK$oMx`kun5{B>{RrU9imlJcS5y5%`M`a_)hc`wl^H8Ad7wUA zrHxDBsi^blb24Ub2bXLmG>k2p*ZA>1mCx>^Fk!Edk781W>?`(3_BHfTe?8er^C?x8 z!QA`g5bzpA{XFM@R;ZChJJ%nbE5u0jlSn zPz72`_F8&8%5H9EAE{~{xu{1JQrjD3?$nr}QS^CLBgC{kuX z%FAbpkRD#i ze8YN{2{d=fv!M%KQ2AHF+!(sx0B;{zZ@cB~HS?hLR?J9wd&PPaP>`m!$g8f)ESk4l z)yuq@i>+sw9`icuS@7MQr=FEq$`(f-K z4|c5lcZwzdjZYS(+$l<4>VV5k7kMf2V-@e=A_zuOW{O<(U*!x#1f`by*BR<7Ee)pO z;EFD!r9H+coiQh=fsB?(-F;;*IccP4EPk2CW7ZjO8q16hP!}hZ;oAD$vLElcfn{K> zh*>%vA$OySW59kWYl4`8{kzPc*!7>-tA0z9gy30O z6j2}eHD6D8)LM$W5A?JnARSzJvM9kDqxoSYIsUK8!#DQSIEEi8W@7oIql*a z#vK)VgW)mPls?=cq^h5P*jU|=i_dRk{ex`CrrRKdo z)75h%IqVtI*fgrml6k0#36(RivhwGVw7HT5Lid_}E3H7X@mgxVN;T$q>siKbibC3N z{JoIp7p;k0fgyC}psQsvXS8EKq-!G59wcMRH9rYRF9(?K$#3LN<`xUd+05E@t9cvfii3kqmC%$# zT_X%-;!gM|nmEfkn;4lzl37@(mQaDNGOiK0Hl1Hc_qLleRVS3dN6MW@{hcRT^$)O^ zJgfGWWbO0=nH_m8lM;y=+3rolFt{5!Gf05POo3!;(MFAdx&>R~= zB};z`M3LlJAZn-CFp3aK!Kit*A{b&9Dl}b@bCVcw>@6GCFkhA>ubz1aNKn%v7nF^J zHigenH!GSuKI@VgZ29lk&;f{dp)5K9L`4>5IzNZFK*ujC%a~Fn`%U!`MtV$ItOcOQqWJvO7{!T$X^?w28=yJV*FVCV&3-1Z`SF%9Q4Q zvc;Qwkp-KEp?0i#Uty7+`OxJQ5mVOcv2Ap-Dv&2(KV;G63X$ zGl>W}DM838>@%kL#qA8$v_6l`O&Kp+MSk**(j<@a>-Va9#YXY!&%Od`9vN$))E4Q0 z9nuwUIH^y*X)gNYB(1gQV_*PaqD!=@qu{8=_3EN<2NJc&5ht8Ul>4sr=>*fNlODP0 z5kAv;v-)zfLe{y>!5(^V2yIO*IEAwI`=5DvRFr@|94zt0~G{xi9P zBfg&i^Xyj9nS(_+Xyl4b4o5Vnc{|E*eP-U_`o7u&4cf+o{j~e*M(^e!i-+pnVP|v& zP@UQjd!A2pH6Gy-_St=&7CwwA2fda)dkX#+`#TV^rt0qwY_JYb&&xQrV*=;MNYp*X zECaR}IJ`1Q&T}g-OM%8yDkWy#QY=STH*adK{l-HN@vP50xdVRU<&*YSy_MOXNK`eX z=K(gSF-3%igJKNuMweOyCpLnWP!bMol#9)a8ic;>!mduMk>j_7i!x?=I$Evjtt!)1 zm1$DtYm9;|;wj`XV&q(G_M-xpfi{L!ZOve?gy52kQUH<*OGD+3@aOS)hwIbBOT48^ z2Zv4zE}TAC6%;|v2T1WKI5;vhFP&mN%Zz2J(!x_2levOQY4R*`5iz}It{#A|zhr^^ zPY+7}w3-Mwq)*SQ6)T`I^=0)q`KlD+Gl4xFt=1gcQ`TdAhi9wu)yn!jImU7IR;8_K zg7OF;(=R$bj{y~g3VF%0v5z#uU7W?uBIG093ooISOh8P`?qv8{^>+E9vz6=;EFuOS zUZZ6*2WvIYs1Glj_&3RvT)_1BI59wh@EIN`%$70D!VqGhzlU4!7YaY>;s<3Vz(jD5 z>OA4Y7*dBO5(_6U*)8c)*wv#yL2f__CMPV=CSwa<&SY^&?${k^gQvPz-P|N3A2BZurDuhf!`5}4o#rs-2NbL?;=Pr3*{ zB+(6!G=`*q+DW5T!SJ|^*$#&*K3)gNp=K*HmE(etK{R*Wrpr`2@KiRZcQ01BbW@qhxS>e#+4dUYcj2iOZL$<|u~yKyIpzk6O?rc_o#-{D z_mc?c>|ri*E^UF7Yq^*YE26rT&HT$B$bKZ(X<+bue0&o;KZrk+)F-|KXyBJ)QoA$iqJm)W4fCQy+Yac@t86fIBxpH?jiGoq?zp z?|)mSu`&^N8sW6EjypDESA=1=pU%ky%}H4mSVmwj%YQUsKYPrzJ%?3oMNaVl&h=4Qq6Oy0={YZqBC8j9; z1I9YRDZxpOi)RX6&L}-2sPGb_Z-tO@n)~A$3VLb|P{vr~Mv#Kn!A9AQ3rel}+6alq3>4fu)x!9xZG9R*TT7A3E@bodi z=VJ=rwwS>M0&8V2WtUsR*KC z&csjzz%!?-UydXj9%B{G@hkX3S~R?S%g(@(c62o4T=2g(L4znhx zr@^b_?xI;GbWP;{<-eH2>~CZ_(?RPV9B1z{#Xj>HEHh+0L4CLIo@zYD@}G(n(_>Hc zF5x0V*p%%0PCT+Fy8184j?!t4M>rXM`7lN=&W!M}9qZ;fRcPT9H04}$95j73PR?FW z$=sVC%d;GEEr?17tn^tY9}7;c$AZ%kdZE}*&YTKHB}Rcj(#y!##dIG0t$CUT^a~4o z#;oNQ^XbyJ_uk+W`7hH8!Sy++7J`0BC99}J*M!Pj{Acvq45<7Mgy&q~ExmPc=M8m-6B?-Hw6T>&jJe6HIID9%a#K#@(n-)e{v=b=5<4l3_g3v(D zSpwxp6qKh?R`1(`!ThT=0&6;8Fqg~wabxIbkKtavO4Di#Tad%ksk8OIinr`bzY9VV zs4$Bt-E-6^uu!F+FF}WHX2SMsN z#>HvzG4fD)pP)pDS?Q5~9{I^REIBi7fQgyuCv*$YkwyJFx;5(Gz2*W}a+~dgJr5e5 zbl;@CK7CvKTpZS+D4EOpZrGQA;t#Oc_RM8j8;v3ew~v=y*R1W)$10 zxL~<2hMgA^-d;M$lsweFS%!&+s}n={7<}eA0eygxF+%Z}T;+iapTGW4hF>2%!OZ%* z;t?jGfJ|tC?fO0*(zL+GWuM-$ZDO6w744;*3ushWO13(~hof#Y(WIYBi|=ETPsWW- z-E&5<%oSc6pL{4kG1P+l{n)(0r7#L!BI;`+p0xQrNifRWl+D(!9~0Dwu98h3zNM14 zV04|rm#Fy2g+@R_Tp>2h{Hsxmuvff0Jk62V2K#8X!!i<U}?fY-3H!t5sUcTy>9P)hh@`+UJ?#pWjRpRv9T_Zts7s7gm8 zJ8K&kIPNyv&cl73B>cFA`$YE*7j|hICoc|NNe|`uMAx%zIdjd&e~~l+jZedd^USi` z--oc_JOvw0=*&Zl0m&XVoH>YYGa9sYSi(ly-0?x?!c=k7;pq||X=Sx3S1}_j$Jzg{ z^oVhc#doJf5rYynd2&`PHq*+~NBdgl%nfqav#Q|O^A}YW2Nre`mk=FLM}6YcL?WDp zwRjF3`YbU;%&1A+>8nXB_sGHA7{B|JG>2#7+f2lCBcnfsPN`gk=Xt&cm^GdbzWC~0D*W)~wKD(fs*T;P7IC{kCQsf0Q#gKaH z80~0clZ*wTKnhle@Gbf19Borh=YYdeb1>f%M8RI_x)OToL=^n1a^61sgZ9}+!v*{b{+vjlKD7R4R*t2}>tJ!)7 z;&zNWTTJ&fH7)*y*6o{q{e`iWR9jPbN48)!r?3&^K&pP0bXKOvt@QI2lpqV^p%~pV z%5)eJ3_-+#M!;G(x*9Hz_50i`+0bXks7J2+Vc z#anxiXjTVdLad@=_R@#;m-v{($#j+*^V5mQ6LN88Kss$)jHQr!vo>Q7FWiZ0%#qlb zy9wn&pv)p1-&rfmi=~=1F&0$@9&O6NTKi*v1bM3PrC}lv@@6_0TF7Pd*l#znm{Q5%dT{R&0Kn zeEn{*GxNa?+llgKHVC~lruGm-WGZOkV%!FvJ0g3STs5>=h+FsiXzSUE=BE?+a+k!+ z+)Cif;Mc^=)TCpD=HcWz2q1 zzfQttN}mPFQjxHbjU^*yHjC-}qSPuW_!Dv{NIgLGP5qMB(Bzpe!dKes`y!D7lIwe% z)0_L!$kg}^te*0<0+9EGub29+l=|k{^(_kubi>EZhm~5F4IHNtbi>KSr3pNrbSymU z+eG;Sk6P!lK=~wU92yX(sm=2n=f`F+UVwFeObqi>XfHJu`D4>)+pi9&ZAI9rTn)E| z$C(!ysZkv|FF7i36uDOFf5Php7SvbC z;VES=uns4OThsj9Dn3nHH#kdMHzUDAPL|$4^xXc8wT}vV^}4URPL!qKkR3Sf*dcfG zhgML;s`srE&`mNinU|d>Y@*zDSnOZ;q8zG32B|+G%t|>IC`Ek$J_cHI33YXS7CTcO zyHY^kYG&^jqRdT!5xAy%tLL=-j54|aQ+R4*Jp8ZU)SAVfZ+OV#E zb9%Y@4NfLYB2hd;I?;Ftkmf7Y2Koxhy0q$T6p`DnekOVluARQq4`)@tHQR~&g(L|R zwTdist2DB*AbrVc@Wvy&B{z=PJS@NrEd+4Bf>J#Ah zLQ}fu3a_d)L9gTEFPnf%j|H$$F@U#%uLLn6LKY|z$j{_P+< zS5ccEGs-ytwpRTM3fh;}VOYJ*{BW*7TdVNdz3;6fOa@tdbW-rlrI;q^!OC(?so%gbrK}}+@m@Q5lNaxu%{K;6f85oU zhlF>OafoZU+!C{qQq6sL?105Q!8}b30z-)&gJ{M~g?zBaXa{|qHJ7!k$h5+~(iOH5 zQGC+J4ZjnEVyM-Lo8NqsZWBinOYoiMbt1|%X114>#;?RY-iKQ@+@xD1-u#wW;T!ex zJXNd389Y2Ok=P`a=$)R@bF6BHC#yLtoN4Cqf=>Sgskf?Ba*}uyk)zO?@?yCObNs7} z)VSWSxMYbQDi@T95t<|ZuVZN40+>)`)5R^Lox;hw%|ta$iWmXP07;O&5?7J!Bt1rw zS8tZhQyHIO`Y4%XW96%CvOK!X{v0~2Yq=F^aQ7e$i-lwgGqXT>1b+>0>>|3<92TCN zh1!+BcPyM;dEVLDqjj+;4Va@=C}y;{vg~ZbpLS>e+e3J|rU^!`u8-f~ch;}YtNfxk zbhvsiE}La+fdDFzLaU$KY zvf+{6knc_Mg?<@-%{m}63%x96lJO9))I-~{<5te0H-{(j3IsS|s#r_n~ z14t&XK>@m_sZVh{UyQVgmX&D0i@SIgcWN}sO=2~5cfQ-?bSy8T1B<-S>;+!EuUfFM zI^c!|#hp#gVt-;g(^4AxtgCL7v+{gEE-@n`K0*Y*2z@=3w-=|O8|G1N0+-{#1fQ}Z zJdPvhq=9^8?xl!oEnS%Lr`AsJ0SglJ6xwNvH?RX-GT9as)a=H(DX2d;hi?^r?Us)P z_J~0qt}NFN2BYPxymS>_(%gL}xWNcKn*{|UZ6l|Q4EL3Alw3Wd%9!U*08CeLtKIW1 za+Jf7Wl`fD9bjEe!kC$>`RkeUIqWrvt24$*C;_?WzAqJ{k=~e~2e|o7_Sf2^(cvG{ zKs>IRBcTBuM9!qnG_AUk9}m@Ja1zYSBQAOzFNy}O=6^^Rz4jQQ%zMDo(`oazA^uvD z`Nw63+~nAIgBbSEUGmkNlR9>L#x%1(`yeM7o}%WESN@zMe+oUgtx?6YS8`hFXg#UUU;mM7Onr3aL%_yly_uxF9sl$=UysgR z`GPA7R6{Q=K>Y8gxU=pP5Xw77vqR$ocSE&2N)W=w->E4>P(@Lw=SFNT@Qk~6S z;$i=rIdVIE#v@~Q!ruAxM*UMyid?^j`7d7!MIe;9*@g4HR}Zg=tsx7_ zhoXJnvNt^1gH2xNCq8F8A^(;x+vG9kVT(U2;Vs)9y3`AMjsuAt-Vg(nH7xDx)i0}A z8+RhvC0uQ`XRP%2+R%vaMe`WxLdr9rR@HVagt0%C<>8-+jsi6Jo@`!MoYcB& zMXQHP=J@TRrms^l6lu%QUi4-PE_DyoQ+D8(F=}`F1Ysu~-gGvNO6#7Y&+NAKu1R~3 zY4_xw?OKzTYTcNDbAC&p{$P5vM&LPGBfxEAD=12>*O6>qMl=F8(a8|l@-M$gY*d75eHP)x+vr~exCO)`B8Z#K%kR| zxr6UAjj7TlL&o7N+oj#}K7G&?F2k~3gY=#IA{6Qd$zel*R{b>a`kf$QB!bC)y`Vs= zCY(`1D9R=_Fs=GC5J1HYi_3#tF-N?Qt<&^-)l>pL0qt+w2!(GnM0OCD&$-K2 zwj=yH)JUr)Zk;2dD9qBO!*#VZ-e`4=tc5+@KIfqr+%t##^d z+VpKUD0;MMoQ&b(FdOAqRbuB2Xw!FB*ZB$X==N#89n1y$0PE|>WV@q_V&gJRpZs$K z&7*u}|IliXQ8}iKdiH?~GWd)iq}h4ZZF;^*Z(vV=G?XBZWb^1>bR59Mbt%E|^;Tcm zmhhm+?;n+dK#e;sS|g2kjEoY!VbE$mWQ(*3Nd{jPA?Y|+|DMyxxZhb<)S^{C z2jLJhp;uRK0MCKe#R{z+C0#+;T6ut9`@cY|ODLK|s}sKotz>6R;#BNZN_6b&I4CFC zBz-Fp480p{`Cp-LD^UeQ-wq%Cj`Z!xlHT;~E}8Eneam52kPRWW5u8-h_OwDyf_93( zRu5_vgc<5hibzS(p`GD36&?C9g(550EL}QK_pR|p;Tnbc@Hso;58Ew4btHPTudGA6 z2NM8?e)ZZE$w8)7zD8gRF-7^>^0F=6bmq{x0#oJs7U;~1^MR?ogq5`E%#Tm8Hfh0N zaZOT0CI%?`B=~5XJP1{_h|GT+M-0CN$jeT|S&SHcq1rIMhPEuXXbbMhbJungmIV-& zos3lxmgl~nu)KCGVOauUQF*@$VQKny!Xn6S5tSr~Ii9enwt5kk1-%H%rAfk~+WO9f zMOE9Iun>n^C{?;mSe6T6SCp5PQ-T04yBgcZF3iyW}3;g{A z3*vok6tMS1zaFmi>-(i0FYTx;&}*zE3Q;AP7Bn*a7e;w!pI2zcRZ<6}i2~KcfK(G{ zE7!y`tb@`6vR{KbYfL|zEhn9^lRfJ&8SWpxfhlk5bC$?KpoyWIlkHV29-~*2R#K|f z9pQb_YFUyD4n2kprYWu?eo{p3^N#o+xTZ{B(d+Sko^+gJuSr{lp{fr7#heVN{1hK{ z7Xzn)VRtU;k1#9f2s=H_1~@vsMvm`tb9z~`Uz^tHcXqia9wsiIR{aXg>Ulv#o?g9t zjoNUx@S?`Bm!s(eYyCfJacujqGNvubC&6%A#OZZk*`Dw}zw^XtPszlg+^zE#z2d3O zq8$Ygw4yGF!1Jmogr`Jt4a{8bdr2b|7J?HI2X|cM402+Gzs+V7(`BtC!Fc#{sFcTxvwM03I@jpl{|qJoM+y9 zGG}@OHV$-CBKE<)hxwpZ-4L;mX#T%f_f=;HN;%`YbO)E}oo_5CRd=&F- z^{?un_=AX*mGw{iD?Vl-!prh(bXPJH+WPuh2M-mVF%2B`pLeiFS0HK1;zE=hh|4f+ zyWHxH<&I~gJ8Y13B|adFInJ>FYqO%M4i`Ver#jsHXj3IoSqW;sZE+k@*wNzsY8{{- zf%Ug}h=s4$*T0uO4pEWAGv<|S7`%GVm`0M+<2Wf`y;L2nq!h5l`C0wloxMkI7{>%B zj2!H;I6~Ifw++c|NDgm@8Xu66MVva(OgBW@@{qTrdm?RF`ZjNN9T&sOyL`y1Kj1Z(v+KRtSWDE^w-tD@CCpappU9mHE=MSZ#H~QzQ*REbf3IMi z%rOlz*-TmX?n#F?%QP~XjF6ZRV?2mShFF#wA(Ut9cgBZ!)U3w`SZ+C>My)J|-k>gl z@obbiP}PPCIU1kLtjomGOqe@_WP;;^`E~P~!>^0q4C-ytHooOpiisxjxww;dcu!j* zU-nmcvbXb=zJ%niitJsYn=K&0sXo8P=WV=YEbY62Zm7ad71=E$WlD+t71`T2)M1!X z!Q52%_}@DQsq*?3neRMkSDvWvT;ncaX|n6#PV=OSext?HT~9Gmi3lpy=7##D6yY(3vMFvmMgoZfwk0Lmb$G@ zwV5StW?@g57&m;eAPE1Io1~c{^L~09U`q~&xd+=xIyvRm(Gr!7)=u!Oy6mJxZ?AI? zq||(o5Rx`)aOKIO;AF@fMzh!`RaBT&1>3!2`@0de$4<5d?Mmfq>2e5m>etW1J4JL6 zE`;lHZCat+QYR-q5kH9bRsTp^KQw6EBsc9PxZH|UdQ(uF9+!w`(^XJ|cDa%a1fQFzTF%&o=VvMQCDS*s9c_K;MWmp#)SDJ>-uHUKD&ZMF?8-1)lgyl z7lb%QycsC^S0IW3Y-9Xt`GqdVFQXf>I}}@8nDmDElEgBQrm+dV2{R5h@xGO}XH0Og z^wNlx8P5nLA+3})*V+Zb|A_aIeb|YHBFNF1{pASvyoisf$X%7OL-OW5xhymVe{)hH z;nDDqFpIJLP)Z$Qd+sX)Xkurb0 zqA@G>%CvKokZ>i~GqRr&1w~YG*RlEOoqX`ZNVpxLGtl;o@-M{jsNM?Sncol~wjyB( z4a=OZ^17CiE<6-FFw7yZlRj{3-VcGQZydu-H+7F8>;J(R+W+Giy8K@|hDpbdA*cft z^Ya4H8w&!_r7o_$@(5KZ4lX<*URJMrRt@t&rZ_wPH+2T|W{e1AqLeQ2z1hZKv?3Yx z(@L(|U7{HYHl@uDcVCCMra3$+V9d;7SD0ho{wmg781^6KGr&1#Omp~rZR3Xn^qpgN zZHAsZ*a6(^kQW$L!Xs=iG#z^Q-M-)GYMj;J7Rk&P!rDJ-VYu;%7Q`a7Zas9Qpde`kO?mC z;$$%_(&-Few&A1aH#PL^e?!n zj9bd`eEP@29hsYGBq0_Cm63zakXIJR#S(-Dn@1NV2W>tygsE+c7s?J<7a!HZ)B+C= z)VmKiXAv)abjx8hVq+SRI62&KT@BIcfCjv%-aMv0bd6F~hb+x@Xqw_HLX)Qo&mwOW z3XPoV0Q*9xAX^)3M!MT|S?!Lp>}yZ7Oao3(w}-`ZEahaTwZhZ0A|K?1E|Ndz%b$tz z=ak4-?$97}Vt0kR^1BiQnmJsxg4P|CZf$K-eCQ@wlX#xe1IGKQ=x?YF4o4Oac0`xv zG*8c~lyOxjZgW;<=WTNER?`(8%Orr4;bBn6dFq@n&y4L6lnmd&l_K*(WUf?fDEinT zdgl0<=?+n#HdWUx?@OHkxP$3)hX&wFJorTZWaLF==45Ca59KU%_M3?p^r76PneuTM z`CK7fS8g19QaqcNypT#i*@g!;2LW&a3Gp1U6!ksM7+(yQGlsx~<>O`r9Uw}wky|A8 z?@)0B6%u$Ck_6pB7Qc6OaCgb!dVhHNqz|gM-nPVR_y~crEx}IdIun3qD;A_1Vm?#R zm8dF-Fqlxexs?~)5x>x*)~f=eA0#rEEK+I+h96AL&|#c;yda1#1eZ!Kszq1-7+vs3uJ6lmKH*n$U>?iw zP&tGj;$bAF3;dkQaZN5-ZSqZkNBMy;Ccck6wXv_DGNt~U@ClVG+53r$;yYv;7RJvu zzptsz7nJxC5)>x&$vTI{2dgqYKQQ^++IT>Gxs17e&2bw9E->EMo`|2O`|iXN3Ok*l z*rv#?ippE}E#s+B_x+e3mw7#7(OWB5!XV(}TRzm>k|6=B9vLfx_)bszb_a<;rRqy}!9oAuU1{Foq9CzG`(h5UuM!^OJMO(zu09gcM z3uZt|6Gao8F#2R=wwZ0V`)N_MMGzNUQZP$RQ(Tfel0{jHE5G-1&bc#pMp{1K@Bj7s z|6l*#=fa)mJm);;InQ~{a?g40Ip>?)HDhiKz_CfEl6jYeRi z!S|J5H8j(wfqkRVvG11awE?{F1_CO>B)JI74Wl3>7K-4N95mZ1KMkue&OVH_VK43y#}FKhI-b1P(=vK8AY<-to2KGvdXmShIeYO8$* zhGn+tHjHUoLyjiXXw5pQHDn8;z|o8cs79w?6g+YgzdyH6@h=-&XoLZX>qh+~-zP!n# zK8xjkkQzZ6)_okmE2`A`D()pDJ&pCEN-eb!Aih3tMuZH9@;ofv@ipB<)S@W*F1ker zEE7*aI%;zwiWf>>Lf<<#+H|O2ahuSfj^Pc6Zb0-gu;^o?YW9n4!>$y>H>dcL4bRI~ z+q4mDtLY$dp7|<#5Y|WvD2=Kg?j{c%k{yT_Gh3=<{jE{;Bl~E=@q0e{RWmjyp5LOy zsXuLHpg6WR!oX?>uL`=wuRwoP9dwJZ+X|yP6wxP1G&hOH$6MpxM#I_5DhDbFt026| zm#8WUwf@$Sw^$@>#6epa+8WXb6vclfiHf!jP4cm{PVRukefD=?S>;rsM3j=io3>h< zR8PG~gGAEtbMMfHm}A73^u*b%|Fj>uhYp$&{Rll<*anpQ%^U$?HB-aqXkT}BzP+T0rp z&zt(_*3~yzbnEZa!zT1i0Y2M^FByAZ+3BFt>(;@1wUDh2#!BEOvu@qKrZF+YS4JQy z%bn?E(+ya;YKXBdB@gt@dZnl2y|@WaLDu=c-=0Q)_vuj=y#Ngn(_5(1k82Ri1Mv-I zdfw6yEFRsi%jM`h7yM+#00Yz6uIGihNF=t>LcLgb1>$53lX z5L)?QbcnRg;4}{NwxI9bEx!V(_yVwSQ)M%9Aj4q8e4gxM@PHP$XHy>(ZAq(#ZlN8X zF|9Zo@ufaSN?7+1PVRrdPXxK~ZOgJx`-H-TZp1>^*g<>#On!VQ zgob>&XjraW?1iM&$g2gR6)}Ub7WJ1xbTUYfE638*6aw#<$g?6j#T$q3VuQDN&@R*$ zEEZ&iH+N8M-bB z1ruG#IgrHKuG%vI%{E?L%{E?x$+|(cnl?GH%4>U)H7_!d99#nf$$~A^{*-maZ10`? zOesbx>#9ncQLpLzGi+yM-vZ@hAHM9rJmWPnmc$zXwj=0Q3=TSDFLT+v9_Ynz5dFOV zxNkPuaE9-^JEBVG-38c)`xo37aFf3;{B`m}32b<|_jBsyh9?ACJ4HpzJH|$k+r{7# z2c$OLE^EBm__E7&!O8&hx&R!KiY}}O%Uba~#Q5+7ZVRAM3iT3k+vVd^c;b|92Ns_O zwMx1e)INzZB}NaS*YW-wy$cM!*ZG@l#~?0Cw*0FK>?lJqStLRw8{vC`6 za~^Q?kO5kx3PT$!MOdMbVO!AVk?3bptgyyTgaD#fwttSQ4Yy-HjA;WM6r}7yMj@MQ zcDC~un|oklfXMiMh((va-D3zI5|celIEVMbp*S1fR>YL&d)TVuY&$RffuY4Ezsf1l zQ&f50p>&gO>^3Z3PWRl5FFkp{mZpuxA+V9h@^{it7o0&8DSt2(=Br+a0TWz|FNVD} zO}%j}%P5$&>9vR-eIp7z6ZTq_X=AYeA}+EzUmRy*q)CvO=KVCu6Z@NY8|e%~%7e2p)_>s{V7Y>e$yp( z(B^a~BUrb7943#O(Uq?E(hsV(oUzqb%RMd}scUPuecx%g(tO1-h>W@c zv|eBS18?x~!K{Jk62v=%?Ow_|1XL*OTf=)l+YWjSp_6MFF{a-vM5beQ6ol6~1Co$? zox*I*Q@%`K4EDZpYGz{)XBr-|`N<=G#B61}mz;VU+df*Eots`|h0EB}Po0keR_*ZN z0oG8!VZ+CJ8FkNYhe-_ijUa}!Fdt54P2jjv(OmKmc_0Ah2-v8Cw+8b4oHSN=^qj6QHH9g9dGg{qsf5A%{bWf6Ys ze42@(N7{^)_1FM`Hw-2i%J2ew7`6)z#X~8-v$Dv(c|M+-g{jz@WWNWzX*(gteFeSA z!a0HV-szQ<=u$DQV6Un{O5O(_)JQcOhC&u5w`pLl`I`oMNpPVK>;D-Yy>JS`Dt`;6 z^$aG!bP)zI9zyc^zJWX&L;3*1 zzZoL^3Whu2u7{iM6S&X7uWucXKSbsNC}F6bj1DyVkgOX>(u5x&J_OX?77HA_Q22+t z^Z3(H#}XRgSA%=E;E#+=-Glom!YEVKxDoEm6iR3kV?8Y-hC%%qunhU2E7+qtkvZnu zVd=U{Lv|q)wdN1|uNc*(S6FX^6hZw!7G?8Jgy8a>v=VFHbe63g>e>Wn}XY^U$iT#|!F)Z8?7NakwsbZ$hN4mrkGC zdhzg(kH~%T<{@tb>K0+AwzReWm$UFe-9Cxh3!0F_M00ss-xQ>QklUI7b&Hnq(4emw zhr`{!C3w8xoM!9s{W~bF+O3BU_w9kaBTnA~6ldYTMeW{dZwl#4+JErXyloKB zbJKQisV+e6hR3rM^W4VPbJpR}IMxo4J8s_El<+NrHh9M~+JwzpFFMM(0ttsC zF#l=ZNd%h`>b72fXea#pCJDi2^OS$xdM;rH(yZTd!v0R*p-f2oJ441%Xw%gCt%s+c z0Nlsi-%LHT^>D(ETMth=4JCIU%Q#G{fnNjYg5C;6oWoQ5en{}-RBwi#oZ5XE;g=J( z;D%}vYE+VvRyR>_)3lKF1nUd-4clrz9MYALi(#9$)?XSjigIuXmC=Y%4yzy5n~;;B z=WwC}>f>Gn%kSbjq2kM%uVa2m)TNyIO`@LbN{#uQ_f!O1`om!)2i4D+aImfpX%tYb zv53{=Me{vXO3IjZZXdm{so?3KRwb2;d|)uD=Cx=NmiT2?#{3s73DWW%TuHjLtV%~(2PoBk7~3RUu+maDC035Mc%^tn~r^xv81 z2Ih&+uiy*j^hoAsJ0#&86J_4S$4;(iNMa`>&ZfXZZfuG!AFYwkh2X)DaW$sq4e;=g zPr$=$Ycda#W3UKNx9Bo81G2C#`V}sW5%96-Wn?}ppQ2$4OXLKcIn8(NS_AP3$!%l9 zHD!+vZpz#!6=Q~nS;$FP*Q0DLm9z{c3NzA3ITq6*+cyY{(jj~IV9_*EKqs*R$s&RI z`|%M7iun#=HW`c&k4IR7OCBHQZ4Dsq+s6(jODMdg5sU!V+=aFCwtB3BqBT$$ zzLwN#P3Nnzd?*Twp=wKZcmdOzbWyb++UWsAuZzNZtdd#{+yuAoJI4JktS)76E*zTK|!f0mjE}>ZNMd_6v5>%Bm)R zko%$8Z#<(lEjVd}icKX=MoV|of~KnZh!tomxootyM|fycAmT`pC!_9ym&T?Gby2-H z_dXUCP=oDGSRjrE5b5l=9*fLu^~Bk9zDi5_!a6IvKM*fn6hucz01yu)BoK&(LJsLR zHbL1N8#?I59Ku>Oz8Y*0e|2kMo02UZXhO!9g>_o6OG@IIXlh4dH3dAz{F~sK7I@z!yiE8%j?8 zLKDS}v_Nk|aSxcHKf4`06_)YfX|au_A&arH0_%=~%mEi@<8?pC*rX*h&|tWz&j{y} zTJd%l&lWRUF#qJKi$>_oHXP7{HC-(*%V|-|bpt-_(@eRyd2c$8t;R!P#EWh~PX}v$ z1pLvD!D5HEs)%NJMXsLLpM1vQ2QWpqI#Jx1Dj839cATa67;~nF_vCcz&2}_o-(2f@M z#UR1xBqA`vg=y~4D)7Xb5B$Qy0!~qIVW9vTfRWDdHp|Np85P=VdkCAZr&K#}hWR%&QM1_QJlcKrAqVhxJxWf;DyK>JtWY zKpk!9f`K5akD-sx2p_ACF9iUf+rXy@TYkLVnB*+vs zm8KzZ8A&~;MvMeUb)%oc_&FF|6_NK64Nj@*@hf_tU~OYMF}7sWR>X%;JY@tT&odCXK*%B^KNnAB{J7x}jAY0-%EQ;p0MaI3NlM z*1~Vp(>o!eStk3n`=r& zzVWMuj9?$2)?iUHUcC}W7;%roQhlNs>$ayHK4;S9wogX~gA{(#<<(*^Q`?H^_hyz( z-f@^2EHD{Z_EUoCQMv=)NB2HR35T0>U*fIdPE_t#UG$C^h(Wyk5f_FX%P!Cp+(L0+ zeznxu>MnfWyRLO7*7EDV+=-Zr_pyjDB%31iaTqU}iX$Y;FLVgV`6`|D4CIAiIJi`I zXNqJj2#QVF5$9PeP|J20+x1N+cJIcrb)4l}4YeUC2PO|>B3+kP51VjR-&P$O^2lcV z7WE?W(DY%1vBFwq-K@JG;6OEc?(UU(sHiCzXQb*a{c+^H)^a0Tvli=F)l{kbqAtc0 z$I|+nB6r4O%oPKP(NMr%Y5t<&I_(>+4bHagbg9DooGahloU7fU(=7=^ucx+O-EDhv;aZyy-YD-hwH~jjh_!jx#%ZC+ zae+9rYjV5TGO5h0#cK|8U{q;*yBdTe3qlb> zux^}B8O1YtA>4=JDSTBdDH=#edmwI9snNrk{J|@*c~yEJ9G>0!qcE+WWvuH$y2xR1bRytd?f=m>~tarRyY*}o%jAyPxj`;1sJhx zy_V~-<+aCivpgDz0IJtLQG@ywYeOqJ-UBa-3^9Xt#0;vB^Q?9dtOkK#r&}^o6qnOp zaV^&$Y$qG=^MDaQGm^Gmo$rTxk^w(cjrd7Ug8$ND@B#eSDh^jxak#pH;MMtM#T-7p zio+MGIDD-E(7d3Uq%|+tOdw`~%mL3r$!t7n;>yjC|9AuTAz|yI_uaOaRyMP0^u4L| zB<1-@f7*2e*Ze2_gbRKKho5l4&*<ntt~}0=@rnx_4;arz8Xnijij%}f1wj$LkC~+>`Y9 znQFjKayb0Q8SyhYp2(7jEDr%OMxu)+x+J2@Lp>$lsHX%_PdQ)`6)Z;`g($~quN>;A z7uC@Sht5fS)G2D}&=JQfI7WbK7{>?zTgx#5RNpv809YNz2mou~7z0@v>QE#+H+w9C zgwT_|y?IbQKCFPLL2$E~6jdVQ6J0t>D3oW0v^qV)yn;=-U_U&}Vh2^>b!JSp-PiJn zZh)q#lbiigH^8LV4e(>!Fi8n+z=r@y3GmO;4T!<_$)ketvGUkpV@&G~c*euiNS@*3 zX@E~Sd<^6R`(t3R^+VzqQ_?UWuVZ-1UY4%T=Mk+vhtMP;7+RY_sk3kj z)*miBE-1{-b4DO&si{cUWnuXdo*98CR}GbP6dn{MBge?>q3{E`%h*WoQNRj2!7&mJ zdMK>%XKm*i9tvAd&I_%=*QNgS5m1==)C5e(0R=_CE;fQ z6*<9G0#*sw04O?h*Iv9}T^l|4Do5*}?sSpTZ^I>eAGk!H1DEJ&=0~wE27vk&0M@BQ zsXAfxcmv%nN-zem7T)^dTWX7m}F8>yl{PP+W`N_rQCl{BWTwMNn zjZA(5ke`5Ben+RMv|kiW@@W(<%5=Y$mFYmX%85#|?S5}OD?lYax-AWE6Loeb>g-J6 z^g|t+i8?kDb!;Z3V{_}#Hn-8E$&Ng;%E-Dh6hZ~ZR&hYR7L^PKthMk``@#FMQI)(lNbaspd|vVC!J4^NMM$g`f3j-br{`@!2A*{pI0-Jly&# zUf0!N2j;<6jI^rl9+o@IHjOzF93C{=Oj>hfRIt_>3nz})LnU+cLT>>Og(<1twO%B}_YekX*(^j#b4xzl`MU(C?@ znBL!5Wcr9F;!VO{^t-WoTo3nfxNjEjo^W^O-u{cuTQ|TurESGNqA2Y(_Is86USYqN z+3zLxdy)ONIJ;Vw0hRoN>RCzY)}f&MtrJlYFlR+mN&OV_d9k=+Hj0c~n~9U&+1zMk z3r&q`xqkhvn=tm(lO>SU+`BqvagAj^$`XfVVd0jlr@u~r7|fy`%(_s`G}v9pF`ZWk z%VY>M!OR1#C)*OpRUQ~HsJ{5)qj@AqiL5Qu#nGtzLYR)>-IAD3UW6exzuXB4|9Ek*>=VjZNx4FWGSd5&3Fwj z))M5GhzD#cc#}q!0iuM-;tULX*tDr>jn^{c`(21n2I`*ppIBuTpsqw z%(mSJEH0xp!~~laOuZQ{EbuxKHWO&^9&99rBJn~BiX3Uh91DA)L-I%9+vM>afm!?R z?os64?i~XV0x?XL^otc7bD27J$$`JNwr(2}BH2%qKNe=y+m*u~aRB@vEa+(|3^ad* z!8Bd-n?eMQ=UyB|i5NJlMt3*19c|O#Jn+L!H_-ab1=pC;eC6?{FVQ#U5*{ae(Lso@ z`79U1jPvZU{%aFZheT&^{uRA=d=%#%lSIf4l?C34V$In+Q2q}K4GQNgMmAm)}287_M|$`t9;QaaDNrh~4PB-5j7y=pEm*Pe=F z7^u&F{V{HR1~YC{fc7YH=$j-T~Ab$gQHxuUsE(xQFRkn8GJjyEoF_d2mAa5Lj)L1OY%K}QO zL+!>pnfwCR+x5elOa{cTXFv`|Nf_AUW$`Km#Mp2if4tW?Ta}QSGqsO(3?<)*$j59(~BVKY)e}>uD5sliPf5L z;P&PBFqy~=T7&%x*FVwPWh)EIBX?*Ta~qhukhz&|m+xo1W|My)(I~Y`S&B`!F&m=lp#Qd52(a8=s_!{lAR5&;9*n2#r%D_fF zI78x90CLP6<*DJW$YKQl=ZZXw*G8^m99B8hh2+u&u+Z|Q1|(*GVG+v+E9MXSJ2Sgs zk|Trm?(LXAqhCP&DuP zs&cNm00$QoDl3R!m7Hh$G1-_r^)bvHPqKacrBnXn+`WqYzpQuZiibI#jKgTioFu=D za8aeomqt*G-XA$R9sA1Zew7-9jX#xUx^i_H4G`D69b8qJ1(kT(h2xomr(I7675Ew{ zZQqW6rQrzKcL!wP4M04*(*l`(=0r+AzMYAtc^a2)tHj?{g?oJ~2)7)K5?#0}_ zirjO!yNcY|+}%L#WVjv5MID<2+*GNB3dKmP+yFB9Ijd5~AV4??lee1*(@Y93KEXiGnm(x6x|!1+9T}Tr;AY zSz5)A%KnL#`L7}O+uU78?iabch1^fUt=8;(;3jr9$;L3Gi3}1ed4xr!*;*3j_Fjy+ zmIN5b8S1I1R$7>UC<%Eh_fH`Ih1{PNb0K#(Q`~l(MkbnvxIa_cd0$t-Mk7oJX6AxX za`Nj1ieQdhupyedB^N^$`9`VUl+}~uQ@)gmdw{$1 zNc2y9n64|xy@~sWGk@-8s(G8cnL1un`9Gzif0*-GMJju$hN*8ArF+hYxet>6RXCcDBt?w3YBpAf(D5SGP&n zw-{lft%OrsA#KXfI%uI&Ry9h<2fC&zP{iG|t=s-Ece84hNN!~e!log@oTIWfkti@R z9R#2Y&IabdD5wo<6BB$kno$L}RgrLr(jub3NpF1VGF9TkA7o*f6$(>>$i^s&X)a$J z475;Y#o4>q zq7g%kOV}(tOfGZ8P_`XD#LF z$?WU9uf?kn!gZi8d6N(tKpN!zWUJ-s71iQVo?a42>^rkrk>^ooaVt-|g53SMJCA63 zEo3zDk?sS&nTW5U%U@SoewJ$lwd|F`>~9@ZJ#@vSJ1#;#kf}6UR3{@5-nNoep>T2!SnhOBjTco# zd6n`%?u4e4x_3e}?^ZRu3`eh-!Fpr#niUX7o;(mDD7^;NchvDv`$3wV+m+clmjJ?vExs!;~b3`d7!0oRw zH%sktwyKv;jAwz~H8u5PBSQZEsx!5qvsX2eeKro*aOo$Y=qe=lpZE4ZKjE%u(c2qI z`ZrQpPS%opMHQ2tv}}KpyX(kZOm3ymGN5}v^E6}iy)M{Di&J&MsG~+bC<%rN=)mcn zAy#jeXrF81O^m-xn_5jmM(OqSNGm zJ!@gViQCJHUr!x-^(QQQ@n|RZ4>mD(Gi0;B#@*B=?ay*|IJwKXTTkwPD=J`JWSF9Z z=|)|!r@Eo?%)2&RT3K8kGV?06@Llp<-{I8}nzFi$hOss(L_WQbiCj#g`EU`E$bE@k zWZ)@6;`|J^sy-zs57)E=G?nr-AeU42qhOT^Y#;_7jAKR3n#c#7Sp@mN#@$A8Khnq& zuORo;uBd`Y5N`Gu`Sq}B?6Z;Bm@$}CCO!fLPe7@j4NqU1{+t3g9_u-+b^NHm(e>q zVK@ACA1kLSQo(SpvIcSw;qE$8-<#Z=ok#BDUqCW$U1Q}`?}8ic)h>9Fo#{-_3uEj) z(uKoo6>&}ZgGoVCP5UQYRT2$g-sbLNqUn8+sn9_Fo#A#ZEVT-0Dkx`BRHaI?$>9T> zSpy|9K`cU?Uf5B=W0l1{88+mD4MN zy_k22V~fj^W59J$m9-P9QH1;xi*_FdYzWzlmdoCST*F&r3=X)pbM2?p@diy;F_&RW{eLT14#It(x1`A6f_Z=tDsBO&pjhbk*Z#tmrG1zR0>Vz`C zN|GNW9k~~QkvBfRG=nUlU$1b;Bp&Jk+_K1Oe`l`ea7zF4Xg2Gk)drfOI~GKE<6KN&mdVlVI>20{Y2;CAV@4vK%0Di2C0n+g9BA)ctgFsxeU`aSSQRjZ03!F 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 z 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 +

+ + + + + diff --git a/src/views/Stage.vue b/src/views/Stage.vue index 08b25b0..1e02227 100644 --- a/src/views/Stage.vue +++ b/src/views/Stage.vue @@ -119,63 +119,7 @@
整个系统设置会自动保存到当前浏览器
- +
系统: {{ info.systems }} · 粒子(骨骼): {{ info.particles }} · 根骨骼: root @@ -198,6 +142,7 @@ import { editorHistoryState, installEditorHistory, setUndoLimit, undoLastOperati import { useEditorShortcuts } from '../editor/useEditorShortcuts' import { fileToDataUrl } from '../spine/spineSourceBundle' import { downloadEditorConfig } from '../editor/editorConfig' +import HelpDialog from './HelpDialog.vue' const store = useParticleStore() const holder = ref(null) @@ -329,10 +274,6 @@ function openHelp() { showBackgroundMenu.value = false } -function onHelpKeydown(event: KeyboardEvent) { - if (event.key === 'Escape' && showHelp.value) showHelp.value = false -} - function toggleSettings() { showSettings.value = !showSettings.value if (showSettings.value) showBackgroundMenu.value = false @@ -1711,7 +1652,6 @@ function loop() { } onMounted(async () => { - window.addEventListener('keydown', onHelpKeydown) const el = holder.value! app = new Application({ width: el.clientWidth || 800, height: el.clientHeight || 600, backgroundAlpha: 0, antialias: true }) el.appendChild(app.view as unknown as HTMLCanvasElement) @@ -1765,7 +1705,6 @@ onMounted(async () => { }) onUnmounted(() => { - window.removeEventListener('keydown', onHelpKeydown) cancelAnimationFrame(raf) spineRuntime?.destroy() spineRuntime = null @@ -1843,53 +1782,6 @@ onUnmounted(() => { } .help-btn:hover, .help-btn.on { border-color: #7774ff; background: #343b63; color: #fff; } .zoom-pct { margin-left: 0; font-variant-numeric: tabular-nums; color: #9aa; min-width: 44px; text-align: center; } -.help-overlay { - position: absolute; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center; padding: 72px 24px 28px; - box-sizing: border-box; background: rgba(5, 8, 15, .72); backdrop-filter: blur(3px); -} -.help-dialog { - width: min(820px, 100%); max-height: 100%; display: flex; flex-direction: column; overflow: hidden; - border: 1px solid #3a4864; border-radius: 14px; background: #141a27; color: #b8c3d8; - box-shadow: 0 22px 70px rgba(0, 0, 0, .62); -} -.help-head { - display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 18px 20px 15px; - border-bottom: 1px solid #2b354a; background: linear-gradient(135deg, #202942, #181e2d); -} -.help-head h2 { margin: 0; color: #eef2ff; font-size: 19px; } -.help-head p { margin: 5px 0 0; color: #7786a3; font-size: 11px; } -.help-close { - width: 28px; height: 28px; flex: 0 0 28px; border: 1px solid #43516b; border-radius: 6px; - background: #273249; color: #ccd7ed; cursor: pointer; -} -.help-close:hover { border-color: #7774ff; background: #3b4670; color: #fff; } -.help-body { min-height: 0; overflow: auto; padding: 18px 20px 21px; } -.help-section { padding: 14px 15px; border: 1px solid #2c3850; border-radius: 10px; background: #181f2e; } -.help-section h3 { margin: 0 0 11px; color: #9fb2ff; font-size: 13px; } -.help-start ol { margin: 0; padding-left: 21px; color: #aab6cc; font-size: 12px; line-height: 1.75; } -.help-start li::marker { color: #7774ff; font-weight: 700; } -.help-section b { color: #dce4f7; } -.help-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(250px, .85fr); gap: 12px; margin-top: 12px; } -.help-list { display: grid; gap: 0; margin: 0; } -.help-list > div { display: grid; grid-template-columns: 78px 1fr; gap: 9px; padding: 7px 0; border-bottom: 1px solid #263146; } -.help-list > div:last-child { border-bottom: 0; } -.help-list dt { color: #d3dcf0; font-size: 11px; font-weight: 700; } -.help-list dd { margin: 0; color: #8795ae; font-size: 11px; line-height: 1.5; } -.shortcut-list { display: grid; gap: 7px; } -.shortcut-list > div { display: flex; align-items: center; min-height: 25px; gap: 5px; } -.shortcut-list kbd { - min-width: 24px; box-sizing: border-box; padding: 3px 6px; border: 1px solid #465470; border-bottom-width: 2px; - border-radius: 5px; background: #101623; color: #e0e7f6; font: 10px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; text-align: center; -} -.shortcut-list span { color: #65728b; font-size: 10px; } -.shortcut-list em { margin-left: auto; color: #9ca9c1; font-size: 11px; font-style: normal; } -.help-note { margin: 11px 0 0; padding-top: 9px; border-top: 1px solid #2a3549; color: #697791; font-size: 10px; line-height: 1.55; } -.help-export { margin-top: 12px; } -.help-export p { margin: 0; color: #8997b0; font-size: 11px; line-height: 1.65; } -@media (max-width: 760px) { - .help-overlay { padding: 66px 12px 14px; } - .help-grid { grid-template-columns: 1fr; } -} .hud { position: absolute; bottom: 12px; left: 12px; padding: 8px 12px; background: rgba(20,20,32,0.75); border-radius: 8px; font-size: 12px; color: #a0a8cc; } .hud-number { display: inline-block; box-sizing: border-box; text-align: right; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; } .hud-system-count { width: 3ch; }

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 OZg%hHERk*^z5WH!*4q96 literal 0 HcmV?d00001 diff --git a/public/downloads/connector/SpineParticleConnector-windows-x64.exe b/public/downloads/connector/SpineParticleConnector-windows-x64.exe new file mode 100644 index 0000000000000000000000000000000000000000..579e556e267bec390e8a83ed93745359cbd47981 GIT binary patch literal 492544 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� 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