Tom Boucher
f6257f3745
ci( #2952 ): shard the full test lane instead of widening its cap ( #2960 )
...
* ci(#2952 ): budget CI job timeouts by headroom over measured cost
`origin/next` was red. The only failing check was `Required tests`, and its
sole cause was `test (ubuntu-latest, 24)` reported `cancelled` — GitHub's
conclusion for a job that exceeds its `timeout-minutes`, not a button press.
That job's `ubuntu-latest / 24` entry is the only `scope: full` matrix entry:
it runs the whole unit suite under c8 coverage, then the scripts/ coverage
floor, integration, security, install and slow, serially on one runner. On
next@5a0a9f097 it ran 15m16s against `timeout-minutes: 15` and was axed 23s
into `npm run test:slow`. Projected to a completed slow step (27s on the last
green run) the lane costs ~15m20s.
Confirmed hypothesis: the budget, not the suite. The lane had been riding the
ceiling all day — 12m03s, 11m34s, 11m50s, 14m25s, 14m51s — and crossed on
three of the last four full-lane runs (d2d2f7c08 , 07603df8f , 5a0a9f097 ). There
is no pathological test: the unit run is cost-first bin-packed into 12 chunks,
chunk 1 is gated by run-tests-harness.test.cjs at 169s (expensive by design —
it spawns real harness subprocesses, one of which exercises the per-chunk
timeout), and the remaining chunks are 32-94s. 769s is the honest cost of 689
files under c8. Re-running could not have helped; the work exceeded the budget.
Review of the first cut surfaced the same defect one runner away: `full test
(windows-latest, 22, shard 3/3)` reached 18m59s against its own 20-minute cap
on 05b170e44 (94%) and 18m14s on 81eeb8a53 (91%). That lane has already blown
its cap twice (#1051 , #1212 ). Fixed here rather than deferred.
The first cut also asserted `test >= test-full`, which is unsound — those two
budgets are dominated by different platforms, so their ordering carries no
meaning. Replaced with the invariant that actually generalises: every lane is
held to a headroom FACTOR over its own measured cost. `test` 15 -> 25 (1.5x of
16m), `test-full` 20 -> 30 (1.5x of 19m), `test-inert` unchanged at 15.
tests/ci-test-job-timeout-budget.test.cjs locks that rule. No unit test can
prove a lane still FITS its budget — only a real run measures that — but a
budget can no longer be lowered back beneath what its lane is known to need,
and a lane that gets slower must be re-measured rather than excused.
Separately: the earlier `failure` at 05b170e44 was an unrelated, already-fixed
CONTEXT-INDEX.json drift (07603df8f re-synced it; lint-tests is green at HEAD).
07603df8f's own run hit this same timeout, which is why it never reported green.
Refs #869 , #1051 , #1212
* ci(#2952 ): shard the full test lane instead of widening its cap
The `scope: full` lane was the only unsharded lane in this file. It ran the
entire unit suite under c8 on one runner, grew past a 15-minute cap, and
reddened `next`. Raising the cap bought room; it did not change the shape, and
the same lane would have walked back into the ceiling. Shard it, the way #1212
answered this for the Windows lane.
Balance comes from measurement, not file counts. scripts/run-tests.cjs already
partitions by measured per-file duration using LPT (#2472 ); the table it reads
was 10 days stale — 638 of 695 files timed, 64 missing, including the whole
context-predicates group. Regenerated from a verified matrix run: 700 files, 0
missing. On that table the 685-file unit suite splits 19.37m / 19.37m / 19.37m
— 0.0% spread — and the split is a total, disjoint cover with 0 files dropped.
Completeness, disjointness, balance and determinism of the partition itself are
already pinned against selectShard in run-tests-harness.test.cjs, including a
fast-check property, so this change does not restate them.
Sharding a COVERAGE run is the part that needs care. A per-shard percentage is
meaningless — shard 2 never executes shard 1's files, so those read 0% — and
leaving the gate on the shards would have quietly measured a third of the tree.
Each shard now renders no report and only leaves raw V8 dumps; a new
`coverage-gate` job merges all three into one coverage/tmp and runs the gate
there. c8's default temp directory is where the download lands, so the ≥70%
lines / ≥60% branches gate and the ≥55% scripts floor run unmodified against
merged data.
Both surfaces call the same npm scripts rather than inlining c8 into YAML, so
the include/exclude globs and both thresholds stay defined once in package.json.
The workflow holding its own copy is the divergence this repo has a rule
against, and the new test cross-checks package.json so an inline reintroduction
fails rather than drifts.
tests/ci-full-lane-sharding.test.cjs covers the two ways this stays GREEN while
being wrong: an incomplete shard set (declare 1/3 and 2/3, never 3/3, and a
third of the suite silently stops running) and a coverage gate that stops being
required. required-tests now depends on coverage-gate and fails on it, while
still tolerating `skipped` so docs-only PRs are not blocked.
`timeout-minutes: 25` on the lane is deliberately left alone. The budget test
requires a real measurement before a lane's declared cost changes, and the
sharded cost is not measured until this PR's own CI run.
Refs #1212 , #2472
* ci(#2952 ): tighten the sharded lane's budget to its measured cost
The sharding commit deliberately left `timeout-minutes: 25` alone, because
tests/ci-test-job-timeout-budget.test.cjs requires a real measurement before a
lane's declared cost changes and the sharded cost did not exist yet.
It exists now. Run 30677442953: shard 1/3 7m12s, 2/3 4m32s, 3/3 3m59s, and
coverage-gate 1m20s. Shard 1 is the long pole because the unsharded aux suites
ride along on it, which is deliberate — they total ~1m35s and sharding them
would cost more than it saves.
So the lane's budget is 15 against a slowest measured shard of 8 minutes
(~1.9x), and coverage-gate joins LANE_COSTS at 2 minutes. 15 is the same number
the lane blew before sharding; the work behind it is now a third the size.
Merged coverage was checked against the pre-shard single-runner baseline rather
than assumed from a green check: 94.36 stmts / 96.3 funcs / 94.36 lines
identical, branches 84.22 vs 84.21 — one branch across two different trees,
noise rather than a regression.
---------
Co-authored-by: sim <sim@local>
2026-07-31 22:16:26 -04:00
..
2026-06-25 18:24:39 -04:00
2026-07-31 19:15:04 -04:00
2026-07-29 22:18:48 -04:00
2026-07-31 13:15:29 -04:00
2026-06-25 18:24:39 -04:00
2026-07-09 23:43:18 -04:00
2026-06-15 23:21:20 -04:00
2026-06-02 18:35:29 -04:00
2026-06-17 08:52:23 -04:00
2026-07-06 08:31:51 -04:00
2026-07-17 06:50:06 -04:00
2026-06-13 21:07:55 -04:00
2026-06-13 21:07:55 -04:00
2026-06-13 21:07:55 -04:00
2026-07-30 19:14:13 -04:00
2026-06-14 20:52:36 -04:00
2026-06-14 10:45:42 -04:00
2026-06-14 17:16:19 -04:00
2026-07-24 12:49:53 -04:00
2026-07-13 09:02:44 -06:00
2026-07-29 15:55:57 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-21 22:55:22 -04:00
2026-06-13 23:35:08 -04:00
2026-07-28 18:02:01 -04:00
2026-07-31 14:45:51 -04:00
2026-07-31 21:20:46 -04:00
2026-07-31 21:20:46 -04:00
2026-07-03 10:06:11 -04:00
2026-07-28 15:41:43 -04:00
2026-04-25 10:50:54 -04:00
2026-07-01 20:09:01 -04:00
2026-07-31 21:20:46 -04:00
2026-06-12 19:51:54 -04:00
2026-06-11 23:59:56 -04:00
2026-06-06 11:24:48 -04:00
2026-06-02 18:35:29 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 12:48:06 -04:00
2026-07-11 03:07:01 -04:00
2026-07-19 14:59:25 -04:00
2026-07-23 07:38:00 -04:00
2026-07-03 08:59:23 -04:00
2026-07-03 09:17:32 -04:00
2026-06-27 08:43:47 -04:00
2026-06-27 08:43:47 -04:00
2026-06-25 18:24:39 -04:00
2026-07-03 08:59:23 -04:00
2026-06-02 18:35:29 -04:00
2026-04-04 14:29:03 -04:00
2026-07-11 04:47:56 -04:00
2026-06-25 18:24:39 -04:00
2026-07-30 19:14:13 -04:00
2026-06-10 16:10:07 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-11 08:31:35 -04:00
2026-06-15 18:11:20 -04:00
2026-07-24 22:49:29 -04:00
2026-07-19 20:24:21 -04:00
2026-05-30 17:44:36 -04:00
2026-07-17 06:50:06 -04:00
2026-06-18 23:37:43 -04:00
2026-06-20 01:59:03 -04:00
2026-06-09 22:35:42 -04:00
2026-06-19 19:55:10 -04:00
2026-06-23 21:49:43 -04:00
2026-06-20 03:24:47 -04:00
2026-06-26 12:44:09 -04:00
2026-07-03 19:37:14 -04:00
2026-06-16 02:38:47 -04:00
2026-07-22 00:58:58 -04:00
2026-06-20 10:50:12 -04:00
2026-07-07 00:19:08 -04:00
2026-06-20 01:59:03 -04:00
2026-06-14 12:51:17 -04:00
2026-07-03 09:17:32 -04:00
2026-06-10 15:55:31 -04:00
2026-06-08 14:04:26 -04:00
2026-07-17 06:48:04 -04:00
2026-06-14 15:02:54 -04:00
2026-07-21 19:32:51 -04:00
2026-05-01 18:12:20 -04:00
2026-05-30 17:25:02 -04:00
2026-05-28 09:23:59 -04:00
2026-07-17 06:49:58 -04:00
2026-07-28 18:26:55 -04:00
2026-07-05 14:04:29 -04:00
2026-07-21 08:13:13 -04:00
2026-06-11 00:58:21 -04:00
2026-07-03 08:59:23 -04:00
2026-06-25 18:24:39 -04:00
2026-07-31 22:16:26 -04:00
2026-06-01 22:43:49 -04:00
2026-07-31 22:16:26 -04:00
2026-07-28 15:41:43 -04:00
2026-07-28 18:02:17 -04:00
2026-07-08 15:26:19 -04:00
2026-06-12 16:03:51 -04:00
2026-07-26 01:06:35 -04:00
2026-07-26 20:49:38 -04:00
2026-07-27 16:24:21 -04:00
2026-06-25 21:16:47 -04:00
2026-06-02 18:35:29 -04:00
2026-06-10 10:40:12 -04:00
2026-07-09 19:38:27 -04:00
2026-07-09 19:38:27 -04:00
2026-07-09 19:38:27 -04:00
2026-06-23 12:51:46 -04:00
2026-07-09 19:38:27 -04:00
2026-05-29 11:39:52 -04:00
2026-07-03 08:59:23 -04:00
2026-07-24 12:10:32 -04:00
2026-07-20 08:22:23 -04:00
2026-06-13 23:35:08 -04:00
2026-06-10 14:07:23 -04:00
2026-06-06 11:24:48 -04:00
2026-07-03 08:59:23 -04:00
2026-07-30 22:27:32 -04:00
2026-07-29 19:49:53 -04:00
2026-07-31 01:57:50 -04:00
2026-06-25 21:16:47 -04:00
2026-07-11 09:39:34 -04:00
2026-07-25 01:50:20 -04:00
2026-07-19 12:53:22 -04:00
2026-07-03 08:59:23 -04:00
2026-07-03 08:59:23 -04:00
2026-07-03 08:59:23 -04:00
2026-07-31 13:17:01 -04:00
2026-07-03 10:22:11 -04:00
2026-04-10 10:56:09 -04:00
2026-07-27 02:45:35 -04:00
2026-06-24 13:19:10 -04:00
2026-07-07 15:11:12 -04:00
2026-07-29 14:19:57 -04:00
2026-07-27 00:09:13 -04:00
2026-07-30 08:52:56 -04:00
2026-07-30 08:52:56 -04:00
2026-07-03 08:59:23 -04:00
2026-07-05 17:15:48 -04:00
2026-06-02 18:35:29 -04:00
2026-07-31 15:44:19 -04:00
2026-07-31 13:17:01 -04:00
2026-07-31 13:17:01 -04:00
2026-07-31 15:44:19 -04:00
2026-06-14 08:25:41 -04:00
2026-06-02 18:35:29 -04:00
2026-07-24 12:49:53 -04:00
2026-07-27 19:55:37 -04:00
2026-07-29 17:06:04 -04:00
2026-07-29 17:06:04 -04:00
2026-07-04 13:32:51 -04:00
2026-07-11 13:10:31 -04:00
2026-07-31 10:56:11 -04:00
2026-06-22 23:43:22 -04:00
2026-06-22 23:43:22 -04:00
2026-06-13 23:35:08 -04:00
2026-06-17 08:51:48 -04:00
2026-07-09 00:21:28 -04:00
2026-07-09 13:17:04 -04:00
2026-06-07 19:22:48 -04:00
2026-07-09 13:17:04 -04:00
2026-07-30 12:48:06 -04:00
2026-07-19 15:43:48 -04:00
2026-07-27 20:10:11 -04:00
2026-07-18 14:42:29 -04:00
2026-07-18 00:39:28 -04:00
2026-07-21 18:38:51 -04:00
2026-07-18 13:42:58 -04:00
2026-07-18 15:46:42 -04:00
2026-07-18 07:55:28 -04:00
2026-07-18 19:01:04 -04:00
2026-07-30 16:55:10 -04:00
2026-07-11 03:07:01 -04:00
2026-07-11 04:47:56 -04:00
2026-07-11 09:39:34 -04:00
2026-07-11 13:10:31 -04:00
2026-07-11 16:04:24 -04:00
2026-07-11 17:14:48 -04:00
2026-07-19 22:44:08 -04:00
2026-07-13 07:03:47 -07:00
2026-07-29 17:06:04 -04:00
2026-06-02 18:35:29 -04:00
2026-06-20 13:36:57 -04:00
2026-07-03 09:17:32 -04:00
2026-06-20 13:36:57 -04:00
2026-07-03 10:22:11 -04:00
2026-07-03 10:06:11 -04:00
2026-07-31 21:20:46 -04:00
2026-07-03 10:22:11 -04:00
2026-06-25 18:24:39 -04:00
2026-06-12 19:51:54 -04:00
2026-06-12 11:05:31 -04:00
2026-06-14 21:44:21 -04:00
2026-06-02 18:35:29 -04:00
2026-07-30 15:27:52 -04:00
2026-07-07 22:21:45 -04:00
2026-07-31 13:15:29 -04:00
2026-07-28 15:41:43 -04:00
2026-07-05 20:56:12 -04:00
2026-07-30 19:55:03 -04:00
2026-07-26 16:28:56 -04:00
2026-07-26 16:28:56 -04:00
2026-06-24 17:16:13 -04:00
2026-06-24 17:16:13 -04:00
2026-06-13 21:07:55 -04:00
2026-07-25 05:30:20 -04:00
2026-07-03 09:17:32 -04:00
2026-07-03 09:17:32 -04:00
2026-06-15 20:53:38 -04:00
2026-07-27 18:32:00 -04:00
2026-07-15 19:18:28 -04:00
2026-07-03 09:51:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-28 12:00:43 -04:00
2026-06-28 12:25:02 -04:00
2026-06-14 12:23:07 -04:00
2026-07-03 19:37:38 -04:00
2026-06-02 18:35:29 -04:00
2026-07-08 12:57:49 +03:00
2026-07-20 14:59:30 -04:00
2026-06-13 21:07:55 -04:00
2026-06-20 01:59:03 -04:00
2026-06-12 23:43:07 -04:00
2026-06-02 18:35:29 -04:00
2026-07-06 13:01:47 -05:00
2026-07-16 15:25:19 -04:00
2026-07-12 15:34:59 -04:00
2026-07-12 15:55:39 -04:00
2026-07-30 12:48:06 -04:00
2026-07-12 19:47:42 -04:00
2026-07-15 12:55:38 -04:00
2026-07-15 17:10:06 -04:00
2026-07-27 16:24:21 -04:00
2026-07-15 21:40:59 -04:00
2026-07-16 00:56:07 -04:00
2026-07-16 13:33:36 -04:00
2026-07-17 14:01:38 -04:00
2026-07-30 15:27:52 -04:00
2026-07-30 12:48:06 -04:00
2026-07-26 19:57:58 -04:00
2026-07-26 19:50:56 -04:00
2026-07-26 20:49:38 -04:00
2026-07-26 21:47:54 -04:00
2026-07-26 22:52:57 -04:00
2026-07-30 12:48:06 -04:00
2026-07-27 02:45:35 -04:00
2026-07-27 09:02:20 -04:00
2026-07-31 19:15:04 -04:00
2026-07-29 22:18:48 -04:00
2026-07-30 12:48:06 -04:00
2026-05-26 11:23:42 -04:00
2026-06-02 18:35:29 -04:00
2026-07-29 17:06:04 -04:00
2026-07-27 16:50:12 -04:00
2026-07-27 16:50:12 -04:00
2026-07-30 13:53:39 -04:00
2026-07-02 11:43:47 -04:00
2026-07-03 08:59:23 -04:00
2026-07-05 18:01:28 -04:00
2026-06-02 18:35:29 -04:00
2026-07-11 23:24:42 -04:00
2026-07-31 13:17:01 -04:00
2026-07-31 08:11:57 -04:00
2026-07-11 23:24:42 -04:00
2026-07-03 10:22:11 -04:00
2026-07-22 00:27:35 -04:00
2026-07-28 15:41:43 -04:00
2026-07-28 15:41:43 -04:00
2026-07-21 23:42:02 -04:00
2026-07-03 08:59:23 -04:00
2026-07-05 14:50:01 -04:00
2026-06-15 23:19:21 -04:00
2026-07-03 10:22:11 -04:00
2026-06-15 23:19:21 -04:00
2026-07-31 10:56:11 -04:00
2026-07-03 09:34:39 -04:00
2026-06-28 14:27:43 -04:00
2026-07-11 21:07:38 -04:00
2026-06-25 18:24:39 -04:00
2026-06-02 18:35:29 -04:00
2026-07-28 08:58:27 -04:00
2026-07-13 11:33:32 -06:00
2026-07-14 21:09:24 -04:00
2026-07-30 14:34:28 -04:00
2026-07-03 08:59:23 -04:00
2026-07-03 12:18:25 -04:00
2026-07-02 18:08:42 -04:00
2026-06-25 18:24:39 -04:00
2026-07-20 15:49:57 -04:00
2026-06-06 11:24:48 -04:00
2026-05-26 11:23:35 -04:00
2026-07-19 15:43:48 -04:00
2026-07-09 20:47:35 -04:00
2026-07-09 22:26:13 -04:00
2026-06-25 21:16:47 -04:00
2026-06-28 11:44:36 -04:00
2026-04-04 14:29:03 -04:00
2026-07-30 12:32:00 -04:00
2026-07-26 22:52:57 -04:00
2026-07-04 13:32:51 -04:00
2026-07-25 01:50:20 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 08:59:23 -04:00
2026-07-03 01:55:48 -04:00
2026-07-19 15:43:48 -04:00
2026-06-24 17:07:23 -04:00
2026-06-02 18:35:29 -04:00
2026-07-21 08:26:47 -04:00
2026-07-08 21:42:11 -04:00
2026-07-03 10:22:11 -04:00
2026-07-15 13:46:26 -04:00
2026-07-19 12:52:43 -04:00
2026-06-02 18:35:29 -04:00
2026-07-21 08:26:47 -04:00
2026-07-26 19:50:56 -04:00
2026-06-02 18:35:29 -04:00
2026-07-22 00:58:58 -04:00
2026-07-21 08:26:47 -04:00
2026-06-09 12:51:15 -04:00
2026-06-06 11:24:48 -04:00
2026-07-03 09:34:39 -04:00
2026-07-21 18:38:51 -04:00
2026-06-16 00:12:54 -04:00
2026-07-03 09:51:29 -04:00
2026-06-25 18:24:39 -04:00
2026-06-23 19:34:08 -04:00
2026-07-03 09:34:39 -04:00
2026-06-02 18:35:29 -04:00
2026-07-11 23:24:42 -04:00
2026-06-25 21:16:47 -04:00
2026-06-11 15:46:49 -04:00
2026-07-03 09:17:32 -04:00
2026-07-05 15:01:22 -04:00
2026-06-02 18:35:29 -04:00
2026-07-04 13:32:51 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-20 13:37:38 -04:00
2026-06-24 17:07:23 -04:00
2026-06-07 15:20:55 -04:00
2026-07-03 09:17:32 -04:00
2026-07-03 19:37:14 -04:00
2026-07-09 23:43:17 -04:00
2026-07-01 11:51:11 -04:00
2026-07-07 19:38:01 -04:00
2026-07-10 19:55:15 -04:00
2026-06-01 22:43:49 -04:00
2026-07-29 09:30:26 -04:00
2026-07-29 12:29:45 -04:00
2026-07-30 18:52:04 -04:00
2026-07-30 20:12:28 -04:00
2026-07-30 17:25:55 -04:00
2026-07-30 18:14:34 -04:00
2026-07-30 21:19:36 -04:00
2026-07-31 00:47:55 -04:00
2026-06-07 20:35:43 -04:00
2026-06-13 16:13:00 -04:00
2026-07-18 12:20:32 -04:00
2026-07-18 12:20:32 -04:00
2026-07-03 08:59:23 -04:00
2026-07-30 12:32:00 -04:00
2026-07-28 18:31:40 -04:00
2026-07-11 00:53:34 -04:00
2026-07-28 18:31:40 -04:00
2026-07-28 18:31:40 -04:00
2026-06-06 22:16:20 +02:00
2026-06-07 01:27:12 +02:00
2026-07-11 00:53:34 -04:00
2026-07-22 20:58:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-01 22:43:49 -04:00
2026-06-02 18:35:29 -04:00
2026-06-01 22:43:49 -04:00
2026-06-10 01:05:24 -04:00
2026-06-18 08:50:22 -04:00
2026-06-01 22:43:49 -04:00
2026-06-06 11:24:48 -04:00
2026-06-22 00:59:41 -04:00
2026-06-22 00:59:41 -04:00
2026-06-11 14:11:50 -04:00
2026-06-12 21:24:09 -04:00
2026-07-07 15:11:12 -04:00
2026-07-19 20:24:21 -04:00
2026-06-16 00:12:54 -04:00
2026-07-03 19:37:14 -04:00
2026-07-07 19:38:01 -04:00
2026-06-21 14:37:18 -04:00
2026-06-21 14:37:18 -04:00
2026-07-03 10:22:11 -04:00
2026-07-31 13:17:01 -04:00
2026-07-14 14:25:44 -04:00
2026-07-28 18:02:01 -04:00
2026-07-20 16:52:34 -04:00
2026-06-02 18:35:29 -04:00
2026-06-01 22:43:49 -04:00
2026-06-15 18:11:20 -04:00
2026-05-31 23:15:55 -04:00
2026-06-25 18:24:39 -04:00
2026-07-31 00:04:04 -04:00
2026-06-28 11:27:44 -04:00
2026-06-30 22:21:18 -04:00
2026-06-11 13:36:23 -04:00
2026-07-17 06:48:04 -04:00
2026-07-27 15:02:26 -04:00
2026-07-03 08:59:23 -04:00
2026-07-07 21:22:48 -04:00
2026-07-07 21:22:48 -04:00
2026-07-22 00:27:35 -04:00
2026-06-14 08:25:41 -04:00
2026-06-25 21:49:22 -04:00
2026-07-30 08:52:56 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-06-02 18:35:29 -04:00
2026-07-17 06:48:13 -04:00
2026-06-24 14:46:44 -04:00
2026-06-01 22:43:49 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 09:17:32 -04:00
2026-07-30 11:18:07 -04:00
2026-06-25 18:24:39 -04:00
2026-06-25 18:24:39 -04:00
2026-07-05 16:43:26 -04:00
2026-07-03 09:17:32 -04:00
2026-06-25 18:24:39 -04:00
2026-07-30 15:26:43 -04:00
2026-07-25 23:45:11 -04:00
2026-06-25 15:26:23 -04:00
2026-06-25 16:25:48 -04:00
2026-07-11 23:24:42 -04:00
2026-06-25 21:49:22 -04:00
2026-07-07 12:14:43 -04:00
2026-07-03 10:22:11 -04:00
2026-07-19 15:43:48 -04:00
2026-07-17 08:14:59 -04:00
2026-07-26 21:47:54 -04:00
2026-07-02 14:57:44 -04:00
2026-07-29 11:06:27 -04:00
2026-07-30 15:27:52 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-07-13 13:43:29 -04:00
2026-06-05 17:58:48 -04:00
2026-06-05 17:58:48 -04:00
2026-04-06 15:13:23 -04:00
2026-06-25 18:24:39 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 00:39:32 -04:00
2026-04-16 17:15:29 -04:00
2026-07-03 10:22:11 -04:00
2026-06-15 18:11:20 -04:00
2026-07-08 10:25:28 -04:00
2026-07-16 00:56:07 -04:00
2026-06-22 12:33:13 -04:00
2026-06-12 19:51:54 -04:00
2026-07-28 15:41:43 -04:00
2026-06-13 21:07:55 -04:00
2026-06-12 21:24:09 -04:00
2026-07-28 18:02:17 -04:00
2026-06-02 18:35:29 -04:00
2026-07-26 21:42:50 -04:00
2026-07-10 09:24:49 -04:00
2026-07-30 15:27:52 -04:00
2026-07-13 20:36:14 -04:00
2026-07-14 15:17:14 -04:00
2026-07-31 18:11:40 -04:00
2026-07-03 01:55:48 -04:00
2026-07-11 21:07:38 -04:00
2026-07-11 21:07:38 -04:00
2026-07-22 16:05:41 -04:00
2026-04-04 14:29:03 -04:00
2026-06-02 18:35:29 -04:00
2026-07-30 16:55:10 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 09:17:32 -04:00
2026-07-07 15:11:12 -04:00
2026-07-30 19:14:13 -04:00
2026-07-03 09:17:32 -04:00
2026-07-26 14:29:02 -04:00
2026-07-13 20:36:14 -04:00
2026-06-02 18:35:29 -04:00
2026-07-28 21:11:48 -04:00
2026-06-25 14:37:10 -04:00
2026-06-02 18:35:29 -04:00
2026-07-11 22:47:51 -04:00
2026-06-02 18:35:29 -04:00
2026-06-09 23:50:41 -04:00
2026-06-25 18:24:39 -04:00
2026-06-11 13:36:47 -04:00
2026-06-25 23:55:58 -04:00
2026-07-08 21:42:11 -04:00
2026-06-16 21:55:51 -04:00
2026-05-18 12:06:46 -04:00
2026-05-28 18:06:19 -04:00
2026-07-19 07:52:36 -04:00
2026-05-28 18:06:19 -04:00
2026-06-21 10:44:48 -04:00
2026-07-02 11:55:53 -04:00
2026-06-25 18:24:39 -04:00
2026-07-08 21:42:11 -04:00
2026-07-03 01:55:48 -04:00
2026-07-03 09:17:32 -04:00
2026-07-03 08:59:23 -04:00
2026-06-15 22:48:48 -04:00
2026-07-09 23:43:18 -04:00
2026-06-25 18:24:39 -04:00
2026-06-14 21:29:11 -04:00
2026-06-16 14:00:49 -04:00
2026-06-14 21:29:11 -04:00
2026-06-14 21:29:11 -04:00
2026-06-15 23:21:20 -04:00
2026-06-22 09:32:29 -04:00
2026-07-31 02:30:50 -04:00
2026-05-18 23:13:09 -04:00
2026-06-02 18:35:29 -04:00
2026-06-06 11:24:48 -04:00
2026-06-02 18:35:29 -04:00
2026-07-27 15:02:26 -04:00
2026-06-02 18:35:29 -04:00
2026-06-15 18:11:20 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 09:17:32 -04:00
2026-07-19 15:43:48 -04:00
2026-05-01 19:50:10 -04:00
2026-07-10 15:44:19 -04:00
2026-06-25 21:16:47 -04:00
2026-07-10 15:44:19 -04:00
2026-04-04 14:29:03 -04:00
2026-07-28 18:31:40 -04:00
2026-07-09 09:36:33 -04:00
2026-07-21 23:42:02 -04:00
2026-07-03 09:34:39 -04:00
2026-07-03 09:34:39 -04:00
2026-06-17 14:32:43 -04:00
2026-07-29 07:00:35 -04:00
2026-07-31 08:11:57 -04:00
2026-07-31 08:11:57 -04:00
2026-07-21 23:23:45 -04:00
2026-06-25 18:24:39 -04:00
2026-07-19 14:33:19 -04:00
2026-05-26 22:46:09 -04:00
2026-05-29 10:54:49 -04:00
2026-07-17 12:38:37 -04:00
2026-07-03 10:06:11 -04:00
2026-07-06 11:34:32 -04:00
2026-07-23 07:38:00 -04:00
2026-06-25 23:55:58 -04:00
2026-06-25 18:24:39 -04:00
2026-07-28 18:31:26 -04:00
2026-06-13 23:35:08 -04:00
2026-06-13 23:35:08 -04:00
2026-06-05 17:58:48 -04:00
2026-06-13 23:35:08 -04:00
2026-06-05 17:58:48 -04:00
2026-06-18 07:44:52 -04:00
2026-07-22 20:58:29 -04:00
2026-07-21 10:44:55 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-07-30 15:27:52 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 08:52:56 -04:00
2026-06-26 23:35:04 -04:00
2026-06-26 23:35:04 -04:00
2026-07-29 07:31:32 -04:00
2026-07-30 08:52:56 -04:00
2026-07-30 19:14:13 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 08:52:56 -04:00
2026-07-29 11:21:49 -04:00
2026-06-21 23:04:34 -04:00
2026-05-06 21:51:38 -04:00
2026-07-27 20:17:09 -04:00
2026-06-30 20:43:25 -04:00
2026-06-21 23:21:39 -04:00
2026-07-25 00:36:05 -04:00
2026-07-03 08:59:23 -04:00
2026-07-21 09:15:59 -04:00
2026-07-30 23:14:17 -04:00
2026-06-21 20:40:13 -04:00
2026-07-17 08:14:59 -04:00
2026-07-17 06:50:06 -04:00
2026-07-17 08:14:59 -04:00
2026-07-28 23:09:10 -04:00
2026-07-11 23:24:42 -04:00
2026-07-25 01:50:20 -04:00
2026-07-22 00:27:35 -04:00
2026-07-06 08:31:51 -04:00
2026-07-03 08:59:23 -04:00
2026-07-06 08:31:51 -04:00
2026-07-05 19:16:09 +00:00
2026-07-04 13:32:51 -04:00
2026-06-02 18:35:29 -04:00
2026-06-24 17:03:01 -04:00
2026-05-26 18:56:00 -04:00
2026-07-02 21:45:35 -04:00
2026-06-25 18:24:39 -04:00
2026-07-13 00:47:15 -04:00
2026-07-13 00:47:15 -04:00
2026-07-12 00:27:31 -04:00
2026-07-21 23:42:02 -04:00
2026-06-25 18:24:39 -04:00
2026-07-12 00:27:31 -04:00
2026-07-03 09:17:32 -04:00
2026-07-03 08:59:23 -04:00
2026-06-06 11:24:48 -04:00
2026-06-14 20:52:56 -04:00
2026-06-13 23:35:08 -04:00
2026-07-14 15:16:55 -04:00
2026-07-13 15:36:17 -04:00
2026-07-05 19:16:07 +00:00
2026-07-03 08:59:23 -04:00
2026-07-04 13:32:51 -04:00
2026-07-15 19:18:28 -04:00
2026-07-20 17:26:20 -04:00
2026-06-25 18:24:39 -04:00
2026-07-31 10:20:17 -04:00
2026-07-06 14:40:38 -04:00
2026-07-12 16:36:36 -04:00
2026-06-02 18:35:29 -04:00
2026-07-17 18:29:28 -04:00
2026-07-30 19:55:03 -04:00
2026-06-28 11:44:36 -04:00
2026-07-03 01:55:48 -04:00
2026-06-29 16:15:55 -04:00
2026-07-12 15:34:59 -04:00
2026-07-20 19:24:21 -04:00
2026-07-26 00:55:00 -04:00
2026-07-03 01:55:48 -04:00
2026-06-25 18:24:39 -04:00
2026-07-05 18:01:28 -04:00
2026-07-12 01:32:12 -04:00
2026-06-12 13:29:45 -04:00
2026-07-14 14:25:44 -04:00
2026-06-13 21:07:55 -04:00
2026-06-17 08:52:23 -04:00
2026-06-15 18:11:20 -04:00
2026-05-29 11:39:52 -04:00
2026-05-26 11:23:29 -04:00
2026-07-19 14:37:15 -04:00
2026-07-31 22:16:26 -04:00
2026-06-06 11:24:48 -04:00
2026-06-20 13:36:57 -04:00
2026-06-02 18:35:29 -04:00
2026-07-24 21:36:33 -04:00
2026-07-15 09:41:36 -04:00
2026-07-10 21:31:10 -04:00
2026-07-10 21:31:10 -04:00
2026-06-24 13:19:10 -04:00
2026-06-12 18:39:57 -04:00
2026-06-24 13:19:10 -04:00
2026-07-31 21:01:50 -04:00
2026-07-08 12:57:49 +03:00
2026-07-10 14:40:03 -04:00
2026-07-28 18:31:47 -04:00
2026-06-30 10:52:30 -04:00
2026-07-12 16:22:47 -04:00
2026-06-02 18:35:29 -04:00
2026-06-24 17:07:23 -04:00
2026-07-27 20:17:09 -04:00
2026-07-26 19:50:56 -04:00
2026-05-15 19:32:02 -04:00
2026-07-31 08:11:57 -04:00
2026-06-02 18:35:29 -04:00
2026-07-27 10:18:10 -04:00
2026-07-19 14:37:15 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-07 00:46:27 -04:00
2026-07-17 06:48:04 -04:00
2026-07-03 09:17:32 -04:00
2026-06-02 19:25:25 -04:00
2026-06-13 23:35:08 -04:00
2026-07-03 09:17:32 -04:00
2026-07-31 03:16:15 -04:00
2026-07-11 23:24:42 -04:00
2026-07-11 23:24:42 -04:00
2026-07-11 23:24:42 -04:00
2026-07-11 23:24:42 -04:00
2026-07-11 23:24:42 -04:00
2026-07-03 10:22:11 -04:00
2026-06-23 14:38:38 -04:00
2026-07-14 14:25:44 -04:00
2026-06-07 12:24:04 -04:00
2026-07-21 18:38:51 -04:00
2026-07-11 16:04:24 -04:00
2026-07-28 18:31:40 -04:00
2026-07-16 13:55:15 -04:00
2026-06-06 11:24:48 -04:00
2026-07-28 15:41:43 -04:00
2026-06-11 23:59:56 -04:00
2026-07-05 14:38:24 -04:00
2026-07-20 14:22:27 -04:00
2026-07-14 14:47:03 -04:00
2026-06-02 18:35:29 -04:00
2026-07-14 14:47:03 -04:00
2026-06-11 11:36:30 -04:00
2026-06-13 23:35:08 -04:00
2026-07-23 07:36:53 -04:00
2026-07-28 18:31:40 -04:00
2026-07-23 07:36:53 -04:00
2026-07-13 20:39:58 -04:00