Repository navigation
Commit 05cc3ee
<!-- claude-projects-attribution: {"github_login":"os-sales"} -->
_Requested by **Sales** · [project
thread](https://claude.ai/code/project/chan_01D5bWFY3rFzgJcytD5gD4Uu?thread=cmsg_01D5bWFY3rFzgJcytD5gD4UuMjbPDrsigsyqoKsV4WZQMz)_
Part of #25224
Clause-②: no
Metadata-protocol: none
Ruling-ref: 6348891160, 6364006498
The basis for the `Clause-②: no` line: this is a move. No accept set,
route, refusal, code or answer changes, and the published surface is
measured unchanged at both commits:
- `@objectstack/plugin-auth`'s `dist/index.d.ts` and `dist/index.d.mts`
are raw byte-identical to base at commit 1 and at head (0 diff lines, so
the union-order normalisation has nothing to do). The positive control
is the one ruling `6348891160` asks for.
- Its ESM and CJS entries export the same 159 names at base, at commit 1
and at head.
The `.d.ts` bar is ruling `6348891160` item 1 (on #25222, covering this
card). Ruling `6364006498` is Sales's ruling A on this card, for bodies
that read shared unexported helpers. This is the first cut it applies
to.
Cut 9 of the `auth-manager.ts` split: **the MCP access-token verifier.**
Two `AuthManager` method bodies (94 lines) and the one module-level
declaration only they read (11 lines) move unedited, re-indented one
level, into one new module,
`packages/plugins/plugin-auth/src/auth-manager-mcp-access-token.ts`.
#25224 stays open for the later cuts.
This follows the amended claim `6367866058`, which amends `6365318480`
on the file cut 8 left (#25423, landed note `6366862591`). The shape is
cuts 1 to 8's, which is #23050's.
Branch: `claude/project-thread-lg3wrj`, the harness-pinned branch for
this session, restarted from `origin/main` `2b7c331537` after #25423
merged. It names no issue, so the card relation is this body's first
line.
`auth-manager.ts` goes from 8,790 to 8,711 lines. The cut is +247 / −112
over 4 files: 359 changed lines, under the 3,000-line line. It is not a
governed surface (`check-governed-merges.mjs --branch HEAD`: 0 of the 4
paths hit the register).
There are two commits, so the `index.ts` change is measured by itself:
- `b048a93241`: `index.ts` names `auth-manager.ts`'s published exports,
and one comment sentence is reworded;
- `619494870b`: the move.
## Commit 1: `index.ts` names what it publishes from `auth-manager.ts`
Ruling `6364006498`, parameter 1. `index.ts:16` was `export * from
'./auth-manager.js';`, so any module-level helper exported from
`auth-manager.ts` for a module split out of it would have been
published. It is now an explicit `export { … } from
'./auth-manager.js';` of the 14 names `auth-manager.ts` exports at base,
in declaration order:
`DEFAULT_AUTH_BASE_PATH`, `readMcpServerEnabledEnv`,
`resolveOidcProviderEnabled`, `resolveDcrEnabled`, `resolveScimEnabled`,
`assertScimAdminCoherence`, `isOAuthEligibleBaseUrl`, `type
InvitationPlacementServiceLike`, `readInvitationPlacementIntent`, `type
AuthManagerOptions`, `ipMatchesRange`, `normalizeAuthEmailLocale`,
`authEmailLocaleFromRequest`, `AuthManager`.
A four-line comment above it says a new export of `auth-manager.ts` is
published only by adding it there. The list was read off the base file
with the TypeScript compiler API: 14 exported declarations, exactly
these, in this order. At head the file has 15, and the fifteenth,
`OAUTH_ORGANIZATION_CLAIM` (commit 2), is not listed.
**One comment-only reword, agreed with the seat.** Cut 5's module header
(`auth-manager-email-sms-delivery.ts:45`–`:49`) said "`index.ts`
re-exports `auth-manager.ts` whole, so exporting them from there would
add them to the published surface, and a value import of that file from
here would be a cycle." This commit makes the first half false, and the
PR would otherwise ship a statement it makes false. The sentence now
reads:
> The four module-level declarations move with the bodies rather than
being imported back, because only these bodies read them. (`index.ts`
lists the names it publishes from `auth-manager.ts` one by one, so a
helper exported there in place for a module split out of it stays off
the published surface.) Nothing re-exports this module, so the published
surface does not move.
- The cycle half is dropped. A value import of `auth-manager.ts` from a
split module is a cycle, but cuts 8 and 9 take one by design, read only
inside function bodies, so it is no longer a reason. "Only these bodies
read them" is measured: none of the four names
(`SMS_QUOTA_EXCEEDED_CODE`, `isSmsQuotaRefusal`,
`smsQuotaExceededApiError`, `PHONE_OTP_SEND_REFUSAL_CODE`) has a reader
in `auth-manager.ts`.
- Neither the old nor the new wording cites an `ADR-NNNN`, with or
without a decision letter: 0 and 0.
- The file's token sequence is unchanged: 1,427 tokens before and after,
compared with the template-aware scanner the move proof uses (trivia
skipped), and a comment-free print of the file is identical. Negative
control: one string token changed (`'TOO_MANY_REQUESTS'` →
`'TOO_MANY_REQUEST'`) makes both comparisons fail, exit 1.
**What commit 1 changes in the build**, measured at `b048a93241`:
- `dist/index.d.ts` and `dist/index.d.mts` are raw byte-identical to
base;
- the ESM and CJS entries export the same 159 names;
- `index.js` and `index.mjs` are byte-identical to base. Only
`index.js.map` and `index.mjs.map` move, because `index.ts`'s lines
moved.
## Commit 2: the move
| moved | base line | lines | members it reads |
|---|---:|---:|---|
| `verifyMcpAccessToken` (public) | `:7228` | 74 | `getApi`,
`getAuthIssuer`, `getMcpResourceUrl`, `isMcpOAuthEnabled`,
`rereadKeyringForUnknownKey` |
| `rereadKeyringForUnknownKey` (private) | `:7321` | 20 | `config`, and
`unknownKeyReread` (read and written) |
| `readPublishedJwks` (module-level, with its docblock) |
`:1483`–`:1493` | 11 | — |
Lines are base `2b7c331537`. The members come from a walk of every
`this.X` in each body with the TypeScript compiler API. No body has a
bare `this`, `this[...]`, `arguments` or `super`, or a `this` inside a
`function` or a nested class. The one member a body assigns is
`unknownKeyReread` (`rereadKeyringForUnknownKey`).
- **`verifyMcpAccessToken`** is the local, fail-closed check of an OAuth
2.1 Bearer access token this deployment's authorization server minted:
the signature against the published key set, `iss`, `aud`, the refusal
of a token no human delegated, and the organization claim.
- **`rereadKeyringForUnknownKey`** is the one forced keyring re-read a
token signed by an unknown key earns, single-flight and floored at
`UNKNOWN_SIGNING_KEY_REREAD_FLOOR_MS`.
- **`readPublishedJwks` moves with them, unexported.** It reads the key
set `/jwks` publishes. Its only readers are the two moved bodies
(`:7238`, `:7329`). No anchor anywhere in the tree names it, and no test
reads it. Its docblock cites `[#24186]` and no ADR.
**`OAUTH_ORGANIZATION_CLAIM` is exported in place** (ruling
`6364006498`, parameter 2):
- `:1465` becomes `export const OAUTH_ORGANIZATION_CLAIM =
'organization_id';`. That is the only edit to text that stays.
- It does not move. `buildPluginList` (`:4398`, which stays) mints the
claim with it, and `verifyMcpAccessToken` (`:7288`) reads it back; its
docblock calls it "one spelling for both ends".
- The new module imports it by value from `./auth-manager.js`, beside
`type AuthManager`. The one read is inside `verifyMcpAccessToken`'s
body, when a token is verified. The module's top level is three imports,
`readPublishedJwks`, the host interface and the two functions, so
nothing reads the binding while the two modules are first evaluated.
- `index.ts` (commit 1) does not list it, so it is not published. The
head's ESM and CJS entries do not export it, and `dist/index.d.ts` does
not name it.
**Imports.**
- `retireHeldKeyrings` and `UNKNOWN_SIGNING_KEY_REREAD_FLOOR_MS`
(`./signing-key-read-cache.js`) leave `auth-manager.ts`, where their
only reader was `rereadKeyringForUnknownKey`'s body, and that import
line goes. The two docblock mentions of
`UNKNOWN_SIGNING_KEY_REREAD_FLOOR_MS` that stay in the class are
backticked text, not `{@link}`.
- `type JSONWebKeySet` (`jose`) stays in `auth-manager.ts`, for the
`unknownKeyReread` field and the `rereadKeyringForUnknownKey` signature.
The new module imports it as well.
- The `await import('jose')` inside `verifyMcpAccessToken` moves with
the body.
**Evaluation order.** `signing-key-read-cache.js` was first reached
through `auth-manager.ts`'s own import line (`:146`). It is now first
reached through `auth-manager-plugin-assembly.js`, which imports
`createSigningKeyReader` from it (cut 6's import line, `:221` at head).
Its top level is one type-only import, literal constants, a `Set`, a
`WeakMap`, interfaces and function declarations. It imports no value and
does nothing outside itself, so the change in order cannot be observed.
## The shape
- **The class keeps both methods** at their places, with their names,
signatures and docblocks: the published `.d.ts` lists each one. Each
body is now a host literal of exactly the members that body reads, typed
as a `Pick` of `McpAccessTokenHost`, plus `.call`.
- **`McpAccessTokenHost`** lives in the new module. It names the 7
members the bodies read, each typed as the class member
(`AuthManager['config']`, …).
- **Every method goes as a late-bound closure** (`(...a) =>
this.m(...a)`), so a double or spy set on the manager is still the one a
body reaches. The verifier suites replace `getApi` with a key-set
double, and `verifyMcpAccessToken` asks `rereadKeyringForUnknownKey`
through the manager rather than calling the function directly.
- **`config` goes as a getter.** The class reassigns it after
construction (`setRuntimeBaseUrl`, `applyConfigPatch`), so it is read
off the manager when a body reads it, as before.
- **`unknownKeyReread` goes as a get/set pair.**
`rereadKeyringForUnknownKey` stores the re-read it starts on the
manager, so the floor and the read in flight stay the manager's, shared
by every token it verifies.
- **`verifyMcpAccessToken` is no longer `async`.** It returns the moved
async function's own promise, so a caller awaits the same promise the
body settles. Building the host cannot throw, so it does not now throw
synchronously where it used to reject. `rereadKeyringForUnknownKey` was
not `async` and stays so.
- **The cost:** one small host object per call, on MCP bearer-token
verification only, not on every request.
- **Nothing re-exports the new module**, so the published surface does
not move.
## Path readers
No path reader needs migrating: none reads a moved line.
- **The tenant-audit census.** No census site moves: the moved text has
no engine write, no `this.X.delete()` and no elevation read.
`check-tenant-audit-census` exits 0 at head with no `--write`: 238 sites
at base and at head, compared per site with line numbers ignored, 0
differences, and 2 of them in `auth-manager.ts` at both. So neither
census document is edited.
- **`check-dispatcher-error-vocabulary.mjs`** and
**`api-error-code.pin.test.ts`'s `authManagerFiles` floor**: no `new
APIError(` sits in the moved text. The gate reads 56 sites found and 56
classified at base and at head.
- **The plugin-factory scans** in `better-auth-schema-parity.test.ts`
and `managed-extension-fields.test.ts` match `await
import('better-auth/plugins…')` and `await import('@better-auth/…')`
only. The moved `await import('jose')` is neither, and the import lines
that change are local modules.
- **`check-auth-mount-ledger.mjs`** and
**`auth-manager-base-path.test.ts`**: no base-path literal or
declaration sits in the moved text. `getAuthIssuer` and
`getMcpResourceUrl` stay on the class.
- **The system-context census** reads 148 elevation read sites at base
and at head.
- **`scripts/adr-anchors/`**: the `auth-manager.ts` entry's invariant
(ADR-0093, ADR-0108) is about the organization roles and the membership
reconciler, not this text.
- **Callers through the manager.** These suites drive the two methods
through the class method, and all pass at head:
- `auth-manager.mcp-oauth.test.ts` (local JWKS verification,
fail-closed);
- `auth-manager.mcp-verifier-keyring.test.ts` (the forced re-read, its
floor and single flight; it reads `UNKNOWN_SIGNING_KEY_REREAD_FLOOR_MS`
and `retireHeldKeyrings` from `signing-key-read-cache.js` itself);
- `auth-manager.oauth-consent-organization.test.ts` (the organization
claim end to end);
- `auth-manager.mcp-oauth-resource.test.ts`.
- **Every symbol anchor into the file.** Before the cut, every
`auth-manager.ts#symbol` anchor in the tracked tree outside changelogs
was mapped with `symbolSegmentResolution` from
`scripts/symbol-anchors.mjs`. There are 29, and all 29 are
`declaration`-class at base, with the moved text blanked, and at head.
None names a moved method or `readPublishedJwks`. One names a token the
moved text carries, and it resolves on the declaration that stays:
`#isMcpOAuthEnabled` (`docs/qa/platform-checklist/areas/ai.json:806`;
the moved verifier calls `this.isMcpOAuthEnabled()`).
## The decision-letter layer does not move
The seat asks each cut's report for this count at both ends.
`check-adr-anchors`' decision-letter layer reads 2,001 at base
`2b7c331537` and 2,001 at head, and the gate exits 0 at both. Nothing
this PR adds or moves cites an `ADR-NNNN`: not the moved text, not the
new module's header, not the `index.ts` comment, and not the reworded
sentence. So the number layer reads the same at both: 52,177 citations
across 6,637 files. No anchor entry is added for the new module, as for
cuts 1 to 8's modules.
## Proof
Builds and suites ran through `os-verify-lock`, and every exit code was
captured before any pipe. Base `2b7c331537`, commit 1 `b048a93241`, head
`619494870b`. A full `turbo run build` ran first. Then `plugin-auth` was
built and its suite run at base, built at commit 1, and built and its
suite run at head, on the same dependency dists.
**1. The moved text.**
- For each of the 2 methods, the base class body and the new module's
function body are the same TypeScript token sequence (scanner tokens,
kind and text, trivia skipped, each template literal re-scanned at its
substitutions as the parser does).
- Every line is the base line minus exactly two leading spaces, and the
parameters and return type are the same text.
- Each class method keeps its docblock and signature, with `async`
dropped from `verifyMcpAccessToken`.
- `readPublishedJwks`'s 11 lines, docblock included, are verbatim in the
module and absent from `auth-manager.ts`. Its 76 tokens are identical.
- Result: 2 of 2 bodies and 1 of 1 declarations pass, 94 body lines plus
11.
| moved | lines | tokens |
|---|---:|---:|
| `verifyMcpAccessToken` | 74 | 434 |
| `rereadKeyringForUnknownKey` | 20 | 130 |
| `readPublishedJwks` | 11 | 76 |
- **Negative control:** one token changed in the module
(`errors.JWKSNoMatchingKey` → `errors.JWKSNoMatchingKeys` in
`verifyMcpAccessToken`) makes that method fail (tokens and lines
DIFFER), and the run exits 1. The module was restored afterwards, and
`cmp` against the saved copy was clean.
- **An independent reading:** `git diff --color-moved=plain
--color-moved-ws=allow-indentation-change b048a93 6194948` over
the two source files marks 105 of the 107 deleted lines and 120 of the
222 added lines as moved.
- The other 2 deleted lines are `const OAUTH_ORGANIZATION_CLAIM = …`
(now `export const`) and the `async verifyMcpAccessToken(` signature
line.
- The other added lines are the stubs' host literals,
`McpAccessTokenHost`, the module header, the per-function pointer
docblocks and the import blocks.
**2. `.d.ts` and exports (ruling `6348891160` items 1 and 2).**
| file | base | commit 1 | head | raw diff lines vs base |
|---|---|---|---|---:|
| `dist/index.d.ts` raw |
`12679e13f74973b0510551a65b50808e7c3936a2d273cf2f262a9196648c0737` |
same | same | 0 and 0 |
| `dist/index.d.ts` normalised |
`c7a9fa25f118cfec858d770b979767744d27d9757a9ea4063faeea6238c33c01` |
same | same | |
| `dist/index.d.mts` raw |
`df57562ff950159e738d790cb7ee82a655ba0fffddafe4153bdcc50c4537336f` |
same | same | 0 and 0 |
| `dist/index.d.mts` normalised |
`68f824aea0947d9895b968ed46a7972eaae43ef0f2bda7e3ba9113002233ade6` |
same | same | |
- The normaliser, verbatim (the ruling's one-liner): `node -e 'const
s=require("fs").readFileSync(process.argv[1],"utf8");process.stdout.write(s.replace(/"[^"\n]*"(?:\s*\|\s*"[^"\n]*")+/g,r=>r.split(/\s*\|\s*/).sort().join("
| ")))' dist/index.d.ts | sha256sum`.
- The raw files are already byte-identical, so no union-order swap
occurs in this cut: items 1(b) and 1(d) hold with nothing to account
for.
- **Positive control:** the head `dist/index.d.ts` with one private
member made public (`private rereadKeyringForUnknownKey;` →
`rereadKeyringForUnknownKey;`, line 3320, a one-line change) hashes raw
`090e9f39924a2034bc496e4fded90d5f267d90ff88aa20a92619d04019ed471b` and
normalised
`dc9fc90b5a1699dcb01263f89e1c983da7367710ea2c0f6e17ec395a9d0da579`. Both
differ from the readings above.
- **Export lists:** ESM `dist/index.mjs` and CJS `dist/index.js` each
have 159 names at base, at commit 1 and at head, the same list (the
sha256 of the sorted names is `3abb126f5babb701…` on all six).
`OAUTH_ORGANIZATION_CLAIM`, `readPublishedJwks` and the module's
functions are not among them, and `dist/index.d.ts` names none of them.
- **The bundle:** 18 files in `dist/` at all three, the same list. From
base to head, only `index.js`, `index.mjs` and their two `.map` files
differ, as a move of code inside the bundle must. From base to commit 1,
only the two `.map` files differ.
**3. Tests and lint.**
- `pnpm exec vitest run --maxWorkers=3` in
`packages/plugins/plugin-auth`: base `Test Files 189 passed (189)`,
`Tests 3580 passed | 10 skipped (3590)`, exit 0. Head: the same counts,
exit 0.
- `pnpm --filter @objectstack/plugin-auth typecheck` (both `tsc`
projects and `check:test-typecheck`): exit 0. `pnpm --filter
@objectstack/runtime typecheck`: exit 0.
- `eslint --no-inline-config` (the root `lint` script's binary and
flags) over the 4 source files: exit 0.
**4. The censuses and the anchors, at base and at head.**
- The tenant-audit census, as above: 238 sites at both, 0 per-site
differences, 0 unresolved and 0 unledgered at both, and every total the
same. Only `scannedSources` (725 → 726, the new module) and `measuredAt`
differ.
- These checkers were run by hand at base and at head, because
`dispatch-gates` does not derive the ADR one. All six exit 0 at both,
with the same reading:
- `check-adr-symbol-anchors`: 2,384 anchors across 142 records, 466
symbol (440 declaration, 26 literal);
- `check-adr-anchors`: 80 anchored files; the decision-letter layer
reads 2,001, as above;
- `check-scripts-symbol-anchors`: 4,062 anchors;
- `check-spec-docblock-symbol-anchors`: 5,075 anchors (both of these
read in the same built tree);
- `check-system-context-census`: 148 elevation read sites;
- `check-platform-checklist`: 16 areas, 329 items.
**5. Gates.**
- `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` derives 53 commands for the 4 paths. All 53
ran at `619494870b` after the full build, and all 53 exited 0.
- `--ran` over the record with each exit code: 53 derived, 53 run, 0
NOT-MEASURED, a derived zero.
- `check-governed-merges.mjs --branch HEAD`: NOT governed, 359 changed
lines.
- **Docs drift** (`node scripts/docs-audit/affected-docs.mjs --json
2b7c331`, exit 0): 1 page,
`content/docs/kernel/contracts/auth-service.mdx`, which states the
`verifyMcpAccessToken` contract signature. The class method keeps that
signature, so no doc edit is owed. 0 release-owned pages.
- **Serial constraints** (in the claim): 25 PRs are open, and none
touches this cut's files or a reader above. `origin/main` moved to
`b2c0752900` during the run with #25434, which touches
`otp-send-guard.ts` and `rate-limit-storage.ts` and its test, none of
them in this surface. `git merge-tree` of this branch onto `b2c0752900`
is clean.
## Finding, outside this cut
`scripts/measure-durability-swallow-family.mjs` is a measurement, not a
gate. Its prose at `:625` and `:775` names
`auth-manager.ts::verifyMcpAccessToken` as the one outstanding DARK
member. The census does not list it on base: its one `auth-manager.ts`
DARK member is `observeFirstMemberships`. So that prose was already
stale before this cut.
Its `--json` reading is the same at base and at head: 74 members at
both, every member and quiet row the same (line numbers ignored), and
every statistic the same except the scanned file count (3,449 → 3,450,
the new module). Neither side names `verifyMcpAccessToken` or the new
module. `scripts/` is not edited, and the finding is for the seat to
judge.
## Changeset
None: `skip-changeset`, per ruling `6348891160` item 4. The published
declarations and export lists are unchanged, and the bundle's bytes move
only because code moved inside it.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01LSXBc2GCBwiAL7vV4kWkyr)_
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01LSXBc2GCBwiAL7vV4kWkyr
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent dd124e9 commit 05cc3ee
4 files changed
Lines changed: 247 additions & 112 deletions
File tree
- packages/plugins/plugin-auth/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
50 | 51 | | |
51 | 52 | | |
52 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | 146 | | |
151 | 147 | | |
152 | 148 | | |
| |||
242 | 238 | | |
243 | 239 | | |
244 | 240 | | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
245 | 249 | | |
246 | 250 | | |
247 | 251 | | |
| |||
1462 | 1466 | | |
1463 | 1467 | | |
1464 | 1468 | | |
1465 | | - | |
| 1469 | + | |
1466 | 1470 | | |
1467 | 1471 | | |
1468 | 1472 | | |
| |||
1480 | 1484 | | |
1481 | 1485 | | |
1482 | 1486 | | |
1483 | | - | |
1484 | | - | |
1485 | | - | |
1486 | | - | |
1487 | | - | |
1488 | | - | |
1489 | | - | |
1490 | | - | |
1491 | | - | |
1492 | | - | |
1493 | | - | |
1494 | | - | |
1495 | 1487 | | |
1496 | 1488 | | |
1497 | 1489 | | |
| |||
7225 | 7217 | | |
7226 | 7218 | | |
7227 | 7219 | | |
7228 | | - | |
| 7220 | + | |
7229 | 7221 | | |
7230 | 7222 | | |
7231 | | - | |
7232 | | - | |
7233 | | - | |
7234 | | - | |
7235 | | - | |
7236 | | - | |
7237 | | - | |
7238 | | - | |
7239 | | - | |
7240 | | - | |
7241 | | - | |
7242 | | - | |
7243 | | - | |
7244 | | - | |
7245 | | - | |
7246 | | - | |
7247 | | - | |
7248 | | - | |
7249 | | - | |
7250 | | - | |
7251 | | - | |
7252 | | - | |
7253 | | - | |
7254 | | - | |
7255 | | - | |
7256 | | - | |
7257 | | - | |
7258 | | - | |
7259 | | - | |
7260 | | - | |
7261 | | - | |
7262 | | - | |
7263 | | - | |
7264 | | - | |
7265 | | - | |
7266 | | - | |
7267 | | - | |
7268 | | - | |
7269 | | - | |
7270 | | - | |
7271 | | - | |
7272 | | - | |
7273 | | - | |
7274 | | - | |
7275 | | - | |
7276 | | - | |
7277 | | - | |
7278 | | - | |
7279 | | - | |
7280 | | - | |
7281 | | - | |
7282 | | - | |
7283 | | - | |
7284 | | - | |
7285 | | - | |
7286 | | - | |
7287 | | - | |
7288 | | - | |
7289 | | - | |
7290 | | - | |
7291 | | - | |
7292 | | - | |
7293 | | - | |
7294 | | - | |
7295 | | - | |
7296 | | - | |
7297 | | - | |
7298 | | - | |
7299 | | - | |
7300 | | - | |
7301 | | - | |
7302 | | - | |
| 7223 | + | |
| 7224 | + | |
| 7225 | + | |
| 7226 | + | |
| 7227 | + | |
| 7228 | + | |
| 7229 | + | |
| 7230 | + | |
| 7231 | + | |
7303 | 7232 | | |
7304 | 7233 | | |
7305 | 7234 | | |
| |||
7319 | 7248 | | |
7320 | 7249 | | |
7321 | 7250 | | |
7322 | | - | |
7323 | | - | |
7324 | | - | |
7325 | | - | |
7326 | | - | |
7327 | | - | |
7328 | | - | |
7329 | | - | |
7330 | | - | |
7331 | | - | |
7332 | | - | |
7333 | | - | |
7334 | | - | |
7335 | | - | |
7336 | | - | |
| 7251 | + | |
| 7252 | + | |
| 7253 | + | |
| 7254 | + | |
| 7255 | + | |
| 7256 | + | |
| 7257 | + | |
| 7258 | + | |
7337 | 7259 | | |
7338 | | - | |
7339 | | - | |
| 7260 | + | |
7340 | 7261 | | |
7341 | 7262 | | |
7342 | 7263 | | |
| |||
0 commit comments