Tom Boucher
a613caaeef
enhance( #2721 ): regenerating merge driver, regen:derived, and a name for the emitted-artifact family ( #2730 )
...
* test(#2721 ): failing-first suite for the gsd-regen driver and CONTEXT.md parity
Tests precede the implementation per the TDD gate. The driver module does not
exist yet, so tests/git-merge-regen-driver.test.cjs fails at require time; the
contributor-standards parity assertions fail against next as it stands today,
where the standards doc names two CONTEXT.md headings that have never existed.
Refs #2721
* feat(#2721 ): add the gsd-regen merge driver and regen:derived
The golden parity manifests and the two size baselines are pure functions of
the source tree, so their only correct merge is "recompute" -- something git's
ours/theirs interface cannot express. 140 of 143 conflicted-file instances
across the open PR queue are these files.
The driver deliberately does NOT regenerate. Four probes established that at
merge-driver time neither the working tree nor the index reflects the merge:
both hold the ours side, a file added by theirs does not exist yet, and
MERGE_HEAD is unwritten. Git also invokes the driver once per conflicted path
(20 here). A regenerating driver would therefore read the ours-side tree and
emit a plausible-but-wrong hash manifest -- worse than a conflict, because a
conflict is visible. So it accepts %A, runs zero subprocesses, records the
resolved paths, and prints one notice pointing at npm run regen:derived.
Staleness stays caught where it already was, by golden-install-parity in CI.
Every failure path degrades toward today's behaviour (a normal conflict).
install-tree is deliberately excluded per ADR-2719 section 7.
Also folded in, per the no-defer rule: workflow-size.cjs claimed .md files have
no eol=lf in .gitattributes; git check-attr shows eol: lf, set by .gitattributes
line 2 since #1088 .
Refs #2721
* docs(#2721 ): document regen:derived and the gsd-regen merge driver
Adds the how-to a contributor actually reaches for when the generated parity
manifests or size baselines conflict, in both places they would look: the
merge-conflict path in CONTRIBUTING.md and the full guide in TESTING-SUITES.md,
including what the driver deliberately does not do (it does not clear GitHub's
CONFLICTING label, and it does not regenerate mid-merge).
Also scopes the new contributor-standards parity assertion to the doc's own
CONTEXT.md section. Its first run flagged `## Decision`, `## Consequences` and
`## Standards followed`, which the doc attributes to an ADR body and a PR body
rather than to CONTEXT.md -- a doc-wide extractor would have demanded CONTEXT.md
grow headings that do not belong to it.
Refs #2721
* fix(#2721 ): stop passing %P to the merge driver — shell injection
The isolated adversarial review found, and I independently reproduced, local
arbitrary command execution.
Git does not invoke a merge driver with an argv array. It substitutes %O %A %B
%L %P textually into the configured string and runs the whole thing through a
shell, and $(...) executes inside POSIX double quotes -- so quoting the
placeholder does not neutralise it. %O/%A/%B are git-generated temp names and
%L is an integer, but %P is the file's own path, chosen freely by any
contributor. A branch renaming a covered fixture to
evil$(touch PWNED_SENTINEL).json executed that command on the machine of every
maintainer who merged it, and the merge still reported success.
Fix removes the input rather than filtering it: %P is no longer registered, so
the driver receives no attacker-controlled argument at all. The marker records
a count instead of path names. A metacharacter filter would have been a guess
about shell grammar; passing nothing is a property. Re-ran the identical
exploit against the fixed command: nothing executed, conflict still resolved.
Two regressions guard it -- a platform-independent assertion that the
registered command carries no %P, and a real merge driven by the actual
planInstall output with a $(...) filename.
Also from review: CLI dispatch had no coverage at all (CONTRIBUTING's
"CLI and command routing" matrix), which is why runInstall/runStatus now take
{repoRoot} -- hardcoding REPO_ROOT was what made them untestable. Renamed
planResolution to resolveAndRecord since the plan* prefix promised purity it
did not have. Reconciled the eleven-vs-twelve generator count across
CONTEXT.md, CONTRIBUTING.md and the changeset.
Refs #2721
* test(#2721 ): scope safe.directory for the check-attr helper
The 66f4d85a run failed 11 assertions, all in the .gitattributes scoping block,
with "fatal: detected dubious ownership in repository at '/work'". The test
container checks the repo out at a path its user does not own, so git refuses
check-attr outright. Everything else passed (27,185).
`check-attr` is a pure read of .gitattributes -- no hooks, no filters -- so the
exemption is scoped to that one invocation. It is deliberately NOT applied to
the driver's own production `git config` calls, which run in the user's own
clone and should keep the protection.
Refs #2721
* test(#2721 ): delete the stale assertion that the driver command carries %P
The plex2 run on bdfd0856 left exactly two failures, both this test: it still
asserted the pre-fix command string, i.e. the vulnerable behaviour. Deleted
rather than relaxed, per RULESET.TESTS.delete-bad-tests -- its useful half is
already covered, in both directions, by
registeredDriverCommandNeverPassesThePlaceholderForTheFilePath.
Refs #2721
* test(#2721 ): drive the end-to-end merges from the real planInstall output
The e2e helper hand-rolled its own driver registration, and still carried %P.
That meant the five real-git tests were not exercising the production command
string at all -- planInstall could drift and they would keep passing. They now
register exactly what a contributor gets from npm run setup:merge-driver.
Refs #2721
* chore(#2721 ): backfill changeset pr number to 2730
2026-07-27 19:55:37 -04:00
..
2026-06-25 18:24:39 -04:00
2026-07-27 18:32:00 -04:00
2026-07-22 00:27:35 -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-06-14 15:52:22 -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-17 10:51:58 -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-06-23 19:34:08 -04:00
2026-07-03 09:51:29 -04:00
2026-06-15 15:46:41 -04:00
2026-06-11 20:50:08 -04:00
2026-07-03 10:06:11 -04:00
2026-07-27 02:45:35 -04:00
2026-06-12 09:58:44 -04:00
2026-04-25 10:50:54 -04:00
2026-07-01 20:09:01 -04:00
2026-06-20 16:49:18 -07: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-19 13:12:03 -04:00
2026-07-19 13:12:03 -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-26 16:17:02 -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-17 19:24:28 -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-06-01 22:43:49 -04:00
2026-07-21 09:15:59 -04:00
2026-07-03 01:55:48 -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-18 21:29:58 -04:00
2026-06-02 18:35:29 -04:00
2026-07-03 10:06:11 -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-26 14:14:28 -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-15 11:47:15 -04:00
2026-07-27 00:09:13 -04:00
2026-07-03 08:59:23 -04:00
2026-07-07 09:41:14 -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-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-06-22 22:44:44 -04:00
2026-06-22 22:44:44 -04:00
2026-07-04 13:32:51 -04:00
2026-07-11 13:10:31 -04:00
2026-07-15 15:33:58 -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-19 13:12:03 -04:00
2026-07-19 15:43:48 -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-19 23:07:13 -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-06-07 10:27:20 -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-20 14:22:27 -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-21 19:10:22 -04:00
2026-07-07 22:21:45 -04:00
2026-07-05 20:56:12 -04:00
2026-07-14 14:25:44 -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-12 18:53:49 -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-19 13:12:03 -04:00
2026-07-24 12:50:34 -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-27 00:31:17 -04:00
2026-07-27 02:45:35 -04:00
2026-07-27 09:02:20 -04:00
2026-05-26 11:23:42 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 19:42:05 -04:00
2026-07-27 16:50:12 -04:00
2026-07-27 16:50:12 -04:00
2026-07-14 14:25:44 -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-11 14:55:31 -04:00
2026-07-11 23:24:42 -04:00
2026-07-03 10:22:11 -04:00
2026-07-27 19:55:37 -04:00
2026-07-22 00:27:35 -04:00
2026-07-14 20:18:34 -04:00
2026-07-14 20:18:34 -04:00
2026-07-14 17:10:04 -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-06-06 11:24:48 -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-03 10:06:11 -04:00
2026-07-13 11:33:32 -06:00
2026-07-14 21:09:24 -04:00
2026-07-14 21:09:24 -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-21 23:42:02 -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-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-21 23:42:02 -04:00
2026-07-11 00:53:34 -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-19 14:59:25 -04:00
2026-07-14 14:25:44 -04:00
2026-06-15 17:20:08 -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-19 07:52:17 -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-27 00:09:13 -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-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-06-25 14:37:10 -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-18 12:20:32 -04:00
2026-07-11 13:10:31 -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-06-25 18:24:39 -04:00
2026-06-13 21:07:55 -04:00
2026-06-12 21:24:09 -04:00
2026-07-03 01:55:48 -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-24 12:49:53 -04:00
2026-07-13 20:36:14 -04:00
2026-07-14 15:17:14 -04:00
2026-07-27 10:18:10 -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-03 09:17:32 -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-20 10:55:28 -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-03 08:59:23 -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-06-20 13:37:16 -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-21 23:42:02 -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-11 14:55:31 -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-03 10:06:11 -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-25 20:15:49 -04:00
2026-07-07 09:41:14 -04:00
2026-06-26 23:35:04 -04:00
2026-06-26 23:35:04 -04:00
2026-06-13 23:35:08 -04:00
2026-06-21 23:04:34 -04:00
2026-05-06 21:51:38 -04:00
2026-07-20 19:24:21 -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-20 14:59:30 -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-23 12:13:12 -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-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-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-21 10:44:55 -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-20 14:22:27 -04:00
2026-07-08 12:57:49 +03:00
2026-07-10 14:40:03 -04:00
2026-07-10 14:40:03 -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 16:50:12 -04:00
2026-07-26 19:50:56 -04:00
2026-06-12 09:58:44 -04:00
2026-05-15 19:32:02 -04:00
2026-07-11 14:13:02 -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-21 08:12:52 -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-21 23:42:02 -04:00
2026-07-16 13:55:15 -04:00
2026-06-06 11:24:48 -04:00
2026-07-27 18:32:00 -04:00
2026-07-05 14:07:07 -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-25 01:50:20 -04:00
2026-07-23 07:36:53 -04:00
2026-07-13 20:39:58 -04:00