Neil
b7209b5ae9
perf(git): relist only the repo whose worktrees changed, and stop blocking main on sync git ( #23998 )
...
* perf(git): stop blocking main on the open-on-remote git cascade
`getRemoteFileUrl` ran up to 6 sequential `gitExecFileSync` calls on the Electron
main thread — `remote get-url`, then `getDefaultBaseRef`'s `symbolic-ref` plus up
to four `rev-parse --verify` probes — each with its own 15s timeout and no yield
between them.
A complete async twin already existed (`getDefaultBaseRefAsync` ->
`resolveDefaultBaseRefViaExec`, sharing DEFAULT_BASE_REF_PROBES), so the sync
cascade is deleted rather than converted. `getRemoteUrl`, `getRemoteFileUrl` and
`getRemoteCommitUrl` become async; all four downstream callers were already async
(`filesystem-git-url-handlers` inside `ipcMain.handle`, `runtime-git-diff-commands`
async methods) and the provider contract already typed both wrappers
`Promise<string | null>`, so no new async plumbing was needed.
Removes 3 of the 10 `gitExecFileSync` sites and the confusing name collision with
the unrelated async `getDefaultBaseRef` in hosted-review-creation-git-state.
The base-ref regression tests keep their coverage, repointed at the public async
`getBaseRefDefault`.
* perf(git): resolve the repo root in one sync spawn instead of two
getGitRepoRoot ran `rev-parse --is-inside-work-tree` and then `rev-parse
--show-toplevel` as separate blocking spawns. Each sync git call holds the main
thread for up to its whole 15s timeout, so the spawn count is the cost — and this
function is called twice per "Add Project" on a linked worktree, once directly and
once through getLinkedWorktreeMainRepoRoot's self-recursion.
Combined into one invocation. Safe only here: in a bare repo the combined form
exits non-zero, and both that throw and the plain `false` already land on the same
marker-scan fallback. probeGitRepo deliberately does NOT combine — it has to read
`false` cleanly to go on and detect a bare repo, which the combined form's exit 128
would misread as indeterminate.
* perf(git): rebuild only the repos whose authorized roots actually changed
One worktree create called `invalidateAuthorizedRootsCache()`, which dirties every
registered owner. The next authorization-requiring IPC then rebuilt by listing EVERY
repo — and the rebuild never consulted `dirty` when choosing what to list, so `dirty`
gated only whether a rebuild ran, not its scope. At 58 repos that is 58
`git worktree list` spawns, roughly ten seconds of git wall-clock through an
admission budget of four, to rediscover roots one repo changed.
Both halves were needed; scoping the invalidation alone changed nothing.
- `markAuthorizedRootsOwnerDirty` dirties a single owner, reusing the per-owner
primitives `registerWorktreeRootsForRepo` already used. It leaves `baseRevision`
and the per-repo revision map alone — that pair is the global side-effect-token
fence, and bumping it would retire in-flight tokens for untouched repos.
- `rebuildAuthorizedRootsCache(store, onlyDirty)` re-lists only owners that are
dirty, have no listing yet, or still hold recovered roots (those are retired by
comparison against a fresh listing, so skipping them would strand them as
authorized). Only `ensureAuthorizedRootsCache` passes `onlyDirty`; an explicit
rebuild keeps re-listing everything because callers use it to force a refresh —
`filesystem-auth.test.ts` pins that contract.
`invalidateAuthorizedRootsCacheForRepo` wraps the primitive and falls back to the
global form for an unknown owner or a missing store, rather than silently skipping an
invalidation and leaving a stale allowlist. Applied to the worktree-create path.
Changes that can alter the owner SET (store swap, host/WSL re-routing, nested-repo
import, folder->git upgrade) stay global. Removal paths are not converted yet.
The allowlist contents are unchanged and the failure direction is a false denial
rather than a false allow. The relist predicate is split into its own module so it is
testable alone and the cache file stays inside its line budget without a suppression.
* test(perf): measure what git orchestration actually costs the main thread
The existing churn probe (ORCA_MAIN_THREAD_DIAGNOSTICS=1) reported spawn-initiation
cost for git/gh/glab only — its 7 call sites all sit inside git/command-runner — so
it was blind to `spawnProcess`/`runProcess`, the repo's own mandated wrapper, and to
the blocking `execFileSync('ps')` per PTY resize. That understated total churn across
115 main call sites.
- `spawn-observer.ts`: a settable seam, since shared code cannot import src/main.
Unregistered in the daemon/relay/CLI, where it costs one boolean check.
- `spawnProcess` brackets `nodeSpawn` and reports; exec-file-capture's own report is
removed because it routes through runProcess and would double-count.
- `posix-pty-foreground-group` now reports its full blocking duration. Note this
lands on the daemon, not main, whenever the daemon hosts the PTY.
- `ORCA_UNMINIFIED_MAIN=1` build flag, because a minified main bundle cannot
attribute CPU-profile self time to real function names. Defaults unchanged.
- `main-thread-git-cost.spec.ts` + `analyze-main-cpuprofile.mjs`: sweeps concurrency
against real registered repos, captures the churn lines and a V8 CPU profile of
main per phase.
What it found, which is why this is worth keeping: at the width-4 admission ceiling
(~90 git:status/s) main sees ZERO event-loop gaps over 50ms and a worst gap of 23ms,
and is 85% idle. Git orchestration does not stall the main thread. Of the cost it
does incur, spawn-init is 58%, parse 5%, stdout drain 4%.
* test(perf): name the inspector params type the anti-slop gate requires
The broad `object` parameter trips anti-slop(no-object-parameters); the only
Profiler call that passes params sends `{ interval }`.
2026-09-29 22:01:08 -07:00
..
2026-09-27 16:16:20 -07:00
2026-09-26 12:54:33 -07:00
2026-09-29 20:27:30 -07:00
2026-09-29 16:42:29 -07:00
2026-09-29 22:01:08 -07:00
2026-08-25 03:58:48 -07:00
2026-09-29 22:01:08 -07:00
2026-06-23 11:31:41 -07:00
2026-09-19 08:05:33 -07:00
2026-09-10 11:27:27 -07:00
2026-09-19 08:05:33 -07:00
2026-07-14 00:15:34 -07:00
2026-07-14 00:15:34 -07:00
2026-09-19 08:05:33 -07:00
2026-09-06 14:34:03 -04:00
2026-09-11 15:28:16 -07:00
2026-09-16 12:29:11 -04:00
2026-08-10 15:52:59 -07:00
2026-08-03 16:17:00 -07:00
2026-08-07 11:47:26 -07:00
2026-08-28 16:45:58 -07:00
2026-08-03 16:17:00 -07:00
2026-09-26 12:50:20 -07:00
2026-09-29 17:35:12 -07:00
2026-09-16 12:29:11 -04:00
2026-09-16 12:29:11 -04:00
2026-09-16 12:29:11 -04:00
2026-09-16 12:29:11 -04:00
2026-09-16 12:50:59 -04:00
2026-09-16 12:50:59 -04:00
2026-08-13 14:49:59 -07:00
2026-08-10 15:52:59 -07:00
2026-09-26 12:50:20 -07:00
2026-09-16 12:29:11 -04:00
2026-08-16 12:49:02 -07:00
2026-08-16 12:49:02 -07:00
2026-09-29 17:35:12 -07:00
2026-08-26 09:50:12 -07:00
2026-08-11 15:32:13 -07:00
2026-07-11 21:43:20 -07:00
2026-07-11 01:31:13 -07:00
2026-08-25 15:36:51 -07:00
2026-08-28 00:27:01 -04:00
2026-08-31 20:39:58 -04:00
2026-09-16 10:31:01 -07:00
2026-08-15 17:59:29 -07:00
2026-09-16 10:31:01 -07:00
2026-09-16 10:31:01 -07:00
2026-08-28 00:27:01 -04:00
2026-08-28 00:27:01 -04:00
2026-09-15 01:59:58 -07:00
2026-09-16 10:31:01 -07:00
2026-06-28 22:33:07 -07:00
2026-09-29 17:35:12 -07:00
2026-07-12 23:19:15 -07:00
2026-09-01 14:06:16 -07:00
2026-09-17 23:08:59 -07:00
2026-08-23 13:52:18 -07:00
2026-08-17 02:19:57 -07:00
2026-09-17 23:08:59 -07:00
2026-07-18 15:16:43 -07:00
2026-09-29 21:40:53 -04:00
2026-09-29 17:35:12 -07:00
2026-05-25 14:54:47 -07:00
2026-08-27 09:45:56 -07:00
2026-09-04 00:53:24 -07:00
2026-08-24 17:01:18 -07:00
2026-09-22 02:57:18 -04:00
2026-09-04 00:53:24 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-09-29 17:35:12 -07:00
2026-08-24 17:01:18 -07:00
2026-09-14 21:03:51 -07:00
2026-09-14 21:03:51 -07:00
2026-09-01 20:19:56 -07:00
2026-09-25 18:54:11 -07:00
2026-08-05 22:57:16 -07:00
2026-08-05 22:57:16 -07:00
2026-09-29 17:35:12 -07:00
2026-08-24 15:24:32 -07:00
2026-09-15 21:55:06 -07:00
2026-09-15 21:55:06 -07:00
2026-08-13 01:09:36 -07:00
2026-09-03 21:19:06 -07:00
2026-09-03 21:19:06 -07:00
2026-09-29 17:35:12 -07:00
2026-09-27 20:38:00 -07:00
2026-08-28 16:45:58 -07:00
2026-08-06 14:10:26 -07:00
2026-09-22 01:09:26 -04:00
2026-07-06 02:12:32 -07:00
2026-07-27 20:54:02 -07:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-06-19 17:14:55 -07:00
2026-06-19 17:14:55 -07:00
2026-09-26 14:19:00 -07:00
2026-09-26 14:19:00 -07:00
2026-09-26 14:19:00 -07:00
2026-09-29 17:35:12 -07:00
2026-09-26 14:19:00 -07:00
2026-08-14 19:04:55 -04:00
2026-08-14 19:04:55 -04:00
2026-08-13 22:48:24 -07:00
2026-08-14 19:04:55 -04:00
2026-08-14 19:04:55 -04:00
2026-08-14 19:04:54 -04:00
2026-08-14 19:04:55 -04:00
2026-07-23 18:35:31 -07:00
2026-09-25 02:49:52 -07:00
2026-09-25 02:49:52 -07:00
2026-09-25 02:49:52 -07:00
2026-09-29 17:35:12 -07:00
2026-09-25 02:49:52 -07:00
2026-09-29 17:35:12 -07:00
2026-09-27 00:28:26 -07:00
2026-09-01 20:19:56 -07:00
2026-09-29 22:01:08 -07:00
2026-08-30 14:19:05 -07:00
2026-09-27 00:28:26 -07:00
2026-09-29 17:35:12 -07:00
2026-08-15 18:08:54 -07:00
2026-09-01 03:17:34 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-09-26 12:58:03 -07:00
2026-09-29 17:35:12 -07:00
2026-09-29 17:35:12 -07:00
2026-09-26 12:50:20 -07:00
2026-09-29 17:35:12 -07:00
2026-09-26 12:57:53 -07:00
2026-09-26 12:57:53 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-08-15 18:08:54 -07:00
2026-07-23 18:35:31 -07:00
2026-09-14 15:22:05 -07:00
2026-09-29 17:35:12 -07:00
2026-09-22 19:39:52 -07:00
2026-09-24 17:25:48 -07:00
2026-09-24 17:25:48 -07:00
2026-09-24 17:25:48 -07:00
2026-09-29 17:35:12 -07:00
2026-09-14 14:08:31 -07:00
2026-09-29 17:35:12 -07:00
2026-09-14 15:22:05 -07:00
2026-09-29 17:35:12 -07:00
2026-09-29 17:35:12 -07:00
2026-09-17 20:27:33 -07:00
2026-08-31 16:27:28 -07:00
2026-09-29 17:35:12 -07:00
2026-09-29 17:35:12 -07:00
2026-09-14 15:22:05 -07:00
2026-09-24 17:25:48 -07:00
2026-09-24 17:25:48 -07:00
2026-09-24 17:25:48 -07:00
2026-09-15 01:59:58 -07:00
2026-08-31 18:28:26 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-08-29 14:13:35 -07:00
2026-05-20 01:35:56 -07:00
2026-09-26 14:29:30 -07:00
2026-07-10 13:48:35 -07:00
2026-07-10 13:48:35 -07:00
2026-09-29 17:35:12 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-08-29 20:24:02 -07:00
2026-09-29 17:35:12 -07:00
2026-09-12 19:39:01 -07:00
2026-09-26 12:56:35 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-08-29 20:24:02 -07:00
2026-09-29 01:21:53 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-08-29 20:24:02 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-08-29 20:24:02 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-26 14:29:30 -07:00
2026-09-02 01:39:48 -07:00
2026-09-02 01:39:48 -07:00
2026-09-29 17:35:12 -07:00
2026-08-29 20:24:02 -07:00
2026-09-29 17:35:12 -07:00
2026-09-01 02:07:33 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 22:48:24 -07:00
2026-09-29 17:35:12 -07:00
2026-08-14 18:47:14 -07:00
2026-09-29 22:01:08 -07:00
2026-09-26 12:57:14 -07:00
2026-09-28 02:32:41 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-09-18 20:39:52 -07:00
2026-08-28 12:31:55 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 20:46:07 -07:00
2026-09-29 17:35:12 -07:00
2026-08-28 12:31:55 -07:00
2026-08-24 20:46:07 -07:00
2026-08-30 14:19:05 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 20:46:07 -07:00
2026-08-24 20:46:07 -07:00
2026-08-15 00:54:20 -07:00
2026-09-18 20:39:52 -07:00
2026-08-15 00:54:20 -07:00
2026-09-29 02:21:47 -07:00
2026-07-25 22:48:53 -07:00
2026-08-13 22:48:24 -07:00
2026-08-24 20:46:07 -07:00
2026-08-24 20:46:07 -07:00
2026-08-28 12:31:55 -07:00
2026-09-18 20:39:52 -07:00
2026-08-15 18:17:20 -07:00
2026-08-28 02:25:48 -07:00
2026-08-15 18:17:20 -07:00
2026-08-15 18:17:20 -07:00
2026-08-28 14:29:23 -07:00
2026-08-28 14:29:23 -07:00
2026-08-15 18:17:20 -07:00
2026-08-28 02:25:48 -07:00
2026-08-15 18:17:20 -07:00
2026-07-10 00:11:27 -07:00
2026-09-18 20:39:52 -07:00
2026-09-18 20:39:52 -07:00
2026-07-29 19:50:18 -07:00
2026-07-29 19:50:18 -07:00
2026-08-30 18:55:40 -07:00
2026-07-27 01:14:33 -07:00
2026-07-27 01:14:33 -07:00
2026-08-15 18:17:20 -07:00
2026-08-15 18:17:20 -07:00
2026-08-27 17:04:48 -07:00
2026-08-15 18:17:20 -07:00
2026-08-15 18:17:20 -07:00
2026-08-27 17:04:48 -07:00
2026-08-15 18:17:20 -07:00
2026-07-30 18:27:16 -07:00
2026-09-18 00:02:03 -07:00
2026-09-18 00:02:03 -07:00
2026-09-18 00:02:03 -07:00
2026-08-06 14:10:26 -07:00
2026-08-06 14:10:26 -07:00
2026-09-03 20:41:17 -07:00
2026-09-03 20:41:17 -07:00
2026-08-04 02:03:40 -07:00
2026-08-16 12:49:02 -07:00
2026-08-16 12:49:02 -07:00
2026-08-16 12:49:02 -07:00
2026-08-16 12:49:02 -07:00
2026-08-15 05:34:02 -07:00
2026-09-27 16:16:20 -07:00
2026-09-27 16:16:20 -07:00
2026-07-23 18:35:31 -07:00
2026-09-27 16:16:20 -07:00
2026-08-13 22:48:24 -07:00
2026-09-07 00:12:32 -07:00
2026-09-07 00:12:32 -07:00
2026-09-07 13:45:48 -04:00
2026-09-07 13:45:48 -04:00
2026-09-26 14:20:52 -07:00
2026-09-26 14:20:52 -07:00
2026-09-26 14:20:52 -07:00
2026-09-26 14:20:52 -07:00
2026-09-26 14:20:52 -07:00
2026-09-22 18:35:18 -07:00
2026-08-15 18:08:54 -07:00
2026-09-23 23:38:33 -04:00
2026-09-25 20:08:24 -07:00
2026-07-09 19:30:23 -07:00
2026-09-10 20:16:56 -04:00
2026-09-27 22:23:49 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-09-27 22:23:49 -07:00
2026-09-11 02:17:58 -04:00
2026-08-15 18:08:54 -07:00
2026-09-22 18:35:18 -07:00
2026-09-22 18:35:18 -07:00
2026-09-22 18:35:18 -07:00
2026-09-22 18:35:18 -07:00
2026-08-13 22:48:24 -07:00
2026-08-22 21:47:46 -07:00
2026-09-04 16:51:45 -04:00
2026-07-09 02:13:13 -07:00
2026-07-09 02:13:13 -07:00
2026-09-25 22:47:33 -07:00
2026-09-25 22:47:33 -07:00
2026-09-25 22:47:33 -07:00
2026-09-25 22:47:33 -07:00
2026-07-12 18:15:15 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-08-06 10:37:52 -07:00
2026-08-06 10:37:52 -07:00
2026-07-15 15:23:35 -07:00
2026-08-24 23:01:17 -07:00
2026-08-24 23:01:17 -07:00
2026-09-09 03:17:15 -07:00
2026-07-12 18:15:15 -07:00
2026-09-09 03:17:15 -07:00
2026-08-02 00:33:57 -07:00
2026-09-25 22:49:06 -07:00
2026-07-15 15:23:35 -07:00
2026-09-25 22:49:06 -07:00
2026-09-25 22:49:06 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-08-25 01:22:07 -07:00
2026-09-25 22:49:06 -07:00
2026-07-15 15:23:35 -07:00
2026-08-25 01:22:07 -07:00
2026-07-12 18:15:15 -07:00
2026-07-12 21:34:59 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-08-06 10:37:52 -07:00
2026-08-02 00:33:57 -07:00
2026-08-17 18:42:49 -07:00
2026-08-25 01:22:07 -07:00
2026-08-25 01:22:07 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-08-17 18:42:49 -07:00
2026-07-15 15:23:35 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-07-23 18:35:31 -07:00
2026-08-13 22:48:24 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-15 18:08:54 -07:00
2026-08-13 22:48:24 -07:00
2026-08-29 14:13:35 -07:00
2026-07-27 01:14:33 -07:00
2026-07-27 01:14:33 -07:00
2026-07-27 01:14:33 -07:00
2026-09-19 14:53:28 -07:00
2026-07-27 21:43:41 -07:00
2026-08-22 20:35:59 -07:00
2026-08-25 15:36:51 -07:00
2026-08-23 02:58:40 -07:00
2026-08-30 02:09:05 -07:00
2026-08-30 01:12:22 -07:00
2026-06-15 19:41:45 -07:00
2026-08-22 21:34:39 -07:00
2026-08-22 21:34:39 -07:00
2026-06-17 16:08:14 -07:00
2026-08-22 05:45:21 -07:00
2026-08-30 02:09:05 -07:00
2026-08-23 02:58:40 -07:00
2026-08-23 00:57:05 -07:00
2026-08-22 20:35:59 -07:00
2026-08-22 20:35:59 -07:00
2026-09-25 02:28:40 -07:00
2026-09-08 19:42:25 -07:00
2026-08-24 15:30:16 -07:00
2026-09-02 21:33:41 -07:00
2026-08-24 15:49:01 -07:00
2026-08-15 00:54:20 -07:00
2026-09-06 14:34:03 -04:00
2026-09-28 14:55:42 -07:00
2026-08-24 15:30:16 -07:00
2026-08-15 00:54:20 -07:00
2026-08-30 17:54:13 -07:00
2026-09-29 16:03:28 -07:00
2026-08-15 00:54:20 -07:00
2026-09-14 01:04:43 -04:00
2026-08-27 15:53:05 -07:00
2026-09-27 23:13:24 -07:00
2026-09-25 22:47:33 -07:00
2026-08-15 00:54:20 -07:00
2026-09-29 19:06:57 -07:00
2026-06-29 22:38:29 -07:00
2026-08-15 00:54:20 -07:00
2026-08-18 15:59:17 -07:00
2026-09-22 23:00:11 -07:00
2026-09-22 23:00:11 -07:00
2026-08-22 21:34:39 -07:00
2026-09-29 16:03:28 -07:00
2026-08-24 15:30:16 -07:00
2026-08-15 00:54:20 -07:00
2026-09-28 14:55:42 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 15:30:16 -07:00
2026-08-15 00:54:20 -07:00
2026-09-29 16:03:28 -07:00
2026-09-23 20:08:34 -07:00
2026-08-24 15:49:01 -07:00
2026-08-15 00:54:20 -07:00
2026-08-22 21:34:39 -07:00
2026-09-17 20:58:02 -07:00
2026-08-31 18:37:19 -07:00
2026-09-29 17:35:12 -07:00
2026-09-22 01:09:26 -04:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-09-14 01:04:43 -04:00
2026-09-14 01:04:43 -04:00
2026-09-25 22:47:33 -07:00
2026-09-27 23:13:24 -07:00
2026-09-29 20:27:30 -07:00
2026-07-25 02:38:20 -07:00
2026-07-25 02:38:20 -07:00
2026-07-25 02:38:20 -07:00
2026-07-25 02:38:20 -07:00
2026-08-15 00:54:20 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-25 22:47:33 -07:00
2026-07-10 17:27:47 -07:00
2026-07-10 17:27:47 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 19:33:35 -07:00
2026-08-15 00:54:20 -07:00
2026-09-28 15:49:28 -04:00
2026-09-02 18:13:08 -07:00
2026-09-01 14:06:16 -07:00
2026-09-22 23:00:11 -07:00
2026-09-17 20:28:52 -07:00
2026-09-14 01:04:43 -04:00
2026-09-25 22:47:33 -07:00
2026-09-03 16:47:32 -07:00
2026-08-17 02:19:57 -07:00
2026-08-15 00:54:20 -07:00
2026-09-29 16:03:28 -07:00
2026-08-15 00:54:20 -07:00
2026-08-31 18:37:19 -07:00
2026-09-28 15:19:44 -07:00
2026-09-24 18:47:39 -07:00
2026-08-27 15:53:05 -07:00
2026-09-19 06:58:31 -07:00
2026-09-19 06:58:31 -07:00
2026-08-17 00:11:19 -07:00
2026-09-28 12:40:26 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 15:30:16 -07:00
2026-09-02 23:32:41 -07:00
2026-08-15 00:54:20 -07:00
2026-09-20 16:17:54 -07:00
2026-08-19 22:37:42 -07:00
2026-08-24 15:30:16 -07:00
2026-07-24 14:42:04 -07:00
2026-07-24 14:42:04 -07:00
2026-09-15 02:00:27 -07:00
2026-09-15 02:00:27 -07:00
2026-09-27 00:28:26 -07:00
2026-09-26 14:58:47 -07:00
2026-09-26 14:58:47 -07:00
2026-09-26 14:58:47 -07:00
2026-09-29 22:01:08 -07:00
2026-09-29 22:01:08 -07:00
2026-09-29 22:01:08 -07:00
2026-09-29 22:01:08 -07:00
2026-09-27 00:28:26 -07:00
2026-08-29 14:13:35 -07:00
2026-08-13 22:48:24 -07:00
2026-08-31 08:17:40 -07:00
2026-09-23 17:30:14 -07:00
2026-09-23 17:30:14 -07:00
2026-09-23 17:30:14 -07:00
2026-05-15 12:32:07 -07:00
2026-06-29 22:38:29 -07:00
2026-09-23 17:30:14 -07:00
2026-08-15 18:08:54 -07:00
2026-09-26 15:11:34 -07:00
2026-09-26 15:11:34 -07:00
2026-08-27 19:42:12 -07:00
2026-08-27 19:42:12 -07:00
2026-09-26 15:11:34 -07:00
2026-09-26 15:11:34 -07:00
2026-09-16 22:24:33 -07:00
2026-09-23 17:30:14 -07:00
2026-09-23 17:30:14 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-08-03 23:11:36 -07:00
2026-08-13 22:48:24 -07:00
2026-07-15 19:14:22 -07:00
2026-07-15 19:14:22 -07:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-02 00:52:24 -04:00
2026-09-29 22:01:08 -07:00
2026-09-02 00:52:24 -04:00
2026-09-29 22:01:08 -07:00
2026-09-02 00:52:24 -04:00
2026-08-15 18:08:54 -07:00
2026-09-02 00:52:24 -04:00
2026-09-29 22:01:08 -07:00
2026-09-02 00:52:24 -04:00
2026-09-16 20:46:33 -07:00
2026-08-25 15:36:51 -07:00
2026-08-30 21:17:06 -07:00
2026-08-30 21:17:06 -07:00
2026-08-16 13:45:54 -07:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-25 14:48:54 -07:00
2026-09-14 14:08:31 -07:00
2026-08-31 12:25:17 -07:00
2026-08-31 12:25:17 -07:00
2026-09-11 03:19:01 -04:00
2026-08-11 23:19:07 -07:00
2026-09-11 03:19:01 -04:00
2026-09-14 14:08:31 -07:00
2026-08-25 15:36:51 -07:00
2026-07-27 01:43:44 -07:00
2026-08-25 15:36:51 -07:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-13 20:51:15 -07:00
2026-09-13 20:51:15 -07:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-08-30 21:17:06 -07:00
2026-09-25 14:48:54 -07:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-25 14:48:54 -07:00
2026-07-22 18:25:05 -07:00
2026-09-20 14:41:50 -07:00
2026-09-20 14:41:50 -07:00
2026-09-11 03:19:01 -04:00
2026-09-25 14:48:54 -07:00
2026-09-25 14:48:54 -07:00
2026-09-13 20:51:15 -07:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-11 03:19:01 -04:00
2026-09-13 20:51:15 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-09-25 11:44:28 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-09-14 14:08:31 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-09-15 01:59:58 -07:00
2026-07-15 15:23:35 -07:00
2026-08-11 18:19:43 -07:00
2026-07-15 15:23:35 -07:00
2026-09-23 17:30:14 -07:00
2026-09-25 11:44:28 -07:00
2026-09-26 12:50:20 -07:00
2026-09-26 12:50:20 -07:00
2026-09-28 12:40:26 -07:00
2026-09-15 01:59:58 -07:00
2026-09-29 11:30:10 -07:00
2026-09-26 12:58:16 -07:00
2026-08-25 01:22:07 -07:00
2026-09-26 12:58:16 -07:00
2026-08-01 13:38:45 -07:00
2026-09-13 16:27:06 -07:00
2026-08-25 01:22:07 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-17 00:55:04 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-08-16 13:45:54 -07:00
2026-09-13 19:16:42 -07:00
2026-08-16 13:45:54 -07:00
2026-07-25 19:31:44 -07:00
2026-08-13 22:48:24 -07:00
2026-05-01 13:25:22 -07:00
2026-09-26 14:23:03 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-09-16 22:24:10 -07:00
2026-09-16 22:24:10 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 02:32:21 -07:00
2026-07-28 20:51:14 -07:00
2026-08-13 22:48:24 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 02:32:21 -07:00
2026-09-03 02:00:42 -07:00
2026-09-27 01:12:29 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-09-26 12:56:32 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 02:32:21 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-09-03 16:47:32 -07:00
2026-09-27 01:12:29 -07:00
2026-09-27 01:12:29 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 02:32:21 -07:00
2026-09-02 21:33:34 -07:00
2026-09-02 21:33:34 -07:00
2026-08-15 00:54:20 -07:00
2026-07-29 17:03:15 -07:00
2026-08-11 18:19:43 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-02 21:33:34 -07:00
2026-09-02 21:33:34 -07:00
2026-07-29 17:03:15 -07:00
2026-09-02 21:33:34 -07:00
2026-08-29 14:13:35 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-02 21:33:34 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-08-13 18:11:33 -07:00
2026-07-29 17:03:15 -07:00
2026-08-13 18:11:33 -07:00
2026-07-29 17:03:15 -07:00
2026-08-13 18:11:33 -07:00
2026-07-29 17:03:15 -07:00
2026-07-30 17:49:08 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-12 18:07:33 -07:00
2026-08-30 23:05:37 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-12 18:07:53 -07:00
2026-08-30 23:05:37 -07:00
2026-09-12 18:07:53 -07:00
2026-08-30 23:05:37 -07:00
2026-08-25 02:32:21 -07:00
2026-09-03 02:00:42 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 02:32:21 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 02:32:21 -07:00
2026-08-15 00:54:20 -07:00
2026-08-26 09:50:12 -07:00
2026-08-25 02:32:21 -07:00
2026-08-26 09:50:12 -07:00
2026-09-03 02:00:42 -07:00
2026-08-22 21:34:39 -07:00
2026-08-15 00:54:20 -07:00
2026-09-13 17:53:50 -04:00
2026-08-15 18:08:54 -07:00
2026-04-09 12:28:59 -07:00
2026-09-27 14:29:19 -07:00
2026-09-27 14:29:19 -07:00
2026-07-14 15:23:06 -07:00
2026-07-14 15:23:06 -07:00
2026-08-11 22:00:44 -07:00
2026-09-12 18:11:41 -07:00
2026-08-11 22:00:44 -07:00
2026-07-24 12:48:18 -07:00
2026-07-17 16:16:17 -07:00
2026-09-25 15:01:30 -07:00
2026-09-29 19:06:57 -07:00
2026-09-29 19:06:57 -07:00
2026-07-08 14:34:16 -07:00
2026-07-30 18:27:16 -07:00
2026-08-09 16:52:13 -07:00
2026-08-13 22:48:24 -07:00
2026-09-22 22:44:10 -07:00
2026-09-22 22:44:10 -07:00
2026-08-25 23:18:30 -07:00
2026-08-25 23:18:30 -07:00
2026-08-17 18:42:49 -07:00
2026-08-17 18:42:49 -07:00
2026-08-17 18:42:49 -07:00
2026-07-29 18:21:26 -07:00
2026-08-13 20:44:16 -07:00
2026-08-13 20:44:16 -07:00
2026-09-02 23:29:23 -07:00
2026-09-02 23:29:23 -07:00
2026-08-29 14:13:35 -07:00
2026-09-02 23:29:23 -07:00
2026-08-27 15:08:40 -07:00
2026-09-02 23:29:23 -07:00
2026-08-17 15:57:07 -07:00
2026-09-02 23:29:23 -07:00
2026-09-02 23:29:23 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 23:47:20 -07:00
2026-08-13 23:47:20 -07:00
2026-08-24 16:26:33 -07:00
2026-08-13 23:47:20 -07:00
2026-09-02 23:29:23 -07:00
2026-08-17 15:57:07 -07:00
2026-09-02 23:29:23 -07:00
2026-09-02 23:29:23 -07:00
2026-09-03 02:00:46 -07:00
2026-07-03 17:21:50 -07:00
2026-05-08 10:50:43 -07:00
2026-08-11 18:19:43 -07:00
2026-05-31 09:29:44 -07:00
2026-08-13 23:47:20 -07:00
2026-08-29 14:13:35 -07:00
2026-07-25 05:11:03 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-03 21:16:04 -07:00
2026-09-01 02:53:05 -07:00
2026-09-03 21:16:04 -07:00
2026-08-25 01:22:07 -07:00
2026-09-01 20:25:42 -07:00
2026-09-01 20:25:42 -07:00
2026-08-30 12:11:21 -07:00
2026-08-30 12:11:21 -07:00
2026-09-01 20:25:42 -07:00
2026-09-01 20:25:42 -07:00
2026-07-29 19:50:18 -07:00
2026-08-02 00:33:57 -07:00
2026-08-13 22:48:24 -07:00
2026-08-27 19:38:01 -07:00
2026-08-31 19:08:05 -04:00
2026-06-15 19:58:55 -07:00
2026-08-13 22:48:24 -07:00
2026-09-01 19:04:03 -07:00
2026-08-25 01:22:07 -07:00
2026-09-01 20:25:42 -07:00
2026-09-01 19:04:03 -07:00
2026-09-01 19:04:03 -07:00
2026-08-25 01:22:07 -07:00
2026-08-25 18:51:41 -07:00
2026-08-25 01:22:07 -07:00
2026-08-25 01:22:07 -07:00
2026-09-12 18:08:31 -07:00
2026-09-01 20:25:42 -07:00
2026-08-05 11:26:13 -07:00
2026-08-25 18:51:41 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-26 12:58:29 -07:00
2026-09-01 02:53:05 -07:00
2026-09-01 02:53:05 -07:00
2026-09-26 12:58:29 -07:00
2026-09-01 02:53:05 -07:00
2026-07-25 05:11:03 -07:00
2026-07-25 05:11:03 -07:00
2026-08-13 22:48:24 -07:00
2026-05-14 00:42:07 -07:00
2026-09-05 15:08:22 -07:00
2026-08-31 19:08:05 -04:00
2026-09-05 15:08:22 -07:00
2026-08-31 19:08:05 -04:00
2026-08-31 19:08:05 -04:00
2026-07-13 01:10:38 -07:00
2026-07-10 20:52:24 -07:00
2026-09-01 22:44:05 -07:00
2026-09-01 22:44:05 -07:00
2026-09-01 15:59:03 -07:00
2026-09-01 15:59:03 -07:00
2026-09-02 12:53:48 -07:00
2026-09-01 03:45:09 -07:00
2026-09-01 03:45:09 -07:00
2026-09-01 03:45:09 -07:00
2026-09-02 12:53:48 -07:00
2026-09-02 12:53:48 -07:00
2026-09-02 12:53:48 -07:00
2026-09-02 12:53:48 -07:00
2026-08-31 16:27:28 -07:00
2026-09-29 16:03:28 -07:00
2026-07-23 19:12:54 -07:00
2026-07-28 14:04:41 -07:00
2026-07-28 14:04:41 -07:00
2026-08-06 10:37:52 -07:00
2026-08-22 22:30:11 -07:00
2026-08-22 21:47:46 -07:00
2026-09-26 14:58:47 -07:00
2026-09-26 15:05:37 -07:00
2026-09-03 16:27:13 -07:00
2026-09-01 22:44:05 -07:00
2026-09-24 00:46:29 -07:00
2026-09-22 18:17:19 -07:00
2026-08-22 21:34:39 -07:00
2026-09-15 19:02:50 -04:00
2026-09-13 14:49:47 -07:00
2026-09-18 00:53:09 -07:00
2026-09-15 01:59:58 -07:00
2026-08-28 16:45:58 -07:00
2026-09-15 19:02:50 -04:00
2026-09-15 19:02:50 -04:00
2026-09-24 00:46:29 -07:00
2026-09-24 00:46:29 -07:00
2026-08-22 21:34:39 -07:00
2026-09-25 19:04:12 -07:00
2026-09-24 00:46:29 -07:00
2026-09-16 22:24:10 -07:00
2026-08-22 21:34:39 -07:00
2026-09-15 19:02:50 -04:00
2026-08-31 16:27:28 -07:00
2026-08-31 16:27:28 -07:00
2026-08-31 16:27:28 -07:00
2026-09-01 22:44:05 -07:00
2026-08-31 16:27:28 -07:00
2026-08-31 16:27:28 -07:00
2026-09-26 12:50:20 -07:00
2026-09-24 00:46:29 -07:00
2026-08-31 16:27:28 -07:00
2026-08-15 00:54:20 -07:00
2026-09-16 22:24:10 -07:00
2026-09-26 12:50:20 -07:00
2026-08-29 16:06:15 -07:00
2026-09-05 15:08:22 -07:00
2026-09-05 15:08:22 -07:00
2026-09-15 19:02:50 -04:00
2026-09-15 19:02:50 -04:00
2026-09-01 19:06:44 -07:00
2026-07-15 15:23:35 -07:00