[INFO] fetching crate oak-php 0.0.11... [INFO] testing oak-php-0.0.11 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate oak-php 0.0.11 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate oak-php 0.0.11 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate oak-php 0.0.11 [INFO] tweaked toml for crates.io crate oak-php 0.0.11 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate oak-php 0.0.11 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oak-php 0.0.11 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded inotify v0.11.0 [INFO] [stderr] Downloaded oak-mcp v0.0.11 [INFO] [stderr] Downloaded oak-symbols v0.0.11 [INFO] [stderr] Downloaded oak-pretty-print v0.0.11 [INFO] [stderr] Downloaded oak-semantic-search v0.0.11 [INFO] [stderr] Downloaded oak-macros v0.0.11 [INFO] [stderr] Downloaded oak-testing v0.0.11 [INFO] [stderr] Downloaded oak-vfs v0.0.11 [INFO] [stderr] Downloaded oak-hover v0.0.11 [INFO] [stderr] Downloaded oak-highlight v0.0.11 [INFO] [stderr] Downloaded oak-folding v0.0.11 [INFO] [stderr] Downloaded oak-resolver v0.0.11 [INFO] [stderr] Downloaded oak-core v0.0.11 [INFO] [stderr] Downloaded oak-lsp v0.0.11 [INFO] [stderr] Downloaded oak-navigation v0.0.11 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2c4068ca56eb2095e25448963d38646d97b67f980815ba8fa7ff3eb3c49b0039 [INFO] running `Command { std: "docker" "start" "-a" "2c4068ca56eb2095e25448963d38646d97b67f980815ba8fa7ff3eb3c49b0039", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2c4068ca56eb2095e25448963d38646d97b67f980815ba8fa7ff3eb3c49b0039", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2c4068ca56eb2095e25448963d38646d97b67f980815ba8fa7ff3eb3c49b0039", kill_on_drop: false }` [INFO] [stdout] 2c4068ca56eb2095e25448963d38646d97b67f980815ba8fa7ff3eb3c49b0039 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e8b3ac63c9c37e47dafda117bb07bd0cd9c2510f741c16945050483d93c0232e [INFO] running `Command { std: "docker" "start" "-a" "e8b3ac63c9c37e47dafda117bb07bd0cd9c2510f741c16945050483d93c0232e", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling twox-hash v2.1.2 [INFO] [stderr] Compiling triomphe v0.1.15 [INFO] [stderr] Compiling oak-core v0.0.11 [INFO] [stderr] Compiling oak-php v0.0.11 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.99s [INFO] running `Command { std: "docker" "inspect" "e8b3ac63c9c37e47dafda117bb07bd0cd9c2510f741c16945050483d93c0232e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e8b3ac63c9c37e47dafda117bb07bd0cd9c2510f741c16945050483d93c0232e", kill_on_drop: false }` [INFO] [stdout] e8b3ac63c9c37e47dafda117bb07bd0cd9c2510f741c16945050483d93c0232e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 82bd85ff92c92ef0d36e7b54420793743c47883e321e856a9081a59302894742 [INFO] running `Command { std: "docker" "start" "-a" "82bd85ff92c92ef0d36e7b54420793743c47883e321e856a9081a59302894742", kill_on_drop: false }` [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling oak-testing v0.0.11 [INFO] [stderr] Compiling oak-php v0.0.11 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 5.80s [INFO] running `Command { std: "docker" "inspect" "82bd85ff92c92ef0d36e7b54420793743c47883e321e856a9081a59302894742", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "82bd85ff92c92ef0d36e7b54420793743c47883e321e856a9081a59302894742", kill_on_drop: false }` [INFO] [stdout] 82bd85ff92c92ef0d36e7b54420793743c47883e321e856a9081a59302894742 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 2267579b560841aa5a4283d67d6aa85fe2d8d1ffa7a91cfe97ae9e8ba97ea308 [INFO] running `Command { std: "docker" "start" "-a" "2267579b560841aa5a4283d67d6aa85fe2d8d1ffa7a91cfe97ae9e8ba97ea308", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oak_php-3a603f7b9dc4695e) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/main.rs (/opt/rustwide/target/debug/deps/main-0cd1561b7ae18f1f) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test ready ... ok [INFO] [stdout] test parser::test_php_parser ... ok [INFO] [stdout] test lexer::test_php_lexer ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- lexer::test_php_lexer stdout ---- [INFO] [stdout] Testing file: /opt/rustwide/workdir/tests/lexer/basic.php [INFO] [stderr] error: test failed, to rerun pass `--test main` [INFO] [stdout] Error: TestFailure { path: "/opt/rustwide/workdir/tests/lexer/basic.php", expected: "LexerTestExpected {\n success: true,\n count: 100,\n tokens: [\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 0,\n end: 1,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 1,\n end: 2,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"php\",\n start: 2,\n end: 5,\n },\n TokenData {\n kind: \"Declare\",\n text: \"declare\",\n start: 27,\n end: 34,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 34,\n end: 35,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"strict_types\",\n start: 35,\n end: 47,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 47,\n end: 48,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 48,\n end: 49,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 49,\n end: 50,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 50,\n end: 51,\n },\n TokenData {\n kind: \"Namespace\",\n text: \"namespace\",\n start: 55,\n end: 64,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"App\",\n start: 65,\n end: 68,\n },\n TokenData {\n kind: \"Error\",\n text: \"\\\\\",\n start: 68,\n end: 69,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Models\",\n start: 69,\n end: 75,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 75,\n end: 76,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 80,\n end: 83,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 84,\n end: 92,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 92,\n end: 93,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 95,\n end: 98,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Exception\",\n start: 99,\n end: 108,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 108,\n end: 109,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 111,\n end: 114,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 115,\n end: 118,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 118,\n end: 119,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 121,\n end: 124,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDOException\",\n start: 125,\n end: 137,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 137,\n end: 138,\n },\n TokenData {\n kind: \"Class\",\n text: \"class\",\n start: 173,\n end: 178,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 179,\n end: 183,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 185,\n end: 186,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 192,\n end: 199,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 200,\n end: 203,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 204,\n end: 207,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 207,\n end: 208,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 214,\n end: 221,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 222,\n end: 228,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$username\",\n start: 229,\n end: 238,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 238,\n end: 239,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 245,\n end: 252,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 253,\n end: 259,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 260,\n end: 266,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 266,\n end: 267,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 273,\n end: 280,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 281,\n end: 282,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 282,\n end: 288,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$firstName\",\n start: 289,\n end: 299,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 299,\n end: 300,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 306,\n end: 313,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 314,\n end: 315,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 315,\n end: 321,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lastName\",\n start: 322,\n end: 331,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 331,\n end: 332,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 338,\n end: 345,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 346,\n end: 354,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$createdAt\",\n start: 355,\n end: 365,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 365,\n end: 366,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 372,\n end: 379,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 380,\n end: 384,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$isActive\",\n start: 385,\n end: 394,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 394,\n end: 395,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 403,\n end: 409,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 410,\n end: 418,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"__construct\",\n start: 419,\n end: 430,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 430,\n end: 431,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 441,\n end: 444,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 445,\n end: 448,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 448,\n end: 449,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 459,\n end: 465,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$username\",\n start: 466,\n end: 475,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 475,\n end: 476,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 486,\n end: 492,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 493,\n end: 499,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 499,\n end: 500,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 510,\n end: 511,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 511,\n end: 517,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$firstName\",\n start: 518,\n end: 528,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 529,\n end: 530,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 531,\n end: 535,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 535,\n end: 536,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 546,\n end: 547,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 547,\n end: 553,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lastName\",\n start: 554,\n end: 563,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 564,\n end: 565,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 566,\n end: 570,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 570,\n end: 571,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 581,\n end: 582,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 582,\n end: 590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$createdAt\",\n start: 591,\n end: 601,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 602,\n end: 603,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 604,\n end: 608,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 608,\n end: 609,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 619,\n end: 623,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$isActive\",\n start: 624,\n end: 633,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 634,\n end: 635,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"true\",\n start: 636,\n end: 640,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 646,\n end: 647,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 648,\n end: 649,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 659,\n end: 664,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 664,\n end: 666,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 666,\n end: 668,\n },\n ],\n errors: [],\n}", actual: "LexerTestExpected {\n success: true,\n count: 2234,\n tokens: [\n TokenData {\n kind: \"OpenTag\",\n text: \"\",\n start: 664,\n end: 666,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 666,\n end: 668,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 669,\n end: 670,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 671,\n end: 674,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 674,\n end: 675,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 675,\n end: 677,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 685,\n end: 690,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 690,\n end: 692,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 692,\n end: 700,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 701,\n end: 702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$username\",\n start: 703,\n end: 712,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 712,\n end: 713,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 713,\n end: 715,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 723,\n end: 728,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 728,\n end: 730,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 730,\n end: 735,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 736,\n end: 737,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 738,\n end: 744,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 744,\n end: 745,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 745,\n end: 747,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 755,\n end: 760,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 760,\n end: 762,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"firstName\",\n start: 762,\n end: 771,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 772,\n end: 773,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$firstName\",\n start: 774,\n end: 784,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 784,\n end: 785,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 785,\n end: 787,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 795,\n end: 800,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 800,\n end: 802,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lastName\",\n start: 802,\n end: 810,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 811,\n end: 812,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lastName\",\n start: 813,\n end: 822,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 822,\n end: 823,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 823,\n end: 825,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 833,\n end: 838,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 838,\n end: 840,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createdAt\",\n start: 840,\n end: 849,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 850,\n end: 851,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$createdAt\",\n start: 852,\n end: 862,\n },\n TokenData {\n kind: \"NullCoalesce\",\n text: \"??\",\n start: 863,\n end: 865,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 866,\n end: 869,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 870,\n end: 878,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 878,\n end: 879,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 879,\n end: 880,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 880,\n end: 881,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 881,\n end: 883,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 891,\n end: 896,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 896,\n end: 898,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 898,\n end: 906,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 907,\n end: 908,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$isActive\",\n start: 909,\n end: 918,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 918,\n end: 919,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 919,\n end: 921,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 925,\n end: 926,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 926,\n end: 928,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 928,\n end: 930,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 944,\n end: 946,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 950,\n end: 956,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 957,\n end: 965,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getId\",\n start: 966,\n end: 971,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 971,\n end: 972,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 972,\n end: 973,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 973,\n end: 974,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 975,\n end: 978,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 978,\n end: 980,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 984,\n end: 985,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 985,\n end: 987,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 995,\n end: 1001,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1002,\n end: 1007,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1007,\n end: 1009,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 1009,\n end: 1011,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1011,\n end: 1012,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1012,\n end: 1014,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1018,\n end: 1019,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1019,\n end: 1021,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1021,\n end: 1023,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1027,\n end: 1033,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1034,\n end: 1042,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getUsername\",\n start: 1043,\n end: 1054,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1054,\n end: 1055,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1055,\n end: 1056,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1056,\n end: 1057,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1058,\n end: 1064,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1064,\n end: 1066,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1070,\n end: 1071,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1071,\n end: 1073,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1081,\n end: 1087,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1088,\n end: 1093,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1093,\n end: 1095,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 1095,\n end: 1103,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1103,\n end: 1104,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1104,\n end: 1106,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1110,\n end: 1111,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1111,\n end: 1113,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1113,\n end: 1115,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1119,\n end: 1125,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1126,\n end: 1134,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getEmail\",\n start: 1135,\n end: 1143,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1143,\n end: 1144,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1144,\n end: 1145,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1145,\n end: 1146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1147,\n end: 1153,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1153,\n end: 1155,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1159,\n end: 1160,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1160,\n end: 1162,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1170,\n end: 1176,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1177,\n end: 1182,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1182,\n end: 1184,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 1184,\n end: 1189,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1189,\n end: 1190,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1190,\n end: 1192,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1196,\n end: 1197,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1197,\n end: 1199,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1199,\n end: 1201,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1205,\n end: 1211,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1212,\n end: 1220,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFirstName\",\n start: 1221,\n end: 1233,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1233,\n end: 1234,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1234,\n end: 1235,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1235,\n end: 1236,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 1237,\n end: 1238,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1238,\n end: 1244,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1244,\n end: 1246,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1250,\n end: 1251,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1251,\n end: 1253,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1261,\n end: 1267,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1268,\n end: 1273,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1273,\n end: 1275,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"firstName\",\n start: 1275,\n end: 1284,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1284,\n end: 1285,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1285,\n end: 1287,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1291,\n end: 1292,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1292,\n end: 1294,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1294,\n end: 1296,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1300,\n end: 1306,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1307,\n end: 1315,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getLastName\",\n start: 1316,\n end: 1327,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1327,\n end: 1328,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1328,\n end: 1329,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1329,\n end: 1330,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 1331,\n end: 1332,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1332,\n end: 1338,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1338,\n end: 1340,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1344,\n end: 1345,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1345,\n end: 1347,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1355,\n end: 1361,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1362,\n end: 1367,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1367,\n end: 1369,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lastName\",\n start: 1369,\n end: 1377,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1377,\n end: 1378,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1378,\n end: 1380,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1384,\n end: 1385,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1385,\n end: 1387,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1387,\n end: 1389,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1393,\n end: 1399,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1400,\n end: 1408,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFullName\",\n start: 1409,\n end: 1420,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1420,\n end: 1421,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1421,\n end: 1422,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1422,\n end: 1423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1424,\n end: 1430,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1430,\n end: 1432,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1436,\n end: 1437,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1437,\n end: 1439,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$parts\",\n start: 1447,\n end: 1453,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 1454,\n end: 1455,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array_filter\",\n start: 1456,\n end: 1468,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1468,\n end: 1469,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 1469,\n end: 1470,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1470,\n end: 1475,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1475,\n end: 1477,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"firstName\",\n start: 1477,\n end: 1486,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1486,\n end: 1487,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1488,\n end: 1493,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1493,\n end: 1495,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lastName\",\n start: 1495,\n end: 1503,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 1503,\n end: 1504,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1504,\n end: 1505,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1505,\n end: 1506,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1506,\n end: 1508,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1516,\n end: 1522,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"implode\",\n start: 1523,\n end: 1530,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1530,\n end: 1531,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"' '\",\n start: 1531,\n end: 1534,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1534,\n end: 1535,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$parts\",\n start: 1536,\n end: 1542,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1542,\n end: 1543,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 1544,\n end: 1545,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1545,\n end: 1546,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1547,\n end: 1552,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1552,\n end: 1554,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 1554,\n end: 1562,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1562,\n end: 1563,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1563,\n end: 1565,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1569,\n end: 1570,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1570,\n end: 1572,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1572,\n end: 1574,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1578,\n end: 1584,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1585,\n end: 1593,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCreatedAt\",\n start: 1594,\n end: 1606,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1606,\n end: 1607,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1607,\n end: 1608,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1608,\n end: 1609,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 1610,\n end: 1618,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1618,\n end: 1620,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1624,\n end: 1625,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1625,\n end: 1627,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1635,\n end: 1641,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1642,\n end: 1647,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1647,\n end: 1649,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createdAt\",\n start: 1649,\n end: 1658,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1658,\n end: 1659,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1659,\n end: 1661,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1665,\n end: 1666,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1666,\n end: 1668,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1668,\n end: 1670,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1674,\n end: 1680,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1681,\n end: 1689,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 1690,\n end: 1698,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1698,\n end: 1699,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1699,\n end: 1700,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1700,\n end: 1701,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 1702,\n end: 1706,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1706,\n end: 1708,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1712,\n end: 1713,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1713,\n end: 1715,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 1723,\n end: 1729,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1730,\n end: 1735,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1735,\n end: 1737,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 1737,\n end: 1745,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1745,\n end: 1746,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1746,\n end: 1748,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1752,\n end: 1753,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1753,\n end: 1755,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1755,\n end: 1757,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1771,\n end: 1773,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 1777,\n end: 1783,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 1784,\n end: 1792,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"setEmail\",\n start: 1793,\n end: 1801,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1801,\n end: 1802,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 1802,\n end: 1808,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 1809,\n end: 1815,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1815,\n end: 1816,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1816,\n end: 1817,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 1818,\n end: 1822,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1822,\n end: 1824,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1828,\n end: 1829,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1829,\n end: 1831,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 1839,\n end: 1841,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1842,\n end: 1843,\n },\n TokenData {\n kind: \"LogicalNot\",\n text: \"!\",\n start: 1843,\n end: 1844,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"filter_var\",\n start: 1844,\n end: 1854,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1854,\n end: 1855,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 1855,\n end: 1861,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1861,\n end: 1862,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FILTER_VALIDATE_EMAIL\",\n start: 1863,\n end: 1884,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1884,\n end: 1885,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1885,\n end: 1886,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1887,\n end: 1888,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1888,\n end: 1890,\n },\n TokenData {\n kind: \"Throw\",\n text: \"throw\",\n start: 1902,\n end: 1907,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 1908,\n end: 1911,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Exception\",\n start: 1912,\n end: 1921,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1921,\n end: 1922,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Invalid email format: {$email}\\\"\",\n start: 1922,\n end: 1954,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1954,\n end: 1955,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1955,\n end: 1956,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1956,\n end: 1958,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1966,\n end: 1967,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1967,\n end: 1969,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 1977,\n end: 1982,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 1982,\n end: 1984,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 1984,\n end: 1989,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 1990,\n end: 1991,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 1992,\n end: 1998,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1998,\n end: 1999,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 1999,\n end: 2001,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2005,\n end: 2006,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2006,\n end: 2008,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2008,\n end: 2010,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2014,\n end: 2020,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2021,\n end: 2029,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"setFirstName\",\n start: 2030,\n end: 2042,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2042,\n end: 2043,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 2043,\n end: 2044,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 2044,\n end: 2050,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$firstName\",\n start: 2051,\n end: 2061,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2061,\n end: 2062,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2062,\n end: 2063,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 2064,\n end: 2068,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2068,\n end: 2070,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2074,\n end: 2075,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2075,\n end: 2077,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2085,\n end: 2090,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2090,\n end: 2092,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"firstName\",\n start: 2092,\n end: 2101,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2102,\n end: 2103,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$firstName\",\n start: 2104,\n end: 2114,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2114,\n end: 2115,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2115,\n end: 2117,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2121,\n end: 2122,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2122,\n end: 2124,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2124,\n end: 2126,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2130,\n end: 2136,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2137,\n end: 2145,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"setLastName\",\n start: 2146,\n end: 2157,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2157,\n end: 2158,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 2158,\n end: 2159,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 2159,\n end: 2165,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lastName\",\n start: 2166,\n end: 2175,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2175,\n end: 2176,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2176,\n end: 2177,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 2178,\n end: 2182,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2182,\n end: 2184,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2188,\n end: 2189,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2189,\n end: 2191,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2199,\n end: 2204,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2204,\n end: 2206,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lastName\",\n start: 2206,\n end: 2214,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2215,\n end: 2216,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lastName\",\n start: 2217,\n end: 2226,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2226,\n end: 2227,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2227,\n end: 2229,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2233,\n end: 2234,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2234,\n end: 2236,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2236,\n end: 2238,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2242,\n end: 2248,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2249,\n end: 2257,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"activate\",\n start: 2258,\n end: 2266,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2266,\n end: 2267,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2267,\n end: 2268,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2268,\n end: 2269,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 2270,\n end: 2274,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2274,\n end: 2276,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2280,\n end: 2281,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2281,\n end: 2283,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2291,\n end: 2296,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2296,\n end: 2298,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 2298,\n end: 2306,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2307,\n end: 2308,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"true\",\n start: 2309,\n end: 2313,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2313,\n end: 2314,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2314,\n end: 2316,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2320,\n end: 2321,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2321,\n end: 2323,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2323,\n end: 2325,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2329,\n end: 2335,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2336,\n end: 2344,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"deactivate\",\n start: 2345,\n end: 2355,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2355,\n end: 2356,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2356,\n end: 2357,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2357,\n end: 2358,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 2359,\n end: 2363,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2363,\n end: 2365,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2369,\n end: 2370,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2370,\n end: 2372,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2380,\n end: 2385,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2385,\n end: 2387,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 2387,\n end: 2395,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2396,\n end: 2397,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"false\",\n start: 2398,\n end: 2403,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2403,\n end: 2404,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2404,\n end: 2406,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2410,\n end: 2411,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2411,\n end: 2413,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2413,\n end: 2415,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2419,\n end: 2425,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2426,\n end: 2434,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toArray\",\n start: 2435,\n end: 2442,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2442,\n end: 2443,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2443,\n end: 2444,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2444,\n end: 2445,\n },\n TokenData {\n kind: \"Array\",\n text: \"array\",\n start: 2446,\n end: 2451,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2451,\n end: 2453,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2457,\n end: 2458,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2458,\n end: 2460,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 2468,\n end: 2474,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 2475,\n end: 2476,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2476,\n end: 2478,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 2490,\n end: 2494,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2495,\n end: 2497,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2498,\n end: 2503,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2503,\n end: 2505,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 2505,\n end: 2507,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2507,\n end: 2508,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2508,\n end: 2510,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'username'\",\n start: 2522,\n end: 2532,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2533,\n end: 2535,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2536,\n end: 2541,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2541,\n end: 2543,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 2543,\n end: 2551,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2551,\n end: 2552,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2552,\n end: 2554,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'email'\",\n start: 2566,\n end: 2573,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2574,\n end: 2576,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2577,\n end: 2582,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2582,\n end: 2584,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 2584,\n end: 2589,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2589,\n end: 2590,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2590,\n end: 2592,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'first_name'\",\n start: 2604,\n end: 2616,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2617,\n end: 2619,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2620,\n end: 2625,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2625,\n end: 2627,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"firstName\",\n start: 2627,\n end: 2636,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2636,\n end: 2637,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2637,\n end: 2639,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'last_name'\",\n start: 2651,\n end: 2662,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2663,\n end: 2665,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2666,\n end: 2671,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2671,\n end: 2673,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lastName\",\n start: 2673,\n end: 2681,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2681,\n end: 2682,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2682,\n end: 2684,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'full_name'\",\n start: 2696,\n end: 2707,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2708,\n end: 2710,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2711,\n end: 2716,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2716,\n end: 2718,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFullName\",\n start: 2718,\n end: 2729,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2729,\n end: 2730,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2730,\n end: 2731,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2731,\n end: 2732,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2732,\n end: 2734,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'created_at'\",\n start: 2746,\n end: 2758,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2759,\n end: 2761,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2762,\n end: 2767,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2767,\n end: 2769,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createdAt\",\n start: 2769,\n end: 2778,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2778,\n end: 2780,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"format\",\n start: 2780,\n end: 2786,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2786,\n end: 2787,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Y-m-d H:i:s'\",\n start: 2787,\n end: 2800,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2800,\n end: 2801,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2801,\n end: 2802,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2802,\n end: 2804,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'is_active'\",\n start: 2816,\n end: 2827,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 2828,\n end: 2830,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2831,\n end: 2836,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2836,\n end: 2838,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 2838,\n end: 2846,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2846,\n end: 2847,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2847,\n end: 2849,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 2857,\n end: 2858,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2858,\n end: 2859,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2859,\n end: 2861,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2865,\n end: 2866,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2866,\n end: 2868,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2868,\n end: 2870,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 2874,\n end: 2880,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 2881,\n end: 2889,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toJson\",\n start: 2890,\n end: 2896,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2896,\n end: 2897,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2897,\n end: 2898,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2898,\n end: 2899,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 2900,\n end: 2906,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2906,\n end: 2908,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2912,\n end: 2913,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2913,\n end: 2915,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 2923,\n end: 2929,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"json_encode\",\n start: 2930,\n end: 2941,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2941,\n end: 2942,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 2942,\n end: 2947,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2947,\n end: 2949,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toArray\",\n start: 2949,\n end: 2956,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2956,\n end: 2957,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2957,\n end: 2958,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2958,\n end: 2959,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"JSON_THROW_ON_ERROR\",\n start: 2960,\n end: 2979,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2979,\n end: 2980,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2980,\n end: 2981,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2981,\n end: 2983,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2987,\n end: 2988,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2988,\n end: 2990,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2990,\n end: 2991,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2991,\n end: 2993,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 2993,\n end: 2995,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3029,\n end: 3031,\n },\n TokenData {\n kind: \"Class\",\n text: \"class\",\n start: 3031,\n end: 3036,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"UserRepository\",\n start: 3037,\n end: 3051,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3051,\n end: 3053,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3053,\n end: 3054,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3054,\n end: 3056,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 3060,\n end: 3067,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 3068,\n end: 3071,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$pdo\",\n start: 3072,\n end: 3076,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3076,\n end: 3077,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3077,\n end: 3079,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3079,\n end: 3081,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 3085,\n end: 3091,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 3092,\n end: 3100,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"__construct\",\n start: 3101,\n end: 3112,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3112,\n end: 3113,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 3113,\n end: 3116,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$pdo\",\n start: 3117,\n end: 3121,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3121,\n end: 3122,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3122,\n end: 3124,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3128,\n end: 3129,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3129,\n end: 3131,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3139,\n end: 3144,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3144,\n end: 3146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 3146,\n end: 3149,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3150,\n end: 3151,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$pdo\",\n start: 3152,\n end: 3156,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3156,\n end: 3157,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3157,\n end: 3159,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3163,\n end: 3164,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3164,\n end: 3166,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3166,\n end: 3168,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 3172,\n end: 3178,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 3179,\n end: 3187,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"findById\",\n start: 3188,\n end: 3196,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3196,\n end: 3197,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 3197,\n end: 3200,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 3201,\n end: 3204,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3204,\n end: 3205,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3205,\n end: 3206,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 3207,\n end: 3208,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 3208,\n end: 3212,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3212,\n end: 3214,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3218,\n end: 3219,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3219,\n end: 3221,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3229,\n end: 3234,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3235,\n end: 3236,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3237,\n end: 3242,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3242,\n end: 3244,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 3244,\n end: 3247,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3247,\n end: 3249,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 3249,\n end: 3256,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3256,\n end: 3257,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'SELECT * FROM users WHERE id = :id'\",\n start: 3257,\n end: 3293,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3293,\n end: 3294,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3294,\n end: 3295,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3295,\n end: 3297,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3305,\n end: 3310,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3310,\n end: 3312,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 3312,\n end: 3319,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3319,\n end: 3320,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 3320,\n end: 3321,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 3321,\n end: 3325,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 3326,\n end: 3328,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 3329,\n end: 3332,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 3332,\n end: 3333,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3333,\n end: 3334,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3334,\n end: 3335,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3335,\n end: 3337,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3345,\n end: 3347,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3355,\n end: 3359,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3360,\n end: 3361,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3362,\n end: 3367,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3367,\n end: 3369,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fetch\",\n start: 3369,\n end: 3374,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3374,\n end: 3375,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 3375,\n end: 3378,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 3378,\n end: 3380,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FETCH_ASSOC\",\n start: 3380,\n end: 3391,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3391,\n end: 3392,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3392,\n end: 3393,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3393,\n end: 3395,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 3403,\n end: 3405,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3406,\n end: 3407,\n },\n TokenData {\n kind: \"LogicalNot\",\n text: \"!\",\n start: 3407,\n end: 3408,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3408,\n end: 3412,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3412,\n end: 3413,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3414,\n end: 3415,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3415,\n end: 3417,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 3429,\n end: 3435,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 3436,\n end: 3440,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3440,\n end: 3441,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3441,\n end: 3443,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3451,\n end: 3452,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3452,\n end: 3454,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3454,\n end: 3456,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 3464,\n end: 3470,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3471,\n end: 3476,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3476,\n end: 3478,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createUserFromRow\",\n start: 3478,\n end: 3495,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3495,\n end: 3496,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3496,\n end: 3500,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3500,\n end: 3501,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3501,\n end: 3502,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3502,\n end: 3504,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3508,\n end: 3509,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3509,\n end: 3511,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3511,\n end: 3513,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 3517,\n end: 3523,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 3524,\n end: 3532,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"findByEmail\",\n start: 3533,\n end: 3544,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3544,\n end: 3545,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 3545,\n end: 3551,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 3552,\n end: 3558,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3558,\n end: 3559,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3559,\n end: 3560,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 3561,\n end: 3562,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 3562,\n end: 3566,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3566,\n end: 3568,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3572,\n end: 3573,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3573,\n end: 3575,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3583,\n end: 3588,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3589,\n end: 3590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3591,\n end: 3596,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3596,\n end: 3598,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 3598,\n end: 3601,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3601,\n end: 3603,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 3603,\n end: 3610,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3610,\n end: 3611,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'SELECT * FROM users WHERE email = :email'\",\n start: 3611,\n end: 3653,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3653,\n end: 3654,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3654,\n end: 3655,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3655,\n end: 3657,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3665,\n end: 3670,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3670,\n end: 3672,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 3672,\n end: 3679,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3679,\n end: 3680,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 3680,\n end: 3681,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'email'\",\n start: 3681,\n end: 3688,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 3689,\n end: 3691,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 3692,\n end: 3698,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 3698,\n end: 3699,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3699,\n end: 3700,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3700,\n end: 3701,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3701,\n end: 3703,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3711,\n end: 3713,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3721,\n end: 3725,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3726,\n end: 3727,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3728,\n end: 3733,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3733,\n end: 3735,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fetch\",\n start: 3735,\n end: 3740,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3740,\n end: 3741,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 3741,\n end: 3744,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 3744,\n end: 3746,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FETCH_ASSOC\",\n start: 3746,\n end: 3757,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3757,\n end: 3758,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3758,\n end: 3759,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3759,\n end: 3761,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 3769,\n end: 3771,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3772,\n end: 3773,\n },\n TokenData {\n kind: \"LogicalNot\",\n text: \"!\",\n start: 3773,\n end: 3774,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3774,\n end: 3778,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3778,\n end: 3779,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3780,\n end: 3781,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3781,\n end: 3783,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 3795,\n end: 3801,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 3802,\n end: 3806,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3806,\n end: 3807,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3807,\n end: 3809,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3817,\n end: 3818,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3818,\n end: 3820,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3820,\n end: 3822,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 3830,\n end: 3836,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3837,\n end: 3842,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3842,\n end: 3844,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createUserFromRow\",\n start: 3844,\n end: 3861,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3861,\n end: 3862,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 3862,\n end: 3866,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3866,\n end: 3867,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3867,\n end: 3868,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3868,\n end: 3870,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3874,\n end: 3875,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3875,\n end: 3877,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3877,\n end: 3879,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 3883,\n end: 3889,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 3890,\n end: 3898,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"findAll\",\n start: 3899,\n end: 3906,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3906,\n end: 3907,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 3907,\n end: 3910,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$limit\",\n start: 3911,\n end: 3917,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3918,\n end: 3919,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"100\",\n start: 3920,\n end: 3923,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3923,\n end: 3924,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 3925,\n end: 3928,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$offset\",\n start: 3929,\n end: 3936,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3937,\n end: 3938,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 3939,\n end: 3940,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3940,\n end: 3941,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3941,\n end: 3942,\n },\n TokenData {\n kind: \"Array\",\n text: \"array\",\n start: 3943,\n end: 3948,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3948,\n end: 3950,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3954,\n end: 3955,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 3955,\n end: 3957,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 3965,\n end: 3970,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3971,\n end: 3972,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 3973,\n end: 3978,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3978,\n end: 3980,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 3980,\n end: 3983,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3983,\n end: 3985,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 3985,\n end: 3992,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3992,\n end: 3993,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'SELECT * FROM users LIMIT :limit OFFSET :offset'\",\n start: 3993,\n end: 4042,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4042,\n end: 4043,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4043,\n end: 4044,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4044,\n end: 4046,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 4054,\n end: 4059,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4059,\n end: 4061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bindValue\",\n start: 4061,\n end: 4070,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4070,\n end: 4071,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"':limit'\",\n start: 4071,\n end: 4079,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4079,\n end: 4080,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$limit\",\n start: 4081,\n end: 4087,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4087,\n end: 4088,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 4089,\n end: 4092,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 4092,\n end: 4094,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PARAM_INT\",\n start: 4094,\n end: 4103,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4103,\n end: 4104,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4104,\n end: 4105,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4105,\n end: 4107,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 4115,\n end: 4120,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4120,\n end: 4122,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bindValue\",\n start: 4122,\n end: 4131,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4131,\n end: 4132,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"':offset'\",\n start: 4132,\n end: 4141,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4141,\n end: 4142,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$offset\",\n start: 4143,\n end: 4150,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4150,\n end: 4151,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 4152,\n end: 4155,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 4155,\n end: 4157,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PARAM_INT\",\n start: 4157,\n end: 4166,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4166,\n end: 4167,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4167,\n end: 4168,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4168,\n end: 4170,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 4178,\n end: 4183,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4183,\n end: 4185,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 4185,\n end: 4192,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4192,\n end: 4193,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4193,\n end: 4194,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4194,\n end: 4195,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4195,\n end: 4197,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4197,\n end: 4199,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 4207,\n end: 4213,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4214,\n end: 4215,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 4216,\n end: 4217,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 4217,\n end: 4218,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4218,\n end: 4219,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4219,\n end: 4221,\n },\n TokenData {\n kind: \"While\",\n text: \"while\",\n start: 4229,\n end: 4234,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4235,\n end: 4236,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 4236,\n end: 4240,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4241,\n end: 4242,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 4243,\n end: 4248,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4248,\n end: 4250,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fetch\",\n start: 4250,\n end: 4255,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4255,\n end: 4256,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDO\",\n start: 4256,\n end: 4259,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 4259,\n end: 4261,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FETCH_ASSOC\",\n start: 4261,\n end: 4272,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4272,\n end: 4273,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4273,\n end: 4274,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4275,\n end: 4276,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4276,\n end: 4278,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 4290,\n end: 4296,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 4296,\n end: 4297,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 4297,\n end: 4298,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4299,\n end: 4300,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 4301,\n end: 4306,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4306,\n end: 4308,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createUserFromRow\",\n start: 4308,\n end: 4325,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4325,\n end: 4326,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 4326,\n end: 4330,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4330,\n end: 4331,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4331,\n end: 4332,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4332,\n end: 4334,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4342,\n end: 4343,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4343,\n end: 4345,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4345,\n end: 4347,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 4355,\n end: 4361,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 4362,\n end: 4368,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4368,\n end: 4369,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4369,\n end: 4371,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4375,\n end: 4376,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4376,\n end: 4378,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4378,\n end: 4380,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 4384,\n end: 4390,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 4391,\n end: 4399,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"save\",\n start: 4400,\n end: 4404,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4404,\n end: 4405,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 4405,\n end: 4409,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 4410,\n end: 4415,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4415,\n end: 4416,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4416,\n end: 4417,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 4418,\n end: 4422,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4422,\n end: 4424,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4428,\n end: 4429,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4429,\n end: 4431,\n },\n TokenData {\n kind: \"Try\",\n text: \"try\",\n start: 4439,\n end: 4442,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4443,\n end: 4444,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4444,\n end: 4446,\n },\n TokenData {\n kind: \"If\",\n text: \"if\",\n start: 4458,\n end: 4460,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4461,\n end: 4462,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 4462,\n end: 4467,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4467,\n end: 4469,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getId\",\n start: 4469,\n end: 4474,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4474,\n end: 4475,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4475,\n end: 4476,\n },\n TokenData {\n kind: \"Greater\",\n text: \">\",\n start: 4477,\n end: 4478,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 4479,\n end: 4480,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4480,\n end: 4481,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4482,\n end: 4483,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4483,\n end: 4485,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 4501,\n end: 4507,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 4508,\n end: 4513,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4513,\n end: 4515,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"update\",\n start: 4515,\n end: 4521,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4521,\n end: 4522,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 4522,\n end: 4527,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4527,\n end: 4528,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4528,\n end: 4529,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4529,\n end: 4531,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4543,\n end: 4544,\n },\n TokenData {\n kind: \"Else\",\n text: \"else\",\n start: 4545,\n end: 4549,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4550,\n end: 4551,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4551,\n end: 4553,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 4569,\n end: 4575,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 4576,\n end: 4581,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4581,\n end: 4583,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"insert\",\n start: 4583,\n end: 4589,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4589,\n end: 4590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 4590,\n end: 4595,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4595,\n end: 4596,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4596,\n end: 4597,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4597,\n end: 4599,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4611,\n end: 4612,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4612,\n end: 4614,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4622,\n end: 4623,\n },\n TokenData {\n kind: \"Catch\",\n text: \"catch\",\n start: 4624,\n end: 4629,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4630,\n end: 4631,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PDOException\",\n start: 4631,\n end: 4643,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 4644,\n end: 4646,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4646,\n end: 4647,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4648,\n end: 4649,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4649,\n end: 4651,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"error_log\",\n start: 4663,\n end: 4672,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4672,\n end: 4673,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Failed to save user: \\\"\",\n start: 4673,\n end: 4696,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 4697,\n end: 4698,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 4699,\n end: 4701,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4701,\n end: 4703,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getMessage\",\n start: 4703,\n end: 4713,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4713,\n end: 4714,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4714,\n end: 4715,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4715,\n end: 4716,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4716,\n end: 4717,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4717,\n end: 4719,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 4731,\n end: 4737,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"false\",\n start: 4738,\n end: 4743,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4743,\n end: 4744,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4744,\n end: 4746,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4754,\n end: 4755,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4755,\n end: 4757,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4761,\n end: 4762,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4762,\n end: 4764,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4764,\n end: 4766,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 4770,\n end: 4777,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 4778,\n end: 4786,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"insert\",\n start: 4787,\n end: 4793,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4793,\n end: 4794,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 4794,\n end: 4798,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 4799,\n end: 4804,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4804,\n end: 4805,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4805,\n end: 4806,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 4807,\n end: 4811,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4811,\n end: 4813,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4817,\n end: 4818,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4818,\n end: 4820,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$sql\",\n start: 4828,\n end: 4832,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4833,\n end: 4834,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'INSERT INTO users (username, email, first_name, last_name, is_active) \",\n start: 4835,\n end: 4906,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4906,\n end: 4908,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VALUES\",\n start: 4924,\n end: 4930,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4931,\n end: 4932,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4932,\n end: 4933,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 4933,\n end: 4941,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4941,\n end: 4942,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4943,\n end: 4944,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 4944,\n end: 4949,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4949,\n end: 4950,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4951,\n end: 4952,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"first_name\",\n start: 4952,\n end: 4962,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4962,\n end: 4963,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4964,\n end: 4965,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"last_name\",\n start: 4965,\n end: 4974,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4974,\n end: 4975,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4976,\n end: 4977,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_active\",\n start: 4977,\n end: 4986,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4986,\n end: 4987,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"';\",\n start: 4987,\n end: 4989,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4989,\n end: 4991,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 4999,\n end: 5001,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 5009,\n end: 5014,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5015,\n end: 5016,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 5017,\n end: 5022,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5022,\n end: 5024,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 5024,\n end: 5027,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5027,\n end: 5029,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 5029,\n end: 5036,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5036,\n end: 5037,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$sql\",\n start: 5037,\n end: 5041,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5041,\n end: 5042,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5042,\n end: 5043,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5043,\n end: 5045,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 5053,\n end: 5059,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 5060,\n end: 5065,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5065,\n end: 5067,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 5067,\n end: 5074,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5074,\n end: 5075,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5075,\n end: 5076,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5076,\n end: 5078,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'username'\",\n start: 5090,\n end: 5100,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5101,\n end: 5103,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5104,\n end: 5109,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5109,\n end: 5111,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getUsername\",\n start: 5111,\n end: 5122,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5122,\n end: 5123,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5123,\n end: 5124,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5124,\n end: 5125,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5125,\n end: 5127,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'email'\",\n start: 5139,\n end: 5146,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5147,\n end: 5149,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5150,\n end: 5155,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5155,\n end: 5157,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getEmail\",\n start: 5157,\n end: 5165,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5165,\n end: 5166,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5166,\n end: 5167,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5167,\n end: 5168,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5168,\n end: 5170,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'first_name'\",\n start: 5182,\n end: 5194,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5195,\n end: 5197,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5198,\n end: 5203,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5203,\n end: 5205,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFirstName\",\n start: 5205,\n end: 5217,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5217,\n end: 5218,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5218,\n end: 5219,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5219,\n end: 5220,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5220,\n end: 5222,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'last_name'\",\n start: 5234,\n end: 5245,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5246,\n end: 5248,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5249,\n end: 5254,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5254,\n end: 5256,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getLastName\",\n start: 5256,\n end: 5267,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5267,\n end: 5268,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5268,\n end: 5269,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5269,\n end: 5270,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5270,\n end: 5272,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'is_active'\",\n start: 5284,\n end: 5295,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5296,\n end: 5298,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5299,\n end: 5304,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5304,\n end: 5306,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 5306,\n end: 5314,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5314,\n end: 5315,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5315,\n end: 5316,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 5317,\n end: 5318,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 5319,\n end: 5320,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5321,\n end: 5322,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 5323,\n end: 5324,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5324,\n end: 5325,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5325,\n end: 5327,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 5335,\n end: 5336,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5336,\n end: 5337,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5337,\n end: 5338,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5338,\n end: 5340,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 5344,\n end: 5345,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5345,\n end: 5347,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5347,\n end: 5349,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 5353,\n end: 5360,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 5361,\n end: 5369,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"update\",\n start: 5370,\n end: 5376,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5376,\n end: 5377,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 5377,\n end: 5381,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5382,\n end: 5387,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5387,\n end: 5388,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5388,\n end: 5389,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 5390,\n end: 5394,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5394,\n end: 5396,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 5400,\n end: 5401,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5401,\n end: 5403,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$sql\",\n start: 5411,\n end: 5415,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5416,\n end: 5417,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'UPDATE users SET \",\n start: 5418,\n end: 5436,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5436,\n end: 5438,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 5454,\n end: 5462,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5463,\n end: 5464,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5465,\n end: 5466,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"username\",\n start: 5466,\n end: 5474,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5474,\n end: 5475,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5476,\n end: 5478,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 5494,\n end: 5499,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5500,\n end: 5501,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5502,\n end: 5503,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"email\",\n start: 5503,\n end: 5508,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5508,\n end: 5509,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5510,\n end: 5512,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"first_name\",\n start: 5528,\n end: 5538,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5539,\n end: 5540,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5541,\n end: 5542,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"first_name\",\n start: 5542,\n end: 5552,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5552,\n end: 5553,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5554,\n end: 5556,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"last_name\",\n start: 5572,\n end: 5581,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5582,\n end: 5583,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5584,\n end: 5585,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"last_name\",\n start: 5585,\n end: 5594,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5594,\n end: 5595,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5596,\n end: 5598,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_active\",\n start: 5614,\n end: 5623,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5624,\n end: 5625,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5626,\n end: 5627,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"is_active\",\n start: 5627,\n end: 5636,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5637,\n end: 5639,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"WHERE\",\n start: 5655,\n end: 5660,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 5661,\n end: 5663,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5664,\n end: 5665,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 5666,\n end: 5667,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"id\",\n start: 5667,\n end: 5669,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"';\",\n start: 5669,\n end: 5671,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5671,\n end: 5673,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5681,\n end: 5683,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 5691,\n end: 5696,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5697,\n end: 5698,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 5699,\n end: 5704,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5704,\n end: 5706,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 5706,\n end: 5709,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5709,\n end: 5711,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 5711,\n end: 5718,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5718,\n end: 5719,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$sql\",\n start: 5719,\n end: 5723,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5723,\n end: 5724,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5724,\n end: 5725,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5725,\n end: 5727,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 5735,\n end: 5741,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 5742,\n end: 5747,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5747,\n end: 5749,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 5749,\n end: 5756,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5756,\n end: 5757,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 5757,\n end: 5758,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5758,\n end: 5760,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 5772,\n end: 5776,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5777,\n end: 5779,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5780,\n end: 5785,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5785,\n end: 5787,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getId\",\n start: 5787,\n end: 5792,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5792,\n end: 5793,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5793,\n end: 5794,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5794,\n end: 5795,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5795,\n end: 5797,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'username'\",\n start: 5809,\n end: 5819,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5820,\n end: 5822,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5823,\n end: 5828,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5828,\n end: 5830,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getUsername\",\n start: 5830,\n end: 5841,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5841,\n end: 5842,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5842,\n end: 5843,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5843,\n end: 5844,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5844,\n end: 5846,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'email'\",\n start: 5858,\n end: 5865,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5866,\n end: 5868,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5869,\n end: 5874,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5874,\n end: 5876,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getEmail\",\n start: 5876,\n end: 5884,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5884,\n end: 5885,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5885,\n end: 5886,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5886,\n end: 5887,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5887,\n end: 5889,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'first_name'\",\n start: 5901,\n end: 5913,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5914,\n end: 5916,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5917,\n end: 5922,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5922,\n end: 5924,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getFirstName\",\n start: 5924,\n end: 5936,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5936,\n end: 5937,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5937,\n end: 5938,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5938,\n end: 5939,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5939,\n end: 5941,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'last_name'\",\n start: 5953,\n end: 5964,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 5965,\n end: 5967,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 5968,\n end: 5973,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 5973,\n end: 5975,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getLastName\",\n start: 5975,\n end: 5986,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5986,\n end: 5987,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5987,\n end: 5988,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5988,\n end: 5989,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 5989,\n end: 5991,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'is_active'\",\n start: 6003,\n end: 6014,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 6015,\n end: 6017,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 6018,\n end: 6023,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6023,\n end: 6025,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"isActive\",\n start: 6025,\n end: 6033,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6033,\n end: 6034,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6034,\n end: 6035,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 6036,\n end: 6037,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 6038,\n end: 6039,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6040,\n end: 6041,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 6042,\n end: 6043,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6043,\n end: 6044,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6044,\n end: 6046,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6054,\n end: 6055,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6055,\n end: 6056,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6056,\n end: 6057,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6057,\n end: 6059,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6063,\n end: 6064,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6064,\n end: 6066,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6066,\n end: 6068,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 6072,\n end: 6078,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 6079,\n end: 6087,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"delete\",\n start: 6088,\n end: 6094,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6094,\n end: 6095,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 6095,\n end: 6098,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 6099,\n end: 6102,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6102,\n end: 6103,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6103,\n end: 6104,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 6105,\n end: 6109,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6109,\n end: 6111,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6115,\n end: 6116,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6116,\n end: 6118,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 6126,\n end: 6131,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6132,\n end: 6133,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 6134,\n end: 6139,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6139,\n end: 6141,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pdo\",\n start: 6141,\n end: 6144,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6144,\n end: 6146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"prepare\",\n start: 6146,\n end: 6153,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6153,\n end: 6154,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'DELETE FROM users WHERE id = :id'\",\n start: 6154,\n end: 6188,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6188,\n end: 6189,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6189,\n end: 6190,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6190,\n end: 6192,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 6200,\n end: 6206,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$stmt\",\n start: 6207,\n end: 6212,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6212,\n end: 6214,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"execute\",\n start: 6214,\n end: 6221,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6221,\n end: 6222,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6222,\n end: 6223,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 6223,\n end: 6227,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 6228,\n end: 6230,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$id\",\n start: 6231,\n end: 6234,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6234,\n end: 6235,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6235,\n end: 6236,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6236,\n end: 6237,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6237,\n end: 6239,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6243,\n end: 6244,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6244,\n end: 6246,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6246,\n end: 6248,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 6252,\n end: 6259,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 6260,\n end: 6268,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createUserFromRow\",\n start: 6269,\n end: 6286,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6286,\n end: 6287,\n },\n TokenData {\n kind: \"Array\",\n text: \"array\",\n start: 6287,\n end: 6292,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6293,\n end: 6297,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6297,\n end: 6298,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6298,\n end: 6299,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 6300,\n end: 6304,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6304,\n end: 6306,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6310,\n end: 6311,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6311,\n end: 6313,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 6321,\n end: 6327,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 6328,\n end: 6331,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"User\",\n start: 6332,\n end: 6336,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6336,\n end: 6337,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6337,\n end: 6339,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6351,\n end: 6352,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 6352,\n end: 6355,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6355,\n end: 6356,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6357,\n end: 6361,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6361,\n end: 6362,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 6362,\n end: 6366,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6366,\n end: 6367,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6367,\n end: 6368,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6368,\n end: 6370,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6382,\n end: 6386,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6386,\n end: 6387,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'username'\",\n start: 6387,\n end: 6397,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6397,\n end: 6398,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6398,\n end: 6399,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6399,\n end: 6401,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6413,\n end: 6417,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6417,\n end: 6418,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'email'\",\n start: 6418,\n end: 6425,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6425,\n end: 6426,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6426,\n end: 6427,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6427,\n end: 6429,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6441,\n end: 6445,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6445,\n end: 6446,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'first_name'\",\n start: 6446,\n end: 6458,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6458,\n end: 6459,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6459,\n end: 6460,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6460,\n end: 6462,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6474,\n end: 6478,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6478,\n end: 6479,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'last_name'\",\n start: 6479,\n end: 6490,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6490,\n end: 6491,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6491,\n end: 6492,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6492,\n end: 6494,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 6506,\n end: 6509,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 6510,\n end: 6518,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6518,\n end: 6519,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6519,\n end: 6523,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6523,\n end: 6524,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'created_at'\",\n start: 6524,\n end: 6536,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6536,\n end: 6537,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6537,\n end: 6538,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6538,\n end: 6539,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6539,\n end: 6541,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6553,\n end: 6554,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 6554,\n end: 6558,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6558,\n end: 6559,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$row\",\n start: 6560,\n end: 6564,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 6564,\n end: 6565,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'is_active'\",\n start: 6565,\n end: 6576,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 6576,\n end: 6577,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6577,\n end: 6579,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6587,\n end: 6588,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6588,\n end: 6589,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6589,\n end: 6591,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6595,\n end: 6596,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6596,\n end: 6598,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6598,\n end: 6599,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6599,\n end: 6601,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6601,\n end: 6603,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6623,\n end: 6625,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 6625,\n end: 6633,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"validateEmail\",\n start: 6634,\n end: 6647,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6647,\n end: 6648,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 6648,\n end: 6654,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 6655,\n end: 6661,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6661,\n end: 6662,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6662,\n end: 6663,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"bool\",\n start: 6664,\n end: 6668,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6668,\n end: 6670,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6670,\n end: 6671,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6671,\n end: 6673,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 6677,\n end: 6683,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"filter_var\",\n start: 6684,\n end: 6694,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6694,\n end: 6695,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 6695,\n end: 6701,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6701,\n end: 6702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FILTER_VALIDATE_EMAIL\",\n start: 6703,\n end: 6724,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6724,\n end: 6725,\n },\n TokenData {\n kind: \"NotIdentical\",\n text: \"!==\",\n start: 6726,\n end: 6729,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"false\",\n start: 6730,\n end: 6735,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6735,\n end: 6736,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6736,\n end: 6738,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6738,\n end: 6739,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6739,\n end: 6741,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6741,\n end: 6743,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 6743,\n end: 6751,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sanitizeString\",\n start: 6752,\n end: 6766,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6766,\n end: 6767,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 6767,\n end: 6773,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$input\",\n start: 6774,\n end: 6780,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6780,\n end: 6781,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6781,\n end: 6782,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 6783,\n end: 6789,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6789,\n end: 6791,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6791,\n end: 6792,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6792,\n end: 6794,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 6798,\n end: 6804,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"htmlspecialchars\",\n start: 6805,\n end: 6821,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6821,\n end: 6822,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"trim\",\n start: 6822,\n end: 6826,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6826,\n end: 6827,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$input\",\n start: 6827,\n end: 6833,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6833,\n end: 6834,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6834,\n end: 6835,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ENT_QUOTES\",\n start: 6836,\n end: 6846,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6846,\n end: 6847,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'UTF-8'\",\n start: 6848,\n end: 6855,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6855,\n end: 6856,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6856,\n end: 6857,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6857,\n end: 6859,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6859,\n end: 6860,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6860,\n end: 6862,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6862,\n end: 6864,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 6864,\n end: 6872,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"generateRandomString\",\n start: 6873,\n end: 6893,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6893,\n end: 6894,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 6894,\n end: 6897,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$length\",\n start: 6898,\n end: 6905,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6906,\n end: 6907,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"10\",\n start: 6908,\n end: 6910,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6910,\n end: 6911,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6911,\n end: 6912,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 6913,\n end: 6919,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6919,\n end: 6921,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6921,\n end: 6922,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 6922,\n end: 6924,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$characters\",\n start: 6928,\n end: 6939,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6940,\n end: 6941,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\",\n start: 6942,\n end: 7006,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7006,\n end: 7007,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7007,\n end: 7009,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$charactersLength\",\n start: 7013,\n end: 7030,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7031,\n end: 7032,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"strlen\",\n start: 7033,\n end: 7039,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7039,\n end: 7040,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$characters\",\n start: 7040,\n end: 7051,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7051,\n end: 7052,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7052,\n end: 7053,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7053,\n end: 7055,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$randomString\",\n start: 7059,\n end: 7072,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7073,\n end: 7074,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"''\",\n start: 7075,\n end: 7077,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7077,\n end: 7078,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7078,\n end: 7080,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7084,\n end: 7086,\n },\n TokenData {\n kind: \"For\",\n text: \"for\",\n start: 7090,\n end: 7093,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7094,\n end: 7095,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$i\",\n start: 7095,\n end: 7097,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7098,\n end: 7099,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 7100,\n end: 7101,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7101,\n end: 7102,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$i\",\n start: 7103,\n end: 7105,\n },\n TokenData {\n kind: \"Less\",\n text: \"<\",\n start: 7106,\n end: 7107,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$length\",\n start: 7108,\n end: 7115,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7115,\n end: 7116,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$i\",\n start: 7117,\n end: 7119,\n },\n TokenData {\n kind: \"Increment\",\n text: \"++\",\n start: 7119,\n end: 7121,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7121,\n end: 7122,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 7123,\n end: 7124,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7124,\n end: 7126,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$randomString\",\n start: 7134,\n end: 7147,\n },\n TokenData {\n kind: \"ConcatAssign\",\n text: \".=\",\n start: 7148,\n end: 7150,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$characters\",\n start: 7151,\n end: 7162,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7162,\n end: 7163,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rand\",\n start: 7163,\n end: 7167,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7167,\n end: 7168,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 7168,\n end: 7169,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7169,\n end: 7170,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$charactersLength\",\n start: 7171,\n end: 7188,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 7189,\n end: 7190,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 7191,\n end: 7192,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7192,\n end: 7193,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7193,\n end: 7194,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7194,\n end: 7195,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7195,\n end: 7197,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 7201,\n end: 7202,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7202,\n end: 7204,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7208,\n end: 7210,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 7214,\n end: 7220,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$randomString\",\n start: 7221,\n end: 7234,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7234,\n end: 7235,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7235,\n end: 7237,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 7237,\n end: 7238,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7238,\n end: 7240,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7240,\n end: 7242,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7261,\n end: 7263,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 7263,\n end: 7269,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7270,\n end: 7271,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7272,\n end: 7273,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7273,\n end: 7275,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7279,\n end: 7280,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 7280,\n end: 7284,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7285,\n end: 7287,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"1\",\n start: 7288,\n end: 7289,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7289,\n end: 7290,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 7291,\n end: 7297,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7298,\n end: 7300,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'John'\",\n start: 7301,\n end: 7307,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7307,\n end: 7308,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 7309,\n end: 7314,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7315,\n end: 7317,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"30\",\n start: 7318,\n end: 7320,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7320,\n end: 7321,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7321,\n end: 7322,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7322,\n end: 7324,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7328,\n end: 7329,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 7329,\n end: 7333,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7334,\n end: 7336,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"2\",\n start: 7337,\n end: 7338,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7338,\n end: 7339,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 7340,\n end: 7346,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7347,\n end: 7349,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Jane'\",\n start: 7350,\n end: 7356,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7356,\n end: 7357,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 7358,\n end: 7363,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7364,\n end: 7366,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"25\",\n start: 7367,\n end: 7369,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7369,\n end: 7370,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7370,\n end: 7371,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7371,\n end: 7373,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7377,\n end: 7378,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'id'\",\n start: 7378,\n end: 7382,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7383,\n end: 7385,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"3\",\n start: 7386,\n end: 7387,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7387,\n end: 7388,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 7389,\n end: 7395,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7396,\n end: 7398,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Bob'\",\n start: 7399,\n end: 7404,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7404,\n end: 7405,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 7406,\n end: 7411,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7412,\n end: 7414,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"35\",\n start: 7415,\n end: 7417,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7417,\n end: 7418,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7418,\n end: 7419,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7419,\n end: 7421,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7421,\n end: 7422,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7422,\n end: 7423,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7423,\n end: 7425,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7425,\n end: 7427,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7445,\n end: 7447,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$names\",\n start: 7447,\n end: 7453,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7454,\n end: 7455,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array_map\",\n start: 7456,\n end: 7465,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7465,\n end: 7466,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fn\",\n start: 7466,\n end: 7468,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7468,\n end: 7469,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7469,\n end: 7474,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7474,\n end: 7475,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7476,\n end: 7478,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7479,\n end: 7484,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7484,\n end: 7485,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 7485,\n end: 7491,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7491,\n end: 7492,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7492,\n end: 7493,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 7494,\n end: 7500,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7500,\n end: 7501,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7501,\n end: 7502,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7502,\n end: 7504,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$adults\",\n start: 7504,\n end: 7511,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7512,\n end: 7513,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array_filter\",\n start: 7514,\n end: 7526,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7526,\n end: 7527,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 7527,\n end: 7533,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7533,\n end: 7534,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fn\",\n start: 7535,\n end: 7537,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7537,\n end: 7538,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7538,\n end: 7543,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7543,\n end: 7544,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7545,\n end: 7547,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7548,\n end: 7553,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7553,\n end: 7554,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 7554,\n end: 7559,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7559,\n end: 7560,\n },\n TokenData {\n kind: \"GreaterEqual\",\n text: \">=\",\n start: 7561,\n end: 7563,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"18\",\n start: 7564,\n end: 7566,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7566,\n end: 7567,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7567,\n end: 7568,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7568,\n end: 7570,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$totalAge\",\n start: 7570,\n end: 7579,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7580,\n end: 7581,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"array_reduce\",\n start: 7582,\n end: 7594,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7594,\n end: 7595,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$users\",\n start: 7595,\n end: 7601,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7601,\n end: 7602,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fn\",\n start: 7603,\n end: 7605,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7605,\n end: 7606,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$carry\",\n start: 7606,\n end: 7612,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7612,\n end: 7613,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7614,\n end: 7619,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7619,\n end: 7620,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 7621,\n end: 7623,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$carry\",\n start: 7624,\n end: 7630,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 7631,\n end: 7632,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$user\",\n start: 7633,\n end: 7638,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 7638,\n end: 7639,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 7639,\n end: 7644,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 7644,\n end: 7645,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7645,\n end: 7646,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 7647,\n end: 7648,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7648,\n end: 7649,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7649,\n end: 7650,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7650,\n end: 7652,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7652,\n end: 7654,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7674,\n end: 7676,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$text\",\n start: 7676,\n end: 7681,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7682,\n end: 7683,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Hello, World!\\\"\",\n start: 7684,\n end: 7699,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7699,\n end: 7700,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7700,\n end: 7702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$upperText\",\n start: 7702,\n end: 7712,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7713,\n end: 7714,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"strtoupper\",\n start: 7715,\n end: 7725,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7725,\n end: 7726,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$text\",\n start: 7726,\n end: 7731,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7731,\n end: 7732,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7732,\n end: 7733,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7733,\n end: 7735,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lowerText\",\n start: 7735,\n end: 7745,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7746,\n end: 7747,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"strtolower\",\n start: 7748,\n end: 7758,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7758,\n end: 7759,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$text\",\n start: 7759,\n end: 7764,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7764,\n end: 7765,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7765,\n end: 7766,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7766,\n end: 7768,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$words\",\n start: 7768,\n end: 7774,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7775,\n end: 7776,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"explode\",\n start: 7777,\n end: 7784,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7784,\n end: 7785,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"' '\",\n start: 7785,\n end: 7788,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7788,\n end: 7789,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$text\",\n start: 7790,\n end: 7795,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7795,\n end: 7796,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7796,\n end: 7797,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7797,\n end: 7799,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$joined\",\n start: 7799,\n end: 7806,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7807,\n end: 7808,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"implode\",\n start: 7809,\n end: 7816,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7816,\n end: 7817,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'-'\",\n start: 7817,\n end: 7820,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7820,\n end: 7821,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$words\",\n start: 7822,\n end: 7828,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7828,\n end: 7829,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7829,\n end: 7830,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7830,\n end: 7832,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7832,\n end: 7834,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7856,\n end: 7858,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$pattern\",\n start: 7858,\n end: 7866,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7867,\n end: 7868,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$/'\",\n start: 7869,\n end: 7921,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7921,\n end: 7922,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7922,\n end: 7924,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 7924,\n end: 7930,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7931,\n end: 7932,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'test@example.com'\",\n start: 7933,\n end: 7951,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7951,\n end: 7952,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7952,\n end: 7954,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$isValidEmail\",\n start: 7954,\n end: 7967,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7968,\n end: 7969,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"preg_match\",\n start: 7970,\n end: 7980,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7980,\n end: 7981,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$pattern\",\n start: 7981,\n end: 7989,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7989,\n end: 7990,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$email\",\n start: 7991,\n end: 7997,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7997,\n end: 7998,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7998,\n end: 7999,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 7999,\n end: 8001,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8001,\n end: 8003,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8019,\n end: 8021,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$now\",\n start: 8021,\n end: 8025,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8026,\n end: 8027,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 8028,\n end: 8031,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 8032,\n end: 8040,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8040,\n end: 8041,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8041,\n end: 8042,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8042,\n end: 8043,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8043,\n end: 8045,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$tomorrow\",\n start: 8045,\n end: 8054,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8055,\n end: 8056,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8057,\n end: 8058,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 8058,\n end: 8061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 8062,\n end: 8070,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8070,\n end: 8071,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8071,\n end: 8072,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8072,\n end: 8073,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 8073,\n end: 8075,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"modify\",\n start: 8075,\n end: 8081,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8081,\n end: 8082,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'+1 day'\",\n start: 8082,\n end: 8090,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8090,\n end: 8091,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8091,\n end: 8092,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8092,\n end: 8094,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$formatted\",\n start: 8094,\n end: 8104,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8105,\n end: 8106,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$now\",\n start: 8107,\n end: 8111,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 8111,\n end: 8113,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"format\",\n start: 8113,\n end: 8119,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8119,\n end: 8120,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Y-m-d H:i:s'\",\n start: 8120,\n end: 8133,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8133,\n end: 8134,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8134,\n end: 8135,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8135,\n end: 8137,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8137,\n end: 8139,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8157,\n end: 8159,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$filename\",\n start: 8159,\n end: 8168,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8169,\n end: 8170,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'test.txt'\",\n start: 8171,\n end: 8181,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8181,\n end: 8182,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8182,\n end: 8184,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$content\",\n start: 8184,\n end: 8192,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8193,\n end: 8194,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"This is a test file.\\\\nWith multiple lines.\\\"\",\n start: 8195,\n end: 8239,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8239,\n end: 8240,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8240,\n end: 8242,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8242,\n end: 8244,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file_put_contents\",\n start: 8244,\n end: 8261,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8261,\n end: 8262,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$filename\",\n start: 8262,\n end: 8271,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8271,\n end: 8272,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$content\",\n start: 8273,\n end: 8281,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8281,\n end: 8282,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8282,\n end: 8283,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8283,\n end: 8285,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$readContent\",\n start: 8285,\n end: 8297,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8298,\n end: 8299,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file_get_contents\",\n start: 8300,\n end: 8317,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8317,\n end: 8318,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$filename\",\n start: 8318,\n end: 8327,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8327,\n end: 8328,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8328,\n end: 8329,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8329,\n end: 8331,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$lines\",\n start: 8331,\n end: 8337,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8338,\n end: 8339,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"file\",\n start: 8340,\n end: 8344,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8344,\n end: 8345,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$filename\",\n start: 8345,\n end: 8354,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8354,\n end: 8355,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FILE_IGNORE_NEW_LINES\",\n start: 8356,\n end: 8377,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8377,\n end: 8378,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8378,\n end: 8379,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8379,\n end: 8381,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8381,\n end: 8383,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8401,\n end: 8403,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$data\",\n start: 8403,\n end: 8408,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8409,\n end: 8410,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 8411,\n end: 8412,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 8412,\n end: 8418,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 8419,\n end: 8421,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'John'\",\n start: 8422,\n end: 8428,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8428,\n end: 8429,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'age'\",\n start: 8430,\n end: 8435,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 8436,\n end: 8438,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"30\",\n start: 8439,\n end: 8441,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8441,\n end: 8442,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'city'\",\n start: 8443,\n end: 8449,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 8450,\n end: 8452,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'New York'\",\n start: 8453,\n end: 8463,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 8463,\n end: 8464,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8464,\n end: 8465,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8465,\n end: 8467,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$json\",\n start: 8467,\n end: 8472,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8473,\n end: 8474,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"json_encode\",\n start: 8475,\n end: 8486,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8486,\n end: 8487,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$data\",\n start: 8487,\n end: 8492,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8492,\n end: 8493,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"JSON_PRETTY_PRINT\",\n start: 8494,\n end: 8511,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8511,\n end: 8512,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8512,\n end: 8513,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8513,\n end: 8515,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$decoded\",\n start: 8515,\n end: 8523,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8524,\n end: 8525,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"json_decode\",\n start: 8526,\n end: 8537,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8537,\n end: 8538,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$json\",\n start: 8538,\n end: 8543,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8543,\n end: 8544,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"true\",\n start: 8545,\n end: 8549,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8549,\n end: 8550,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8550,\n end: 8551,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8551,\n end: 8553,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8553,\n end: 8555,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8572,\n end: 8574,\n },\n TokenData {\n kind: \"Try\",\n text: \"try\",\n start: 8574,\n end: 8577,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8578,\n end: 8579,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8579,\n end: 8581,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$result\",\n start: 8585,\n end: 8592,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8593,\n end: 8594,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"10\",\n start: 8595,\n end: 8597,\n },\n TokenData {\n kind: \"Divide\",\n text: \"/\",\n start: 8598,\n end: 8599,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 8600,\n end: 8601,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8601,\n end: 8602,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8602,\n end: 8604,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 8604,\n end: 8605,\n },\n TokenData {\n kind: \"Catch\",\n text: \"catch\",\n start: 8606,\n end: 8611,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8612,\n end: 8613,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DivisionByZeroError\",\n start: 8613,\n end: 8632,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 8633,\n end: 8635,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8635,\n end: 8636,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8637,\n end: 8638,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8638,\n end: 8640,\n },\n TokenData {\n kind: \"Echo\",\n text: \"echo\",\n start: 8644,\n end: 8648,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Error: \\\"\",\n start: 8649,\n end: 8658,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8659,\n end: 8660,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 8661,\n end: 8663,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 8663,\n end: 8665,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getMessage\",\n start: 8665,\n end: 8675,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8675,\n end: 8676,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8676,\n end: 8677,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8678,\n end: 8679,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"\\\\n\\\"\",\n start: 8680,\n end: 8684,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8684,\n end: 8685,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8685,\n end: 8687,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 8687,\n end: 8688,\n },\n TokenData {\n kind: \"Catch\",\n text: \"catch\",\n start: 8689,\n end: 8694,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8695,\n end: 8696,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Exception\",\n start: 8696,\n end: 8705,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 8706,\n end: 8708,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8708,\n end: 8709,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8710,\n end: 8711,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8711,\n end: 8713,\n },\n TokenData {\n kind: \"Echo\",\n text: \"echo\",\n start: 8717,\n end: 8721,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"General error: \\\"\",\n start: 8722,\n end: 8739,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8740,\n end: 8741,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$e\",\n start: 8742,\n end: 8744,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 8744,\n end: 8746,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getMessage\",\n start: 8746,\n end: 8756,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8756,\n end: 8757,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8757,\n end: 8758,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8759,\n end: 8760,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"\\\\n\\\"\",\n start: 8761,\n end: 8765,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8765,\n end: 8766,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8766,\n end: 8768,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 8768,\n end: 8769,\n },\n TokenData {\n kind: \"Finally\",\n text: \"finally\",\n start: 8770,\n end: 8777,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8778,\n end: 8779,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8779,\n end: 8781,\n },\n TokenData {\n kind: \"Echo\",\n text: \"echo\",\n start: 8785,\n end: 8789,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"Cleanup code here\\\\n\\\"\",\n start: 8790,\n end: 8811,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8811,\n end: 8812,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8812,\n end: 8814,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 8814,\n end: 8815,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8815,\n end: 8817,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8817,\n end: 8819,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8828,\n end: 8830,\n },\n TokenData {\n kind: \"Trait\",\n text: \"trait\",\n start: 8830,\n end: 8835,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Timestampable\",\n start: 8836,\n end: 8849,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8849,\n end: 8851,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8851,\n end: 8852,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8852,\n end: 8854,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 8858,\n end: 8865,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 8866,\n end: 8874,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$createdAt\",\n start: 8875,\n end: 8885,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8885,\n end: 8886,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8886,\n end: 8888,\n },\n TokenData {\n kind: \"Private\",\n text: \"private\",\n start: 8892,\n end: 8899,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 8900,\n end: 8901,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 8901,\n end: 8909,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$updatedAt\",\n start: 8910,\n end: 8920,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8921,\n end: 8922,\n },\n TokenData {\n kind: \"NullLiteral\",\n text: \"null\",\n start: 8923,\n end: 8927,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8927,\n end: 8928,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8928,\n end: 8930,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8930,\n end: 8932,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 8936,\n end: 8942,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 8943,\n end: 8951,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCreatedAt\",\n start: 8952,\n end: 8964,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8964,\n end: 8965,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8965,\n end: 8966,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 8966,\n end: 8967,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 8968,\n end: 8976,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8976,\n end: 8978,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 8982,\n end: 8983,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 8983,\n end: 8985,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 8993,\n end: 8999,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 9000,\n end: 9005,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 9005,\n end: 9007,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"createdAt\",\n start: 9007,\n end: 9016,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9016,\n end: 9017,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9017,\n end: 9019,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9023,\n end: 9024,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9024,\n end: 9026,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9026,\n end: 9028,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9032,\n end: 9038,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9039,\n end: 9047,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getUpdatedAt\",\n start: 9048,\n end: 9060,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9060,\n end: 9061,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9061,\n end: 9062,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9062,\n end: 9063,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 9064,\n end: 9065,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 9065,\n end: 9073,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9073,\n end: 9075,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9079,\n end: 9080,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9080,\n end: 9082,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 9090,\n end: 9096,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 9097,\n end: 9102,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 9102,\n end: 9104,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"updatedAt\",\n start: 9104,\n end: 9113,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9113,\n end: 9114,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9114,\n end: 9116,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9120,\n end: 9121,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9121,\n end: 9123,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9123,\n end: 9125,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9129,\n end: 9135,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9136,\n end: 9144,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"touch\",\n start: 9145,\n end: 9150,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9150,\n end: 9151,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9151,\n end: 9152,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9152,\n end: 9153,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"void\",\n start: 9154,\n end: 9158,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9158,\n end: 9160,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9164,\n end: 9165,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9165,\n end: 9167,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 9175,\n end: 9180,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 9180,\n end: 9182,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"updatedAt\",\n start: 9182,\n end: 9191,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9192,\n end: 9193,\n },\n TokenData {\n kind: \"New\",\n text: \"new\",\n start: 9194,\n end: 9197,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DateTime\",\n start: 9198,\n end: 9206,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9206,\n end: 9207,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9207,\n end: 9208,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9208,\n end: 9209,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9209,\n end: 9211,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9215,\n end: 9216,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9216,\n end: 9218,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9218,\n end: 9219,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9219,\n end: 9221,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9221,\n end: 9223,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9235,\n end: 9237,\n },\n TokenData {\n kind: \"Interface\",\n text: \"interface\",\n start: 9237,\n end: 9246,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Cacheable\",\n start: 9247,\n end: 9256,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9256,\n end: 9258,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9258,\n end: 9259,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9259,\n end: 9261,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9265,\n end: 9271,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9272,\n end: 9280,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCacheKey\",\n start: 9281,\n end: 9292,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9292,\n end: 9293,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9293,\n end: 9294,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9294,\n end: 9295,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 9296,\n end: 9302,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9302,\n end: 9303,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9303,\n end: 9305,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9309,\n end: 9315,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9316,\n end: 9324,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCacheTtl\",\n start: 9325,\n end: 9336,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9336,\n end: 9337,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9337,\n end: 9338,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9338,\n end: 9339,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 9340,\n end: 9343,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9343,\n end: 9344,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9344,\n end: 9346,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9346,\n end: 9347,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9347,\n end: 9349,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9349,\n end: 9351,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9368,\n end: 9370,\n },\n TokenData {\n kind: \"Abstract\",\n text: \"abstract\",\n start: 9370,\n end: 9378,\n },\n TokenData {\n kind: \"Class\",\n text: \"class\",\n start: 9379,\n end: 9384,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Model\",\n start: 9385,\n end: 9390,\n },\n TokenData {\n kind: \"Implements\",\n text: \"implements\",\n start: 9391,\n end: 9401,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Cacheable\",\n start: 9402,\n end: 9411,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9411,\n end: 9413,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9413,\n end: 9414,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9414,\n end: 9416,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 9420,\n end: 9423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Timestampable\",\n start: 9424,\n end: 9437,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9437,\n end: 9438,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9438,\n end: 9440,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9440,\n end: 9442,\n },\n TokenData {\n kind: \"Abstract\",\n text: \"abstract\",\n start: 9446,\n end: 9454,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9455,\n end: 9461,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9462,\n end: 9470,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getId\",\n start: 9471,\n end: 9476,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9476,\n end: 9477,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9477,\n end: 9478,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9478,\n end: 9479,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 9480,\n end: 9483,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9483,\n end: 9484,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9484,\n end: 9486,\n },\n TokenData {\n kind: \"Abstract\",\n text: \"abstract\",\n start: 9490,\n end: 9498,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9499,\n end: 9505,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9506,\n end: 9514,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"toArray\",\n start: 9515,\n end: 9522,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9522,\n end: 9523,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9523,\n end: 9524,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9524,\n end: 9525,\n },\n TokenData {\n kind: \"Array\",\n text: \"array\",\n start: 9526,\n end: 9531,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9531,\n end: 9532,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9532,\n end: 9534,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9534,\n end: 9536,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9540,\n end: 9546,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9547,\n end: 9555,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCacheKey\",\n start: 9556,\n end: 9567,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9567,\n end: 9568,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9568,\n end: 9569,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9569,\n end: 9570,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"string\",\n start: 9571,\n end: 9577,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9577,\n end: 9579,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9583,\n end: 9584,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9584,\n end: 9586,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 9594,\n end: 9600,\n },\n TokenData {\n kind: \"Static\",\n text: \"static\",\n start: 9601,\n end: 9607,\n },\n TokenData {\n kind: \"DoubleColon\",\n text: \"::\",\n start: 9607,\n end: 9609,\n },\n TokenData {\n kind: \"Class\",\n text: \"class\",\n start: 9609,\n end: 9614,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9615,\n end: 9616,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"':'\",\n start: 9617,\n end: 9620,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9621,\n end: 9622,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$this\",\n start: 9623,\n end: 9628,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 9628,\n end: 9630,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getId\",\n start: 9630,\n end: 9635,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9635,\n end: 9636,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9636,\n end: 9637,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9637,\n end: 9638,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9638,\n end: 9640,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9644,\n end: 9645,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9645,\n end: 9647,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9647,\n end: 9649,\n },\n TokenData {\n kind: \"Public\",\n text: \"public\",\n start: 9653,\n end: 9659,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 9660,\n end: 9668,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"getCacheTtl\",\n start: 9669,\n end: 9680,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9680,\n end: 9681,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9681,\n end: 9682,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9682,\n end: 9683,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 9684,\n end: 9687,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9687,\n end: 9689,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9693,\n end: 9694,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9694,\n end: 9696,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 9704,\n end: 9710,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"3600\",\n start: 9711,\n end: 9715,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9715,\n end: 9716,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9726,\n end: 9728,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9732,\n end: 9733,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9733,\n end: 9735,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9735,\n end: 9736,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9736,\n end: 9738,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9738,\n end: 9740,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9752,\n end: 9754,\n },\n TokenData {\n kind: \"Const\",\n text: \"const\",\n start: 9754,\n end: 9759,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"DEFAULT_TIMEOUT\",\n start: 9760,\n end: 9775,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9776,\n end: 9777,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"30\",\n start: 9778,\n end: 9780,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9780,\n end: 9781,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9781,\n end: 9783,\n },\n TokenData {\n kind: \"Const\",\n text: \"const\",\n start: 9783,\n end: 9788,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"MAX_RETRIES\",\n start: 9789,\n end: 9800,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9801,\n end: 9802,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"3\",\n start: 9803,\n end: 9804,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9804,\n end: 9805,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9805,\n end: 9807,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9807,\n end: 9809,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"define\",\n start: 9809,\n end: 9815,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9815,\n end: 9816,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'APP_VERSION'\",\n start: 9816,\n end: 9829,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9829,\n end: 9830,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'1.0.0'\",\n start: 9831,\n end: 9838,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9838,\n end: 9839,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9839,\n end: 9840,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9840,\n end: 9842,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"define\",\n start: 9842,\n end: 9848,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9848,\n end: 9849,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'DEBUG_MODE'\",\n start: 9849,\n end: 9861,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9861,\n end: 9862,\n },\n TokenData {\n kind: \"BooleanLiteral\",\n text: \"true\",\n start: 9863,\n end: 9867,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9867,\n end: 9868,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9868,\n end: 9869,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9869,\n end: 9871,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9871,\n end: 9873,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9892,\n end: 9894,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$GLOBALS\",\n start: 9894,\n end: 9902,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 9902,\n end: 9903,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'config'\",\n start: 9903,\n end: 9911,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 9911,\n end: 9912,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9913,\n end: 9914,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 9915,\n end: 9916,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9916,\n end: 9918,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'database'\",\n start: 9922,\n end: 9932,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 9933,\n end: 9935,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 9936,\n end: 9937,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9937,\n end: 9939,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'host'\",\n start: 9947,\n end: 9953,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 9954,\n end: 9956,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'localhost'\",\n start: 9957,\n end: 9968,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9968,\n end: 9969,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9969,\n end: 9971,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'port'\",\n start: 9979,\n end: 9985,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 9986,\n end: 9988,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"3306\",\n start: 9989,\n end: 9993,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9993,\n end: 9994,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 9994,\n end: 9996,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'name'\",\n start: 10004,\n end: 10010,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10011,\n end: 10013,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'test_db'\",\n start: 10014,\n end: 10023,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10023,\n end: 10024,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10024,\n end: 10026,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10030,\n end: 10031,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10031,\n end: 10032,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10032,\n end: 10034,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'cache'\",\n start: 10038,\n end: 10045,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10046,\n end: 10048,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 10049,\n end: 10050,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10050,\n end: 10052,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'driver'\",\n start: 10060,\n end: 10068,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10069,\n end: 10071,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'redis'\",\n start: 10072,\n end: 10079,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10079,\n end: 10080,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10080,\n end: 10082,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'ttl'\",\n start: 10090,\n end: 10095,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10096,\n end: 10098,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"3600\",\n start: 10099,\n end: 10103,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10103,\n end: 10104,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10104,\n end: 10106,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10110,\n end: 10111,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10111,\n end: 10112,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10112,\n end: 10114,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10114,\n end: 10115,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10115,\n end: 10116,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10116,\n end: 10118,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10118,\n end: 10120,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10155,\n end: 10157,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$calculator\",\n start: 10157,\n end: 10168,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10169,\n end: 10170,\n },\n TokenData {\n kind: \"Function\",\n text: \"function\",\n start: 10171,\n end: 10179,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10180,\n end: 10181,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 10181,\n end: 10184,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$a\",\n start: 10185,\n end: 10187,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10187,\n end: 10188,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 10189,\n end: 10192,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10193,\n end: 10195,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10195,\n end: 10196,\n },\n TokenData {\n kind: \"Use\",\n text: \"use\",\n start: 10197,\n end: 10200,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10201,\n end: 10202,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$GLOBALS\",\n start: 10202,\n end: 10210,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10210,\n end: 10211,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 10211,\n end: 10212,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"int\",\n start: 10213,\n end: 10216,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 10217,\n end: 10218,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10218,\n end: 10220,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$operation\",\n start: 10224,\n end: 10234,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10235,\n end: 10236,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$GLOBALS\",\n start: 10237,\n end: 10245,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 10245,\n end: 10246,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'config'\",\n start: 10246,\n end: 10254,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10254,\n end: 10255,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 10255,\n end: 10256,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'operation'\",\n start: 10256,\n end: 10267,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10267,\n end: 10268,\n },\n TokenData {\n kind: \"NullCoalesce\",\n text: \"??\",\n start: 10269,\n end: 10271,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'add'\",\n start: 10272,\n end: 10277,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10277,\n end: 10278,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10278,\n end: 10280,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10284,\n end: 10286,\n },\n TokenData {\n kind: \"Return\",\n text: \"return\",\n start: 10290,\n end: 10296,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"match\",\n start: 10297,\n end: 10302,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10303,\n end: 10304,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$operation\",\n start: 10304,\n end: 10314,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10314,\n end: 10315,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 10316,\n end: 10317,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10317,\n end: 10319,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'add'\",\n start: 10327,\n end: 10332,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10333,\n end: 10335,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$a\",\n start: 10336,\n end: 10338,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 10339,\n end: 10340,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10341,\n end: 10343,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10343,\n end: 10344,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10344,\n end: 10346,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'subtract'\",\n start: 10354,\n end: 10364,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10365,\n end: 10367,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$a\",\n start: 10368,\n end: 10370,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10371,\n end: 10372,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10373,\n end: 10375,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10375,\n end: 10376,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10376,\n end: 10378,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'multiply'\",\n start: 10386,\n end: 10396,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10397,\n end: 10399,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$a\",\n start: 10400,\n end: 10402,\n },\n TokenData {\n kind: \"Multiply\",\n text: \"*\",\n start: 10403,\n end: 10404,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10405,\n end: 10407,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10407,\n end: 10408,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10408,\n end: 10410,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'divide'\",\n start: 10418,\n end: 10426,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10427,\n end: 10429,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10430,\n end: 10432,\n },\n TokenData {\n kind: \"NotIdentical\",\n text: \"!==\",\n start: 10433,\n end: 10436,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 10437,\n end: 10438,\n },\n TokenData {\n kind: \"Question\",\n text: \"?\",\n start: 10439,\n end: 10440,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"intval\",\n start: 10441,\n end: 10447,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10447,\n end: 10448,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$a\",\n start: 10448,\n end: 10450,\n },\n TokenData {\n kind: \"Divide\",\n text: \"/\",\n start: 10451,\n end: 10452,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$b\",\n start: 10453,\n end: 10455,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10455,\n end: 10456,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 10457,\n end: 10458,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 10459,\n end: 10460,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10460,\n end: 10461,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10461,\n end: 10463,\n },\n TokenData {\n kind: \"Default\",\n text: \"default\",\n start: 10471,\n end: 10478,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10479,\n end: 10481,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"0\",\n start: 10482,\n end: 10483,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10483,\n end: 10484,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10484,\n end: 10486,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 10490,\n end: 10491,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10491,\n end: 10492,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10492,\n end: 10494,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 10494,\n end: 10495,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10495,\n end: 10496,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10496,\n end: 10498,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10498,\n end: 10500,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10528,\n end: 10530,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$httpCode\",\n start: 10530,\n end: 10539,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10540,\n end: 10541,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"404\",\n start: 10542,\n end: 10545,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10545,\n end: 10546,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10546,\n end: 10548,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$message\",\n start: 10548,\n end: 10556,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10557,\n end: 10558,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"match\",\n start: 10559,\n end: 10564,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10565,\n end: 10566,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"$httpCode\",\n start: 10566,\n end: 10575,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10575,\n end: 10576,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 10577,\n end: 10578,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10578,\n end: 10580,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"200\",\n start: 10584,\n end: 10587,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10588,\n end: 10590,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'OK'\",\n start: 10591,\n end: 10595,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10595,\n end: 10596,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10596,\n end: 10598,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"404\",\n start: 10602,\n end: 10605,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10606,\n end: 10608,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Not Found'\",\n start: 10609,\n end: 10620,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10620,\n end: 10621,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10621,\n end: 10623,\n },\n TokenData {\n kind: \"NumberLiteral\",\n text: \"500\",\n start: 10627,\n end: 10630,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10631,\n end: 10633,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Internal Server Error'\",\n start: 10634,\n end: 10657,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10657,\n end: 10658,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10658,\n end: 10660,\n },\n TokenData {\n kind: \"Default\",\n text: \"default\",\n start: 10664,\n end: 10671,\n },\n TokenData {\n kind: \"DoubleArrow\",\n text: \"=>\",\n start: 10672,\n end: 10674,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"'Unknown Status'\",\n start: 10675,\n end: 10691,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10691,\n end: 10692,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10692,\n end: 10694,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 10694,\n end: 10695,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10695,\n end: 10696,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10696,\n end: 10698,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10698,\n end: 10700,\n },\n TokenData {\n kind: \"Echo\",\n text: \"echo\",\n start: 10700,\n end: 10704,\n },\n TokenData {\n kind: \"StringLiteral\",\n text: \"\\\"HTTP {$httpCode}: {$message}\\\\n\\\"\",\n start: 10705,\n end: 10737,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10737,\n end: 10738,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10738,\n end: 10740,\n },\n TokenData {\n kind: \"Newline\",\n text: \"\\r\\n\",\n start: 10740,\n end: 10742,\n },\n TokenData {\n kind: \"CloseTag\",\n text: \"?>\",\n start: 10742,\n end: 10744,\n },\n TokenData {\n kind: \"Eof\",\n text: \"\",\n start: 10744,\n end: 10744,\n },\n ],\n errors: [],\n}" } [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] lexer::test_php_lexer [INFO] [stdout] [INFO] [stdout] test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "2267579b560841aa5a4283d67d6aa85fe2d8d1ffa7a91cfe97ae9e8ba97ea308", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2267579b560841aa5a4283d67d6aa85fe2d8d1ffa7a91cfe97ae9e8ba97ea308", kill_on_drop: false }` [INFO] [stdout] 2267579b560841aa5a4283d67d6aa85fe2d8d1ffa7a91cfe97ae9e8ba97ea308