Larry Gordon
6e4334c003
feat(extensions): broker denied file writes and deletes
...
A host that runs omp inside an OS sandbox can grant a path mid-session but cannot
apply that grant to an in-process write: `write` and `edit` do their I/O in the
agent process, so an out-of-workspace write fails and stays failed until the
process restarts under a wider profile.
Nothing available today closes that. A `tool_call` handler can block and a
`tool_result` handler can rewrite content, but neither can re-run a tool.
`ctx.invokeTool` delegates execution, but the delegated native tool runs in the
same process under the same restrictions. And the failure lands AT the write
syscall - after the tool computed the final content, before it returned - so the
bytes are gone with the throw, and reconstructing them means reimplementing
`edit`'s hashline protocol and the snapshot bookkeeping.
The byte-write that `write`, `edit` and `apply_patch` perform on an ordinary file
path already funnels through one two-line primitive
(`file ? file.write(content) : Bun.write(dst, content)`) at four call sites.
Routing that primitive through `writeFileWithFallback` gives an embedder a single
seam to intercept a permission-denied write: the native tool still records its own
snapshot under the real destination path once a handler reports success, so a
follow-up hashline `edit` on that path keeps working.
Only a permission boundary diverts - `EPERM`/`EACCES`/`EROFS`. Two cases needed
more than that:
- `Bun.write` creates missing parents itself, and when that `mkdir` is the denied
operation it reports the subsequent `open()`'s `ENOENT` instead of the denial -
making a sandboxed write into a new out-of-tree directory indistinguishable from
an ordinary bad path. Redoing the `mkdir` explicitly recovers the real errno, and
because it runs through the same enforcement path as the write it also sees
kernel-level denials (Seatbelt, LSM) that a `stat`/`access` probe reports as
writable. If no handler takes the write, the original `ENOENT` is still what
propagates, with the recovered denial attached as its `cause`.
- `apply_patch` creates the parent as a separate step before writing, so a denial
there threw before the seam was ever reached. That `mkdir` now tolerates a
permission denial when a fallback is registered, letting the write report it.
A denial reached through a SYMLINK is never brokered. The in-process write follows
the link, so the kernel denied the link's TARGET, but a handler receives `dst` and
a privileged helper opening it with ordinary follow semantics would land the bytes
wherever the link points. That also defeats the obvious helper-side defence, since
a prefix allowlist passes when the link sits inside the allowed root while its
target does not. omp cannot vouch for the destination, so it refuses rather than
hand the ambiguity to a privileged writer - the same answer `confineToWorkspace`
already gives an unresolvable link.
Removing a file is a different primitive, so it gets its own seam
(`deleteFileWithFallback`, `registerFileDeleteFallback`) covering `edit`'s `REM`,
a hashline `MV`'s source unlink, and `apply_patch`'s delete op. Two differences
from the write path: `ENOENT` is never diverted, since nothing is created on the
way to an unlink and `REM` needs it to become a not-found error; and the seam
refuses a target it can confirm is a directory, because `unlink` on a directory
reports `EPERM` on Darwin and is otherwise indistinguishable from a sandbox
denial. That check cannot always run - a sandbox denying the unlink usually denies
the target's metadata too - so the request carries `confirmedFile`, and a handler
is required to use a plain unlink rather than resolving or recursing.
The two registries are deliberately separate. A write handler brokers `content` to
`dst`, so a delete request reaching it with no content invites brokering an empty
write and truncating the file it was asked to remove.
With nothing registered both seams are inert: the primitives run exactly as
before, a failure rethrows from the same place, and no extra syscalls are
performed.
Scope is deliberately narrow. Archive-member and SQLite writes are unchanged -
neither is a byte-write to a path, so brokering them needs a different request
shape - along with the ACP bridge's `writeTextFile`, the `lsp` tool's own
workspace-edit and formatter writes, and directory removal.
2026-08-14 08:52:34 -07:00
..
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-27 16:43:53 +02:00
2026-08-13 08:28:42 +02:00
2026-08-13 01:14:48 +02:00
2026-08-13 15:51:06 +00:00
2026-08-03 01:00:51 +02:00
2026-08-13 19:36:51 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 14:23:15 +02:00
2026-08-11 16:46:45 +07:00
2026-08-13 19:32:22 +02:00
2026-07-27 16:43:53 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-27 16:43:53 +02:00
2026-08-13 03:05:29 +00:00
2026-08-13 08:28:42 +02:00
2026-08-13 19:32:22 +02:00
2026-06-23 15:28:05 -07:00
2026-08-14 02:15:22 +00:00
2026-08-13 02:00:49 +02:00
2026-08-13 01:14:48 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 11:27:27 -04:00
2026-08-13 19:32:22 +02:00
2026-08-11 16:46:45 +07:00
2026-07-27 16:43:53 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 08:52:34 -07:00
2026-07-24 08:54:16 +02:00
2026-07-28 07:41:59 +00:00
2026-08-14 14:08:28 +02:00
2026-08-07 21:30:26 +08:00
2026-08-10 11:06:22 +02:00
2026-07-05 13:31:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 08:28:42 +02:00
2026-08-05 13:39:09 +02:00
2026-08-05 13:39:09 +02:00
2026-08-05 13:39:09 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-11 22:49:12 +09:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 08:28:42 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 00:01:31 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-05 21:28:37 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 03:25:31 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 03:25:31 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 03:25:31 +02:00
2026-08-14 02:54:25 +00:00
2026-07-21 20:18:22 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-14 20:12:24 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-01 20:59:24 +02:00
2026-06-13 15:39:04 +02:00
2026-08-13 19:32:22 +02:00
2026-06-22 13:39:48 +00:00
2026-07-22 22:26:10 +02:00
2026-08-13 19:32:22 +02:00
2026-07-05 13:27:13 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-17 04:23:23 +02:00
2026-07-14 19:06:31 +02:00
2026-08-13 19:32:22 +02:00
2026-07-24 02:23:15 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 02:48:18 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-16 20:35:01 +09:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 02:32:45 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-14 19:27:04 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-12 03:13:15 +02:00
2026-08-13 19:32:22 +02:00
2026-06-19 08:26:14 +00:00
2026-08-13 19:32:22 +02:00
2026-07-23 19:46:30 +00:00
2026-06-23 15:28:05 -07:00
2026-07-10 04:13:18 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-17 02:55:39 +00:00
2026-07-11 22:49:12 +09:00
2026-07-26 18:24:56 +00:00
2026-07-23 21:28:17 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-06-28 17:23:16 +02:00
2026-08-03 21:56:48 +02:00
2026-07-06 01:06:48 +00:00
2026-07-27 16:17:04 +02:00
2026-06-23 15:28:05 -07:00
2026-08-03 21:56:48 +02:00
2026-06-27 15:51:31 +00:00
2026-06-23 15:28:05 -07:00
2026-06-18 21:32:38 -07:00
2026-08-13 08:28:42 +02:00
2026-06-19 06:09:46 -07:00
2026-08-13 19:32:22 +02:00
2026-08-01 05:14:43 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-24 11:41:58 +00:00
2026-07-24 11:41:58 +00:00
2026-07-21 13:53:52 -07:00
2026-06-23 15:28:05 -07:00
2026-08-07 21:16:27 +08:00
2026-06-19 18:58:49 +02:00
2026-06-27 00:57:55 +02:00
2026-08-12 01:16:11 +02:00
2026-06-17 02:14:11 +02:00
2026-06-26 08:39:50 +01:00
2026-08-01 00:40:37 +00:00
2026-07-25 02:50:10 +00:00
2026-08-13 19:32:22 +02:00
2026-08-05 16:32:45 -04:00
2026-06-19 19:41:49 +02:00
2026-07-10 13:39:42 +02:00
2026-08-13 19:32:22 +02:00
2026-06-18 02:00:17 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 09:12:12 +00:00
2026-08-13 19:32:22 +02:00
2026-07-31 20:39:12 +02:00
2026-07-11 00:58:34 +00:00
2026-08-07 13:39:51 +02:00
2026-08-06 13:26:58 +00:00
2026-08-06 23:03:25 +08:00
2026-08-07 13:39:15 +02:00
2026-07-13 23:26:33 +02:00
2026-07-05 21:21:41 +00:00
2026-06-19 02:55:21 +02:00
2026-06-19 17:30:58 -07:00
2026-07-21 20:25:35 +00:00
2026-08-01 03:44:59 +00:00
2026-06-15 12:32:47 +02:00
2026-06-19 17:30:58 -07:00
2026-07-21 20:25:35 +00:00
2026-08-13 08:28:42 +02:00
2026-08-12 00:46:08 +02:00
2026-08-02 19:46:25 +02:00
2026-07-26 15:41:29 +02:00
2026-07-17 10:35:19 +00:00
2026-06-17 15:26:11 +02:00
2026-07-27 20:37:46 +02:00
2026-07-30 07:21:08 +02:00
2026-08-11 15:18:16 +02:00
2026-07-26 09:29:13 -03:00
2026-06-30 04:30:42 +00:00
2026-08-02 22:59:48 -04:00
2026-07-23 17:38:29 +02:00
2026-07-18 03:51:09 -07:00
2026-08-03 01:00:51 +02:00
2026-08-03 21:56:48 +02:00
2026-08-03 00:00:58 +00:00
2026-07-27 05:57:12 +02:00
2026-06-23 15:28:05 -07:00
2026-08-03 01:00:51 +02:00
2026-08-03 01:00:51 +02:00
2026-08-03 01:00:51 +02:00
2026-06-14 08:40:12 +09:00
2026-07-22 21:32:12 +02:00
2026-08-11 17:52:05 -04:00
2026-08-14 02:48:18 +00:00
2026-08-05 01:12:02 +02:00
2026-08-11 17:26:33 -04:00
2026-07-22 21:32:12 +02:00
2026-06-28 08:00:45 +02:00
2026-08-05 13:39:09 +02:00
2026-08-03 00:02:29 +02:00
2026-07-23 11:06:42 +03:00
2026-08-01 17:17:46 -04:00
2026-07-31 20:55:37 +02:00
2026-06-29 20:39:50 +00:00
2026-08-13 08:53:59 +00:00
2026-08-13 09:12:12 +00:00
2026-06-25 04:02:34 +02:00
2026-08-07 13:39:08 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-06-26 15:51:34 +02:00
2026-08-07 23:38:25 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 08:52:34 -07:00
2026-08-14 11:27:13 +00:00
2026-08-13 19:32:22 +02:00
2026-06-30 02:59:41 +02:00
2026-08-13 09:12:12 +00:00
2026-08-13 15:51:06 +00:00
2026-07-15 15:16:29 +02:00
2026-08-01 17:17:46 -04:00
2026-08-05 15:42:06 +00:00
2026-06-27 01:40:12 +02:00
2026-06-28 22:50:31 +02:00
2026-07-22 21:13:21 +02:00
2026-07-11 00:58:34 +00:00
2026-07-29 23:08:58 +02:00
2026-08-13 08:28:42 +02:00
2026-08-10 13:21:02 +02:00
2026-06-12 06:54:30 +00:00
2026-07-03 04:59:02 +00:00
2026-06-19 04:35:18 +02:00
2026-07-23 18:02:31 +02:00
2026-06-23 15:28:05 -07:00
2026-06-18 21:32:38 -07:00
2026-06-18 21:32:38 -07:00
2026-06-18 21:32:38 -07:00
2026-07-27 13:28:24 +00:00
2026-07-01 15:15:40 +00:00
2026-08-03 21:56:48 +02:00
2026-06-23 15:28:05 -07:00
2026-08-12 11:27:27 -04:00
2026-06-13 17:46:45 +00:00
2026-06-26 22:29:28 +02:00
2026-06-22 06:11:57 +02:00
2026-08-02 00:00:25 +00:00
2026-06-25 13:40:14 +00:00
2026-08-11 16:46:45 +07:00
2026-06-28 16:43:25 +00:00
2026-08-11 17:26:33 -04:00
2026-07-24 12:25:40 +02:00
2026-08-03 15:32:19 +02:00
2026-07-31 20:55:37 +02:00
2026-08-11 15:59:08 +07:00
2026-08-03 14:46:24 +02:00
2026-06-10 17:59:57 +09:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-28 03:34:36 +02:00
2026-06-23 15:28:05 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 01:26:28 -04:00
2026-06-14 05:02:04 +02:00
2026-08-13 19:32:22 +02:00
2026-08-03 21:56:48 +02:00
2026-08-10 05:30:18 +00:00
2026-07-18 00:19:14 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-06-18 21:42:02 -07:00
2026-07-17 08:06:11 +02:00
2026-06-12 03:50:05 +02:00
2026-06-23 15:28:05 -07:00
2026-06-18 21:32:38 -07:00
2026-06-14 02:02:53 +02:00
2026-06-23 15:28:05 -07:00
2026-08-13 19:32:22 +02:00
2026-07-01 00:52:50 +02:00
2026-07-14 16:35:18 +00:00
2026-06-17 13:45:11 +02:00
2026-07-11 15:10:53 +02:00
2026-07-24 11:41:58 +00:00
2026-06-23 15:28:05 -07:00
2026-07-14 18:50:47 +02:00
2026-07-30 01:42:53 +02:00
2026-06-23 15:28:05 -07:00
2026-07-01 03:07:14 +00:00
2026-08-13 19:32:22 +02:00
2026-07-01 00:07:30 +00:00
2026-06-26 15:51:34 +02:00
2026-08-13 19:32:22 +02:00
2026-06-22 06:11:57 +02:00
2026-07-01 00:52:50 +02:00
2026-08-11 15:06:12 +02:00
2026-06-26 15:51:34 +02:00
2026-06-28 22:50:59 +02:00
2026-06-25 23:35:31 +00:00
2026-06-27 03:41:10 +02:00
2026-07-01 00:52:50 +02:00
2026-06-28 22:50:59 +02:00
2026-06-28 21:13:05 +00:00
2026-07-02 04:54:10 +00:00
2026-08-01 23:15:11 +02:00
2026-08-13 01:16:23 +02:00
2026-07-16 03:32:03 +02:00
2026-08-03 21:56:48 +02:00
2026-08-03 21:56:48 +02:00
2026-08-13 19:32:22 +02:00
2026-07-17 17:06:15 +00:00
2026-07-23 23:08:30 +00:00
2026-07-27 05:49:42 +00:00
2026-08-02 05:40:14 +00:00
2026-08-09 18:41:05 +00:00
2026-08-13 01:25:50 +02:00
2026-08-12 03:12:15 +02:00
2026-06-25 13:53:00 +00:00
2026-07-21 21:46:09 +02:00
2026-07-15 14:03:18 +00:00
2026-08-07 23:38:25 +02:00
2026-07-15 15:16:29 +02:00
2026-08-13 19:32:22 +02:00
2026-06-12 14:59:00 +02:00
2026-08-11 09:28:52 +00:00
2026-07-11 15:10:53 +02:00
2026-07-31 00:20:04 +02:00
2026-07-30 19:11:27 -04:00
2026-07-31 09:44:07 +00:00
2026-08-05 22:18:05 +02:00
2026-07-27 00:51:45 +00:00
2026-07-24 09:28:42 +02:00
2026-06-23 15:28:05 -07:00
2026-06-19 23:50:06 +02:00
2026-06-23 15:28:05 -07:00
2026-08-13 19:32:22 +02:00
2026-06-11 22:41:06 +08:00
2026-07-27 04:58:26 +02:00
2026-08-01 20:13:40 +02:00
2026-07-31 10:28:48 +00:00
2026-08-02 11:33:58 +00:00
2026-06-12 13:49:59 +02:00
2026-06-23 05:15:08 +02:00
2026-07-11 16:19:05 -07:00
2026-08-05 18:46:49 +08:00
2026-07-14 16:35:18 +00:00
2026-07-27 16:07:23 +02:00
2026-08-12 01:26:28 -04:00
2026-06-23 15:28:05 -07:00
2026-06-23 15:28:05 -07:00
2026-08-07 05:59:36 +02:00
2026-08-07 05:59:36 +02:00
2026-08-14 05:33:38 +00:00
2026-06-28 07:59:02 +00:00
2026-08-09 23:55:17 +00:00
2026-07-31 19:28:41 +02:00
2026-07-10 21:49:18 +00:00
2026-07-29 23:07:53 +02:00
2026-07-11 00:13:49 +02:00
2026-06-23 15:28:05 -07:00
2026-07-27 16:17:04 +02:00
2026-06-17 01:57:14 +02:00
2026-07-27 16:15:02 +02:00
2026-07-24 13:36:03 -07:00
2026-08-13 01:14:52 +02:00
2026-06-23 15:28:05 -07:00
2026-07-18 00:13:58 +05:30
2026-07-14 18:45:22 +02:00
2026-07-23 19:52:09 +00:00
2026-06-28 07:27:01 +02:00
2026-06-14 12:03:13 +09:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-07 23:38:25 +02:00
2026-06-23 15:28:05 -07:00
2026-06-14 08:27:15 +09:00
2026-07-12 01:06:22 +02:00
2026-08-14 07:31:12 +02:00
2026-08-05 09:31:52 +08:00
2026-08-01 20:59:24 +02:00
2026-08-14 07:31:12 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-27 00:43:15 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 08:28:42 +02:00
2026-08-13 04:59:50 +02:00
2026-07-29 23:09:10 +02:00
2026-08-13 19:32:22 +02:00
2026-08-10 01:54:36 +02:00
2026-07-23 22:15:21 +02:00
2026-08-13 19:32:22 +02:00
2026-07-30 23:38:30 +00:00
2026-07-17 05:33:19 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 14:08:28 +02:00
2026-08-05 03:07:16 +02:00
2026-08-13 19:32:22 +02:00
2026-06-23 15:28:05 -07:00
2026-06-23 15:28:05 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-10 07:37:28 +00:00
2026-06-23 15:28:05 -07:00
2026-08-10 18:10:30 +00:00
2026-07-16 03:32:02 +02:00
2026-07-24 02:23:51 +02:00
2026-08-13 19:32:22 +02:00
2026-08-05 01:11:59 +02:00
2026-08-13 19:32:22 +02:00
2026-08-12 05:01:17 +00:00
2026-08-11 09:19:01 +00:00
2026-06-15 03:20:45 +02:00
2026-07-30 11:27:10 -07:00
2026-08-11 09:28:52 +00:00
2026-08-02 21:19:45 +02:00
2026-07-25 00:40:23 +00:00
2026-06-23 15:28:05 -07:00
2026-08-13 19:32:22 +02:00
2026-08-12 03:22:01 +02:00
2026-08-14 00:04:59 +02:00
2026-08-14 00:04:59 +02:00
2026-08-14 00:04:59 +02:00
2026-07-15 00:04:02 +02:00
2026-07-29 23:08:42 +02:00
2026-08-07 23:38:25 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 01:16:23 +02:00
2026-08-13 20:56:15 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-24 02:23:51 +02:00
2026-07-13 23:26:33 +02:00
2026-08-13 19:32:22 +02:00
2026-07-27 13:53:30 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-29 18:47:51 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-06-14 17:30:37 +02:00
2026-08-02 20:39:23 +02:00
2026-08-13 19:32:22 +02:00
2026-07-28 00:57:34 +02:00
2026-08-13 19:32:22 +02:00
2026-08-10 07:03:13 +00:00
2026-07-27 20:08:30 +02:00
2026-08-03 21:56:48 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-14 08:52:34 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-06-17 12:24:49 +02:00
2026-07-11 19:50:23 +02:00
2026-08-14 08:52:34 -07:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-31 20:55:37 +02:00
2026-08-01 13:50:53 -04:00
2026-08-14 14:23:15 +02:00
2026-08-08 06:32:01 +02:00
2026-07-19 15:15:58 +05:30
2026-08-11 17:26:33 -04:00
2026-06-30 04:14:48 +02:00
2026-07-02 20:34:15 +00:00
2026-06-12 03:27:50 +02:00
2026-08-08 19:50:59 +02:00
2026-06-12 15:37:56 +02:00
2026-07-10 07:41:59 +00:00
2026-07-27 20:33:38 +02:00
2026-08-04 16:29:15 -07:00
2026-08-13 08:28:42 +02:00
2026-07-01 23:48:26 +02:00
2026-07-02 20:32:27 +00:00
2026-08-10 04:08:09 +02:00
2026-08-03 04:14:58 +02:00
2026-06-14 02:02:53 +02:00
2026-08-01 17:10:36 +00:00
2026-08-05 01:15:59 +02:00
2026-07-17 23:25:16 +00:00
2026-07-02 03:39:59 +02:00
2026-06-28 07:27:01 +02:00
2026-07-11 15:52:35 +02:00
2026-07-03 00:16:07 +00:00
2026-08-08 20:49:28 +02:00
2026-08-13 08:28:42 +02:00
2026-07-17 01:22:23 +04:00
2026-08-05 02:32:36 +02:00
2026-08-13 19:32:22 +02:00
2026-06-17 23:30:14 +00:00
2026-07-23 20:44:50 +02:00
2026-08-13 02:09:30 +02:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-05 01:11:59 +02:00
2026-08-04 13:57:04 +00:00
2026-08-02 20:39:23 +02:00
2026-08-04 15:53:58 -06:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-08-02 20:39:23 +02:00
2026-06-14 04:29:11 +02:00
2026-06-17 10:53:08 -04:00
2026-07-03 16:44:12 +00:00
2026-07-17 05:49:13 +02:00
2026-07-03 16:44:12 +00:00
2026-07-17 13:19:55 -07:00
2026-07-17 07:37:29 +02:00
2026-08-07 13:43:20 +02:00
2026-07-14 00:39:34 +02:00
2026-07-03 16:44:12 +00:00
2026-08-12 15:56:33 +08:00
2026-07-14 00:39:34 +02:00
2026-07-19 13:03:38 -07:00
2026-07-17 05:49:13 +02:00
2026-08-11 13:52:48 -04:00
2026-08-12 13:26:01 +02:00
2026-08-13 20:20:49 +02:00
2026-07-31 21:16:28 +00:00
2026-08-13 19:32:22 +02:00
2026-08-13 19:32:22 +02:00
2026-07-28 02:05:55 +02:00
2026-08-03 01:00:51 +02:00
2026-07-03 00:50:03 +00:00
2026-07-24 08:54:16 +02:00
2026-07-26 11:18:31 +00:00
2026-07-24 08:54:16 +02:00
2026-08-13 04:59:50 +02:00
2026-07-06 07:38:08 +02:00
2026-08-02 20:39:23 +02:00
2026-08-13 01:34:31 +02:00
2026-07-01 13:13:27 +00:00
2026-08-13 19:32:22 +02:00
2026-07-27 16:43:53 +02:00
2026-07-22 21:13:21 +02:00
2026-07-21 22:37:12 +00:00
2026-07-17 05:02:31 +02:00
2026-08-13 19:32:22 +02:00
2026-07-29 23:08:22 +02:00
2026-08-08 13:17:01 +00:00
2026-07-27 14:35:06 +02:00
2026-07-29 23:08:34 +02:00
2026-06-14 08:23:57 +09:00
2026-07-11 00:06:28 +00:00
2026-06-23 15:28:05 -07:00
2026-07-29 23:08:34 +02:00
2026-07-14 16:22:55 +00:00
2026-06-23 15:28:05 -07:00
2026-07-03 18:21:19 +00:00
2026-07-03 18:34:56 +00:00
2026-08-13 02:07:57 +02:00
2026-07-24 03:48:43 +00:00
2026-08-08 13:17:01 +00:00
2026-07-03 00:50:03 +00:00
2026-07-26 12:02:18 -07:00
2026-07-05 16:53:07 +02:00
2026-07-15 19:16:41 +02:00
2026-07-05 16:53:07 +02:00
2026-08-03 01:00:51 +02:00
2026-07-09 18:30:48 +02:00
2026-08-02 20:39:23 +02:00
2026-06-24 14:11:39 +00:00
2026-08-13 19:32:22 +02:00
2026-07-18 17:51:51 +02:00
2026-07-14 18:34:14 +02:00
2026-07-14 19:01:47 +00:00
2026-07-17 18:03:13 +00:00
2026-06-27 05:28:00 +00:00
2026-08-14 01:35:21 +00:00
2026-08-03 13:18:54 +00:00
2026-08-14 00:27:16 +02:00
2026-08-12 13:26:01 +02:00
2026-07-23 21:25:15 +09:00
2026-08-12 13:26:01 +02:00
2026-07-29 23:08:41 +02:00
2026-07-18 03:03:42 +05:30
2026-06-24 13:44:47 +00:00
2026-08-03 00:19:58 +02:00
2026-06-23 15:28:05 -07:00
2026-07-29 23:09:40 +02:00
2026-07-31 00:19:52 +02:00
2026-07-28 10:59:36 +02:00
2026-06-23 15:28:05 -07:00
2026-08-13 01:14:46 +02:00
2026-07-15 15:16:29 +02:00
2026-08-08 02:45:19 +08:00
2026-06-14 09:26:06 +00:00
2026-08-05 13:39:09 +02:00