O:60:"SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult":7:{s:72:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult interfaces";a:0:{}s:69:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult classes";a:2:{s:36:"BuyerKiosk\Auth\Services\RateLimiter";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Class_":10:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ name";s:11:"RateLimiter";s:68:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespacedName";s:36:"BuyerKiosk\Auth\Services\RateLimiter";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespace";s:24:"BuyerKiosk\Auth\Services";s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ file";s:98:"/Users/rvanvuren/Projects/buyerkiosk-web/userfrosting/src/BuyerKiosk/Auth/Services/RateLimiter.php";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ startLine";i:13;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ endLine";i:296;s:65:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ parentClass";N;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ interfaces";a:0:{}s:60:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ traits";a:0:{}s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ methods";a:11:{s:11:"__construct";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:11:"__construct";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:61;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:65;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";E:63:"SebastianBergmann\CodeCoverage\StaticAnalysis\Visibility:Public";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:20:"__construct(PDO $db)";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:9:"initRedis";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:9:"initRedis";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:70;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:82;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";E:64:"SebastianBergmann\CodeCoverage\StaticAnalysis\Visibility:Private";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:17:"initRedis(): void";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:3;}s:10:"checkLimit";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:10:"checkLimit";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:91;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:101;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:63:"checkLimit(string $action, string $identifier): RateLimitResult";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}s:13:"recordFailure";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:13:"recordFailure";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:109;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:119;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:55:"recordFailure(string $action, string $identifier): void";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}s:13:"clearAttempts";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:13:"clearAttempts";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:127;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:140;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:55:"clearAttempts(string $action, string $identifier): void";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:3;}s:9:"getConfig";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:9:"getConfig";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:148;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:151;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:32:"getConfig(string $action): array";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:8:"buildKey";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:8:"buildKey";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:160;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:163;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:52:"buildKey(string $action, string $identifier): string";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:15:"checkRedisLimit";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:15:"checkRedisLimit";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:172;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:198;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:60:"checkRedisLimit(string $key, array $config): RateLimitResult";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:4;}s:18:"recordRedisFailure";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:18:"recordRedisFailure";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:206;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:219;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:52:"recordRedisFailure(string $key, array $config): void";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}s:18:"checkDatabaseLimit";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:18:"checkDatabaseLimit";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:229;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:263;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:86:"checkDatabaseLimit(string $action, string $identifier, array $config): RateLimitResult";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:5;}s:21:"recordDatabaseFailure";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:21:"recordDatabaseFailure";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:272;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:295;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:26;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:78:"recordDatabaseFailure(string $action, string $identifier, array $config): void";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}}}s:40:"BuyerKiosk\Auth\Services\RateLimitResult";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Class_":10:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ name";s:15:"RateLimitResult";s:68:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespacedName";s:40:"BuyerKiosk\Auth\Services\RateLimitResult";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespace";s:24:"BuyerKiosk\Auth\Services";s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ file";s:98:"/Users/rvanvuren/Projects/buyerkiosk-web/userfrosting/src/BuyerKiosk/Auth/Services/RateLimiter.php";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ startLine";i:301;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ endLine";i:361;s:65:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ parentClass";N;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ interfaces";a:0:{}s:60:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ traits";a:0:{}s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ methods";a:4:{s:11:"__construct";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:11:"__construct";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:325;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:330;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:58:"__construct(bool $blocked, int $attempts, int $retryAfter)";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:9:"isBlocked";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:9:"isBlocked";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:337;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:340;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:17:"isBlocked(): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:11:"getAttempts";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:11:"getAttempts";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:347;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:350;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:18:"getAttempts(): int";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:13:"getRetryAfter";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:13:"getRetryAfter";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:357;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:360;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:20:"getRetryAfter(): int";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}}}}s:68:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult traits";a:0:{}s:71:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult functions";a:0:{}s:73:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult linesOfCode";O:57:"SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode":3:{s:70:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode linesOfCode";i:362;s:77:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode commentLinesOfCode";i:131;s:80:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode nonCommentLinesOfCode";i:231;}s:77:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult executableLines";a:84:{i:63;i:5;i:64;i:6;i:72;i:7;i:74;i:8;i:75;i:9;i:76;i:10;i:77;i:11;i:78;i:12;i:79;i:13;i:93;i:14;i:94;i:15;i:96;i:16;i:97;i:17;i:100;i:18;i:111;i:19;i:112;i:20;i:114;i:21;i:115;i:22;i:117;i:23;i:129;i:24;i:131;i:25;i:132;i:26;i:133;i:27;i:134;i:28;i:137;i:28;i:138;i:29;i:150;i:30;i:162;i:31;i:174;i:32;i:176;i:33;i:177;i:34;i:180;i:35;i:181;i:36;i:184;i:37;i:186;i:37;i:185;i:38;i:188;i:39;i:189;i:40;i:191;i:41;i:192;i:42;i:193;i:43;i:194;i:44;i:197;i:45;i:208;i:46;i:209;i:47;i:210;i:48;i:213;i:49;i:215;i:49;i:214;i:50;i:216;i:51;i:218;i:52;i:231;i:53;i:233;i:54;i:236;i:55;i:240;i:55;i:241;i:56;i:242;i:57;i:244;i:58;i:245;i:59;i:248;i:60;i:249;i:61;i:250;i:62;i:253;i:63;i:254;i:64;i:255;i:65;i:258;i:66;i:259;i:67;i:260;i:68;i:262;i:69;i:274;i:70;i:275;i:71;i:279;i:72;i:289;i:72;i:290;i:73;i:291;i:73;i:292;i:73;i:293;i:73;i:294;i:73;i:327;i:77;i:328;i:78;i:329;i:79;i:339;i:80;i:349;i:81;i:359;i:82;}s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult ignoredLines";a:2:{i:0;i:13;i:1;i:301;}}