whose-turn 1.0.0-alpha.6 → 1.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,63 +1,68 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to whose-turn are recorded here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [Semantic Versioning](https://semver.org/).
3
+ What changed for you in each version of Whose Turn. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [Semantic Versioning](https://semver.org/). The window shows this list under What's new; the ids at the end of an entry are ours and the window leaves them out.
4
+
5
+ ## [1.0.0-alpha.7] - 2026-11-04
6
+
7
+ ### Fixed
8
+ - If the ticket you are writing a note for leaves Your move while the note window is open, the window closes and the rest of the monitor stays usable. Before, nothing could be clicked and no window was visible. RMA-274.
9
+ - A Linear issue you archived after finishing it still counts as done, in Recently done and in Done in the last 30 days. RMA-241.
10
+ - You no longer get stray notifications from our test runs, such as one about a "Northwind" workspace you never had. RMA-264.
11
+ - Clicking a "?" icon or a "why" link shows its explanation again, a second click or Escape closes it, and on a touch screen a tap opens it. Hints on buttons and panel edges still show only on hover. RMA-263.
12
+ - A hint no longer stays on screen after you drag a panel edge, fold the header or scroll. It goes away as soon as you press, drag or scroll, and when the thing it described disappears. RMA-261.
13
+
14
+ ### Added
15
+ - When a ticket you worked on moves on in the tracker, for example reassigned and set to Ready for QA, or its PR merged, Your move now keeps a one-line note about it under Handled, such as "→ Passed to Sam · Ready for QA" with the time, and adds the latest comment when there is one. Click the line to see the full event, who it went to, the status and the comment, and to add your own note; "Open in feed" jumps to the change. The line disappears if the ticket comes back to you or after 7 days. RMA-258.
16
+ - After you click Handled, a small window offers a note for what the tracker does not record, for example "Checked with the customer, nothing to change". Save keeps it, Skip leaves the row handled without one. The note shows on a line under the row and in What changed as your own entry on that ticket, and a click on the line lets you edit or clear it. RMA-258.
17
+ - A "What's new" button above the gear lists what changed in each version, newest first. A dot on it means there are versions you have not read yet, and the "Updated to" chip opens the same list. RMA-253, RMA-260.
4
18
 
5
19
  ## [1.0.0-alpha.6] - 2026-11-04
6
20
 
7
21
  ### Fixed
8
- - A secret with a line break in its value, service or account is refused instead of reaching the macOS keychain command. RMA-251.
9
- - A panel size is saved per workspace and panel without the panel reaching into the store; sizes saved by alpha.5 are dropped once. RMA-251.
10
- - After a self-update the window says so and asks for a reload: the chip spins while the server installs and restarts, then reads "Updated to <version> · Reload"; before, the old page kept running and its clicks did nothing. RMA-255.
22
+ - After an update the window tells you to reload it. While the update installs and the monitor restarts, the status bar shows a spinner, then "Updated to … · Reload". Before, the window kept running the old version and its buttons stopped working. RMA-255.
23
+ - Panel sizes you set are kept per workspace and per panel. Sizes set in the previous version are reset once. RMA-251.
24
+ - A saved token can no longer contain a line break, which could have broken how it is stored on a Mac. RMA-251.
11
25
 
12
26
  ## [1.0.0-alpha.5] - 2026-11-04
13
27
 
14
- ### Fixed
15
- - The workspace header keeps its copy label and quick links on whole lines, and a connector no longer adds a second link to a site the workspace already links. RMA-249, RMA-250.
16
- - In a feed group with unread items only the unread rows are lit. RMA-201.
17
- - `install.sh` writes WHOSE_TURN_DATA and WHOSE_TURN_PORT into the launch agent when they are set. RMA-219.
18
- - The launch agent and the systemd unit start `launch.sh`, which resolves node at every start (login shell, PATH, then the install-time path), so removing a version-manager Node no longer breaks them. RMA-215.
28
+ ### Added
29
+ - You can resize the panels by dragging their edge. Each workspace remembers its sizes, a panel never gets smaller than one full row, and a double click on the edge resets it. RMA-246.
30
+ - You can edit a to-do: click the pencil or double-click the text. A deleted to-do can be brought back with Undo. RMA-172.
19
31
 
20
32
  ### Changed
21
- - The rules in Settings read in plain words, and the next-step fields are named after the situation they cover. RMA-173.
22
- - The user reads as "you" everywhere, never as their full name. RMA-174.
23
- - A rules table that hides every ticket, or a catch-all row before other rows, now shows a warning. RMA-171.
24
- - Many small fixes to the window from the two heuristic reviews. RMA-148, RMA-175.
25
- - The docs check is Node (`scripts/docs-check.mjs`). RMA-209.
33
+ - Settings describe the rules in plain words, and each next-step field says which situation it covers. RMA-173.
34
+ - You are "you" everywhere, never your full name. RMA-174.
35
+ - Settings warn you when a rule would hide every ticket, or when a catch-all rule stops the rules below it from ever applying. RMA-171.
36
+ - Many small fixes across the window: clearer labels, steadier layout, Undo where a click used to be final. RMA-148, RMA-175.
26
37
 
27
- ### Added
28
- - Panels are resizable: Your move, To do and Waiting on others by their bottom edge, What changed by its left edge, Recently done by its top edge. The size is remembered per workspace, never goes below the header and one full row (the column scrolls when the minimums do not fit), double click gives it back to the layout, and `scripts/panel-matrix.mjs` checks the layout matrix with Playwright. RMA-246.
29
- - To-do: a pencil or a double click edits the text in place (Enter saves through `edit`, Escape cancels), and a deleted to-do offers Undo. RMA-172.
30
- - A presentation film in the README (docs/media/whose-turn-film.mp4, 80 s). RMA-233.
38
+ ### Fixed
39
+ - The workspace header no longer breaks its links across lines, and a source no longer adds a second link to a site you already linked. RMA-249, RMA-250.
40
+ - In What changed, only the items you have not read are highlighted, not the whole group. RMA-201.
41
+ - The monitor keeps starting at login even after you remove the Node version it was installed with. RMA-215.
42
+ - A custom data folder or port set at install time is kept when the monitor starts at login. RMA-219.
31
43
 
32
44
  ## [1.0.0-alpha.4] - 2026-11-03
33
45
 
34
- ### Changed
35
- - The repository is public, and every release is published with npm provenance again. RMA-237.
36
- - The self-update installs the new version with `--ignore-scripts`, as the plugin's first install does. RMA-236.
37
-
38
46
  ### Removed
39
- - The demo connector and the first-run "Try a demo workspace" button. A pre-made workspace belongs to the demo, which is separate work; the scenarios live on as test fixtures. A config that still names a `demo` source reports it as an unknown connector type. RMA-208.
47
+ - The demo workspaces and the "Try a demo workspace" button. A new install starts empty and asks you to add a source. RMA-208.
48
+
49
+ ### Changed
50
+ - Updates install without running any scripts from the package, which makes them safer. RMA-236.
40
51
 
41
52
  ## [1.0.0-alpha.3] - 2026-11-03
42
53
 
43
54
  ### Added
44
- - Self-update of the installed package. Every ten minutes the server reads the npm dist-tags (`latest`, which every publish moves) and, when a different version is out, reports it as `update` in `/api/summary`, `/api/state` and the stream, and raises one desktop notification per version. `POST /api/update` installs it into the package's own location and restarts the server; the status bar shows "<version> is out · Update", then "Updating…", then "Updated to <version>". A checkout is never offered an update. New reasons `UPDATE_IN_PROGRESS` (409) and `UPDATE_UNAVAILABLE` (412). RMA-231.
55
+ - Whose Turn updates itself. When a new version is out you get one notification and an "Update" chip in the status bar; a click installs it and restarts the monitor. A new Claude Code session installs it for you and says so. RMA-231.
45
56
 
46
57
  ### Fixed
47
- - The window opens its event stream again. Since RMA-197 the store waited for a `CLOSED` status that VueUse never reports before the first open, so the window never subscribed to `/api/stream` and picked up new polls only on a reload.
48
-
49
- ### Changed
50
- - The release workflow publishes through npm trusted publishing (OIDC) instead of a stored token. RMA-235.
58
+ - The window updates live again when the monitor checks your sources. Before, you saw new items only after reloading the page.
51
59
 
52
60
  ## [1.0.0-alpha.2] - 2026-11-03
53
61
 
54
- ### Removed
55
- - The Claude Code plugin (skill, `/whose-turn`, SessionStart and prompt hooks, MCP server, `bin/` scripts, `.claude-plugin/plugin.json`). It now lives in the BladeForge marketplace as `whose-turn@bladeforge` and installs this package. RMA-217.
56
-
57
62
  ### Changed
58
- - The package is the server and the built window; `install.sh` reads the port through `lib/config.mjs`. The release workflow checks the tag against `package.json` only.
63
+ - The Claude Code side of Whose Turn installs from the BladeForge marketplace as `whose-turn@bladeforge`. RMA-217.
59
64
 
60
65
  ## [1.0.0-alpha.1] - 2026-11-03
61
66
 
62
67
  ### Added
63
- - First public release candidate: the local server with the GitHub, Jira, Linear and demo connectors, the rules table, the Vue window, the Claude Code plugin (skill, SessionStart hook, status line, MCP tools), desktop notifications and health alerts.
68
+ - The first public version: a local monitor of your GitHub, Jira and Linear work that says what is waiting on you, a window that updates live, desktop notifications, your own to-dos, and a Claude Code plugin that starts every session with that summary.
package/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  A local monitor that answers "what is waiting on me right now" across the places your work arrives: GitHub pull requests, Jira and Linear tickets, and your own to-dos. It polls each source about once a minute, decides once, on the server, whose turn every ticket is, shows the result in a window that updates live, sends a desktop notification when something becomes your move, and hands any item to an AI assistant as Markdown with its context. Its Claude Code plugin, `whose-turn@bladeforge`, makes a session start with "N your move · M unread · K to-do" already in context.
4
4
 
5
- [![Whose Turn in 80 seconds: the noise of many trackers, then one queue of your moves](docs/media/whose-turn-film.png)](docs/media/whose-turn-film.mp4)
6
-
7
5
  The film, 80 seconds with sound: [docs/media/whose-turn-film.mp4](docs/media/whose-turn-film.mp4). Its first act is staged; the window in the second act shows the maintainer's real workspaces on 3 November 2026.
8
6
 
9
7
  ![The window with invented data: Your move, To do, Waiting on others, and the feed](docs/window.png)
@@ -45,7 +43,7 @@ Nothing that names an employer, an account or a team process lives in this repos
45
43
  | Linux | `$XDG_CONFIG_HOME/whose-turn/config.json`, default `~/.config/whose-turn/config.json` |
46
44
  | Windows | `%APPDATA%\whose-turn\config.json` |
47
45
 
48
- `WHOSE_TURN_DATA` overrides the whole directory, `WHOSE_TURN_CONFIG` the config file alone, `WHOSE_TURN_PORT` the port (it wins over `port` in the config file; `install.sh` and the plugin read both the same way). On first run there is no file: the settings sheet (the gear) or Claude through `/api/config` writes it, or copy `config.example.json` there and fill in:
46
+ `WHOSE_TURN_DATA` overrides the whole directory, `WHOSE_TURN_CONFIG` the config file alone, `WHOSE_TURN_PORT` the port (it wins over `port` in the config file; `install.sh` and the plugin read both the same way). `WHOSE_TURN_NOTIFY=off` silences desktop notifications, for a second server you run to try something; under a test runner they are always silent. On first run there is no file: the settings sheet (the gear) or Claude through `/api/config` writes it, or copy `config.example.json` there and fill in:
49
47
 
50
48
  | key | meaning |
51
49
  |---|---|
@@ -78,7 +76,7 @@ A flat config with `github`, `jira` and `rules` at the top level still loads as
78
76
 
79
77
  Secrets never go into the config. GitHub uses `gh auth token`, or `GH_TOKEN` from the environment when set. The Jira API token lives in the platform's secret store under the service and the account email: the macOS Keychain, libsecret on Linux (`secret-tool`), or the Windows Credential Manager (through `lib/platform/credential.ps1`). Paste it into the settings sheet or send it through the API, and the server stores it. When the store is missing or refuses (no `secret-tool`, a launch agent refused Keychain access), the server keeps it in `<data>/secrets/<service>@<account>` with mode 600. On macOS `security` receives the value as a command-line argument, which other local processes can see for a moment; libsecret and the Windows script read it from stdin.
80
78
 
81
- State lives next to the config, per workspace: `workspaces/<id>/state.json` (last poll), `marks.json` (read, handled, notified), `todos.json`, `cache.json` (fetched PR details, so a restart does not refetch them; versioned, never holds a token).
79
+ State lives next to the config, per workspace: `workspaces/<id>/state.json` (last poll), `marks.json` (read, handled with its notes and automatic traces, notified), `todos.json`, `cache.json` (fetched PR details, so a restart does not refetch them; versioned, never holds a token).
82
80
 
83
81
  ## Platforms
84
82
 
@@ -177,15 +175,16 @@ The monitor also alerts on its own polling: stale data, or a source that keeps f
177
175
 
178
176
  ## API, `127.0.0.1:<port>`
179
177
 
180
- Requests must carry the local `Host`; a POST must be `application/json`. An error is a `google.rpc.Status` envelope: `{"error":{"code","status","message","details":[{"@type":"ErrorInfo","reason"}]}}`; branch on `reason`. The reasons: `NOT_FOUND` (unknown path, 404), `METHOD_NOT_ALLOWED` (405 with an `Allow: GET, POST` header, a method other than GET or POST), `NO_SUCH_WORKSPACE`, `NO_SUCH_TODO` (404), `NO_WORKSPACE` (412, a request that needs a workspace while none is configured; `/api/state` still answers 200 with an empty snapshot carrying `problems`, which the first-run card reads), `NOT_CONFIGURED` (412, feedback is not set up), `UPSTREAM_FAILED` (502, Linear failed or answered an error; the HTTP status is in the `ErrorInfo` metadata `upstream_status`), `RATE_LIMITED` (429), `UNKNOWN_ACTION`, `INVALID_BODY`, `INVALID_ARGUMENT` (an empty to-do or remark names the field `text` in a `BadRequest` detail), `INVALID_CONFIG` (400), `UPDATE_IN_PROGRESS` (409, an update is already installing), `UPDATE_UNAVAILABLE` (412, nothing to update: a checkout, or already the latest version), `FORBIDDEN_ORIGIN` (403) and `INTERNAL` (500, a fixed message; the raw exception text appears only in a `DebugInfo` detail when the server runs with `WHOSE_TURN_DEBUG=1`, and always in the server log).
178
+ Requests must carry the local `Host`; a POST must be `application/json`. An error is a `google.rpc.Status` envelope: `{"error":{"code","status","message","details":[{"@type":"ErrorInfo","reason"}]}}`; branch on `reason`. The reasons: `NOT_FOUND` (unknown path, 404), `METHOD_NOT_ALLOWED` (405 with an `Allow: GET, POST` header, a method other than GET or POST), `NO_SUCH_WORKSPACE`, `NO_SUCH_TODO`, `CHANGELOG_UNAVAILABLE` (404), `NO_WORKSPACE` (412, a request that needs a workspace while none is configured; `/api/state` still answers 200 with an empty snapshot carrying `problems`, which the first-run card reads), `NOT_CONFIGURED` (412, feedback is not set up), `UPSTREAM_FAILED` (502, Linear failed or answered an error; the HTTP status is in the `ErrorInfo` metadata `upstream_status`), `RATE_LIMITED` (429), `UNKNOWN_ACTION`, `INVALID_BODY`, `INVALID_ARGUMENT` (an empty to-do or remark names the field `text` in a `BadRequest` detail), `INVALID_CONFIG` (400), `UPDATE_IN_PROGRESS` (409, an update is already installing), `UPDATE_UNAVAILABLE` (412, nothing to update: a checkout, or already the latest version), `FORBIDDEN_ORIGIN` (403) and `INTERNAL` (500, a fixed message; the raw exception text appears only in a `DebugInfo` detail when the server runs with `WHOSE_TURN_DEBUG=1`, and always in the server log).
181
179
 
182
180
  - `GET /api/workspaces`: `[{id, name, key_pattern, links, connectors:[{id, type, label}], open_moves, theme, theme_seed, failing_sources}]`; `links` are the quick links, `theme` is `{light, dark}`, each a map of CSS variable to value, or `null` without a seed, `theme_seed` is the seed it grows from and `failing_sources` counts the sources with an error. `/api/summary` leaves `theme` out.
183
- - `GET /api/state?ws=<id>`: one workspace, default the first: `turn` (the rows, each with `group` (`you`, `others`, `done`, or `gone` for a row the workspace's rules hide, which is never your move), `rank`, `next`, `why`, `url`, `ticket_url`, `source`, `status_group` (`backlog`, `passed`, `code_review`, `qa`, `on_hold` or empty) and `handled`), `counts` (`mine`, `others`, `failing`, `done`: the four header tiles), `feed`, `marks`, `todos` (each with `ticket_url`), `errors`, `health`, `polled_at`, `me` (your name per source), `workspace`, plus `workspaces` and `problems`. With `&full=1` the merged raw collections come too: `tickets`, `comments`, `prs`, `activity`, `asks`, `events`.
181
+ - `GET /api/state?ws=<id>`: one workspace, default the first: `turn` (the rows, each with `group` (`you`, `others`, `done`, or `gone` for a row the workspace's rules hide, which is never your move), `rank`, `next`, `why`, `url`, `ticket_url`, `source`, `status_group` (`backlog`, `passed`, `code_review`, `qa`, `on_hold` or empty) and `handled`), `counts` (`mine`, `others`, `failing`, `done`: the four header tiles), `feed`, `marks` (`{seen, base, handled: {row_id: iso}, info: {row_id: {note?, auto?, outcome?, event?}}}`; `info` carries the note of a mark, and for an automatic mark `auto: true`, the `outcome` phrase, the feed id of the `event` behind it and a `detail` with the assignee and status changes and the latest comment), `todos` (each with `ticket_url`), `errors`, `health`, `polled_at`, `me` (your name per source), `workspace`, plus `workspaces` and `problems`. With `&full=1` the merged raw collections come too: `tickets`, `comments`, `prs`, `activity`, `asks`, `events`.
184
182
  - `GET /api/summary`: across all workspaces: `moves` (each with `ws`), `new_events`, `todos`, `polled_at`, `errors`, `health` (`{ok, alerts}`, alerts as text prefixed with the workspace name when there are several), and `workspaces` with the same per workspace, where `health` is `{ok, stale, fresh_at, failing:[{source, polls}], alerts:[{id, text}]}`.
183
+ - `GET /api/changelog`: `{current, versions}`; `versions` is CHANGELOG.md parsed once per start, newest first as written, each `{version, date, sections:[{kind, items:[markdown]}]}` (an `[Unreleased]` block comes first with version `Unreleased` and no date). A package without a readable CHANGELOG.md answers `CHANGELOG_UNAVAILABLE` (404).
185
184
  - `GET /api/stream`: SSE. One `data:` event per poll per workspace, `{ws, version, polled_at, open_moves}`. The window reloads state when its workspace's `version` changes. The update status arrives as `{update}`, once on connect and on every change.
186
185
  - `/api/summary` and `/api/state` carry `update: {current, latest, available, state, reason?}`. The server checks `https://registry.npmjs.org/-/package/whose-turn/dist-tags` every ten minutes (ETag-cached) and follows the `latest` dist-tag, which every publish moves (prereleases included during the alpha); `available` is true when that tag names another version and the server runs from the plugin's install, `<data>/app/node_modules/whose-turn`. `state` is `idle`, `installing`, `restarting` or `failed` (with npm's last lines in `reason`). A new version raises one desktop notification. `POST /api/update` runs `npm install --prefix <data>/app --no-audit --no-fund --no-save whose-turn@<version>` and restarts: under the launch agent it exits and the agent starts the new copy; without one it frees the port, starts the new `server.mjs` detached (output to `<data>/server.log`) and exits. A failed install leaves the running copy as it was. A second `POST` while one runs is refused with `UPDATE_IN_PROGRESS`; one with nothing to update with `UPDATE_UNAVAILABLE`. This is the expected, announced way an install stays current, not a silent update.
187
186
  - A read without `ws` answers for the first workspace; a write (`/api/marks`, `/api/todos`, an inbox hand-off) without `ws` is refused with `INVALID_ARGUMENT`, because it would land silently in the wrong workspace (RMA-115).
188
- - `POST /api/marks` takes `{ws, seen:[ids], unseen:[ids], base:ms, handled:{row_id: iso|null}, notified:[ids]}`; `seen` and `unseen` must be strings (`unseen` takes ids back out of `seen`, which is how Undo restores Mark all read), `base` a number not in the future, `handled` values ISO dates or null, else `INVALID_ARGUMENT` names the field. It answers `{marks, turn, counts}`, recomputed, so the window updates without a reload.
187
+ - `POST /api/marks` takes `{ws, seen:[ids], unseen:[ids], base:ms, handled:{row_id: iso|null}, notified:[ids]}`; `seen` and `unseen` must be strings (`unseen` takes ids back out of `seen`, which is how Undo restores Mark all read), `base` a number not in the future, `handled` values ISO dates or null, `notes` a map of row id to one line of at most 200 characters that rides with a handled mark (a note for a row that is not handled is dropped; Undo removes it), else `INVALID_ARGUMENT` names the field. It answers `{marks, turn, counts}`, recomputed, so the window updates without a reload.
189
188
  - `POST /api/todos` takes `{ws, action, …}`: `add {text, key?, by?}`; `done`, `undo`, `delete` with `{id}`; `edit {id, text}`.
190
189
  - `POST /api/refresh` polls now.
191
190
  - `GET /api/window` is the size the app window last reported, `{width, height}`, or `{}` before the first report; `POST /api/window` with `{width, height}` (whole pixels, 300 to 10000) stores it in `<data>/window.json`. `open.sh` reads it for `--window-size`.
@@ -203,7 +202,7 @@ Open it at `http://127.0.0.1:<port>/` (or with `open.sh` as an app window). One
203
202
 
204
203
  **What is on me.** The Your move panel lists one row per thing to do: the ticket, the next step, the PR and the last comment that matter. A small "why" next to the step says how the rule reached it, and a chip says how long it has waited (amber once it is more than a day). Columns that are empty in every row are left out. A PR without a ticket shows the PR once, as the link in the first column.
205
204
 
206
- **Mark it handled.** "Handled" moves a row out of the list; the Handled view lists them, dimmed, with Undo. A handled row comes back after seven days if it is still open, or sooner when something new happens on it. Recently done, folded under the list, shows the tickets that left your move lately.
205
+ **Mark it handled.** "Handled" moves a row out of the list; the Handled view lists them, dimmed, with Undo. After Handled, a small window offers a one-line note for what the tracker does not record (`Checked with the customer, nothing to change`; Save keeps it, Skip or Escape leaves the row handled without one); the note shows on a line under the row, and a click on the line reopens the window to edit or clear it, and the feed shows it as your own event on that ticket. A handled row comes back after seven days if it is still open, or sooner when something new happens on it. **A trace when the turn passes on.** When a ticket leaves Your move because it was reassigned, moved to another status or merged, the server adds the Handled mark itself, with one phrase from the feed event that moved it (`Passed to <name> · <status>`, `Merged`, `Moved to <status>`); the phrase carries the latest comment when there is one, and a click on the line opens a window with the full event and an "Open in feed" link, the row also shows in Waiting on others, and the mark goes when the turn comes back, or after seven days. It has no Undo. Recently done, folded under the list, shows the tickets that left your move lately.
207
206
 
208
207
  **What I wait for.** Waiting on others lists tickets you touched where someone else holds the next step, with who and for how long. To do holds your own notes; Claude can add to it too.
209
208
 
@@ -215,6 +214,8 @@ Open it at `http://127.0.0.1:<port>/` (or with `open.sh` as an app window). One
215
214
 
216
215
  **Report a problem or a wish.** "Report" in the top bar takes one text field; Send files it in the monitor's own backlog and shows the link, and `/report?id=<issue>` shows the answer.
217
216
 
217
+ **What's new.** The button above the gear at the bottom of the rail opens a sheet with CHANGELOG.md by version, newest first, the running version marked; a dot on the button says there are versions you have not read since you last opened it, and the "Updated to <version>" chip after an update opens the same sheet.
218
+
218
219
  **Keys.** `/` focuses the feed search, `t` the to-do field, Escape closes a sheet, Alt+Up and Alt+Down move a focused rail icon, drag also reorders. The window follows the system's light or dark scheme, and its tab icon is the open workspace's rail icon.
219
220
 
220
221
  Under the glass an animal drawn in dots follows the workspace; how to add one is in [`docs/mechanisms/species-dsl.md`](docs/mechanisms/species-dsl.md), and `/sheet` draws them all.
@@ -17,9 +17,9 @@ export const fields = [
17
17
  ];
18
18
 
19
19
  const QUERY = `
20
- query Mine($filter: IssueFilter!, $after: String) {
20
+ query Mine($filter: IssueFilter!, $after: String, $archived: Boolean) {
21
21
  viewer { id name displayName }
22
- issues(filter: $filter, first: 50, after: $after, orderBy: updatedAt) {
22
+ issues(filter: $filter, first: 50, after: $after, orderBy: updatedAt, includeArchived: $archived) {
23
23
  pageInfo { hasNextPage endCursor }
24
24
  nodes {
25
25
  id identifier title url updatedAt completedAt
@@ -69,12 +69,12 @@ const apiKey = async (settings, secrets, cache) => {
69
69
  return token;
70
70
  };
71
71
 
72
- const fetchAll = async (http, key, filter) => {
72
+ const fetchAll = async (http, key, filter, archived = false) => {
73
73
  const nodes = [];
74
74
  let after = null;
75
75
  let viewer = null;
76
76
  for (let page = 0; page < 10; page += 1) {
77
- const data = await linearQuery(http, key, QUERY, { filter, after });
77
+ const data = await linearQuery(http, key, QUERY, { filter, after, archived });
78
78
  viewer = data.viewer;
79
79
  nodes.push(...data.issues.nodes);
80
80
  if (!data.issues.pageInfo.hasNextPage) {
@@ -105,7 +105,7 @@ export const normalise = (issues, viewer) => {
105
105
 
106
106
  export const poll = async ({ settings, http, secrets, cache }) => {
107
107
  const key = await apiKey(settings, secrets, cache);
108
- const [open, done] = await Promise.all([fetchAll(http, key, buildFilter(settings, false)), fetchAll(http, key, buildFilter(settings, true))]);
108
+ const [open, done] = await Promise.all([fetchAll(http, key, buildFilter(settings, false)), fetchAll(http, key, buildFilter(settings, true), true)]);
109
109
  const seen = new Set();
110
110
  const issues = [...open.nodes, ...done.nodes].filter((issue) => !seen.has(issue.id) && seen.add(issue.id));
111
111
  const result = normalise(issues, open.viewer || done.viewer || {});
@@ -0,0 +1,18 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/**
2
+ * @vue/shared v3.5.44
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function kn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const N={},tt=[],Ae=()=>{},Zs=()=>!1,sn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),rn=e=>e.startsWith("onUpdate:"),Z=Object.assign,es=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},di=Object.prototype.hasOwnProperty,V=(e,t)=>di.call(e,t),O=Array.isArray,Be=e=>Pt(e)==="[object Map]",it=e=>Pt(e)==="[object Set]",xs=e=>Pt(e)==="[object Date]",R=e=>typeof e=="function",J=e=>typeof e=="string",he=e=>typeof e=="symbol",H=e=>e!==null&&typeof e=="object",ks=e=>(H(e)||R(e))&&R(e.then)&&R(e.catch),er=Object.prototype.toString,Pt=e=>er.call(e),hi=e=>Pt(e).slice(8,-1),tr=e=>Pt(e)==="[object Object]",on=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,yt=kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ln=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},pi=/-\w/g,re=ln(e=>e.replace(pi,t=>t.slice(1).toUpperCase())),gi=/\B([A-Z])/g,Le=ln(e=>e.replace(gi,"-$1").toLowerCase()),fn=ln(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=ln(e=>e?`on${fn(e)}`:""),ee=(e,t)=>!Object.is(e,t),Ut=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},nr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},cn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let vs;const un=()=>vs||(vs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ts(e){if(O(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=J(s)?bi(s):ts(s);if(r)for(const i in r)t[i]=r[i]}return t}else if(J(e)||H(e))return e}const _i=/;(?![^(]*\))/g,mi=/:([^]+)/,yi=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function bi(e){const t={};return e.replace(yi,n=>n.startsWith("/*")?"":n).split(_i).forEach(n=>{if(n){const s=n.split(mi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ns(e){let t="";if(J(e))t=e;else if(O(e))for(let n=0;n<e.length;n++){const s=ns(e[n]);s&&(t+=s+" ")}else if(H(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const xi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly",vi=kn(xi);function sr(e){return!!e||e===""}function Si(e,t,n){if(e.length!==t.length)return!1;let s=!0;for(let r=0;s&&r<e.length;r++)s=Ge(e[r],t[r],n);return s}function Ss(e,t,n){if(e.size!==t.size)return!1;const s=Array.from(t),r=new Uint8Array(s.length);for(const i of e){let o=-1;for(let l=0;l<s.length;l++)if(!r[l]&&Ge(i,s[l],n)){o=l;break}if(o<0)return!1;r[o]=1}return!0}function wi(e,t,n){let s=Be(e),r=Be(t);if(s||r||(s=it(e),r=it(t),s||r))return s&&r?Ss(e,t,n):!1;const i=Object.keys(e).length,o=Object.keys(t).length;if(i!==o)return!1;for(const l in e){const c=e.hasOwnProperty(l),d=t.hasOwnProperty(l);if(c&&!d||!c&&d||!Ge(e[l],t[l],n))return!1}return String(e)===String(t)}function ws(e,t,n,s){n||(n=[new Map,new Map]);const[r,i]=n;if(r.has(e)||i.has(t))return r.get(e)===t&&i.get(t)===e;r.set(e,t),i.set(t,e);const o=s(e,t,n);return r.delete(e),i.delete(t),o}function Ge(e,t,n){if(e===t)return!0;let s=xs(e),r=xs(t);return s||r?s&&r?e.getTime()===t.getTime():!1:(s=he(e),r=he(t),s||r?e===t:(s=O(e),r=O(t),s||r?s&&r?ws(e,t,n,Si):!1:(s=H(e),r=H(t),s||r?!s||!r?!1:ws(e,t,n,wi):String(e)===String(t))))}function Ci(e,t){return e.findIndex(n=>Ge(n,t))}const rr=e=>!!(e&&e.__v_isRef===!0),Ti=e=>J(e)?e:e==null?"":O(e)||H(e)&&(e.toString===er||!R(e.toString))?rr(e)?Ti(e.value):JSON.stringify(e,ir,2):String(e),ir=(e,t)=>rr(t)?ir(e,t.value):Be(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[En(s,i)+" =>"]=r,n),{})}:it(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>En(n))}:he(t)?En(t):H(t)&&!O(t)&&!tr(t)?String(t):t,En=(e,t="")=>{var n;return he(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
6
+ * @vue/reactivity v3.5.44
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let X;class or{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&X&&(X.active?(this.parent=X,this.index=(X.scopes||(X.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t<n;t++)s[t].pause()}for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes){const r=this.scopes.slice();for(t=0,n=r.length;t<n;t++)r[t].resume()}const s=this.effects.slice();for(t=0,n=s.length;t<n;t++)s[t].resume()}}run(t){if(this._active){const n=X;try{return X=this,t()}finally{X=n}}}on(){++this._on===1&&(this.prevScope=X,X=this)}off(){if(this._on>0&&--this._on===0){if(X===this)X=this.prevScope;else{let t=X;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){const r=this.scopes.slice();for(n=0,s=r.length;n<s;n++)r[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Xl(e){return new or(e)}function Oi(){return X}function Ql(e,t=!1){X&&X.cleanups.push(e)}let W;const An=new WeakSet;class lr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,X&&(X.active?X.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,An.has(this)&&(An.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||cr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Cs(this),ur(this);const t=W,n=ye;W=this,ye=!0;try{return this.fn()}finally{ar(this),W=t,ye=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)is(t);this.deps=this.depsTail=void 0,Cs(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?An.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){$n(this)&&this.run()}get dirty(){return $n(this)}}let fr=0,bt,xt;function cr(e,t=!1){if(e.flags|=8,t){e.next=xt,xt=e;return}e.next=bt,bt=e}function ss(){fr++}function rs(){if(--fr>0)return;if(xt){let t=xt;for(xt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;bt;){let t=bt;for(bt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ur(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ar(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),is(s),Ei(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function $n(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(dr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function dr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===wt)||(e.globalVersion=wt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$n(e))))return;e.flags|=2;const t=e.dep,n=W,s=ye;W=e,ye=!0;try{ur(e);const r=e.fn(e._value);(t.version===0||ee(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{W=n,ye=s,ar(e),e.flags&=-3}}function is(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)is(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ei(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ye=!0;const hr=[];function Me(){hr.push(ye),ye=!1}function Re(){const e=hr.pop();ye=e===void 0?!0:e}function Cs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=W;W=void 0;try{t()}finally{W=n}}}let wt=0;class Ai{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class an{constructor(t){this.computed=t,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(t){if(!W||!ye||W===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==W)n=this.activeLink=new Ai(W,this),W.deps?(n.prevDep=W.depsTail,W.depsTail.nextDep=n,W.depsTail=n):W.deps=W.depsTail=n,pr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=W.depsTail,n.nextDep=void 0,W.depsTail.nextDep=n,W.depsTail=n,W.deps===n&&(W.deps=s)}return n}trigger(t){this.version++,wt++,this.notify(t)}notify(t){ss();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{rs()}}}function pr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)pr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const qt=new WeakMap,st=Symbol(""),Kn=Symbol(""),Ct=Symbol("");function ne(e,t,n){if(ye&&W){let s=qt.get(e);s||qt.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new an),r.map=s,r.key=n),r.track()}}function De(e,t,n,s,r,i){const o=qt.get(e);if(!o){wt++;return}const l=c=>{c&&c.trigger()};if(ss(),t==="clear")o.forEach(l);else{const c=O(e),d=c&&on(n);if(c&&n==="length"){const a=Number(s);o.forEach((p,C)=>{(C==="length"||C===Ct||!he(C)&&C>=a)&&l(p)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),d&&l(o.get(Ct)),t){case"add":c?d&&l(o.get("length")):(l(o.get(st)),Be(e)&&l(o.get(Kn)));break;case"delete":c||(l(o.get(st)),Be(e)&&l(o.get(Kn)));break;case"set":Be(e)&&l(o.get(st));break}}rs()}function Pi(e,t){const n=qt.get(e);return n&&n.get(t)}function ot(e){const t=D(e);return t===e||(ne(t,"iterate",Ct),de(e))?t:Ie(e)?qe(e)?t.map(n=>Je(pe(n))):t.map(Je):t.map(pe)}function dn(e){return ne(e=D(e),"iterate",Ct),e}function Te(e,t){return Ie(e)?Je(qe(e)?pe(t):t):pe(t)}const Mi={__proto__:null,[Symbol.iterator](){return Pn(this,Symbol.iterator,e=>Te(this,e))},concat(...e){return ot(this).concat(...e.map(t=>O(t)?ot(t):t))},entries(){return Pn(this,"entries",e=>(e[1]=Te(this,e[1]),e))},every(e,t){return Fe(this,"every",e,t,void 0,arguments)},filter(e,t){return Fe(this,"filter",e,t,n=>n.map(s=>Te(this,s)),arguments)},find(e,t){return Fe(this,"find",e,t,n=>Te(this,n),arguments)},findIndex(e,t){return Fe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Fe(this,"findLast",e,t,n=>Te(this,n),arguments)},findLastIndex(e,t){return Fe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Fe(this,"forEach",e,t,void 0,arguments)},includes(...e){return Mn(this,"includes",e)},indexOf(...e){return Mn(this,"indexOf",e)},join(e){return ot(this).join(e)},lastIndexOf(...e){return Mn(this,"lastIndexOf",e)},map(e,t){return Fe(this,"map",e,t,void 0,arguments)},pop(){return pt(this,"pop")},push(...e){return pt(this,"push",e)},reduce(e,...t){return Os(this,"reduce",e,t)},reduceRight(e,...t){return Os(this,"reduceRight",e,t)},shift(){return pt(this,"shift")},some(e,t){return Fe(this,"some",e,t,void 0,arguments)},splice(...e){return pt(this,"splice",e)},toReversed(){return ot(this).toReversed()},toSorted(e){return ot(this).toSorted(e)},toSpliced(...e){return ot(this).toSpliced(...e)},unshift(...e){return pt(this,"unshift",e)},values(){return Pn(this,"values",e=>Te(this,e))}};function Pn(e,t,n){const s=dn(e),r=s[t],i=r.call(s);if(s!==e&&!de(e)){if(i[Symbol.toStringTag]==="Array Iterator"){const o=Object.create(Object.getPrototypeOf(i));return o.next=()=>Ts(i.next(),n),r!==gr[t]&&Object.defineProperties(o,{return:{get(){const l=i.return;return typeof l=="function"?l.bind(i):l}},throw:{get(){const l=i.throw;return typeof l=="function"?l.bind(i):l}}}),o}i._next=i.next,i.next=()=>Ts(i._next(),n)}return i}function Ts(e,t){return e.done||(e.value=t(e.value)),e}const gr=Array.prototype;function Fe(e,t,n,s,r,i){const o=dn(e),l=o!==e&&!de(e),c=o[t];if(c!==gr[t]){const p=c.apply(e,i);return l?pe(p):p}let d=n;o!==e&&(l?d=function(p,C){return n.call(this,Te(e,p),C,e)}:n.length>2&&(d=function(p,C){return n.call(this,p,C,e)}));const a=c.call(o,d,s);return l&&r?r(a):a}function Os(e,t,n,s){const r=dn(e),i=r!==e&&!de(e);let o=n,l=!1;r!==e&&(i?(l=s.length===0,o=function(d,a,p){return l&&(l=!1,d=Te(e,d)),n.call(this,d,Te(e,a),p,e)}):n.length>3&&(o=function(d,a,p){return n.call(this,d,a,p,e)}));const c=r[t](o,...s);return l?Te(e,c):c}function Mn(e,t,n){const s=D(e);ne(s,"iterate",Ct);const r=s[t](...n);return(r===-1||r===!1)&&gn(n[0])?(n[0]=D(n[0]),s[t](...n)):r}function pt(e,t,n=[]){Me(),ss();const s=D(e)[t].apply(e,n);return rs(),Re(),s}const Ri=kn("__proto__,__v_isRef,__isVue"),_r=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(he));function Ii(e){he(e)||(e=String(e));const t=D(this);return ne(t,"has",e),t.hasOwnProperty(e)}class mr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?wr:Sr:i?vr:xr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=O(t);if(!r){let c;if(o&&(c=Mi[n]))return c;if(n==="hasOwnProperty")return Ii}const l=Reflect.get(t,n,Q(t)?t:s);if((he(n)?_r.has(n):Ri(n))||(r||ne(t,"get",n),i))return l;if(Q(l)){const c=o&&on(n)?l:l.value;return r&&H(c)?Wn(c):c}return H(l)?r?Wn(l):os(l):l}}class yr extends mr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=O(t)&&on(n);if(!this._isShallow){const d=Ie(i);if(!de(s)&&!Ie(s)&&(i=D(i),s=D(s)),!o&&Q(i)&&!Q(s))return d||(i.value=s),!0}const l=o?Number(n)<t.length:V(t,n),c=Reflect.set(t,n,s,Q(t)?t:r);return t===D(r)&&c&&(l?ee(s,i)&&De(t,"set",n,s):De(t,"add",n,s)),c}deleteProperty(t,n){const s=V(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&De(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!he(n)||!_r.has(n))&&ne(t,"has",n),s}ownKeys(t){return ne(t,"iterate",O(t)?"length":st),Reflect.ownKeys(t)}}class br extends mr{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Fi=new yr,Ni=new br,ji=new yr(!0),Di=new br(!0),Un=e=>e,Vt=e=>Reflect.getPrototypeOf(e);function Vi(e,t,n){return function(...s){const r=this.__v_raw,i=D(r),o=Be(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,d=r[e](...s),a=n?Un:t?Je:pe;return!t&&ne(i,"iterate",c?Kn:st),Z(Object.create(d),{next(){const{value:p,done:C}=d.next();return C?{value:p,done:C}:{value:l?[a(p[0]),a(p[1])]:a(p),done:C}}})}}function Ht(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Hi(e,t){const n={get(r){const i=this.__v_raw,o=D(i),l=D(r);e||(ee(r,l)&&ne(o,"get",r),ne(o,"get",l));const{has:c}=Vt(o),d=t?Un:e?Je:pe;if(c.call(o,r))return d(i.get(r));if(c.call(o,l))return d(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ne(D(r),"iterate",st),r.size},has(r){const i=this.__v_raw,o=D(i),l=D(r);return e||(ee(r,l)&&ne(o,"has",r),ne(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=D(l),d=t?Un:e?Je:pe;return!e&&ne(c,"iterate",st),l.forEach((a,p)=>r.call(i,d(a),d(p),o))}};return Z(n,e?{add:Ht("add"),set:Ht("set"),delete:Ht("delete"),clear:Ht("clear")}:{add(r){const i=D(this),o=Vt(i),l=D(r),c=!t&&!de(r)&&!Ie(r)?l:r;return o.has.call(i,c)||ee(r,c)&&o.has.call(i,r)||ee(l,c)&&o.has.call(i,l)||(i.add(c),De(i,"add",c,c)),this},set(r,i){!t&&!de(i)&&!Ie(i)&&(i=D(i));const o=D(this),{has:l,get:c}=Vt(o);let d=l.call(o,r);d||(r=D(r),d=l.call(o,r));const a=c.call(o,r);return o.set(r,i),d?ee(i,a)&&De(o,"set",r,i):De(o,"add",r,i),this},delete(r){const i=D(this),{has:o,get:l}=Vt(i);let c=o.call(i,r);c||(r=D(r),c=o.call(i,r)),l&&l.call(i,r);const d=i.delete(r);return c&&De(i,"delete",r,void 0),d},clear(){const r=D(this),i=r.size!==0,o=r.clear();return i&&De(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Vi(r,e,t)}),n}function hn(e,t){const n=Hi(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_isShallow"?t:r==="__v_raw"?s:Reflect.get(V(n,r)&&r in s?n:s,r,i)}const Li={get:hn(!1,!1)},$i={get:hn(!1,!0)},Ki={get:hn(!0,!1)},Ui={get:hn(!0,!0)},xr=new WeakMap,vr=new WeakMap,Sr=new WeakMap,wr=new WeakMap;function Wi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function os(e){return Ie(e)?e:pn(e,!1,Fi,Li,xr)}function Bi(e){return pn(e,!1,ji,$i,vr)}function Wn(e){return pn(e,!0,Ni,Ki,Sr)}function Zl(e){return pn(e,!0,Di,Ui,wr)}function pn(e,t,n,s,r){if(!H(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=r.get(e);if(i)return i;const o=Wi(hi(e));if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function qe(e){return Ie(e)?qe(e.__v_raw):!!(e&&e.__v_isReactive)}function Ie(e){return!!(e&&e.__v_isReadonly)}function de(e){return!!(e&&e.__v_isShallow)}function gn(e){return e?!!e.__v_raw:!1}function D(e){const t=e&&e.__v_raw;return t?D(t):e}function qi(e){return!V(e,"__v_skip")&&Object.isExtensible(e)&&nr(e,"__v_skip",!0),e}const pe=e=>H(e)?os(e):e,Je=e=>H(e)?Wn(e):e;function Q(e){return e?e.__v_isRef===!0:!1}function Gi(e){return Cr(e,!1)}function Ji(e){return Cr(e,!0)}function Cr(e,t){return Q(e)?e:new zi(e,t)}class zi{constructor(t,n){this.dep=new an,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:D(t),this._value=n?t:pe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||de(t)||Ie(t);t=s?t:D(t),ee(t,n)&&(this._rawValue=t,this._value=s?t:pe(t),this.dep.trigger())}}function ls(e){return Q(e)?e.value:e}function kl(e){return R(e)?e():ls(e)}const Yi={get:(e,t,n)=>t==="__v_raw"?e:ls(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Q(r)&&!Q(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Tr(e){return qe(e)?e:new Proxy(e,Yi)}class Xi{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new an,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Qi(e){return new Xi(e)}class Zi{constructor(t,n,s){this._object=t,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=he(n)?n:String(n),this._raw=D(t);let r=!0,i=t;if(!O(t)||he(this._key)||!on(this._key))do r=!gn(i)||de(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=ls(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Q(this._raw[this._key])){const n=this._object[this._key];if(Q(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Pi(this._raw,this._key)}}class ki{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ef(e,t,n){return Q(e)?e:R(e)?new ki(e):H(e)&&arguments.length>1?eo(e,t,n):Gi(e)}function eo(e,t,n){return new Zi(e,t,n)}class to{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new an(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=wt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&W!==this)return cr(this,!0),!0}get value(){const t=this.dep.track();return dr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function no(e,t,n=!1){let s,r;return R(e)?s=e:(s=e.get,r=e.set),new to(s,r,n)}const Lt={},Gt=new WeakMap;let ke;function so(e,t=!1,n=ke){if(n){let s=Gt.get(n);s||Gt.set(n,s=[]),s.push(e)}}function ro(e,t,n=N){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,d=P=>r?P:de(P)||r===!1||r===0?Ve(P,1):Ve(P);let a,p,C,w,I=!1,A=!1;if(Q(e)?(p=()=>e.value,I=de(e)):qe(e)?(p=()=>d(e),I=!0):O(e)?(A=!0,I=e.some(P=>qe(P)||de(P)),p=()=>e.map(P=>{if(Q(P))return P.value;if(qe(P))return d(P);if(R(P))return c?c(P,2):P()})):R(e)?t?p=c?()=>c(e,2):e:p=()=>{if(C){Me();try{C()}finally{Re()}}const P=ke;ke=a;try{return c?c(e,3,[w]):e(w)}finally{ke=P}}:p=Ae,t&&r){const P=p,Y=r===!0?1/0:r;p=()=>Ve(P(),Y)}const q=Oi(),B=()=>{a.stop(),q&&q.active&&es(q.effects,a)};if(i&&t){const P=t;t=(...Y)=>{try{return P(...Y)}finally{B()}}}let j=A?new Array(e.length).fill(Lt):Lt;const L=P=>{if(!(!(a.flags&1)||!a.dirty&&!P))if(t){const Y=a.run();if(P||r||I||(A?Y.some((Ke,xe)=>ee(Ke,j[xe])):ee(Y,j))){const Ke=ke;Me();try{C&&C(),ke=a;const xe=[Y,j===Lt?void 0:A&&j[0]===Lt?[]:j,w];j=Y,c?c(t,3,xe):t(...xe)}finally{ke=Ke,Re()}}}else a.run()};return l&&l(L),a=new lr(p),a.scheduler=o?()=>o(L,!1):L,w=P=>so(P,!1,a),C=a.onStop=()=>{const P=Gt.get(a);if(P){if(c)c(P,4);else for(const Y of P)Y();Gt.delete(a)}},t?s?L(!0):j=a.run():o?o(L.bind(null,!0),!0):a.run(),B.pause=a.pause.bind(a),B.resume=a.resume.bind(a),B.stop=B,B}function Ve(e,t=1/0,n){if(t<=0||!H(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Q(e))Ve(e.value,t,n);else if(O(e))for(let s=0;s<e.length;s++)Ve(e[s],t,n);else if(it(e)||Be(e))e.forEach(s=>{Ve(s,t,n)});else if(tr(e)){for(const s in e)Ve(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ve(e[s],t,n)}return e}/**
10
+ * @vue/runtime-core v3.5.44
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function Mt(e,t,n,s){try{return s?e(...s):e()}catch(r){_n(r,t,n)}}function be(e,t,n,s){if(R(e)){const r=Mt(e,t,n,s);return r&&ks(r)&&r.catch(i=>{_n(i,t,n)}),r}if(O(e)){const r=[];for(let i=0;i<e.length;i++)r.push(be(e[i],t,n,s));return r}}function _n(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||N;if(t){let l=t.parent;const c=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const a=l.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,c,d)===!1)return}l=l.parent}if(i){Me(),Mt(i,null,10,[e,c,d]),Re();return}}io(e,n,r,s,o)}function io(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const le=[];let me=-1;const Oe=[];let We=null,lt=0;const Or=Promise.resolve();let Jt=null;function Er(e){const t=Jt||Or;return e?t.then(this?e.bind(this):e):t}function oo(e){let t=me+1,n=le.length;for(;t<n;){const s=t+n>>>1,r=le[s],i=Tt(r);i<e||i===e&&r.flags&2?t=s+1:n=s}return t}function fs(e){if(!(e.flags&1)){const t=Tt(e),n=le[le.length-1];!n||!(e.flags&2)&&t>=Tt(n)?le.push(e):le.splice(oo(t),0,e),e.flags|=1,Ar()}}function Ar(){Jt||(Jt=Or.then(Rr))}function lo(e){if(!O(e))We&&e.id===-1?We.splice(lt+1,0,e):e.flags&1||(Oe.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)Oe.push(e[t]);Ar()}function Pr(e,t,n,s=me+1){for(;s<le.length;s++){const r=le[s];if(r&&r.flags&2){if(e&&r.id!==e.uid||t!==void 0&&!(r.id>=t))continue;le.splice(s,1),s=e?s-1:me,r.flags&4&&(r.flags&=-2),r(),r.flags&4||(r.flags&=-2)}}}function Mr(e,t,n=0){if(Oe.length){let s=Oe,r=0;if(t){s=[];for(let o=0;o<Oe.length;o++){const l=Oe[o];(l.i!==void 0?!l.i||l.i.uid<n:t.has(l))?Oe[r++]=l:s.push(l)}}const i=[...new Set(s)].sort((o,l)=>Tt(o)-Tt(l));if(Oe.length=r,We){for(let o=0;o<i.length;o++)We.push(i[o]);return}for(We=i,lt=0;lt<We.length;lt++){const o=We[lt];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}We=null,lt=0}}let Rn=!1;function fo(e,t){if(Rn){e();return}const n=t===void 0?void 0:new Set(Oe);e(),Rn=!0;try{Pr(void 0,t),Mr(void 0,n,t)}finally{Rn=!1}}const Tt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Rr(e){try{for(me=0;me<le.length;me++){const t=le[me];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Mt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;me<le.length;me++){const t=le[me];t&&(t.flags&=-2)}me=-1,le.length=0,Mr(),Jt=null,(le.length||Oe.length)&&Rr()}}let te=null,Ir=null;function zt(e){const t=te;return te=e,Ir=e&&e.type.__scopeId||null,t}function co(e,t=te,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Vs(-1);const i=zt(t),o=He.length;let l;try{l=e(...r)}finally{for(let c=He.length;c>o;c--)ds();zt(i),s._d&&Vs(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function tf(e,t){if(te===null)return e;const n=Cn(te),s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,o,l,c=N]=t[r];i&&(R(i)&&(i={mounted:i,updated:i}),i.deep&&Ve(o),s.push({dir:i,instance:n,value:o,oldValue:void 0,arg:l,modifiers:c}))}return e}function Qe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let c=l.dir[s];c&&(Me(),be(c,n,8,[e.el,l,e,t]),Re())}}function uo(e,t){if(se){let n=se.provides;const s=se.parent&&se.parent.provides;s===n&&(n=se.provides=Object.create(s)),n[e]=t}}function Wt(e,t,n=!1){const s=wn();if(s||rt){let r=rt?rt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&R(t)?t.call(s&&s.proxy):t}}function nf(){return!!(wn()||rt)}const ao=Symbol.for("v-scx"),ho=()=>Wt(ao);function sf(e,t){return mn(e,null,t)}function po(e,t){return mn(e,null,{flush:"sync"})}function In(e,t,n){return mn(e,t,n)}function mn(e,t,n=N){const{immediate:s,deep:r,flush:i,once:o}=n,l=Z({},n),c=t&&s||!t&&i!=="post";let d;if(At){if(i==="sync"){const w=ho();d=w.__watcherHandles||(w.__watcherHandles=[])}else if(!c){const w=()=>{};return w.stop=Ae,w.resume=Ae,w.pause=Ae,w}}const a=se;l.call=(w,I,A)=>be(w,a,I,A);let p=!1;i==="post"?l.scheduler=w=>{w.i=a,fe(w,a&&a.suspense)}:i!=="sync"&&(p=!0,l.scheduler=(w,I)=>{I?w():fs(w)}),l.augmentJob=w=>{t&&(w.flags|=4),p&&(w.flags|=2,a&&(w.id=a.uid,w.i=a))};const C=ro(e,t,l);return At&&(d?d.push(C):c&&C()),C}function go(e,t,n){const s=this.proxy,r=J(e)?e.includes(".")?Fr(s,e):()=>s[e]:e.bind(s,s);let i;R(t)?i=t:(i=t.handler,n=t);const o=Rt(this),l=mn(r,i.bind(s),n);return o(),l}function Fr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const _o=Symbol("_vte"),yn=e=>e.__isTeleport,Fn=Symbol("_leaveCb");function mo(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ge){t=n;break}}return t}function Nr(e){if(!cs(e))return yn(e.type)&&e.children?mo(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&R(n.default))return n.default()}}function Yt(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;Yt(yn(n.type)&&Nr(n)||n,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===ce&&O(e.children)){const n=qr(e.children,!1);n&&Yt(n,t)}}function Bn(e){if(e.component)return Bn(e.component.subTree);if(e.type===ce){const t=O(e.children)&&qr(e.children,!1);return t?Bn(t):void 0}if(e.type!==ge)return e}function rf(e,t){return R(e)?Z({name:e.name},t,{setup:e}):e}function jr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function of(e){const t=wn(),n=Ji(null);if(t){const r=t.refs===N?t.refs={}:t.refs;Object.defineProperty(r,e,{enumerable:!0,get:()=>n.value,set:i=>n.value=i})}return n}function Es(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Xt=new WeakMap;function vt(e,t,n,s,r=!1){if(O(e)){e.forEach((A,q)=>vt(A,t&&(O(t)?t[q]:t),n,s,r));return}if(ft(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&vt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Cn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,d=t&&t.r,a=l.refs===N?l.refs={}:l.refs,p=l.setupState,C=D(p),w=p===N?Zs:A=>Es(a,A)?!1:V(C,A),I=(A,q)=>!(q&&Es(a,q));if(d!=null&&d!==c){if(As(t),J(d))a[d]=null,w(d)&&(p[d]=null);else if(Q(d)){const A=t;I(d,A.k)&&(d.value=null),A.k&&(a[A.k]=null)}}if(R(c))Mt(c,l,12,[o,a]);else{const A=J(c),q=Q(c);if(A||q){const B=()=>{if(e.f){const j=A?w(c)?p[c]:a[c]:I()||!e.k?c.value:a[e.k];if(r)O(j)&&es(j,i);else if(O(j))j.includes(i)||j.push(i);else if(A)a[c]=[i],w(c)&&(p[c]=a[c]);else{const L=[i];I(c,e.k)&&(c.value=L),e.k&&(a[e.k]=L)}}else A?(a[c]=o,w(c)&&(p[c]=o)):q&&(I(c,e.k)&&(c.value=o),e.k&&(a[e.k]=o))};if(o){const j=()=>{B(),Xt.delete(e)};j.id=-1,Xt.set(e,j),fe(j,n)}else As(e),B()}}}function As(e){const t=Xt.get(e);t&&(t.flags|=8,Xt.delete(e))}un().requestIdleCallback;un().cancelIdleCallback;const ft=e=>!!e.type.__asyncLoader,cs=e=>e.type.__isKeepAlive;function yo(e,t){Dr(e,"a",t)}function bo(e,t){Dr(e,"da",t)}function Dr(e,t,n=se){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(bn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)cs(r.parent.vnode)&&xo(s,t,n,r),r=r.parent}}function xo(e,t,n,s){const r=bn(t,e,s,!0);Vr(()=>{es(s[t],r)},n)}function bn(e,t,n=se,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Me();const l=Rt(n),c=be(t,n,e,o);return l(),Re(),c});return s?r.unshift(i):r.push(i),i}}const $e=e=>(t,n=se)=>{(!At||e==="sp")&&bn(e,(...s)=>t(...s),n)},vo=$e("bm"),So=$e("m"),wo=$e("bu"),Co=$e("u"),To=$e("bum"),Vr=$e("um"),Oo=$e("sp"),Eo=$e("rtg"),Ao=$e("rtc");function Po(e,t=se){bn("ec",e,t)}const Mo="components",Hr=Symbol.for("v-ndc");function lf(e){return J(e)?Ro(Mo,e,!1)||e:e||Hr}function Ro(e,t,n=!0,s=!1){const r=te||se;if(r){const i=r.type;{const l=pl(i,!1);if(l&&(l===t||l===re(t)||l===fn(re(t))))return i}const o=Ps(r[e]||i[e],t)||Ps(r.appContext[e],t);return!o&&s?i:o}}function Ps(e,t){return e&&(e[t]||e[re(t)]||e[fn(re(t))])}function ff(e,t,n,s){let r;const i=n,o=O(e);if(o||J(e)){const l=o&&qe(e);let c=!1,d=!1;l&&(c=!de(e),d=Ie(e),e=dn(e)),r=new Array(e.length);for(let a=0,p=e.length;a<p;a++)r[a]=t(c?d?Je(pe(e[a])):pe(e[a]):e[a],a,void 0,i)}else if(typeof e=="number")if(!Number.isInteger(e)||e<0)r=[];else{r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if(H(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,d=l.length;c<d;c++){const a=l[c];r[c]=t(e[a],a,c,i)}}else r=[];return r}function cf(e,t){for(let n=0;n<t.length;n++){const s=t[n];if(O(s))for(let r=0;r<s.length;r++)e[s[r].name]=s[r].fn;else s&&(e[s.name]=s.key?(...r)=>{const i=s.fn(...r);return i&&(i.key=s.key),i}:s.fn)}return e}function uf(e,t,n,s,r,i){if(n==null&&(n={}),te.ce||te.parent&&ft(te.parent)&&te.parent.ce){const d=n,a=Object.keys(d).length>0;return t!=="default"&&(d.name=t),Xn(),Qn(ce,null,[Pe("slot",d,s)],a?-2:64)}let o=e[t];o&&o._c&&(o._d=!1);const l=He.length;Xn();let c;try{const d=o&&Lr(o(n)),a=n.key||i||d&&d.key;c=Qn(ce,{key:(a&&!he(a)?a:`_${t}`)+(!d&&s?"_fb":"")},d||(s?s():[]),d&&e._===1?64:-2)}catch(d){for(let a=He.length;a>l;a--)ds();throw d}finally{o&&o._c&&(o._d=!0)}return c}function Lr(e){return e.some(t=>Sn(t)?!(t.type===ge||t.type===ce&&!Lr(t.children)):!0)?e:null}const qn=e=>e?fi(e)?Cn(e):qn(e.parent):null,St=Z(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>qn(e.parent),$root:e=>qn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Kr(e),$forceUpdate:e=>e.f||(e.f=()=>{fs(e.update)}),$nextTick:e=>e.n||(e.n=Er.bind(e.proxy)),$watch:e=>go.bind(e)}),Nn=(e,t)=>e!==N&&!e.__isScriptSetup&&V(e,t),Io={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const C=o[t];if(C!==void 0)switch(C){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Nn(s,t))return o[t]=1,s[t];if(r!==N&&V(r,t))return o[t]=2,r[t];if(V(i,t))return o[t]=3,i[t];if(n!==N&&V(n,t))return o[t]=4,n[t];Gn&&(o[t]=0)}}const d=St[t];let a,p;if(d)return t==="$attrs"&&ne(e.attrs,"get",""),d(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(n!==N&&V(n,t))return o[t]=4,n[t];if(p=c.config.globalProperties,V(p,t))return p[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Nn(r,t)?(r[t]=n,!0):s!==N&&V(s,t)?(s[t]=n,!0):V(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==N&&l[0]!=="$"&&V(e,l)||Nn(t,l)||V(i,l)||V(s,l)||V(St,l)||V(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:V(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Qt(e){return O(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function af(e,t){return!e||!t?e||t:O(e)&&O(t)?e.concat(t):Z({},Qt(e),Qt(t))}let Gn=!0;function Fo(e){const t=Kr(e),n=e.proxy,s=e.ctx;Gn=!1,t.beforeCreate&&Ms(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:d,created:a,beforeMount:p,mounted:C,beforeUpdate:w,updated:I,activated:A,deactivated:q,beforeDestroy:B,beforeUnmount:j,destroyed:L,unmounted:P,render:Y,renderTracked:Ke,renderTriggered:xe,errorCaptured:Ue,serverPrefetch:It,expose:ze,inheritAttrs:ut,components:Ft,directives:Nt,filters:Tn}=t;if(d&&No(d,s,null),o)for(const G in o){const U=o[G];R(U)&&(s[G]=U.bind(n))}if(r){const G=r.call(n,n);H(G)&&(e.data=os(G))}if(Gn=!0,i)for(const G in i){const U=i[G],Ye=R(U)?U.bind(n,n):R(U.get)?U.get.bind(n,n):Ae,jt=!R(U)&&R(U.set)?U.set.bind(n):Ae,Xe=_l({get:Ye,set:jt});Object.defineProperty(s,G,{enumerable:!0,configurable:!0,get:()=>Xe.value,set:_e=>Xe.value=_e})}if(l)for(const G in l)$r(l[G],s,n,G);if(c){const G=R(c)?c.call(n):c;Reflect.ownKeys(G).forEach(U=>{uo(U,G[U])})}a&&Ms(a,e,"c");function ie(G,U){O(U)?U.forEach(Ye=>G(Ye.bind(n))):U&&G(U.bind(n))}if(ie(vo,p),ie(So,C),ie(wo,w),ie(Co,I),ie(yo,A),ie(bo,q),ie(Po,Ue),ie(Ao,Ke),ie(Eo,xe),ie(To,j),ie(Vr,P),ie(Oo,It),O(ze))if(ze.length){const G=e.exposed||(e.exposed={});ze.forEach(U=>{Object.defineProperty(G,U,{get:()=>n[U],set:Ye=>n[U]=Ye,enumerable:!0})})}else e.exposed||(e.exposed={});Y&&e.render===Ae&&(e.render=Y),ut!=null&&(e.inheritAttrs=ut),Ft&&(e.components=Ft),Nt&&(e.directives=Nt),It&&jr(e)}function No(e,t,n=Ae){O(e)&&(e=Jn(e));for(const s in e){const r=e[s];let i;H(r)?"default"in r?i=Wt(r.from||s,r.default,!0):i=Wt(r.from||s):i=Wt(r),Q(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Ms(e,t,n){be(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function $r(e,t,n,s){let r=s.includes(".")?Fr(n,s):()=>n[s];if(J(e)){const i=t[e];R(i)&&In(r,i)}else if(R(e))In(r,e.bind(n));else if(H(e))if(O(e))e.forEach(i=>$r(i,t,n,s));else{const i=R(e.handler)?e.handler.bind(n):t[e.handler];R(i)&&In(r,i,e)}}function Kr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(d=>Zt(c,d,o,!0)),Zt(c,t,o)),H(t)&&i.set(t,c),c}function Zt(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Zt(e,i,n,!0),r&&r.forEach(o=>Zt(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=jo[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const jo={data:Rs,props:Is,emits:Is,methods:_t,computed:_t,beforeCreate:oe,created:oe,beforeMount:oe,mounted:oe,beforeUpdate:oe,updated:oe,beforeDestroy:oe,beforeUnmount:oe,destroyed:oe,unmounted:oe,activated:oe,deactivated:oe,errorCaptured:oe,serverPrefetch:oe,components:_t,directives:_t,watch:Vo,provide:Rs,inject:Do};function Rs(e,t){return t?e?function(){return Z(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Do(e,t){return _t(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function oe(e,t){return e?[...new Set([].concat(e,t))]:t}function _t(e,t){return e?Z(Object.create(null),e,t):t}function Is(e,t){return e?O(e)&&O(t)?[...new Set([...e,...t])]:Z(Object.create(null),Qt(e),Qt(t??{})):t}function Vo(e,t){if(!e)return t;if(!t)return e;const n=Z(Object.create(null),e);for(const s in t)n[s]=oe(e[s],t[s]);return n}function Ur(){return{app:null,config:{isNativeTag:Zs,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ho=0;function Lo(e,t){return function(s,r=null){R(s)||(s=Z({},s)),r!=null&&!H(r)&&(r=null);const i=Ur(),o=new WeakSet,l=[];let c=!1;const d=i.app={_uid:Ho++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:ml,get config(){return i.config},set config(a){},use(a,...p){return o.has(a)||(a&&R(a.install)?(o.add(a),a.install(d,...p)):R(a)&&(o.add(a),a(d,...p))),d},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),d},component(a,p){return p?(i.components[a]=p,d):i.components[a]},directive(a,p){return p?(i.directives[a]=p,d):i.directives[a]},mount(a,p,C){if(!c){const w=d._ceVNode||Pe(s,r);return w.appContext=i,C===!0?C="svg":C===!1&&(C=void 0),e(w,a,C),c=!0,d._container=a,a.__vue_app__=d,Cn(w.component)}},onUnmount(a){l.push(a)},unmount(){c&&(be(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(a,p){return i.provides[a]=p,d},runWithContext(a){const p=rt;rt=d;try{return a()}finally{rt=p}}};return d}}let rt=null;function df(e,t,n=N){const s=wn(),r=re(t),i=Le(t),o=Wr(e,r),l=Qi((c,d)=>{let a,p=N,C;return po(()=>{const w=e[r];ee(a,w)&&(a=w,d())}),{get(){return c(),n.get?n.get(a):a},set(w){const I=n.set?n.set(w):w;if(!ee(I,a)&&!(p!==N&&ee(w,p)))return;const A=s.vnode.props,q=!!(A&&(t in A||r in A||i in A)&&(`onUpdate:${t}`in A||`onUpdate:${r}`in A||`onUpdate:${i}`in A));q||(a=w,d()),s.emit(`update:${t}`,I),ee(w,p)&&(ee(w,I)&&!ee(I,C)||q&&p!==N&&!ee(I,a))&&d(),p=w,C=I}}});return l[Symbol.iterator]=()=>{let c=0;return{next(){return c<2?{value:c++?o||N:l,done:!1}:{done:!0}}}},l}const Wr=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${re(t)}Modifiers`]||e[`${Le(t)}Modifiers`];function $o(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||N;let r=n;const i=t.startsWith("update:"),o=i&&Wr(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>J(a)?a.trim():a)),o.number&&(r=r.map(cn)));let l,c=s[l=On(t)]||s[l=On(re(t))];!c&&i&&(c=s[l=On(Le(t))]),c&&be(c,e,6,r);const d=s[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,be(d,e,6,r)}}const Ko=new WeakMap;function Br(e,t,n=!1){const s=n?Ko:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!R(e)){const c=d=>{const a=Br(d,t,!0);a&&(l=!0,Z(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(H(e)&&s.set(e,null),null):(O(i)?i.forEach(c=>o[c]=null):Z(o,i),H(e)&&s.set(e,o),o)}function xn(e,t){return!e||!sn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),V(e,t[0].toLowerCase()+t.slice(1))||V(e,Le(t))||V(e,t))}function Fs(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:d,renderCache:a,props:p,data:C,setupState:w,ctx:I,inheritAttrs:A}=e,q=zt(e);let B,j;try{if(n.shapeFlag&4){const P=r||s,Y=P;B=Ee(d.call(Y,P,a,p,w,C,I)),j=l}else{const P=t;B=Ee(P.length>1?P(p,{attrs:l,slots:o,emit:c}):P(p,null)),j=t.props?l:Uo(l)}}catch(P){He.length=0,_n(P,e,1),B=Pe(ge)}let L=B;if(j&&A!==!1){const P=Object.keys(j),{shapeFlag:Y}=L;P.length&&Y&7&&(i&&P.some(rn)&&(j=Wo(j,i)),L=ct(L,j,!1,!0))}if(n.dirs&&(L=ct(L,null,!1,!0),L.dirs=L.dirs?L.dirs.concat(n.dirs):n.dirs),n.transition){const P=yn(L.type)&&Nr(L)||L;Yt(P,n.transition)}return B=L,zt(q),B}function qr(e,t=!0){let n;for(let s=0;s<e.length;s++){const r=e[s];if(Sn(r)){if(r.type!==ge||r.children==="v-if"){if(n)return;n=r}}else return}return n}const Uo=e=>{let t;for(const n in e)(n==="class"||n==="style"||sn(n))&&((t||(t={}))[n]=e[n]);return t},Wo=(e,t)=>{const n={};for(const s in e)(!rn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Bo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ns(s,o,d):!!o;if(c&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const C=a[p];if(Gr(o,s,C)&&!xn(d,C))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:s===o?!1:s?o?Ns(s,o,d):!0:!!o;return!1}function Ns(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const i=s[r];if(!V(e,i)||Gr(t,e,i)&&!xn(n,i))return!0}return!1}function Gr(e,t,n){const s=e[n],r=t[n];return n==="style"&&H(s)&&H(r)?!Ge(s,r):s!==r}function qo({vnode:e,parent:t,suspense:n},s){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.suspense.vnode.el=r.el=s,e=r),r===e)(e=t.vnode).el=s,t=t.parent;else break}n&&n.activeBranch===e&&(n.vnode.el=s)}const Jr={},zr=()=>Object.create(Jr),Yr=e=>Object.getPrototypeOf(e)===Jr;function Go(e,t,n,s=!1){const r={},i=zr();e.propsDefaults=Object.create(null),Xr(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Bi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Jo(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=D(r),[c]=e.propsOptions;let d=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let C=a[p];if(xn(e.emitsOptions,C))continue;const w=t[C];if(c)if(V(i,C))w!==i[C]&&(i[C]=w,d=!0);else{const I=re(C);r[I]=zn(c,l,I,w,e,!1)}else w!==i[C]&&(i[C]=w,d=!0)}}}else{Xr(e,t,r,i)&&(d=!0);let a;for(const p in l)(!t||!V(t,p)&&((a=Le(p))===p||!V(t,a)))&&(c?n&&(n[p]!==void 0||n[a]!==void 0)&&(r[p]=zn(c,l,p,void 0,e,!0)):delete r[p]);if(i!==l)for(const p in i)(!t||!V(t,p))&&(delete i[p],d=!0)}d&&De(e.attrs,"set","")}function Xr(e,t,n,s){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let c in t){if(yt(c))continue;const d=t[c];let a;r&&V(r,a=re(c))?!i||!i.includes(a)?n[a]=d:(l||(l={}))[a]=d:xn(e.emitsOptions,c)||(!(c in s)||d!==s[c])&&(s[c]=d,o=!0)}if(i){const c=D(n),d=l||N;for(let a=0;a<i.length;a++){const p=i[a];n[p]=zn(r,c,p,d[p],e,!V(d,p))}}return o}function zn(e,t,n,s,r,i){const o=e[n];if(o!=null){const l=V(o,"default");if(l&&s===void 0){const c=o.default;if(o.type!==Function&&!o.skipFactory&&R(c)){const{propsDefaults:d}=r;if(n in d)s=d[n];else{const a=Rt(r);s=d[n]=c.call(null,t),a()}}else s=c;r.ce&&r.ce._setProp(n,s)}o[0]&&(i&&!l?s=!1:o[1]&&(s===""||s===Le(n))&&(s=!0))}return s}const zo=new WeakMap;function Qr(e,t,n=!1){const s=n?zo:t.propsCache,r=s.get(e);if(r)return r;const i=e.props,o={},l=[];let c=!1;if(!R(e)){const a=p=>{c=!0;const[C,w]=Qr(p,t,!0);Z(o,C),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return H(e)&&s.set(e,tt),tt;if(O(i))for(let a=0;a<i.length;a++){const p=re(i[a]);js(p)&&(o[p]=N)}else if(i)for(const a in i){const p=re(a);if(js(p)){const C=i[a],w=o[p]=O(C)||R(C)?{type:C}:Z({},C),I=w.type;let A=!1,q=!0;if(O(I))for(let B=0;B<I.length;++B){const j=I[B],L=R(j)&&j.name;if(L==="Boolean"){A=!0;break}else L==="String"&&(q=!1)}else A=R(I)&&I.name==="Boolean";w[0]=A,w[1]=q,(A||V(w,"default"))&&l.push(p)}}const d=[o,l];return H(e)&&s.set(e,d),d}function js(e){return e[0]!=="$"&&!yt(e)}const us=e=>e==="_"||e==="_ctx"||e==="$stable",as=e=>O(e)?e.map(Ee):[Ee(e)],Yo=(e,t,n)=>{if(t._n)return t;const s=co((...r)=>as(t(...r)),n);return s._c=!1,s},Zr=(e,t,n)=>{const s=e._ctx;for(const r in e){if(us(r))continue;const i=e[r];if(R(i))t[r]=Yo(r,i,s);else if(i!=null){const o=as(i);t[r]=()=>o}}},kr=(e,t)=>{const n=as(t);e.slots.default=()=>n},ei=(e,t,n)=>{for(const s in t)(n||!us(s))&&(e[s]=t[s])},Xo=(e,t,n)=>{const s=e.slots=zr();if(e.vnode.shapeFlag&32){const r=t._;r?(ei(s,t,n),n&&nr(s,"_",r,!0)):Zr(t,s)}else t&&kr(e,t)},Qo=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=N;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:ei(r,t,n):(i=!t.$stable,Zr(t,r)),o=t}else t&&(kr(e,t),o={default:1});if(i)for(const l in r)!us(l)&&o[l]==null&&delete r[l]},fe=nl;function Zo(e){return ko(e)}function ko(e,t){const n=un();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:d,setElementText:a,parentNode:p,nextSibling:C,setScopeId:w=Ae,insertStaticContent:I}=e,A=(f,u,h,y=null,_=null,m=null,v=void 0,x=null,b=!!u.dynamicChildren)=>{if(f===u)return;f&&!gt(f,u)&&(y=Dt(f),_e(f,_,m,!0),f=null),u.patchFlag===-2&&(b=!1,u.dynamicChildren=null),u.dynamicChildren&&f&&f.dynamicChildren&&f.dynamicChildren.hasOnce&&(u.dynamicChildren===tt&&(u.dynamicChildren=[]),u.dynamicChildren.hasOnce=!0);const{type:g,ref:T,shapeFlag:S}=u;switch(g){case vn:q(f,u,h,y);break;case ge:B(f,u,h,y);break;case Dn:f==null&&j(u,h,y,v);break;case ce:Ft(f,u,h,y,_,m,v,x,b);break;default:S&1?Y(f,u,h,y,_,m,v,x,b):S&6?Nt(f,u,h,y,_,m,v,x,b):(S&64||S&128)&&g.process(f,u,h,y,_,m,v,x,b,dt)}T!=null&&_?vt(T,f&&f.ref,m,u||f,!u):T==null&&f&&f.ref!=null&&vt(f.ref,null,m,f,!0)},q=(f,u,h,y)=>{if(f==null)s(u.el=l(u.children),h,y);else{const _=u.el=f.el;u.children!==f.children&&d(_,u.children)}},B=(f,u,h,y)=>{f==null?s(u.el=c(u.children||""),h,y):u.el=f.el},j=(f,u,h,y)=>{[f.el,f.anchor]=I(f.children,u,h,y,f.el,f.anchor)},L=({el:f,anchor:u},h,y)=>{let _;for(;f&&f!==u;)_=C(f),s(f,h,y),f=_;s(u,h,y)},P=({el:f,anchor:u})=>{let h;for(;f&&f!==u;)h=C(f),r(f),f=h;r(u)},Y=(f,u,h,y,_,m,v,x,b)=>{if(u.type==="svg"?v="svg":u.type==="math"&&(v="mathml"),f==null)Ke(u,h,y,_,m,v,x,b);else{const g=f.el&&f.el._isVueCE?f.el:null;try{g&&g._beginPatch(),It(f,u,_,m,v,x,b)}finally{g&&g._endPatch()}}},Ke=(f,u,h,y,_,m,v,x)=>{let b,g;const{props:T,shapeFlag:S,transition:E,dirs:M}=f;if(b=f.el=o(f.type,m,T&&T.is,T),S&8?a(b,f.children):S&16&&Ue(f.children,b,null,y,_,jn(f,m),v,x),M&&Qe(f,null,y,"created"),xe(b,f,f.scopeId,v,y),T){for(const K in T)K!=="value"&&!yt(K)&&i(b,K,null,T[K],m,y);"value"in T&&i(b,"value",null,T.value,m),(g=T.onVnodeBeforeMount)&&Ce(g,y,f)}M&&Qe(f,null,y,"beforeMount");const F=el(_,E);F&&E.beforeEnter(b),s(b,u,h),((g=T&&T.onVnodeMounted)||F||M)&&fe(()=>{try{g&&Ce(g,y,f),F&&E.enter(b),M&&Qe(f,null,y,"mounted")}finally{}},_)},xe=(f,u,h,y,_)=>{if(h&&w(f,h),y)for(let m=0;m<y.length;m++)w(f,y[m]);if(_){let m=_.subTree;if(u===m||si(m.type)&&(m.ssContent===u||m.ssFallback===u)){const v=_.vnode;xe(f,v,v.scopeId,v.slotScopeIds,_.parent)}}},Ue=(f,u,h,y,_,m,v,x,b=0)=>{for(let g=b;g<f.length;g++){const T=f[g]=x?je(f[g]):Ee(f[g]);A(null,T,u,h,y,_,m,v,x)}},It=(f,u,h,y,_,m,v)=>{const x=u.el=f.el;let{patchFlag:b,dynamicChildren:g,dirs:T}=u;b|=f.patchFlag&16;const S=f.props||N,E=u.props||N;let M;if(h&&Ze(h,!1),(M=E.onVnodeBeforeUpdate)&&Ce(M,h,u,f),T&&Qe(u,f,h,"beforeUpdate"),h&&Ze(h,!0),g&&(!f.dynamicChildren||f.dynamicChildren.length!==g.length)&&(b=0,v=!1,g=null),(S.innerHTML&&E.innerHTML==null||S.textContent&&E.textContent==null)&&a(x,""),g?ze(f.dynamicChildren,g,x,h,y,jn(u,_),m):v||U(f,u,x,null,h,y,jn(u,_),m,!1),b>0){if(b&16)ut(x,S,E,h,_);else if(b&2&&S.class!==E.class&&i(x,"class",null,E.class,_),b&4&&i(x,"style",S.style,E.style,_),b&8){const F=u.dynamicProps;for(let K=0;K<F.length;K++){const $=F[K],z=S[$],k=E[$];(k!==z||$==="value")&&i(x,$,z,k,_,h)}}b&1&&f.children!==u.children&&a(x,u.children)}else!v&&g==null&&ut(x,S,E,h,_);((M=E.onVnodeUpdated)||T)&&fe(()=>{M&&Ce(M,h,u,f),T&&Qe(u,f,h,"updated")},y)},ze=(f,u,h,y,_,m,v)=>{for(let x=0;x<u.length;x++){const b=f[x],g=u[x],T=b.el||Yn(b),S=T&&(b.type===ce||!gt(b,g)||b.shapeFlag&198)?p(T):h;A(b,g,S,null,y,_,m,v,!0)}},ut=(f,u,h,y,_)=>{if(u!==h){if(u!==N)for(const m in u)!yt(m)&&!(m in h)&&i(f,m,u[m],null,_,y);for(const m in h){if(yt(m))continue;const v=h[m],x=u[m];v!==x&&m!=="value"&&i(f,m,x,v,_,y)}"value"in h&&i(f,"value",u.value,h.value,_)}},Ft=(f,u,h,y,_,m,v,x,b)=>{const g=u.el=f?f.el:l(""),T=u.anchor=f?f.anchor:l("");let{patchFlag:S,dynamicChildren:E,slotScopeIds:M}=u;M&&(x=x?x.concat(M):M),f==null?(s(g,h,y),s(T,h,y),Ue(u.children||[],h,T,_,m,v,x,b)):S>0&&S&64&&E&&f.dynamicChildren&&f.dynamicChildren.length===E.length?(ze(f.dynamicChildren,E,h,_,m,v,x),(u.key!=null||_&&u===_.subTree)&&ti(f,u,!0)):U(f,u,h,T,_,m,v,x,b)},Nt=(f,u,h,y,_,m,v,x,b)=>{u.slotScopeIds=x,f==null?u.shapeFlag&512?_.ctx.activate(u,h,y,v,b):Tn(u,h,y,_,m,v,b):hs(f,u,b)},Tn=(f,u,h,y,_,m,v)=>{const x=f.component=cl(f,y,_);if(cs(f)&&(x.ctx.renderer=dt),ul(x,!1,v),x.asyncDep){if(_&&_.registerDep(x,ie,v,m),!f.el){const b=x.subTree=Pe(ge);B(null,b,u,h),f.placeholder=b.el}}else ie(x,f,u,h,_,m,v)},hs=(f,u,h)=>{const y=u.component=f.component;if(Bo(f,u,h))if(y.asyncDep&&!y.asyncResolved){u.el=f.el,u.placeholder=f.placeholder,G(y,u,h);return}else y.next=u,y.update();else u.el=f.el,u.placeholder=f.placeholder,y.vnode=u},ie=(f,u,h,y,_,m,v)=>{const x=()=>{if(f.isMounted){let{next:S,bu:E,u:M,parent:F,vnode:K}=f;{const Se=ni(f);if(Se){S&&(S.el=K.el,G(f,S,v)),Se.asyncDep.then(()=>{fe(()=>{f.isUnmounted||g()},_)});return}}let $=S,z;Ze(f,!1),S?(S.el=K.el,G(f,S,v)):S=K,E&&Ut(E),(z=S.props&&S.props.onVnodeBeforeUpdate)&&Ce(z,F,S,K),Ze(f,!0);const k=Fs(f),ve=f.subTree;f.subTree=k,A(ve,k,p(ve.el),Dt(ve),f,_,m),S.el=k.el,$===null&&qo(f,k.el),M&&fe(M,_),(z=S.props&&S.props.onVnodeUpdated)&&fe(()=>Ce(z,F,S,K),_)}else{let S;const{el:E,props:M}=u,{bm:F,m:K,parent:$,root:z,type:k}=f,ve=ft(u);Ze(f,!1),F&&Ut(F),!ve&&(S=M&&M.onVnodeBeforeMount)&&Ce(S,$,u),Ze(f,!0);{z.ce&&z.ce._hasShadowRoot()&&z.ce._injectChildStyle(k,f.parent?f.parent.type:void 0);const Se=f.subTree=Fs(f);A(null,Se,h,y,f,_,m),u.el=Se.el}if(K&&fe(K,_),!ve&&(S=M&&M.onVnodeMounted)){const Se=u;fe(()=>Ce(S,$,Se),_)}(u.shapeFlag&256||$&&ft($.vnode)&&$.vnode.shapeFlag&256)&&f.a&&fe(f.a,_),f.isMounted=!0,u=h=y=null}};f.scope.on();const b=f.effect=new lr(x);f.scope.off();const g=f.update=b.run.bind(b),T=f.job=b.runIfDirty.bind(b);T.i=f,T.id=f.uid,b.scheduler=()=>fs(T),Ze(f,!0),g()},G=(f,u,h)=>{u.component=f;const y=f.vnode.props;f.vnode=u,f.next=null,Jo(f,u.props,y,h),Qo(f,u.children,h),Me(),Pr(f),Re()},U=(f,u,h,y,_,m,v,x,b=!1)=>{const g=f&&f.children,T=f?f.shapeFlag:0,S=u.children,{patchFlag:E,shapeFlag:M}=u;if(E>0){if(E&128){jt(g,S,h,y,_,m,v,x,b);return}else if(E&256){Ye(g,S,h,y,_,m,v,x,b);return}}M&8?(T&16&&at(g,_,m),S!==g&&a(h,S)):T&16?M&16?jt(g,S,h,y,_,m,v,x,b):at(g,_,m,!0):(T&8&&a(h,""),M&16&&Ue(S,h,y,_,m,v,x,b))},Ye=(f,u,h,y,_,m,v,x,b)=>{f=f||tt,u=u||tt;const g=f.length,T=u.length,S=Math.min(g,T);let E;for(E=0;E<S;E++){const M=u[E]=b?je(u[E]):Ee(u[E]);A(f[E],M,h,null,_,m,v,x,b)}g>T?at(f,_,m,!0,!1,S):Ue(u,h,y,_,m,v,x,b,S)},jt=(f,u,h,y,_,m,v,x,b)=>{let g=0;const T=u.length;let S=f.length-1,E=T-1;for(;g<=S&&g<=E;){const M=f[g],F=u[g]=b?je(u[g]):Ee(u[g]);if(gt(M,F))A(M,F,h,null,_,m,v,x,b);else break;g++}for(;g<=S&&g<=E;){const M=f[S],F=u[E]=b?je(u[E]):Ee(u[E]);if(gt(M,F))A(M,F,h,null,_,m,v,x,b);else break;S--,E--}if(g>S){if(g<=E){const M=E+1,F=M<T?u[M].el:y;for(;g<=E;)A(null,u[g]=b?je(u[g]):Ee(u[g]),h,F,_,m,v,x,b),g++}}else if(g>E)for(;g<=S;)_e(f[g],_,m,!0),g++;else{const M=g,F=g,K=new Map;for(g=F;g<=E;g++){const ue=u[g]=b?je(u[g]):Ee(u[g]);ue.key!=null&&K.set(ue.key,g)}let $,z=0;const k=E-F+1;let ve=!1,Se=0;const ht=new Array(k);for(g=0;g<k;g++)ht[g]=0;for(g=M;g<=S;g++){const ue=f[g];if(z>=k){_e(ue,_,m,!0);continue}let we;if(ue.key!=null)we=K.get(ue.key);else for($=F;$<=E;$++)if(ht[$-F]===0&&gt(ue,u[$])){we=$;break}we===void 0?_e(ue,_,m,!0):(ht[we-F]=g+1,we>=Se?Se=we:ve=!0,A(ue,u[we],h,null,_,m,v,x,b),z++)}const ms=ve?tl(ht):tt;for($=ms.length-1,g=k-1;g>=0;g--){const ue=F+g,we=u[ue],ys=u[ue+1],bs=ue+1<T?ys.el||Yn(ys):y;ht[g]===0?A(null,we,h,bs,_,m,v,x,b):ve&&($<0||g!==ms[$]?Xe(we,h,bs,2):$--)}}},Xe=(f,u,h,y,_=null)=>{const{el:m,type:v,transition:x,children:b,shapeFlag:g}=f;if(g&6){Xe(f.component.subTree,u,h,y);return}if(g&128){f.suspense.move(u,h,y);return}if(g&64){v.move(f,u,h,dt);return}if(v===ce){s(m,u,h);for(let S=0;S<b.length;S++)Xe(b[S],u,h,y);s(f.anchor,u,h);return}if(v===Dn){L(f,u,h);return}if(y!==2&&g&1&&x)if(y===0)x.persisted&&!m[Fn]?s(m,u,h):(x.beforeEnter(m),s(m,u,h),fe(()=>x.enter(m),_));else{const{leave:S,delayLeave:E,afterLeave:M}=x,F=()=>{f.ctx.isUnmounted?r(m):s(m,u,h)},K=()=>{const $=m._isLeaving||!!m[Fn];m._isLeaving&&m[Fn](!0),x.persisted&&!$?F():S(m,()=>{F(),M&&M()})};E?E(m,F,K):K()}else s(m,u,h)},_e=(f,u,h,y=!1,_=!1)=>{const{type:m,props:v,ref:x,children:b,dynamicChildren:g,shapeFlag:T,patchFlag:S,dirs:E,cacheIndex:M,memo:F}=f;if((S===-2||g&&g.hasOnce)&&(_=!1),x!=null&&(Me(),vt(x,null,h,f,!0),Re()),M!=null&&(!f.ctx||f.ctx===u)&&(u.renderCache[M]=void 0),T&256){u.ctx.deactivate(f);return}const K=T&1&&E,$=!ft(f);let z;if($&&(z=v&&v.onVnodeBeforeUnmount)&&Ce(z,u,f),T&6)ai(f.component,h,y);else{if(T&128){f.suspense.unmount(h,y);return}K&&Qe(f,null,u,"beforeUnmount"),T&64?f.type.remove(f,u,h,dt,y):g&&!g.hasOnce&&(m!==ce||S>0&&S&64)?at(g,u,h,!1,!0):(m===ce&&S&384||!_&&T&16)&&at(b,u,h),y&&ps(f)}const k=F!=null&&M==null;($&&(z=v&&v.onVnodeUnmounted)||K||k)&&fe(()=>{z&&Ce(z,u,f),K&&Qe(f,null,u,"unmounted"),k&&(f.el=null)},h)},ps=f=>{const{type:u,el:h,anchor:y,transition:_}=f,m=u===ce;if(m&&!_){gs(h,y);return}if(u===Dn){P(f),_&&!_.persisted&&_.afterLeave&&_.afterLeave();return}const v=m?Bn(f):f,x=()=>{m?p(h)&&gs(h,y):r(h),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(v&&v.shapeFlag&1&&_&&!_.persisted){const{leave:b,delayLeave:g}=_,T=v.el,S=()=>b(T,x);g?g(T,x,S):S()}else x()},gs=(f,u)=>{let h;for(;f!==u;)h=C(f),r(f),f=h;r(u)},ai=(f,u,h)=>{const{bum:y,scope:_,job:m,subTree:v,um:x,m:b,a:g}=f;Ds(b),Ds(g),y&&Ut(y),_.stop(),m?(m.flags|=8,_e(v,f,u,h)):f.vnode.el&&v&&(v.transition=f.vnode.transition,_e(v,f,u,h)),x&&fe(x,u),fe(()=>{f.isUnmounted=!0},u)},at=(f,u,h,y=!1,_=!1,m=0)=>{for(let v=m;v<f.length;v++)_e(f[v],u,h,y,_)},Dt=f=>{if(f.shapeFlag&6)return Dt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=C(f.anchor||f.el),h=u&&u[_o];return h?C(h):u},_s=(f,u,h)=>{const y=f&&u._vnode?void 0:f&&f.component?f.component.uid:fl();fo(()=>{f==null?u._vnode&&_e(u._vnode,null,null,!0):A(u._vnode||null,f,u,null,null,null,h),u._vnode=f},y)},dt={p:A,um:_e,m:Xe,r:ps,mt:Tn,mc:Ue,pc:U,pbc:ze,n:Dt,o:e};return{render:_s,hydrate:void 0,createApp:Lo(_s)}}function jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ze({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function el(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ti(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let i=0;i<s.length;i++){const o=s[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=je(r[i]),l.el=o.el),!n&&l.patchFlag!==-2&&ti(o,l)),l.type===vn&&(l.patchFlag===-1&&(l=r[i]=je(l)),l.el=o.el),l.type===ge&&!l.el&&(l.el=o.el)}}function tl(e){const t=e.slice(),n=[0];let s,r,i,o,l;const c=e.length;for(s=0;s<c;s++){const d=e[s];if(d!==0){if(r=n[n.length-1],e[r]<d){t[s]=r,n.push(s);continue}for(i=0,o=n.length-1;i<o;)l=i+o>>1,e[n[l]]<d?i=l+1:o=l;d<e[n[i]]&&(i>0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ni(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ni(t)}function Ds(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Yn(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Yn(t.subTree):null}const si=e=>e.__isSuspense;function nl(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):lo(e)}const ce=Symbol.for("v-fgt"),vn=Symbol.for("v-txt"),ge=Symbol.for("v-cmt"),Dn=Symbol.for("v-stc"),He=[];let ae=null;function Xn(e=!1){He.push(ae=e?null:[])}function ds(){He.pop(),ae=He[He.length-1]||null}let Ot=1;function Vs(e,t=!1){Ot+=e,e<0&&ae&&t&&(ae.hasOnce=!0)}function ri(e){return e.dynamicChildren=Ot>0?ae||tt:null,ds(),Ot>0&&ae&&ae.push(e),e}function hf(e,t,n,s,r,i){return ri(oi(e,t,n,s,r,i,!0))}function Qn(e,t,n,s,r){return ri(Pe(e,t,n,s,r,!0))}function Sn(e){return e?e.__v_isVNode===!0:!1}function gt(e,t){return e.type===t.type&&e.key===t.key}const ii=({key:e})=>e??null,Bt=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?J(e)||Q(e)||R(e)?{i:te,r:e,k:t,f:!!n}:e:null);function oi(e,t=null,n=null,s=0,r=null,i=e===ce?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ii(t),ref:t&&Bt(t),scopeId:Ir,slotScopeIds:null,children:n,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:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:te};return l?(kt(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=J(n)?8:16),Ot>0&&!o&&ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&ae.push(c),c}const Pe=sl;function sl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Hr)&&(e=ge),Sn(e)){const l=ct(e,t,!0);return n&&kt(l,n),Ot>0&&!i&&ae&&(l.shapeFlag&6?ae[ae.indexOf(e)]=l:ae.push(l)),l.patchFlag=-2,l}if(gl(e)&&(e=e.__vccOpts),t){t=rl(t);let{class:l,style:c}=t;l&&!J(l)&&(t.class=ns(l)),H(c)&&(gn(c)&&!O(c)&&(c=Z({},c)),t.style=ts(c))}const o=J(e)?1:si(e)?128:yn(e)?64:H(e)?4:R(e)?2:0;return oi(e,t,n,s,r,o,i,!0)}function rl(e){return e?gn(e)||Yr(e)?Z({},e):e:null}function ct(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,d=t?ol(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&ii(d),ref:t&&t.ref?n&&i?O(i)?i.concat(Bt(t)):[i,Bt(t)]:Bt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ct(e.ssContent),ssFallback:e.ssFallback&&ct(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return c&&s&&Yt(a,c.clone(a)),a}function il(e=" ",t=0){return Pe(vn,null,e,t)}function pf(e="",t=!1){return t?(Xn(),Qn(ge,null,e)):Pe(ge,null,e)}function Ee(e){return e==null||typeof e=="boolean"?Pe(ge):O(e)?Pe(ce,null,e.slice()):Sn(e)?je(e):Pe(vn,null,String(e))}function je(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ct(e)}function kt(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),kt(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Yr(t)?t._ctx=te:r===3&&te&&(te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(s&65){kt(e,{default:t});return}t={default:t,_ctx:te},n=32}else t=String(t),s&64?(n=16,t=[il(t)]):n=8;e.children=t,e.shapeFlag|=n}function ol(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=ns([t.class,s.class]));else if(r==="style")t.style=ts([t.style,s.style]);else if(sn(r)){const i=t[r],o=s[r];o&&i!==o&&!(O(i)&&i.includes(o))?t[r]=i?[].concat(i,o):o:o==null&&i==null&&!rn(r)&&(t[r]=o)}else r!==""&&(t[r]=s[r])}return t}function Ce(e,t,n,s=null){be(e,t,7,[n,s])}const ll=Ur();let li=0;function fl(){return li}function cl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ll,i={uid:li++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new or(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Qr(s,r),emitsOptions:Br(s,r),emit:null,emitted:null,propsDefaults:N,inheritAttrs:s.inheritAttrs,ctx:N,data:N,props:N,attrs:N,slots:N,refs:N,setupState:N,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=$o.bind(null,i),e.ce&&e.ce(i),i}let se=null;const wn=()=>se||te;let en,Et;{const e=un(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};en=t("__VUE_INSTANCE_SETTERS__",n=>se=n),Et=t("__VUE_SSR_SETTERS__",n=>At=n)}const Rt=e=>{const t=se;return en(e),e.scope.on(),()=>{e.scope.off(),en(t)}},Hs=()=>{se&&se.scope.off(),en(null)};function fi(e){return e.vnode.shapeFlag&4}let At=!1;function ul(e,t=!1,n=!1){t&&Et(t);const{props:s,children:r}=e.vnode,i=fi(e);Go(e,s,i,t),Xo(e,r,n||t);const o=i?al(e,t):void 0;return t&&Et(!1),o}function al(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Io);const{setup:s}=n;if(s){Me();const r=e.setupContext=s.length>1?hl(e):null,i=Rt(e),o=Mt(s,e,0,[e.props,r]),l=ks(o);if(Re(),i(),(l||e.sp)&&!ft(e)&&jr(e),l){if(o.then(Hs,Hs),t)return o.then(c=>{Et(!0);try{Ls(e,c,t)}finally{Et(!1)}}).catch(c=>{_n(c,e,0)});e.asyncDep=o}else Ls(e,o)}else ci(e)}function Ls(e,t,n){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:H(t)&&(e.setupState=Tr(t)),ci(e)}function ci(e,t,n){const s=e.type;e.render||(e.render=s.render||Ae);{const r=Rt(e);Me();try{Fo(e)}finally{Re(),r()}}}const dl={get(e,t){return ne(e,"get",""),e[t]}};function hl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,dl),slots:e.slots,emit:e.emit,expose:t}}function Cn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Tr(qi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in St)return St[n](e)},has(t,n){return n in t||n in St}})):e.proxy}function pl(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function gl(e){return R(e)&&"__vccOpts"in e}const _l=(e,t)=>no(e,t,At),ml="3.5.44";/**
14
+ * @vue/runtime-dom v3.5.44
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/let Zn;const $s=typeof window<"u"&&window.trustedTypes;if($s)try{Zn=$s.createPolicy("vue",{createHTML:e=>e})}catch{}const ui=Zn?e=>Zn.createHTML(e):e=>e,yl="http://www.w3.org/2000/svg",bl="http://www.w3.org/1998/Math/MathML",Ne=typeof document<"u"?document:null,Ks=Ne&&Ne.createElement("template"),xl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ne.createElementNS(yl,e):t==="mathml"?Ne.createElementNS(bl,e):n?Ne.createElement(e,{is:n}):Ne.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ne.createTextNode(e),createComment:e=>Ne.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ne.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Ks.innerHTML=ui(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=Ks.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},vl=Symbol("_vtc");function Sl(e,t,n){const s=e[vl];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Us=Symbol("_vod"),wl=Symbol("_vsh"),Cl=Symbol(""),Tl=/(?:^|;)\s*display\s*:/;function Ol(e,t,n){const s=e.style,r=J(n);let i=!1;if(n&&!r){if(t)if(J(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&mt(s,l,"")}else for(const o in t)n[o]==null&&mt(s,o,"");for(const o in n){o==="display"&&(i=!0);const l=n[o];l!=null?Al(e,o,!J(t)&&t?t[o]:void 0,l)||mt(s,o,l):mt(s,o,"")}}else if(r){if(t!==n){const o=s[Cl];o&&(n+=";"+o),s.cssText=n,i=Tl.test(n)}}else t&&e.removeAttribute("style");Us in e&&((!r||t!==n)&&(e[Us]=i?s.display:""),e[wl]&&(s.display="none"))}const $t=/\s*!important$/;function mt(e,t,n){if(O(n))n.forEach(s=>mt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))$t.test(n)?e.setProperty(t,n.replace($t,""),"important"):e.setProperty(t,n);else{const s=El(e,t);$t.test(n)?e.setProperty(Le(s),n.replace($t,""),"important"):e[s]=n}}const Ws=["Webkit","Moz","ms"],Vn={};function El(e,t){const n=Vn[t];if(n)return n;let s=re(t);if(s!=="filter"&&s in e)return Vn[t]=s;s=fn(s);for(let r=0;r<Ws.length;r++){const i=Ws[r]+s;if(i in e)return Vn[t]=i}return t}function Al(e,t,n,s){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&J(s)&&n===s}const Bs="http://www.w3.org/1999/xlink";function qs(e,t,n,s,r,i=vi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Bs,t.slice(6,t.length)):e.setAttributeNS(Bs,t,n):n==null||i&&!sr(n)?e.removeAttribute(t):e.setAttribute(t,i?"":he(n)?String(n):n)}function Gs(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?ui(n):n);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(l!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let o=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=sr(n):n==null&&l==="string"?(n="",o=!0):l==="number"&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(r||t)}function et(e,t,n,s){e.addEventListener(t,n,s)}function Pl(e,t,n,s){e.removeEventListener(t,n,s)}const Js=Symbol("_vei");function Ml(e,t,n,s,r=null){const i=e[Js]||(e[Js]={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Fl(t);if(s){const d=i[t]=Dl(s,r);et(e,l,d,c)}else o&&(Pl(e,l,o,c),i[t]=void 0)}}const Rl=/(Once|Passive|Capture)$/,Il=/^on:?(?:Once|Passive|Capture)$/;function Fl(e){let t,n;for(;(n=e.match(Rl))&&!Il.test(e);)t||(t={}),e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):Le(e.slice(2)),t]}let Hn=0;const Nl=Promise.resolve(),jl=()=>Hn||(Nl.then(()=>Hn=0),Hn=Date.now());function Dl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const r=n.value;if(O(r)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const o=r.slice(),l=[s];for(let c=0;c<o.length&&!s._stopped;c++){const d=o[c];d&&be(d,t,5,l)}}else be(r,t,5,[s])};return n.value=e,n.attached=jl(),n}const zs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Vl=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Sl(e,s,o):t==="style"?Ol(e,n,s):sn(t)?rn(t)||Ml(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hl(e,t,s,o))?(Gs(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&qs(e,t,s,o,i,t!=="value")):e._isVueCE&&(Ll(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!J(s)))?Gs(e,re(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),qs(e,t,s,o))};function Hl(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&zs(t)&&R(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return zs(t)&&J(n)?!1:t in e}function Ll(e,t){const n=e._def.props;if(!n)return!1;const s=re(t);return Array.isArray(n)?n.some(r=>re(r)===s):Object.keys(n).some(r=>re(r)===s)}const tn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return O(t)?n=>Ut(t,n):t};function $l(e){e.target.composing=!0}function Ys(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const nt=Symbol("_assign"),Kt=Symbol("_initialValue");function Ln(e,t,n){return t&&(e=e.trim()),n&&(e=cn(e)),e}const gf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e.parentNode&&(e.type==="text"?e[Kt]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Kt]=e.defaultValue.replace(/\r\n?/g,`
18
+ `))),e[nt]=tn(r);const i=s||r.props&&r.props.type==="number";et(e,t?"change":"input",o=>{o.target.composing||e[nt](Ln(e.value,n,i))}),(n||i)&&et(e,"change",()=>{e.value=Ln(e.value,n,i)}),t||(et(e,"compositionstart",$l),et(e,"compositionend",Ys),et(e,"change",Ys))},mounted(e,{value:t,modifiers:{trim:n,number:s}}){const r=t??"",i=e[Kt];delete e[Kt],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[nt](Ln(e.value,n,s)):e.value=r},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[nt]=tn(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?cn(e.value):e.value,c=t??"";if(l===c)return;const d=e.getRootNode();(d instanceof Document||d instanceof ShadowRoot)&&d.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c)}},_f={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,et(e,"change",()=>{const r=Array.prototype.filter.call(e.options,c=>c.selected).map(c=>n?cn(nn(c)):nn(c)),i=e.multiple,o=i?it(e._modelValue)?new Set(r):r:r[0],l=e._pendingValue=[i,i?O(o)?r.slice():r:o];try{e[nt](o)}finally{Er(()=>{e._pendingValue===l&&(e._pendingValue=void 0)})}}),e[nt]=tn(s)},mounted(e,{value:t}){Xs(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[nt]=tn(n)},updated(e,{value:t}){const n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!Kl(t,n[1],n[0]))&&Xs(e,t)}};function Kl(e,t,n){if(!n||O(e))return Ge(e,t);if(it(e)){if(e.size!==t.length)return!1;for(const s of t)if(!e.has(s))return!1;return!0}return!1}function Xs(e,t){const n=e.multiple,s=O(t);if(!(n&&!s&&!it(t))){for(let r=0,i=e.options.length;r<i;r++){const o=e.options[r],l=nn(o);if(n)if(s){const c=typeof l;c==="string"||c==="number"?o.selected=t.some(d=>String(d)===String(l)):o.selected=Ci(t,l)>-1}else o.selected=t.has(l);else if(Ge(nn(o),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function nn(e){return"_value"in e?e._value:e.value}const Ul=["ctrl","shift","alt","meta"],Wl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ul.some(n=>e[`${n}Key`]&&!t.includes(n))},mf=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o<t.length;o++){const l=Wl[t[o]];if(l&&l(r,t))return}return e(r,...i)}))},Bl={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},yf=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const i=Le(r.key);if(t.some(o=>o===i||Bl[o]===i))return e(r)}))},ql=Z({patchProp:Vl},xl);let Qs;function Gl(){return Qs||(Qs=Zo(ql))}const bf=((...e)=>{const t=Gl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=zl(s);if(!r)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Jl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Jl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function zl(e){return J(e)?document.querySelector(e):e}const xf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};export{df as A,af as B,co as C,Q as D,tf as E,ce as F,yf as G,gf as H,sf as I,cf as J,bf as K,_f as L,Zl as M,Ji as N,Qi as O,ef as P,Wn as Q,wn as R,nf as S,Wt as T,Oi as U,Ql as V,Xl as W,xf as _,kl as a,Gi as b,_l as c,rf as d,hf as e,ff as f,mf as g,ns as h,oi as i,Ti as j,pf as k,So as l,il as m,Er as n,Xn as o,Pe as p,Qn as q,os as r,Bi as s,D as t,ls as u,lf as v,In as w,of as x,ts as y,uf as z};
@@ -0,0 +1 @@
1
+ const _=e=>fetch(e).then(t=>t.json(),()=>Promise.reject(new Error("unreachable"))),O=(e,t)=>fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})}).then(n=>n.json(),()=>Promise.reject(new Error("unreachable"))),d=(e,t)=>(e.details||[]).find(n=>n["@type"]===t),A=e=>{var t;return((t=d(e,"BadRequest"))==null?void 0:t.field_violations)||[]},y=e=>{var o,a;const t=d(e,"BadRequest");if(t&&t.field_violations)return t.field_violations.map(i=>i.description);const n=(a=(o=d(e,"ErrorInfo"))==null?void 0:o.metadata)==null?void 0:a.detail;return[n?String(n):e.message]},f=e=>{var t;return((t=d(e,"ErrorInfo"))==null?void 0:t.reason)||""},N=e=>fetch("/api/handoff?"+new URLSearchParams(e)).then(t=>t.ok?t.text():Promise.reject(new Error(String(t.status)))),P=e=>typeof e=="string"&&/^https:\/\//.test(e)?e:"",g="No workspace configured. Open Settings.",R=e=>e!=="",v=(e,t,n)=>e.some(o=>o.id===t&&o.open_moves!==n)?e.map(o=>o.id===t?{...o,open_moves:n}:o):e,D=(e,t,n={},o="")=>{const a=e.filter(s=>{var r;return s.group==="you"||s.handled&&((r=n[s.row_id])==null?void 0:r.auto)}).map(s=>({row:s,handled:s.group!=="you"||!!s.handled})).sort((s,r)=>s.row.rank-r.row.rank||String(s.row.updated).localeCompare(String(r.row.updated))),i=a.filter(s=>!s.handled).length,h=t==="handled";return{rows:a.filter(s=>s.handled===h||s.row.row_id===o),open:i,handled:a.length-i}},c=e=>String(e.status_since||e.updated),b=e=>e.filter(t=>t.group==="done").sort((t,n)=>c(n).localeCompare(c(t))).slice(0,15),k=e=>e.filter(t=>t.group==="others").sort((t,n)=>String(n.updated).localeCompare(String(t.updated))),u=e=>!e.ticket_url&&!!e.pr&&e.pr===e.key,U=e=>e.some(t=>t.pr&&!u(t)),C=e=>e==="failing"?"bad":e==="running"?"warn":e==="passing"?"ok":"",p={code_review:"info",qa:"info",on_hold:"hold"},L=e=>p[e||""]||"",I=e=>({open:"info",done:"ok",dropped:"warn"})[e||""]||"info",j=(e,t,n=1)=>e.filter(o=>o>t+n).length,m="unreachable",l="The local server is not answering",E=l+"; try again once it is back.",B=l+"; your text is kept.",T={NO_WORKSPACE:g,NOT_CONFIGURED:"The maintainer's tracker is not connected on this machine, so nothing can be sent from here.",UPSTREAM_FAILED:"The tracker did not answer; try again in a minute.",RATE_LIMITED:"The source is rate-limited; the monitor backs off.",OPEN_TOO_SOON:"The app window is already opening; give it a few seconds.",UPDATE_IN_PROGRESS:"An update is already installing; the monitor restarts when it is done.",UPDATE_UNAVAILABLE:"There is no update to install right now.",INTERNAL:"The local server failed; see its log."},w=(e,t="Not saved")=>T[f(e)]||t+": "+(e.message||"the server refused the change."),M=(e,{refused:t="Not saved",unreachable:n=E}={})=>{if(e instanceof Error)return e.message===m?n:t+": "+e.message;if(!e||typeof e!="object"||Array.isArray(e))return"";const o=e.error;return o?w(o,t):""},x=e=>{const t=Math.round((Date.now()-new Date(e).getTime())/6e4);return isFinite(t)?t<1?"now":t<60?t+"m ago":t<2880?Math.round(t/60)+"h ago":new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric"}):""},W=e=>{const t=(Date.now()-new Date(e??"").getTime())/36e5;return!isFinite(t)||t<0?{text:"",old:!1,hours:0}:{text:t<1?"<1h":t<48?Math.floor(t)+"h":Math.floor(t/24)+"d",old:t>=24,hours:t}},q=e=>e?new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",F=(e,t)=>t?`${e}--${t}`:"";export{l as S,B as T,R as a,M as b,y as c,x as d,w as e,C as f,_ as g,N as h,u as i,L as j,q as k,b as l,F as m,W as n,j as o,O as p,U as q,f as r,P as s,k as t,I as u,A as v,v as w,D as y};