diff --git a/README.md b/README.md index 157e3c0..8825b98 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,7 @@ Benchmark script options: ## HASH * [HDEL](https://sugardb.io/docs/commands/hash/hdel) * [HEXISTS](https://sugardb.io/docs/commands/hash/hexists) +* [HEXPIRE](https://sugardb.io/docs/commands/hash/hexpire) * [HGET](https://sugardb.io/docs/commands/hash/hget) * [HGETALL](https://sugardb.io/docs/commands/hash/hgetall) * [HINCRBY](https://sugardb.io/docs/commands/hash/hincrby) @@ -251,6 +252,7 @@ Benchmark script options: * [HSET](https://sugardb.io/docs/commands/hash/hset) * [HSETNX](https://sugardb.io/docs/commands/hash/hsetnx) * [HSTRLEN](https://sugardb.io/docs/commands/hash/hstrlen) +* [HTTL](https://sugardb.io/docs/commands/hash/httl) * [HVALS](https://sugardb.io/docs/commands/hash/hvals) diff --git a/coverage/coverage.out b/coverage/coverage.out index ffca1ee..cd4f2bd 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -4,6 +4,13 @@ github.com/echovault/echovault/cmd/main.go:30.16,32.3 1 0 github.com/echovault/echovault/cmd/main.go:34.2,44.16 5 0 github.com/echovault/echovault/cmd/main.go:44.16,46.3 1 0 github.com/echovault/echovault/cmd/main.go:48.2,52.19 3 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 @@ -187,6 +194,473 @@ github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 +github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 +github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 +github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 +github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 0 +github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 0 +github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 0 +github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 +github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 +github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 +github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 0 +github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 +github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 0 +github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 +github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 +github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 +github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 +github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 +github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 +github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 +github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 +github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 +github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 +github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 +github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 +github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 +github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 +github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 +github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 +github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 +github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 +github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 +github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 +github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 +github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 +github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 +github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 +github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 +github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 +github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 +github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 +github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 +github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 +github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 +github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 +github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 +github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 +github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 +github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 +github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 +github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 +github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 +github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 +github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 +github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 +github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 +github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 +github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 +github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 +github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 +github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 +github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 +github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 +github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 +github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 +github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 +github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 +github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 +github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 +github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 +github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 +github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 +github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 +github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 +github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 +github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 +github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 +github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 +github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 +github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 +github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 +github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 +github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 +github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 +github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 +github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 +github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 +github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 +github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 +github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 +github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 +github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 +github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 +github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 +github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 +github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 +github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 +github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 +github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 +github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 +github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 +github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 +github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 +github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 +github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 +github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 +github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 +github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 +github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 +github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/config/config.go:64.34,70.24 3 0 +github.com/echovault/echovault/internal/config/config.go:70.24,72.35 2 0 +github.com/echovault/echovault/internal/config/config.go:72.35,74.5 1 0 +github.com/echovault/echovault/internal/config/config.go:75.4,75.22 1 0 +github.com/echovault/echovault/internal/config/config.go:75.22,77.5 1 0 +github.com/echovault/echovault/internal/config/config.go:78.4,79.14 2 0 +github.com/echovault/echovault/internal/config/config.go:82.2,82.115 1 0 +github.com/echovault/echovault/internal/config/config.go:82.115,85.3 2 0 +github.com/echovault/echovault/internal/config/config.go:87.2,90.29 2 0 +github.com/echovault/echovault/internal/config/config.go:90.29,91.86 1 0 +github.com/echovault/echovault/internal/config/config.go:91.86,93.5 1 0 +github.com/echovault/echovault/internal/config/config.go:93.7,95.5 1 0 +github.com/echovault/echovault/internal/config/config.go:96.4,97.14 2 0 +github.com/echovault/echovault/internal/config/config.go:100.2,103.59 2 0 +github.com/echovault/echovault/internal/config/config.go:103.59,105.17 2 0 +github.com/echovault/echovault/internal/config/config.go:105.17,107.4 1 0 +github.com/echovault/echovault/internal/config/config.go:108.3,109.13 2 0 +github.com/echovault/echovault/internal/config/config.go:112.2,121.88 2 0 +github.com/echovault/echovault/internal/config/config.go:121.88,128.23 3 0 +github.com/echovault/echovault/internal/config/config.go:128.23,130.5 1 0 +github.com/echovault/echovault/internal/config/config.go:131.4,132.14 2 0 +github.com/echovault/echovault/internal/config/config.go:135.2,139.24 2 0 +github.com/echovault/echovault/internal/config/config.go:139.24,140.36 1 0 +github.com/echovault/echovault/internal/config/config.go:140.36,142.5 1 0 +github.com/echovault/echovault/internal/config/config.go:143.4,144.14 2 0 +github.com/echovault/echovault/internal/config/config.go:147.2,188.14 23 0 +github.com/echovault/echovault/internal/config/config.go:188.14,190.3 1 0 +github.com/echovault/echovault/internal/config/config.go:191.2,192.14 2 0 +github.com/echovault/echovault/internal/config/config.go:192.14,194.3 1 0 +github.com/echovault/echovault/internal/config/config.go:196.2,226.22 2 0 +github.com/echovault/echovault/internal/config/config.go:226.22,228.45 1 0 +github.com/echovault/echovault/internal/config/config.go:228.45,229.14 1 0 +github.com/echovault/echovault/internal/config/config.go:230.9,231.17 1 0 +github.com/echovault/echovault/internal/config/config.go:231.17,232.36 1 0 +github.com/echovault/echovault/internal/config/config.go:232.36,234.6 1 0 +github.com/echovault/echovault/internal/config/config.go:237.4,239.22 2 0 +github.com/echovault/echovault/internal/config/config.go:239.22,240.59 1 0 +github.com/echovault/echovault/internal/config/config.go:240.59,242.6 1 0 +github.com/echovault/echovault/internal/config/config.go:245.4,245.39 1 0 +github.com/echovault/echovault/internal/config/config.go:245.39,246.59 1 0 +github.com/echovault/echovault/internal/config/config.go:246.59,248.6 1 0 +github.com/echovault/echovault/internal/config/config.go:254.2,256.45 2 0 +github.com/echovault/echovault/internal/config/config.go:256.45,258.3 1 0 +github.com/echovault/echovault/internal/config/config.go:260.2,260.18 1 0 +github.com/echovault/echovault/internal/config/default.go:9.29,42.2 3 0 +github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 +github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 +github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 +github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 +github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 +github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 +github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 +github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 +github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 1 +github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 1 +github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 +github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 1 +github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 +github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 +github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 +github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 +github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 +github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 +github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 +github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 +github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 +github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 +github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 +github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 +github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 +github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 +github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 +github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 +github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 +github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 +github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 +github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 +github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 +github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 +github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 +github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 +github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 +github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 +github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 +github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 +github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 +github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 +github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 +github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 +github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 +github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 +github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 +github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 +github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 +github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 +github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 +github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 +github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 +github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 +github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 +github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 +github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 +github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 +github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 +github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 +github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 +github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 +github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 +github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 +github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 +github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 +github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 +github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 +github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 +github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 +github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 +github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 +github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 +github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 +github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 +github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 +github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 +github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 +github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 +github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 +github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 +github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 +github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 +github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 +github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 +github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 +github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 +github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 +github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 +github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 +github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 +github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 +github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 +github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 +github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 +github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 +github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 +github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 +github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 +github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 +github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 +github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 +github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 +github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 +github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 +github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 +github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 +github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 +github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 +github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:44.54,45.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:45.28,47.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:50.55,51.28 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:51.28,53.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:56.88,57.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:57.28,59.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:62.101,63.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:63.28,65.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:68.57,69.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:69.28,71.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:74.70,80.60 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:80.60,83.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:84.74,84.75 0 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:87.2,87.33 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:87.33,89.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:92.2,92.46 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:92.46,94.17 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:94.17,96.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:97.3,98.17 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:98.17,100.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:101.3,101.15 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:104.2,104.19 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:107.44,114.16 5 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:114.16,116.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:119.2,119.44 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:119.44,121.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:123.2,123.46 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:123.46,125.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:127.2,127.44 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:127.44,129.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:132.2,132.39 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:132.39,134.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:136.2,136.12 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:139.37,140.21 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:140.21,142.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:145.2,145.47 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:145.47,147.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:149.2,150.16 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:150.16,152.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:154.2,154.17 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:154.17,156.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:158.2,159.49 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:159.49,161.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:163.2,163.83 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:163.83,164.34 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:164.34,166.4 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:169.2,169.12 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:172.35,175.21 3 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:175.21,177.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:178.2,178.41 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:178.41,180.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:181.2,181.12 1 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 @@ -442,480 +916,6 @@ github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 -github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 -github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 -github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 -github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 1 -github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 1 -github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 -github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 1 -github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 -github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 -github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 -github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 -github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 -github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 -github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 -github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 -github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 -github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 -github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 -github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 -github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 -github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 -github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 -github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 -github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 -github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 -github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 -github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 -github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 -github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 -github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 -github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 -github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 -github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 -github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 -github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 -github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 -github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 -github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 -github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 -github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 -github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 -github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 -github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 -github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 -github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 -github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 -github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 -github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 -github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 -github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 -github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 -github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 -github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 -github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 -github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 -github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 -github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 -github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 -github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 -github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 -github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 -github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 -github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 -github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 -github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 -github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 -github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 -github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 -github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 -github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 -github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 -github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 -github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 -github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 -github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 -github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 -github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 -github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 -github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 -github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 -github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 -github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 -github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 -github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 -github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 -github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 -github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 -github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 -github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 -github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 -github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 -github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 -github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 -github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 -github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:44.54,45.28 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:45.28,47.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:50.55,51.28 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:51.28,53.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:56.88,57.28 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:57.28,59.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:62.101,63.28 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:63.28,65.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:68.57,69.28 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:69.28,71.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:74.70,80.60 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:80.60,83.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:84.74,84.75 0 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:87.2,87.33 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:87.33,89.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:92.2,92.46 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:92.46,94.17 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:94.17,96.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:97.3,98.17 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:98.17,100.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:101.3,101.15 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:104.2,104.19 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:107.44,114.16 5 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:114.16,116.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:119.2,119.44 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:119.44,121.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:123.2,123.46 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:123.46,125.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:127.2,127.44 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:127.44,129.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:132.2,132.39 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:132.39,134.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:136.2,136.12 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:139.37,140.21 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:140.21,142.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:145.2,145.47 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:145.47,147.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:149.2,150.16 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:150.16,152.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:154.2,154.17 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:154.17,156.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:158.2,159.49 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:159.49,161.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:163.2,163.83 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:163.83,164.34 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:164.34,166.4 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:169.2,169.12 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:172.35,175.21 3 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:175.21,177.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:178.2,178.41 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:178.41,180.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:181.2,181.12 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 0 -github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 0 -github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 0 -github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 -github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 -github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 -github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 0 -github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 -github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 0 -github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 -github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 -github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 -github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 -github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 -github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 -github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 -github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 -github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 -github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 -github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 -github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 -github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 -github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 -github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 -github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 -github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 -github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 -github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 -github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 -github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 -github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 -github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 -github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 -github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 -github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 -github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 -github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 -github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 -github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 -github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 -github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 -github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 -github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 -github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 -github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 -github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 -github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 -github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 -github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 -github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 -github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 -github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 -github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 -github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 -github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 -github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 -github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 -github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 -github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 -github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 -github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 -github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 -github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 -github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 -github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 -github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 -github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 -github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 -github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 -github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 -github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 -github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 -github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 -github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 -github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 -github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 -github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 -github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 -github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 -github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 -github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 -github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 -github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 -github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 -github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 -github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 -github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 -github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 -github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 -github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 -github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 -github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 -github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 -github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 -github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 -github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/config/config.go:64.34,70.24 3 0 -github.com/echovault/echovault/internal/config/config.go:70.24,72.35 2 0 -github.com/echovault/echovault/internal/config/config.go:72.35,74.5 1 0 -github.com/echovault/echovault/internal/config/config.go:75.4,75.22 1 0 -github.com/echovault/echovault/internal/config/config.go:75.22,77.5 1 0 -github.com/echovault/echovault/internal/config/config.go:78.4,79.14 2 0 -github.com/echovault/echovault/internal/config/config.go:82.2,82.115 1 0 -github.com/echovault/echovault/internal/config/config.go:82.115,85.3 2 0 -github.com/echovault/echovault/internal/config/config.go:87.2,90.29 2 0 -github.com/echovault/echovault/internal/config/config.go:90.29,91.86 1 0 -github.com/echovault/echovault/internal/config/config.go:91.86,93.5 1 0 -github.com/echovault/echovault/internal/config/config.go:93.7,95.5 1 0 -github.com/echovault/echovault/internal/config/config.go:96.4,97.14 2 0 -github.com/echovault/echovault/internal/config/config.go:100.2,103.59 2 0 -github.com/echovault/echovault/internal/config/config.go:103.59,105.17 2 0 -github.com/echovault/echovault/internal/config/config.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/config/config.go:108.3,109.13 2 0 -github.com/echovault/echovault/internal/config/config.go:112.2,121.88 2 0 -github.com/echovault/echovault/internal/config/config.go:121.88,128.23 3 0 -github.com/echovault/echovault/internal/config/config.go:128.23,130.5 1 0 -github.com/echovault/echovault/internal/config/config.go:131.4,132.14 2 0 -github.com/echovault/echovault/internal/config/config.go:135.2,139.24 2 0 -github.com/echovault/echovault/internal/config/config.go:139.24,140.36 1 0 -github.com/echovault/echovault/internal/config/config.go:140.36,142.5 1 0 -github.com/echovault/echovault/internal/config/config.go:143.4,144.14 2 0 -github.com/echovault/echovault/internal/config/config.go:147.2,188.14 23 0 -github.com/echovault/echovault/internal/config/config.go:188.14,190.3 1 0 -github.com/echovault/echovault/internal/config/config.go:191.2,192.14 2 0 -github.com/echovault/echovault/internal/config/config.go:192.14,194.3 1 0 -github.com/echovault/echovault/internal/config/config.go:196.2,226.22 2 0 -github.com/echovault/echovault/internal/config/config.go:226.22,228.45 1 0 -github.com/echovault/echovault/internal/config/config.go:228.45,229.14 1 0 -github.com/echovault/echovault/internal/config/config.go:230.9,231.17 1 0 -github.com/echovault/echovault/internal/config/config.go:231.17,232.36 1 0 -github.com/echovault/echovault/internal/config/config.go:232.36,234.6 1 0 -github.com/echovault/echovault/internal/config/config.go:237.4,239.22 2 0 -github.com/echovault/echovault/internal/config/config.go:239.22,240.59 1 0 -github.com/echovault/echovault/internal/config/config.go:240.59,242.6 1 0 -github.com/echovault/echovault/internal/config/config.go:245.4,245.39 1 0 -github.com/echovault/echovault/internal/config/config.go:245.39,246.59 1 0 -github.com/echovault/echovault/internal/config/config.go:246.59,248.6 1 0 -github.com/echovault/echovault/internal/config/config.go:254.2,256.45 2 0 -github.com/echovault/echovault/internal/config/config.go:256.45,258.3 1 0 -github.com/echovault/echovault/internal/config/config.go:260.2,260.18 1 0 -github.com/echovault/echovault/internal/config/default.go:9.29,42.2 3 0 github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 @@ -1215,52 +1215,6 @@ github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:39.30,47.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:49.58,51.69 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:51.69,53.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:55.2,55.19 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:55.19,58.3 2 0 -github.com/echovault/echovault/internal/eviction/lfu.go:58.8,60.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:64.32,67.2 2 0 -github.com/echovault/echovault/internal/eviction/lfu.go:69.34,71.2 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:73.44,75.54 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:75.54,77.3 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:79.2,79.56 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:82.39,86.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:88.38,97.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:99.34,108.2 8 1 -github.com/echovault/echovault/internal/eviction/lfu.go:110.43,113.26 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:113.26,116.3 2 1 -github.com/echovault/echovault/internal/eviction/lfu.go:118.2,118.69 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:118.69,120.3 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:121.2,123.27 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:126.43,127.73 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:127.73,129.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:130.2,130.19 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:130.19,132.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:135.50,138.2 2 1 -github.com/echovault/echovault/internal/eviction/lru.go:38.30,46.2 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:48.59,50.69 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:50.69,52.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:53.2,53.19 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:53.19,56.3 2 0 -github.com/echovault/echovault/internal/eviction/lru.go:56.8,58.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:61.32,64.2 2 0 -github.com/echovault/echovault/internal/eviction/lru.go:66.34,68.2 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:70.44,72.2 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:74.39,78.2 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:80.38,87.2 2 1 -github.com/echovault/echovault/internal/eviction/lru.go:89.34,98.2 8 1 -github.com/echovault/echovault/internal/eviction/lru.go:100.43,103.26 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:103.26,105.3 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:107.2,107.69 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:107.69,109.3 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:110.2,112.27 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:115.43,116.73 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:116.73,118.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:119.2,119.19 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:119.19,121.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:124.50,127.2 2 1 github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 @@ -1420,7 +1374,7 @@ github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 1 github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 @@ -2437,430 +2391,52 @@ github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 -github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 -github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 -github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 1 -github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 -github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 -github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 -github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 -github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 -github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 -github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 -github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 -github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 -github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 -github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 -github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 -github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 -github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 -github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 -github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 -github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 -github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 1 -github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 1 -github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 1 -github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 -github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 -github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 1 -github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 -github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 1 -github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 -github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 -github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 -github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 -github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 -github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 -github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 -github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 -github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 -github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 -github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 -github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 -github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 -github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 -github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 -github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 -github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 -github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 -github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 -github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 -github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 -github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 -github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 -github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 -github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 -github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 -github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 -github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 -github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 -github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 -github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 -github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 -github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 -github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 -github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 -github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 -github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 -github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 -github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 -github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 -github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 -github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 -github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 1 -github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 1 -github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 -github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 1 -github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 1 -github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 -github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 -github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 -github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 1 -github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 -github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 -github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 1 -github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 1 -github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 -github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 1 -github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 -github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 -github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 -github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 -github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 -github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 -github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 -github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 -github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 -github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:56.43,63.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:65.58,80.26 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:80.26,84.4 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:85.26,89.4 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:93.2,94.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.41,99.3 4 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:101.2,104.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:104.16,106.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:108.2,108.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:108.37,111.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:111.70,113.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.18,115.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:116.4,116.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:119.3,119.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:119.17,121.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:123.3,123.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.45,137.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:141.72,154.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:158.75,171.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.43,176.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:176.16,179.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:181.2,182.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:182.16,185.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:187.2,187.49 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:40.42,42.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:44.4,47.12 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:50.3,50.36 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:50.36,57.43 5 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:57.43,59.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:61.4,63.21 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:67.2,69.25 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:72.76,76.35 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:76.35,77.65 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:77.65,78.41 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:78.41,80.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:81.4,81.12 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:83.3,83.13 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:86.2,86.51 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:89.75,90.29 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:91.9,96.36 4 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:96.36,97.66 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:97.66,98.52 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:98.52,102.6 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:103.5,103.13 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:105.4,106.14 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:108.3,109.26 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:39.30,47.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:49.58,51.69 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:51.69,53.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:55.2,55.19 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:55.19,58.3 2 0 +github.com/echovault/echovault/internal/eviction/lfu.go:58.8,60.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:64.32,67.2 2 0 +github.com/echovault/echovault/internal/eviction/lfu.go:69.34,71.2 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:73.44,75.54 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:75.54,77.3 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:79.2,79.56 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:82.39,86.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:88.38,97.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:99.34,108.2 8 1 +github.com/echovault/echovault/internal/eviction/lfu.go:110.43,113.26 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:113.26,116.3 2 1 +github.com/echovault/echovault/internal/eviction/lfu.go:118.2,118.69 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:118.69,120.3 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:121.2,123.27 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:126.43,127.73 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:127.73,129.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:130.2,130.19 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:130.19,132.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:135.50,138.2 2 1 +github.com/echovault/echovault/internal/eviction/lru.go:38.30,46.2 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:48.59,50.69 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:50.69,52.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:53.2,53.19 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:53.19,56.3 2 0 +github.com/echovault/echovault/internal/eviction/lru.go:56.8,58.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:61.32,64.2 2 0 +github.com/echovault/echovault/internal/eviction/lru.go:66.34,68.2 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:70.44,72.2 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:74.39,78.2 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:80.38,87.2 2 1 +github.com/echovault/echovault/internal/eviction/lru.go:89.34,98.2 8 1 +github.com/echovault/echovault/internal/eviction/lru.go:100.43,103.26 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:103.26,105.3 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:107.2,107.69 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:107.69,109.3 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:110.2,112.27 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:115.43,116.73 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:116.73,118.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:119.2,119.19 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:119.19,121.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:124.50,127.2 2 1 github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 @@ -3494,6 +3070,430 @@ github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 +github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 +github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 +github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 +github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 +github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 +github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 +github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 +github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 +github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 +github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 +github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 +github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 +github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 +github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 1 +github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 +github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 +github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 +github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 +github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 +github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 +github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 +github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 +github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 +github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 +github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 +github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 +github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 +github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 +github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 +github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 +github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 +github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 1 +github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 1 +github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 1 +github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 +github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 +github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 1 +github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 +github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 1 +github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 +github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 +github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 +github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 +github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 +github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 +github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 +github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 +github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 +github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 +github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 +github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 +github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 +github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 +github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 +github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 +github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 +github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 +github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 +github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 +github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 +github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 +github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 +github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 +github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 +github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 +github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 +github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 +github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 +github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 +github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 +github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 +github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 +github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 +github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 +github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 +github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 +github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 +github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 +github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 +github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 +github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 +github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 +github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 +github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 +github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 +github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 +github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 +github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 +github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 +github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 +github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 1 +github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 1 +github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 +github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 1 +github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 1 +github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 +github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 +github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 +github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 +github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 +github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 +github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 1 +github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 1 +github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 +github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 1 +github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 +github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 +github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 +github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 +github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 +github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 +github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 +github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 +github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 +github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 +github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:56.43,63.2 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:65.58,80.26 7 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:80.26,84.4 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:85.26,89.4 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:93.2,94.41 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:94.41,99.3 4 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:101.2,104.16 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:108.2,108.37 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:108.37,111.70 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:111.70,113.18 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:116.4,116.14 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:119.3,119.17 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:123.3,123.27 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:127.45,137.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:158.75,171.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:173.43,176.16 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:176.16,179.3 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:181.2,182.16 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:187.2,187.49 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:40.42,42.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:44.4,47.12 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:50.3,50.36 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:50.36,57.43 5 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:57.43,59.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:61.4,63.21 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:67.2,69.25 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:72.76,76.35 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:76.35,77.65 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:77.65,78.41 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:78.41,80.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:81.4,81.12 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:83.3,83.13 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:86.2,86.51 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:89.75,90.29 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:91.9,96.36 4 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:96.36,97.66 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:97.66,98.52 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:98.52,102.6 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:103.5,103.13 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:105.4,106.14 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:108.3,109.26 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1 +github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 +github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 +github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 +github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 +github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 +github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 +github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 +github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 +github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 +github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 +github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 +github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 +github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 +github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 +github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 +github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 +github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 +github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 +github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 +github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 @@ -3617,7 +3617,7 @@ github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 1 github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 @@ -4157,7 +4157,7 @@ github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 1 github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 @@ -4777,7 +4777,7 @@ github.com/echovault/echovault/internal/modules/set/commands.go:159.70,161.16 2 github.com/echovault/echovault/internal/modules/set/commands.go:161.16,163.3 1 0 github.com/echovault/echovault/internal/modules/set/commands.go:165.2,169.37 3 1 github.com/echovault/echovault/internal/modules/set/commands.go:169.37,170.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 1 github.com/echovault/echovault/internal/modules/set/commands.go:173.3,174.10 2 1 github.com/echovault/echovault/internal/modules/set/commands.go:174.10,177.4 1 1 github.com/echovault/echovault/internal/modules/set/commands.go:178.3,178.27 1 1 @@ -4801,7 +4801,7 @@ github.com/echovault/echovault/internal/modules/set/commands.go:221.71,223.4 1 0 github.com/echovault/echovault/internal/modules/set/commands.go:223.9,225.4 1 1 github.com/echovault/echovault/internal/modules/set/commands.go:228.2,230.37 2 1 github.com/echovault/echovault/internal/modules/set/commands.go:230.37,231.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 0 github.com/echovault/echovault/internal/modules/set/commands.go:234.3,235.10 2 1 github.com/echovault/echovault/internal/modules/set/commands.go:235.10,238.4 1 1 github.com/echovault/echovault/internal/modules/set/commands.go:239.3,239.27 1 1 @@ -5103,814 +5103,6 @@ github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:33.82,34.19 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:34.19,36.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:37.2,37.34 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:46.34,49.16 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:49.16,51.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:52.2,55.16 3 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:55.16,57.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:59.2,60.16 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:60.16,62.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:64.2,64.31 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:33.82,34.19 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:34.19,36.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:37.2,37.33 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:46.34,49.16 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:49.16,51.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:52.2,55.13 3 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:55.13,57.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:59.2,60.9 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:60.9,62.3 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:64.2,65.20 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:65.20,67.17 2 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:67.17,69.4 1 0 -github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:72.2,72.56 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 0 -github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 0 -github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 0 -github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 -github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 -github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 -github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 0 -github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 -github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 0 -github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 -github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 -github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 -github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 -github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 -github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 -github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 -github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 -github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 -github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 -github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 -github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 -github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 -github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 -github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 -github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 -github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 -github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 -github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 -github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 -github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 -github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 -github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 -github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 -github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 -github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 -github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 -github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 -github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 -github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 -github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 -github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 -github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 -github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 -github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 -github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 -github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 -github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 -github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 -github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 -github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 -github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 -github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 -github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 -github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 -github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 -github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 -github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 -github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 -github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 -github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 -github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 -github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 -github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 -github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 -github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 -github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 -github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 -github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 -github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 -github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 -github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 -github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 1 -github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 1 -github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 -github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 1 -github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 1 -github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 -github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 -github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 -github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 -github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 -github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 -github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 1 -github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 1 -github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 -github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 1 -github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 -github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 -github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 -github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 -github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 -github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 -github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 -github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 -github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 -github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:56.43,63.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:65.58,80.26 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:80.26,84.4 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:85.26,89.4 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:93.2,94.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.41,99.3 4 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:101.2,104.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:104.16,106.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:108.2,108.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:108.37,111.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:111.70,113.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.18,115.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:116.4,116.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:119.3,119.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:119.17,121.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:123.3,123.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.45,137.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:141.72,154.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:158.75,171.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.43,176.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:176.16,179.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:181.2,182.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:182.16,185.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:187.2,187.49 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:25.72,27.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:27.16,29.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:31.2,35.9 4 1 -github.com/echovault/echovault/internal/modules/string/commands.go:35.9,37.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:39.2,41.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:41.16,43.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:45.2,46.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:46.9,48.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:51.2,51.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:51.24,53.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:53.94,55.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:56.3,56.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:60.2,60.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:60.16,62.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:62.94,64.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:65.3,65.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:68.2,70.35 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:70.35,72.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:72.24,75.12 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:78.3,79.8 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:82.2,82.103 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:82.103,84.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:86.2,86.59 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:89.70,91.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:91.16,93.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:95.2,98.16 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:98.16,100.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:102.2,104.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:104.9,106.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:108.2,108.56 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:111.70,113.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:113.16,115.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:117.2,124.24 6 1 -github.com/echovault/echovault/internal/modules/string/commands.go:124.24,126.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:128.2,128.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:128.16,130.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:132.2,133.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:133.9,135.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:137.2,137.15 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:137.15,139.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:140.2,140.13 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:140.13,142.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:144.2,144.30 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:144.30,146.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:148.2,148.22 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:148.22,150.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:152.2,152.17 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:152.17,155.3 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:157.2,159.14 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:159.14,161.38 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:161.38,163.4 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:164.3,164.12 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:167.2,167.65 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:170.70,172.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:172.16,174.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:176.2,179.16 4 1 -github.com/echovault/echovault/internal/modules/string/commands.go:179.16,182.18 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:182.18,184.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:185.3,185.57 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:187.2,188.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:188.9,190.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:191.2,194.17 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:194.17,196.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:197.2,197.59 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:200.36,249.2 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.78,25.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:25.19,27.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:28.2,32.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.76,36.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:36.19,38.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:39.2,43.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.76,47.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:47.19,49.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:50.2,54.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:57.76,58.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:58.19,60.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:61.2,65.8 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 -github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 -github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 -github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 -github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 1 -github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 -github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 -github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 -github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 -github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 -github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 -github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 -github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 -github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 -github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 -github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 -github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 -github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 -github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 -github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 -github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 -github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 -github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 -github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 -github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 -github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 -github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 -github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 -github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 -github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 -github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 -github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 -github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 -github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 -github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 -github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 -github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 -github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 -github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 -github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 -github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 -github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 -github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 -github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 -github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 -github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 -github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 -github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 -github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 -github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 -github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 -github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 -github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 -github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 -github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 -github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 -github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 -github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 -github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 -github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 -github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 -github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 -github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 -github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 -github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 -github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 -github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 -github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 -github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 -github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 -github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 -github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 -github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 -github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 -github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 -github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 -github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 -github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 -github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 -github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 -github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 -github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 -github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 -github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 -github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 -github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 -github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 -github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 -github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 -github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 -github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 -github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 -github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 -github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 -github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 -github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 -github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:91.90,92.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:109.103,110.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:124.60,126.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:127.85,127.86 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:316.2,316.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:316.15,317.36 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:317.36,319.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:322.2,325.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:325.16,327.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:329.2,329.52 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:329.52,331.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:333.2,333.46 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:333.46,335.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:337.2,342.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:342.50,344.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:345.2,345.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:348.2,348.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:348.15,349.36 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:349.36,351.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:354.2,355.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:355.16,357.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:359.2,360.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:360.58,362.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:364.2,366.99 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:366.99,367.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:367.34,369.4 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:372.2,374.12 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:377.46,379.2 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:381.42,383.2 1 1 github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 @@ -7053,6 +6245,814 @@ github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:33.82,34.19 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:34.19,36.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:37.2,37.33 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:46.34,49.16 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:49.16,51.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:52.2,55.13 3 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:55.13,57.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:59.2,60.9 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:60.9,62.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:64.2,65.20 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:65.20,67.17 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:67.17,69.4 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_get/module_get.go:72.2,72.56 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:33.82,34.19 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:34.19,36.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:37.2,37.34 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:46.34,49.16 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:49.16,51.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:52.2,55.16 3 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:55.16,57.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:59.2,60.16 2 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:60.16,62.3 1 0 +github.com/echovault/echovault/internal/volumes/modules/module_set/module_set.go:64.2,64.31 1 0 +github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 +github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 +github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 +github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 +github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 +github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 +github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 +github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 +github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 +github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 +github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 +github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 +github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 +github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 +github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 +github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 +github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 +github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 +github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 +github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 +github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 +github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 +github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 +github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 +github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 +github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 +github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 +github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 +github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 +github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 +github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 0 +github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 0 +github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 0 +github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 +github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 0 +github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 +github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 0 +github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 +github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 0 +github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 +github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 +github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 +github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 +github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 +github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 +github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 +github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 +github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 +github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 +github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 +github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 +github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 +github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 +github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 +github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 +github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 +github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 +github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 +github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 +github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 +github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 +github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 +github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 +github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 +github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 +github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 +github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 +github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 +github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 +github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 +github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 +github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 +github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 +github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 +github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 +github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 +github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 +github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 +github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 +github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 +github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 +github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 +github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 +github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 +github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 +github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 +github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 +github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 +github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 +github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 +github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 +github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 +github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 +github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 +github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 +github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 +github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 +github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 +github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 +github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 +github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 +github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 +github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 +github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 +github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 +github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 +github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 +github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 +github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 +github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 +github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 1 +github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 1 +github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 +github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 1 +github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 1 +github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 1 +github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 1 +github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 1 +github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 1 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 1 +github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 1 +github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 1 +github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 1 +github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 1 +github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 +github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 1 +github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 +github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 +github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 +github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 +github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 +github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 +github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 +github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 +github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 +github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 +github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 +github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 +github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 +github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:56.43,63.2 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:65.58,80.26 7 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:80.26,84.4 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:85.26,89.4 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:93.2,94.41 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:94.41,99.3 4 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:101.2,104.16 3 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:108.2,108.37 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:108.37,111.70 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:111.70,113.18 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:116.4,116.14 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:119.3,119.17 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:123.3,123.27 1 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:127.45,137.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:158.75,171.2 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:173.43,176.16 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:176.16,179.3 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:181.2,182.16 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/echovault/internal/memberlist/memberlist.go:187.2,187.49 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:25.72,27.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:27.16,29.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:31.2,35.9 4 1 +github.com/echovault/echovault/internal/modules/string/commands.go:35.9,37.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:39.2,41.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:41.16,43.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:45.2,46.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:46.9,48.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:51.2,51.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:51.24,53.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:53.94,55.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:56.3,56.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:60.2,60.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:60.16,62.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:62.94,64.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:65.3,65.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:68.2,70.35 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:70.35,72.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:72.24,75.12 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:78.3,79.8 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:82.2,82.103 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:82.103,84.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:86.2,86.59 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:89.70,91.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:91.16,93.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:95.2,98.16 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:98.16,100.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:102.2,104.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:104.9,106.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:108.2,108.56 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:111.70,113.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:113.16,115.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:117.2,124.24 6 1 +github.com/echovault/echovault/internal/modules/string/commands.go:124.24,126.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:128.2,128.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:128.16,130.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:132.2,133.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:133.9,135.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:137.2,137.15 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:137.15,139.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:140.2,140.13 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:140.13,142.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:144.2,144.30 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:144.30,146.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:148.2,148.22 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:148.22,150.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:152.2,152.17 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:152.17,155.3 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:157.2,159.14 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:159.14,161.38 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:161.38,163.4 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:164.3,164.12 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:167.2,167.65 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:170.70,172.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:172.16,174.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:176.2,179.16 4 1 +github.com/echovault/echovault/internal/modules/string/commands.go:179.16,182.18 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:182.18,184.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:185.3,185.57 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:187.2,188.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:188.9,190.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:191.2,194.17 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:194.17,196.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:197.2,197.59 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:200.36,249.2 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.78,25.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:25.19,27.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:28.2,32.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.76,36.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:36.19,38.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:39.2,43.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.76,47.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:47.19,49.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:50.2,54.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:57.76,58.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:58.19,60.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:61.2,65.8 1 1 +github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/echovault/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/echovault/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/echovault/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/echovault/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 +github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 +github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 +github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 +github.com/echovault/echovault/internal/utils.go:214.100,215.36 1 1 +github.com/echovault/echovault/internal/utils.go:215.36,217.26 2 1 +github.com/echovault/echovault/internal/utils.go:217.26,219.35 1 1 +github.com/echovault/echovault/internal/utils.go:219.35,220.13 1 0 +github.com/echovault/echovault/internal/utils.go:223.4,223.30 1 1 +github.com/echovault/echovault/internal/utils.go:223.30,225.5 1 0 +github.com/echovault/echovault/internal/utils.go:227.3,227.36 1 1 +github.com/echovault/echovault/internal/utils.go:227.36,229.4 1 0 +github.com/echovault/echovault/internal/utils.go:231.2,231.14 1 1 +github.com/echovault/echovault/internal/utils.go:236.43,237.14 1 0 +github.com/echovault/echovault/internal/utils.go:237.14,239.3 1 0 +github.com/echovault/echovault/internal/utils.go:240.2,240.30 1 0 +github.com/echovault/echovault/internal/utils.go:240.30,242.3 1 0 +github.com/echovault/echovault/internal/utils.go:243.2,243.30 1 0 +github.com/echovault/echovault/internal/utils.go:243.30,245.3 1 0 +github.com/echovault/echovault/internal/utils.go:247.2,248.21 2 0 +github.com/echovault/echovault/internal/utils.go:248.21,250.3 1 0 +github.com/echovault/echovault/internal/utils.go:252.2,253.29 2 0 +github.com/echovault/echovault/internal/utils.go:253.29,255.13 2 0 +github.com/echovault/echovault/internal/utils.go:255.13,256.9 1 0 +github.com/echovault/echovault/internal/utils.go:260.2,260.10 1 0 +github.com/echovault/echovault/internal/utils.go:263.41,265.28 2 0 +github.com/echovault/echovault/internal/utils.go:265.28,267.3 1 0 +github.com/echovault/echovault/internal/utils.go:268.2,268.20 1 0 +github.com/echovault/echovault/internal/utils.go:271.47,274.16 3 0 +github.com/echovault/echovault/internal/utils.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/utils.go:277.2,277.24 1 0 +github.com/echovault/echovault/internal/utils.go:280.52,283.16 3 0 +github.com/echovault/echovault/internal/utils.go:283.16,285.3 1 0 +github.com/echovault/echovault/internal/utils.go:286.2,286.24 1 0 +github.com/echovault/echovault/internal/utils.go:289.50,292.16 3 0 +github.com/echovault/echovault/internal/utils.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/utils.go:295.2,295.25 1 0 +github.com/echovault/echovault/internal/utils.go:298.52,301.16 3 0 +github.com/echovault/echovault/internal/utils.go:301.16,303.3 1 0 +github.com/echovault/echovault/internal/utils.go:304.2,304.23 1 0 +github.com/echovault/echovault/internal/utils.go:307.51,310.16 3 0 +github.com/echovault/echovault/internal/utils.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/utils.go:313.2,313.22 1 0 +github.com/echovault/echovault/internal/utils.go:316.59,320.16 3 0 +github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/utils.go:324.2,324.16 1 0 +github.com/echovault/echovault/internal/utils.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/utils.go:328.2,328.39 1 0 +github.com/echovault/echovault/internal/utils.go:328.39,330.3 1 0 +github.com/echovault/echovault/internal/utils.go:332.2,333.30 2 0 +github.com/echovault/echovault/internal/utils.go:333.30,334.17 1 0 +github.com/echovault/echovault/internal/utils.go:334.17,336.12 2 0 +github.com/echovault/echovault/internal/utils.go:338.3,338.22 1 0 +github.com/echovault/echovault/internal/utils.go:340.2,340.17 1 0 +github.com/echovault/echovault/internal/utils.go:343.67,346.16 3 0 +github.com/echovault/echovault/internal/utils.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/utils.go:349.2,349.16 1 0 +github.com/echovault/echovault/internal/utils.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/utils.go:352.2,353.31 2 0 +github.com/echovault/echovault/internal/utils.go:353.31,354.18 1 0 +github.com/echovault/echovault/internal/utils.go:354.18,356.12 2 0 +github.com/echovault/echovault/internal/utils.go:358.3,359.33 2 0 +github.com/echovault/echovault/internal/utils.go:359.33,361.4 1 0 +github.com/echovault/echovault/internal/utils.go:362.3,362.17 1 0 +github.com/echovault/echovault/internal/utils.go:364.2,364.17 1 0 +github.com/echovault/echovault/internal/utils.go:367.57,370.16 3 0 +github.com/echovault/echovault/internal/utils.go:370.16,372.3 1 0 +github.com/echovault/echovault/internal/utils.go:373.2,373.16 1 0 +github.com/echovault/echovault/internal/utils.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/utils.go:376.2,377.30 2 0 +github.com/echovault/echovault/internal/utils.go:377.30,378.17 1 0 +github.com/echovault/echovault/internal/utils.go:378.17,380.12 2 0 +github.com/echovault/echovault/internal/utils.go:382.3,382.23 1 0 +github.com/echovault/echovault/internal/utils.go:384.2,384.17 1 0 +github.com/echovault/echovault/internal/utils.go:387.58,390.16 3 0 +github.com/echovault/echovault/internal/utils.go:390.16,392.3 1 0 +github.com/echovault/echovault/internal/utils.go:393.2,393.16 1 0 +github.com/echovault/echovault/internal/utils.go:393.16,395.3 1 0 +github.com/echovault/echovault/internal/utils.go:396.2,397.30 2 0 +github.com/echovault/echovault/internal/utils.go:397.30,398.17 1 0 +github.com/echovault/echovault/internal/utils.go:398.17,400.12 2 0 +github.com/echovault/echovault/internal/utils.go:402.3,402.20 1 0 +github.com/echovault/echovault/internal/utils.go:404.2,404.17 1 0 +github.com/echovault/echovault/internal/utils.go:407.70,408.32 1 0 +github.com/echovault/echovault/internal/utils.go:408.32,409.60 1 0 +github.com/echovault/echovault/internal/utils.go:409.60,411.4 1 0 +github.com/echovault/echovault/internal/utils.go:411.6,413.4 1 0 +github.com/echovault/echovault/internal/utils.go:415.2,415.30 1 0 +github.com/echovault/echovault/internal/utils.go:415.30,416.62 1 0 +github.com/echovault/echovault/internal/utils.go:416.62,418.4 1 0 +github.com/echovault/echovault/internal/utils.go:418.6,420.4 1 0 +github.com/echovault/echovault/internal/utils.go:422.2,422.13 1 0 +github.com/echovault/echovault/internal/utils.go:425.33,427.16 2 0 +github.com/echovault/echovault/internal/utils.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/utils.go:431.2,432.16 2 0 +github.com/echovault/echovault/internal/utils.go:432.16,434.3 1 0 +github.com/echovault/echovault/internal/utils.go:435.2,435.15 1 0 +github.com/echovault/echovault/internal/utils.go:435.15,437.3 1 0 +github.com/echovault/echovault/internal/utils.go:439.2,439.42 1 0 +github.com/echovault/echovault/internal/utils.go:442.61,447.12 4 0 +github.com/echovault/echovault/internal/utils.go:447.12,448.7 1 0 +github.com/echovault/echovault/internal/utils.go:448.7,450.73 2 0 +github.com/echovault/echovault/internal/utils.go:450.73,452.13 1 0 +github.com/echovault/echovault/internal/utils.go:454.4,454.9 1 0 +github.com/echovault/echovault/internal/utils.go:456.3,456.21 1 0 +github.com/echovault/echovault/internal/utils.go:459.2,460.15 2 0 +github.com/echovault/echovault/internal/utils.go:460.15,462.3 1 0 +github.com/echovault/echovault/internal/utils.go:464.2,464.9 1 0 +github.com/echovault/echovault/internal/utils.go:465.18,466.47 1 0 +github.com/echovault/echovault/internal/utils.go:467.14,468.19 1 0 +github.com/echovault/echovault/internal/utils.go:472.84,477.12 4 0 +github.com/echovault/echovault/internal/utils.go:477.12,478.7 1 0 +github.com/echovault/echovault/internal/utils.go:478.7,480.73 2 0 +github.com/echovault/echovault/internal/utils.go:480.73,482.13 1 0 +github.com/echovault/echovault/internal/utils.go:484.4,484.9 1 0 +github.com/echovault/echovault/internal/utils.go:486.3,486.21 1 0 +github.com/echovault/echovault/internal/utils.go:489.2,490.15 2 0 +github.com/echovault/echovault/internal/utils.go:490.15,492.3 1 0 +github.com/echovault/echovault/internal/utils.go:494.2,494.9 1 0 +github.com/echovault/echovault/internal/utils.go:495.18,496.47 1 0 +github.com/echovault/echovault/internal/utils.go:497.14,498.19 1 0 +github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:91.90,92.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:109.103,110.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:124.60,126.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:127.85,127.86 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:316.2,316.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:316.15,317.36 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:317.36,319.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:322.2,325.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:325.16,327.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:329.2,329.52 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:329.52,331.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:333.2,333.46 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:333.46,335.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:337.2,342.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:342.50,344.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:345.2,345.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:348.2,348.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:348.15,349.36 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:349.36,351.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:354.2,355.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:355.16,357.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:359.2,360.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:360.58,362.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:364.2,366.99 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:366.99,367.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:367.34,369.4 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:372.2,374.12 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:377.46,379.2 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:381.42,383.2 1 1 github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 @@ -8615,12 +8615,12 @@ github.com/echovault/echovault/echovault/echovault.go:327.13,329.17 2 1 github.com/echovault/echovault/echovault/echovault.go:329.17,331.5 1 0 github.com/echovault/echovault/echovault/echovault.go:332.4,332.8 1 1 github.com/echovault/echovault/echovault/echovault.go:332.8,333.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:334.21,337.61 2 0 -github.com/echovault/echovault/echovault/echovault.go:337.61,340.56 3 0 -github.com/echovault/echovault/echovault/echovault.go:340.56,341.69 1 0 +github.com/echovault/echovault/echovault/echovault.go:334.21,337.61 2 1 +github.com/echovault/echovault/echovault/echovault.go:337.61,340.56 3 1 +github.com/echovault/echovault/echovault/echovault.go:340.56,341.69 1 1 github.com/echovault/echovault/echovault/echovault.go:341.69,343.9 1 0 -github.com/echovault/echovault/echovault/echovault.go:344.8,344.17 1 0 -github.com/echovault/echovault/echovault/echovault.go:347.6,347.15 1 0 +github.com/echovault/echovault/echovault/echovault.go:344.8,344.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:347.6,347.15 1 1 github.com/echovault/echovault/echovault/echovault.go:348.30,349.11 1 0 github.com/echovault/echovault/echovault/echovault.go:355.2,355.69 1 1 github.com/echovault/echovault/echovault/echovault.go:355.69,357.3 1 0 @@ -8878,23 +8878,23 @@ github.com/echovault/echovault/echovault/keyspace.go:563.63,565.6 1 0 github.com/echovault/echovault/echovault/keyspace.go:569.4,572.52 3 0 github.com/echovault/echovault/echovault/keyspace.go:572.52,574.5 1 0 github.com/echovault/echovault/echovault/keyspace.go:576.10,577.13 1 0 -github.com/echovault/echovault/echovault/keyspace.go:586.77,588.57 1 0 +github.com/echovault/echovault/echovault/keyspace.go:586.77,588.57 1 1 github.com/echovault/echovault/echovault/keyspace.go:588.57,590.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:592.2,599.60 4 0 +github.com/echovault/echovault/echovault/keyspace.go:592.2,599.60 4 1 github.com/echovault/echovault/echovault/keyspace.go:599.60,601.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:602.2,609.33 6 0 +github.com/echovault/echovault/echovault/keyspace.go:602.2,609.33 6 1 github.com/echovault/echovault/echovault/keyspace.go:609.33,610.7 1 0 github.com/echovault/echovault/echovault/keyspace.go:610.7,614.35 3 0 github.com/echovault/echovault/echovault/keyspace.go:614.35,616.10 2 0 -github.com/echovault/echovault/echovault/keyspace.go:620.2,625.25 4 0 +github.com/echovault/echovault/echovault/keyspace.go:620.2,625.25 4 1 github.com/echovault/echovault/echovault/keyspace.go:625.25,628.28 2 0 github.com/echovault/echovault/echovault/keyspace.go:628.28,629.51 1 0 github.com/echovault/echovault/echovault/keyspace.go:629.51,631.5 1 0 github.com/echovault/echovault/echovault/keyspace.go:632.9,632.64 1 0 github.com/echovault/echovault/echovault/keyspace.go:632.64,633.60 1 0 github.com/echovault/echovault/echovault/keyspace.go:633.60,635.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:640.2,640.21 1 0 -github.com/echovault/echovault/echovault/keyspace.go:640.21,642.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:640.2,640.21 1 1 +github.com/echovault/echovault/echovault/keyspace.go:640.21,642.3 1 1 github.com/echovault/echovault/echovault/keyspace.go:644.2,647.58 2 0 github.com/echovault/echovault/echovault/keyspace.go:647.58,651.3 2 0 github.com/echovault/echovault/echovault/keyspace.go:653.2,653.12 1 0 @@ -9351,5 +9351,5 @@ github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 1 github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 1 github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 1 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 1 +github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 1 +github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 diff --git a/docs/docs/commands/hash/hexpire.mdx b/docs/docs/commands/hash/hexpire.mdx new file mode 100644 index 0000000..cdb090e --- /dev/null +++ b/docs/docs/commands/hash/hexpire.mdx @@ -0,0 +1,48 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# HEXPIRE + +### Syntax +``` +HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field...] +``` + +### Module +hash + +### Categories +fast +hash +write + +### Description +Set an expiration (TTL or time to live) in seconds on one or more fields of a given hash key. +You must specify at least one field. Field(s) will automatically be deleted from the hash key when their TTLs expire. + +### Examples + + + + Set the expiration in seconds for fields in the hash: + ```go + db, err := sugardb.NewSugarDB() + if err != nil { + log.Fatal(err) + } + respArray, err := db.HExpire("key", 500, nil, field1, field2) + ``` + + + Set the expiration in seconds for fields in the hash: + ``` + > HEXPIRE key 500 FIELDS 2 field1 field2 + ``` + + diff --git a/docs/docs/commands/hash/httl.mdx b/docs/docs/commands/hash/httl.mdx new file mode 100644 index 0000000..88b0c7f --- /dev/null +++ b/docs/docs/commands/hash/httl.mdx @@ -0,0 +1,48 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# HTTL + +### Syntax +``` +HTTL key FIELDS numfields field [field...] +``` + +### Module +hash + +### Categories +fast +hash +read + +### Description +Returns the remaining TTL (time to live) of a hash key's field(s) that have a set expiration. +This introspection capability allows you to check how many seconds a given hash field will continue to be part of the hash key. + +### Examples + + + + Get the expiration time in seconds for fields in the hash: + ```go + db, err := sugardb.NewSugarDB() + if err != nil { + log.Fatal(err) + } + TTLArray, err := db.HTTL("key", field1, field2) + ``` + + + Get the expiration time in seconds for fields in the hash: + ``` + > HTTL key FIELDS 2 field1 field2 + ``` + + diff --git a/internal/constants/const.go b/internal/constants/const.go index 645f194..852f4ab 100644 --- a/internal/constants/const.go +++ b/internal/constants/const.go @@ -54,8 +54,10 @@ const ( ) const ( - OkResponse = "+OK\r\n" - WrongArgsResponse = "wrong number of arguments" + OkResponse = "+OK\r\n" + WrongArgsResponse = "wrong number of arguments" + MissingArgResponse = "missing argument %s" + InvalidCmdResponse = "invalid command provided" ) const ( diff --git a/internal/modules/hash/commands.go b/internal/modules/hash/commands.go index 3c3ea1b..7a26e14 100644 --- a/internal/modules/hash/commands.go +++ b/internal/modules/hash/commands.go @@ -17,12 +17,14 @@ package hash import ( "errors" "fmt" - "github.com/echovault/sugardb/internal" - "github.com/echovault/sugardb/internal/constants" "math/rand" "slices" "strconv" "strings" + "time" + + "github.com/echovault/sugardb/internal" + "github.com/echovault/sugardb/internal/constants" ) func handleHSET(params internal.HandlerFuncParams) ([]byte, error) { @@ -611,6 +613,222 @@ func handleHDEL(params internal.HandlerFuncParams) ([]byte, error) { return []byte(fmt.Sprintf(":%d\r\n", count)), nil } +func handleHEXPIRE(params internal.HandlerFuncParams) ([]byte, error) { + keys, err := hexpireKeyFunc(params.Command) + if err != nil { + return nil, err + } + key := keys.WriteKeys[0] + + // HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field + cmdargs := keys.WriteKeys[1:] + seconds, err := strconv.ParseInt(cmdargs[0], 10, 64) + if err != nil { + return nil, errors.New(fmt.Sprintf("seconds must be integer, was provided %q", cmdargs[0])) + } + + // FIELDS argument provides starting index to work off of to grab fields + var fieldsIdx int + if cmdargs[1] == "FIELDS" { + fieldsIdx = 1 + } else if cmdargs[2] == "FIELDS" { + fieldsIdx = 2 + } else { + return nil, errors.New(fmt.Sprintf(constants.MissingArgResponse, "FIELDS")) + } + + // index through numfields + numfields, err := strconv.ParseInt(cmdargs[fieldsIdx+1], 10, 64) + if err != nil { + return nil, errors.New(fmt.Sprintf("numberfields must be integer, was provided %q", cmdargs[fieldsIdx+1])) + } + endIdx := fieldsIdx + 2 + int(numfields) + fields := cmdargs[fieldsIdx+2 : endIdx] + + expireAt := params.GetClock().Now().Add(time.Duration(seconds) * time.Second) + + // build out response + resp := "*" + fmt.Sprintf("%v", len(fields)) + "\r\n" + + // handle not hash or bad key + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] + if !keyExists { + for i := numfields; i > 0; i-- { + resp = resp + ":-2\r\n" + } + return []byte(resp), nil + } + + hash, ok := params.GetValues(params.Context, []string{key})[key].(Hash) + if !ok { + return nil, fmt.Errorf("value of key %s is not a hash", key) + } + + // handle expire time of 0 seconds + if seconds == 0 { + for i := numfields; i > 0; i-- { + resp = resp + ":2\r\n" + } + return []byte(resp), nil + } + + if fieldsIdx == 2 { + // Handle expire options + switch strings.ToLower(cmdargs[1]) { + case "nx": + for _, f := range fields { + _, ok := hash[f] + if !ok { + resp = resp + ":-2\r\n" + continue + } + currentExpireAt := hash[f].ExpireAt + if currentExpireAt != (time.Time{}) { + resp = resp + ":0\r\n" + continue + } + err = params.SetHashExpiry(params.Context, key, f, expireAt) + if err != nil { + return []byte(resp), err + } + + resp = resp + ":1\r\n" + + } + case "xx": + for _, f := range fields { + _, ok := hash[f] + if !ok { + resp = resp + ":-2\r\n" + continue + } + currentExpireAt := hash[f].ExpireAt + if currentExpireAt == (time.Time{}) { + resp = resp + ":0\r\n" + continue + } + err = params.SetHashExpiry(params.Context, key, f, expireAt) + if err != nil { + return []byte(resp), err + } + + resp = resp + ":1\r\n" + + } + case "gt": + for _, f := range fields { + _, ok := hash[f] + if !ok { + resp = resp + ":-2\r\n" + continue + } + currentExpireAt := hash[f].ExpireAt + //TODO + if currentExpireAt == (time.Time{}) || expireAt.Before(currentExpireAt) { + resp = resp + ":0\r\n" + continue + } + err = params.SetHashExpiry(params.Context, key, f, expireAt) + if err != nil { + return []byte(resp), err + } + + resp = resp + ":1\r\n" + + } + case "lt": + for _, f := range fields { + _, ok := hash[f] + if !ok { + resp = resp + ":-2\r\n" + continue + } + currentExpireAt := hash[f].ExpireAt + if currentExpireAt != (time.Time{}) && currentExpireAt.Before(expireAt) { + resp = resp + ":0\r\n" + continue + } + err = params.SetHashExpiry(params.Context, key, f, expireAt) + if err != nil { + return []byte(resp), err + } + + resp = resp + ":1\r\n" + + } + default: + return nil, fmt.Errorf("unknown option %s, must be one of 'NX', 'XX', 'GT', 'LT'.", strings.ToUpper(params.Command[3])) + } + } else { + for _, f := range fields { + _, ok := hash[f] + if !ok { + resp = resp + ":-2\r\n" + continue + } + err = params.SetHashExpiry(params.Context, key, f, expireAt) + if err != nil { + return []byte(resp), err + } + + resp = resp + ":1\r\n" + + } + } + + // Array resp + return []byte(resp), nil +} + +func handleHTTL(params internal.HandlerFuncParams) ([]byte, error) { + keys, err := httlKeyFunc(params.Command) + if err != nil { + return nil, err + } + + cmdargs := keys.ReadKeys[2:] + numfields, err := strconv.ParseInt(cmdargs[0], 10, 64) + if err != nil { + return nil, errors.New(fmt.Sprintf("expire time must be integer, was provided %q", cmdargs[0])) + } + + fields := cmdargs[1 : numfields+1] + // init array response + resp := "*" + fmt.Sprintf("%v", len(fields)) + "\r\n" + + // handle bad key + key := keys.ReadKeys[0] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] + if !keyExists { + resp = resp + ":-2\r\n" + return []byte(resp), nil + } + + // handle not a hash + hash, ok := params.GetValues(params.Context, []string{key})[key].(Hash) + if !ok { + return nil, fmt.Errorf("value at %s is not a hash", key) + } + + // build out response + for _, field := range fields { + f, ok := hash[field] + if !ok { + resp = resp + ":-2\r\n" + continue + } + if f.ExpireAt == (time.Time{}) { + resp = resp + ":-1\r\n" + continue + } + resp = resp + fmt.Sprintf(":%d\r\n", int(f.ExpireAt.Sub(params.GetClock().Now()).Round(time.Second).Seconds())) + + } + + // array response + return []byte(resp), nil +} + func Commands() []internal.Command { return []internal.Command{ { @@ -744,14 +962,23 @@ Return the string length of the values stored at the specified fields. 0 if the KeyExtractionFunc: hdelKeyFunc, HandlerFunc: handleHDEL, }, - // { - // Command: "hexpire", - // Module: constants.HashModule, - // Categories: []string{constants.HashCategory, constants.WriteCategory, constants.FastCategory}, - // Description: `(HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]) Sets the expiration, in seconds, of a field in a hash.`, - // Sync: true, - // KeyExtractionFunc: hexpireKeyFunc, - // HandlerFunc: handleHEXPIRE, - // }, + { + Command: "hexpire", + Module: constants.HashModule, + Categories: []string{constants.HashCategory, constants.WriteCategory, constants.FastCategory}, + Description: `(HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]) Sets the expiration, in seconds, of a field in a hash.`, + Sync: true, + KeyExtractionFunc: hexpireKeyFunc, + HandlerFunc: handleHEXPIRE, + }, + { + Command: "httl", + Module: constants.HashModule, + Categories: []string{constants.HashCategory, constants.ReadCategory, constants.FastCategory}, + Description: `HTTL key FIELDS numfields field [field ...] Returns the remaining TTL (time to live) of a hash key's field(s) that have a set expiration.`, + Sync: true, + KeyExtractionFunc: httlKeyFunc, + HandlerFunc: handleHTTL, + }, } } diff --git a/internal/modules/hash/commands_test.go b/internal/modules/hash/commands_test.go index 627603a..e0adcc0 100644 --- a/internal/modules/hash/commands_test.go +++ b/internal/modules/hash/commands_test.go @@ -16,12 +16,15 @@ package hash_test import ( "errors" + "fmt" "slices" "strconv" "strings" "testing" + "time" "github.com/echovault/sugardb/internal" + "github.com/echovault/sugardb/internal/clock" "github.com/echovault/sugardb/internal/config" "github.com/echovault/sugardb/internal/constants" "github.com/echovault/sugardb/internal/modules/hash" @@ -30,6 +33,7 @@ import ( ) func Test_Hash(t *testing.T) { + mockClock := clock.NewClock() port, err := internal.GetFreePort() if err != nil { t.Error(err) @@ -1931,4 +1935,561 @@ func Test_Hash(t *testing.T) { }) } }) + + t.Run("Test_HandleHEXPIRE", func(t *testing.T) { + t.Parallel() + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + _ = conn.Close() + }() + client := resp.NewConn(conn) + + tests := []struct { + name string + key string + presetValue hash.Hash + command []string + expectedValue string + expectedError error + }{ + + { + name: "1. Set expiration for all keys in hash, no options.", + key: "HexpireKey1", + presetValue: hash.Hash{ + "HexpireK1Field1": hash.HashValue{ + Value: "default1", + }, + "HexpireK1Field2": hash.HashValue{ + Value: "default2", + }, + "HexpireK1Field3": hash.HashValue{ + Value: "default3", + }, + }, + command: []string{"HEXPIRE", "HexpireKey1", "5", "FIELDS", "3", "HexpireK1Field1", "HexpireK1Field2", "HexpireK1Field3"}, + expectedValue: "[1 1 1]", + expectedError: nil, + }, + { + name: "2. Set expiration for one key in hash, no options.", + key: "HexpireKey2", + presetValue: hash.Hash{ + "HexpireK2Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey2", "5", "FIELDS", "1", "HexpireK2Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "3. Set expiration, expireTime already populated, no options.", + key: "HexpireKey3", + presetValue: hash.Hash{ + "HexpireK3Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey3", "100", "FIELDS", "1", "HexpireK3Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "4. Set expiration, option NX with no expire time currently set.", + key: "HexpireKey4", + presetValue: hash.Hash{ + "HexpireK4Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey4", "5", "NX", "FIELDS", "1", "HexpireK4Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "5. Set expiration, option NX with an expire time already set.", + key: "HexpireKey5", + presetValue: hash.Hash{ + "HexpireK5Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey5", "100", "NX", "FIELDS", "1", "HexpireK5Field1"}, + expectedValue: "[0]", + expectedError: nil, + }, + { + name: "6. Set expiration, option XX with no expire time currently set.", + key: "HexpireKey6", + presetValue: hash.Hash{ + "HexpireK6Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey6", "5", "XX", "FIELDS", "1", "HexpireK6Field1"}, + expectedValue: "[0]", + expectedError: nil, + }, + { + name: "7. Set expiration, option XX with expire time already set.", + key: "HexpireKey7", + presetValue: hash.Hash{ + "HexpireK7Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey7", "100", "XX", "FIELDS", "1", "HexpireK7Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "8. Set expiration, option GT with expire time less than one provided.", + key: "HexpireKey8", + presetValue: hash.Hash{ + "HexpireK8Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey8", "1000", "GT", "FIELDS", "1", "HexpireK8Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "9. Set expiration, option GT with expire time greater than one provided.", + key: "HexpireKey9", + presetValue: hash.Hash{ + "HexpireK9Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey9", "100", "GT", "FIELDS", "1", "HexpireK9Field1"}, + expectedValue: "[0]", + expectedError: nil, + }, + { + name: "10. Set expiration, option LT with expire time less than one provided.", + key: "HexpireKey10", + presetValue: hash.Hash{ + "HexpireK10Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey10", "1000", "LT", "FIELDS", "1", "HexpireK10Field1"}, + expectedValue: "[0]", + expectedError: nil, + }, + { + name: "11. Set expiration, option LT with expire time greater than one provided.", + key: "HexpireKey11", + presetValue: hash.Hash{ + "HexpireK11Field1": hash.HashValue{ + Value: "default1", + ExpireAt: mockClock.Now().Add(500 * time.Second), + }, + }, + command: []string{"HEXPIRE", "HexpireKey11", "100", "LT", "FIELDS", "1", "HexpireK11Field1"}, + expectedValue: "[1]", + expectedError: nil, + }, + { + name: "12. Set expiration, provide 0 seconds.", + key: "HexpireKey12", + presetValue: hash.Hash{ + "HexpireK12Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey12", "0", "FIELDS", "1", "HexpireK12Field1"}, + expectedValue: "[2]", + expectedError: nil, + }, + { + name: "13. Attempt to set expiration for non existent key.", + key: "HexpireKeyNOTEXIST", + presetValue: nil, + command: []string{"HEXPIRE", "HexpireKeyNOTEXIST", "100", "FIELDS", "1", "HexpireKNEField1"}, + expectedValue: "[-2]", + expectedError: nil, + }, + { + name: "14. Attempt to set expiration for field that doesn't exist.", + key: "HexpireKey14", + presetValue: hash.Hash{ + "HexpireK14Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey14", "100", "FIELDS", "2", "HexpireK14BadField1", "HexpireK14Field1"}, + expectedValue: "[-2 1]", + expectedError: nil, + }, + { + name: "15. Set expiration, command wrong length.", + key: "HexpireKey15", + presetValue: hash.Hash{ + "HexpireK15Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey15", "100", "1", "HexpireK15Field1"}, + expectedError: errors.New("Error wrong number of arguments"), + }, + { + name: "16. Set expiration, command filed numfields is not a number.", + key: "HexpireKey16", + presetValue: hash.Hash{ + "HexpireK16Field1": hash.HashValue{ + Value: "default1", + }, + }, + command: []string{"HEXPIRE", "HexpireKey16", "100", "FIELDS", "one", "HexpireK16Field1"}, + expectedError: errors.New("Error numberfields must be integer, was provided \"one\""), + }, + } + + for _, test := range tests { + + t.Run(test.name, func(t *testing.T) { + // set key with preset value + if test.presetValue != nil { + var command []resp.Value + var expected string + + command = []resp.Value{resp.StringValue("HSET"), resp.StringValue(test.key)} + for key, value := range test.presetValue { + command = append(command, []resp.Value{ + resp.StringValue(key), + resp.StringValue(value.Value.(string))}..., + ) + } + expected = strconv.Itoa(len(test.presetValue)) + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if !strings.EqualFold(res.String(), expected) { + t.Errorf("expected preset response to be \"%s\", got %s", expected, res.String()) + } + + } + + // preset Expire Time + for field, value := range test.presetValue { + if value.ExpireAt != (time.Time{}) { + cmd := []resp.Value{ + resp.StringValue("HEXPIRE"), + resp.StringValue(test.key), + resp.StringValue("500"), + resp.StringValue("FIELDS"), + resp.StringValue("1"), + resp.StringValue(field), + } + + if err = client.WriteArray(cmd); err != nil { + t.Error(err) + } + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + if res.String() != "[1]" { + t.Errorf("Error presetting expire time - Key: %s, Field: %s, response: %s", test.key, field, res.String()) + } + } + } + + // run HEXPIRE command + command := make([]resp.Value, len(test.command)) + for i, c := range test.command { + command[i] = resp.StringValue(c) + } + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if test.expectedError != nil { + if !strings.Contains(res.Error().Error(), test.expectedError.Error()) { + t.Errorf("expected error \"%s\", got \"%s\"", test.expectedError.Error(), res.Error()) + } + return + } + + if res.String() != test.expectedValue { + t.Errorf("expected response %q, got %q", test.expectedValue, res.String()) + } + + }) + + } + + }) + + t.Run("Test_HandleHTTL", func(t *testing.T) { + t.Parallel() + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + _ = conn.Close() + }() + client := resp.NewConn(conn) + + tests := []struct { + name string + command []string + key string + presetValue interface{} + setExpire bool + expectedValue string + expectedError error + }{ + { + name: "1. Get TTL for one field when expireTime is set.", + key: "HTTLKey1", + command: []string{"HTTL", "HTTLKey1", "FIELDS", "1", "HTTLK1Field1"}, + presetValue: hash.Hash{ + "HTTLK1Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: true, + expectedValue: "[5]", + expectedError: nil, + }, + { + name: "2. Get TTL for multiple fields when expireTime is set.", + key: "HTTLKey2", + command: []string{"HTTL", "HTTLKey2", "FIELDS", "3", "HTTLK2Field1", "HTTLK2Field2", "HTTLK2Field3"}, + presetValue: hash.Hash{ + "HTTLK2Field1": hash.HashValue{ + Value: "default1", + }, + "HTTLK2Field2": hash.HashValue{ + Value: "default1", + }, + "HTTLK2Field3": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: true, + expectedValue: "[5 5 5]", + expectedError: nil, + }, + { + name: "3. Get TTL for one field when expireTime is not set.", + key: "HTTLKey3", + command: []string{"HTTL", "HTTLKey3", "FIELDS", "1", "HTTLK3Field1"}, + presetValue: hash.Hash{ + "HTTLK3Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedValue: "[-1]", + expectedError: nil, + }, + { + name: "4. Get TTL for multiple fields when expireTime is not set.", + key: "HTTLKey4", + command: []string{"HTTL", "HTTLKey4", "FIELDS", "3", "HTTLK4Field1", "HTTLK4Field2", "HTTLK4Field3"}, + presetValue: hash.Hash{ + "HTTLK4Field1": hash.HashValue{ + Value: "default1", + }, + "HTTLK4Field2": hash.HashValue{ + Value: "default1", + }, + "HTTLK4Field3": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedValue: "[-1 -1 -1]", + expectedError: nil, + }, + { + name: "5. Try to get TTL for key that doesn't exist.", + key: "HTTLKeyNOTEXIST", + command: []string{"HTTL", "HTTLKeyNOTEXIST", "FIELDS", "1", "HTTLK1Field1"}, + presetValue: nil, + setExpire: false, + expectedValue: "[-2]", + expectedError: nil, + }, + { + name: "6. Try to get TTL for key that isn't a hash.", + key: "HTTLKey6", + command: []string{"HTTL", "HTTLKey6", "FIELDS", "1", "HTTLK6Field1"}, + presetValue: "NotaHash", + setExpire: false, + expectedError: errors.New("Error value at HTTLKey6 is not a hash"), + }, + { + name: "7. Command missing 'FIELDS'.", + key: "HTTLKey7", + command: []string{"HTTL", "HTTLKey7", "1", "HTTLK7Field1"}, + presetValue: hash.Hash{ + "HTTLK7Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedError: errors.New("Error wrong number of arguments"), + }, + { + name: "8. Command numfields provided isn't a number.", + key: "HTTLKey8", + command: []string{"HTTL", "HTTLKey8", "FIELDS", "one", "HTTLK8Field1"}, + presetValue: hash.Hash{ + "HTTLK8Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedError: errors.New("Error expire time must be integer, was provided \"one\""), + }, + { + name: "9. Command missing numfields.", + key: "HTTLKey9", + command: []string{"HTTL", "HTTLKey9", "FIELDS", "HTTLK9Field1"}, + presetValue: hash.Hash{ + "HTTLK9Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedError: errors.New("Error wrong number of arguments"), + }, + { + name: "10. Command FIELDS index contains something else.", + key: "HTTLKey10", + command: []string{"HTTL", "HTTLKey10", "NOTFIELDS", "1", "HTTLK10Field1"}, + presetValue: hash.Hash{ + "HTTLK10Field1": hash.HashValue{ + Value: "default1", + }, + }, + setExpire: false, + expectedError: errors.New("Error invalid command provided"), + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + // set preset values + if test.presetValue != nil { + var command []resp.Value + var expected string + + switch test.presetValue.(type) { + case string: + command = []resp.Value{ + resp.StringValue("SET"), + resp.StringValue(test.key), + resp.StringValue(test.presetValue.(string)), + } + expected = "ok" + case hash.Hash: + command = []resp.Value{resp.StringValue("HSET"), resp.StringValue(test.key)} + for key, value := range test.presetValue.(hash.Hash) { + command = append(command, []resp.Value{ + resp.StringValue(key), + resp.StringValue(value.Value.(string))}..., + ) + } + expected = strconv.Itoa(len(test.presetValue.(hash.Hash))) + } + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if !strings.EqualFold(res.String(), expected) { + t.Errorf("expected preset response to be \"%s\", got %s", expected, res.String()) + } + + } + + if test.setExpire { + // set expire times + command := make([]resp.Value, len(test.presetValue.(hash.Hash))+5) + command[0] = resp.StringValue("HEXPIRE") + command[1] = resp.StringValue(test.key) + command[2] = resp.StringValue("5") + command[3] = resp.StringValue("FIELDS") + command[4] = resp.StringValue(fmt.Sprintf("%v", (len(test.presetValue.(hash.Hash))))) + + i := 0 + for k, _ := range test.presetValue.(hash.Hash) { + command[5+i] = resp.StringValue(k) + i++ + } + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + _, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + } + + // read TTL + command := make([]resp.Value, len(test.command)) + for i, v := range test.command { + command[i] = resp.StringValue(v) + } + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + resp, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if test.expectedError != nil { + if !strings.Contains(resp.Error().Error(), test.expectedError.Error()) { + t.Errorf("expected error \"%s\", got \"%s\"", test.expectedError.Error(), resp.Error()) + } + + return + } + + if resp.String() != test.expectedValue { + t.Errorf("Expected value %v but got %v", test.expectedValue, resp) + } + + }) + + } + + }) } diff --git a/internal/modules/hash/key_funcs.go b/internal/modules/hash/key_funcs.go index 3033f20..3f3b5e5 100644 --- a/internal/modules/hash/key_funcs.go +++ b/internal/modules/hash/key_funcs.go @@ -16,6 +16,7 @@ package hash import ( "errors" + "github.com/echovault/sugardb/internal" "github.com/echovault/sugardb/internal/constants" ) @@ -169,3 +170,31 @@ func hdelKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { WriteKeys: cmd[1:2], }, nil } + +func hexpireKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { + if len(cmd) < 6 { + return internal.KeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse) + } + + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: make([]string, 0), + WriteKeys: cmd[1:], + }, nil +} + +func httlKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { + if len(cmd) < 5 { + return internal.KeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse) + } + + if cmd[2] != "FIELDS" { + return internal.KeyExtractionFuncResult{}, errors.New(constants.InvalidCmdResponse) + } + + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: cmd[1:], + WriteKeys: make([]string, 0), + }, nil +} diff --git a/internal/types.go b/internal/types.go index d7d4394..8ea591f 100644 --- a/internal/types.go +++ b/internal/types.go @@ -140,6 +140,8 @@ type HandlerFuncParams struct { KeysExist func(ctx context.Context, keys []string) map[string]bool // GetExpiry returns the expiry time of a key. GetExpiry func(ctx context.Context, key string) time.Time + // GetHashExpiry returns the expiry time of a field in a key whose value is a hash. + GetHashExpiry func(ctx context.Context, key string, field string) time.Time // DeleteKey deletes the specified key. Returns an error if the deletion was unsuccessful. DeleteKey func(ctx context.Context, key string) error // GetValues retrieves the values from the specified keys. @@ -147,8 +149,10 @@ type HandlerFuncParams struct { GetValues func(ctx context.Context, keys []string) map[string]interface{} // SetValues sets each of the keys with their corresponding values in the provided map. SetValues func(ctx context.Context, entries map[string]interface{}) error - // Set expiry sets the expiry time of the key. + // SetExpiry sets the expiry time of the key. SetExpiry func(ctx context.Context, key string, expire time.Time, touch bool) + // SetHashExpiry sets the expiry time of a field in a key whose value is a hash. + SetHashExpiry func(ctx context.Context, key string, field string, expire time.Time) error // GetClock gets the clock used by the server. // Use this when making use of time methods like .Now and .After. // This inversion of control is a helper for testing as the clock is automatically mocked in tests. diff --git a/sugardb/api_generic.go b/sugardb/api_generic.go index 7af5055..0b89ffa 100644 --- a/sugardb/api_generic.go +++ b/sugardb/api_generic.go @@ -103,6 +103,8 @@ const ( // LT - Only set the expiry time if the new expiry time is less than the current one. // // NX, GT, and LT are mutually exclusive. XX can additionally be passed in with either GT or LT. +// +// Hash only: NX, XX, GT, and LT are all mutually exclusive. type ExpireOptions interface { IsExOpt() ExOpt } diff --git a/sugardb/api_hash.go b/sugardb/api_hash.go index 611bc76..05977c1 100644 --- a/sugardb/api_hash.go +++ b/sugardb/api_hash.go @@ -15,8 +15,10 @@ package sugardb import ( - "github.com/echovault/sugardb/internal" + "fmt" "strconv" + + "github.com/echovault/sugardb/internal" ) // HRandFieldOptions modifies the behaviour of the HRandField function. @@ -354,3 +356,70 @@ func (server *SugarDB) HDel(key string, fields ...string) (int, error) { } return internal.ParseIntegerResponse(b) } + +// HExpire sets the expiration for the provided field(s) in a hash map. +// +// Parameters: +// +// `key` - string - the key to the hash map. +// +// `seconds` - int - number of seconds until expiration. +// +// `ExOpt` - ExpireOptions - One of NX, XX, GT, LT. +// +// `fields` - ...string - a list of fields to set expiration of. +// +// Returns: an integer array representing the outcome of the commmand for each field. +// - Integer reply: -2 if no such field exists in the provided hash key, or the provided key does not exist. +// - Integer reply: 0 if the specified NX | XX | GT | LT condition has not been met. +// - Integer reply: 1 if the expiration time was set/updated. +// - Integer reply: 2 when HEXPIRE/HPEXPIRE is called with 0 seconds +// +// Errors: +// +// "value of key is not a hash" - when the provided key is not a hash. +func (server *SugarDB) HExpire(key string, seconds int, ExOpt ExpireOptions, fields ...string) ([]int, error) { + secs := fmt.Sprintf("%v", seconds) + cmd := []string{"HEXPIRE", key, secs} + if ExOpt != nil { + ExpireOption := fmt.Sprintf("%v", ExOpt) + cmd = append(cmd, ExpireOption) + } + + numFields := fmt.Sprintf("%v", len(fields)) + fieldsArray := append([]string{"FIELDS", numFields}, fields...) + + cmd = append(cmd, fieldsArray...) + b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false, true) + if err != nil { + return nil, err + } + return internal.ParseIntegerArrayResponse(b) +} + +// HTTL gets the expiration for the provided field(s) in a hash map. +// +// Parameters: +// +// `key` - string - the key to the hash map. +// +// `fields` - ...string - a list of fields to get TTL for. +// +// Returns: an integer array representing the outcome of the commmand for each field. +// - Integer reply: the TTL in seconds. +// - Integer reply: -2 if no such field exists in the provided hash key, or the provided key does not exist. +// - Integer reply: -1 if the field exists but has no associated expiration set. +// +// Errors: +// +// "value of key is not a hash" - when the provided key is not a hash. +func (server *SugarDB) HTTL(key string, fields ...string) ([]int, error) { + numFields := fmt.Sprintf("%v", len(fields)) + + cmd := append([]string{"HTTL", key, "FIELDS", numFields}, fields...) + b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false, true) + if err != nil { + return nil, err + } + return internal.ParseIntegerArrayResponse(b) +} diff --git a/sugardb/api_hash_test.go b/sugardb/api_hash_test.go index 7f38b64..ee32591 100644 --- a/sugardb/api_hash_test.go +++ b/sugardb/api_hash_test.go @@ -19,6 +19,7 @@ import ( "reflect" "slices" "testing" + "time" "github.com/echovault/sugardb/internal/modules/hash" ) @@ -934,3 +935,208 @@ func TestSugarDB_HMGet(t *testing.T) { }) } } + +func TestSugarDB_HExpire(t *testing.T) { + server := createSugarDB() + tests := []struct { + name string + presetValue interface{} + key string + fields []string + expireOption ExpireOptions + want []int + wantErr bool + }{ + { + name: "1. Set Expiration from existing hash.", + key: "HExpireKey1", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + want: []int{1, 1, 1}, + wantErr: false, + }, + { + name: "2. Return -2 when attempting to get from non-existed key", + presetValue: nil, + key: "HExpireKey2", + fields: []string{"field1"}, + want: []int{-2}, + wantErr: false, + }, + { + name: "3. Error when trying to get from a value that is not a hash map", + presetValue: "Default Value", + key: "HExpireKey3", + fields: []string{"field1"}, + want: nil, + wantErr: true, + }, + { + name: "4. Set Expiration with option NX.", + key: "HExpireKey4", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + expireOption: NX, + want: []int{1, 1, 1}, + wantErr: false, + }, + { + name: "5. Set Expiration with option XX.", + key: "HExpireKey5", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + expireOption: XX, + want: []int{0, 0, 0}, + wantErr: false, + }, + { + name: "6. Set Expiration with option GT.", + key: "HExpireKey6", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + expireOption: GT, + want: []int{0, 0, 0}, + wantErr: false, + }, + { + name: "7. Set Expiration with option LT.", + key: "HExpireKey7", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + expireOption: LT, + want: []int{1, 1, 1}, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.presetValue != nil { + err := presetValue(server, context.Background(), tt.key, tt.presetValue) + if err != nil { + t.Error(err) + return + } + } + got, err := server.HExpire(tt.key, 5, tt.expireOption, tt.fields...) + if (err != nil) != tt.wantErr { + t.Errorf("HExpire() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("HExpire() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestSugarDB_HTTL(t *testing.T) { + server := createSugarDB() + tests := []struct { + name string + presetValue interface{} + key string + fields []string + want []int + wantErr bool + }{ + { + name: "1. Get TTL for one field when expireTime is set.", + key: "HExpireKey1", + presetValue: hash.Hash{ + "field1": {Value: "value1", ExpireAt: server.clock.Now().Add(time.Duration(500) * time.Second)}, + }, + fields: []string{"field1"}, + want: []int{500}, + wantErr: false, + }, + { + name: "2. Get TTL for multiple fields when expireTime is set.", + presetValue: hash.Hash{ + "field1": {Value: "value1", ExpireAt: server.clock.Now().Add(time.Duration(500) * time.Second)}, + "field2": {Value: "value2", ExpireAt: server.clock.Now().Add(time.Duration(500) * time.Second)}, + "field3": {Value: "value3", ExpireAt: server.clock.Now().Add(time.Duration(500) * time.Second)}, + }, + key: "HExpireKey2", + fields: []string{"field1", "field2", "field3"}, + want: []int{500, 500, 500}, + wantErr: false, + }, + { + name: "3. Get TTL for one field when expireTime is not set.", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + }, + key: "HExpireKey3", + fields: []string{"field1"}, + want: []int{-1}, + wantErr: false, + }, + { + name: "4. Get TTL for multiple fields when expireTime is not set.", + key: "HExpireKey4", + presetValue: hash.Hash{ + "field1": {Value: "value1"}, + "field2": {Value: 365}, + "field3": {Value: 3.142}, + }, + fields: []string{"field1", "field2", "field3"}, + want: []int{-1, -1, -1}, + wantErr: false, + }, + { + name: "5. Try to get TTL for key that doesn't exist.", + key: "HExpireKey5", + presetValue: nil, + fields: []string{"field1"}, + want: []int{-2}, + wantErr: false, + }, + { + name: "6. Try to get TTL for key that isn't a hash.", + key: "HExpireKey6", + presetValue: "not a hash", + fields: []string{"field1", "field2", "field3"}, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.presetValue != nil { + err := presetValue(server, context.Background(), tt.key, tt.presetValue) + if err != nil { + t.Error(err) + return + } + } + got, err := server.HTTL(tt.key, tt.fields...) + if (err != nil) != tt.wantErr { + t.Errorf("HExpire() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("HExpire() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/sugardb/keyspace.go b/sugardb/keyspace.go index 7cdda79..90755ab 100644 --- a/sugardb/keyspace.go +++ b/sugardb/keyspace.go @@ -21,6 +21,7 @@ import ( "fmt" "log" "math/rand" + "reflect" "runtime" "slices" "strings" @@ -31,6 +32,7 @@ import ( "github.com/echovault/sugardb/internal" "github.com/echovault/sugardb/internal/constants" "github.com/echovault/sugardb/internal/eviction" + "github.com/echovault/sugardb/internal/modules/hash" ) // SwapDBs swaps every TCP client connection from database1 over to database2. @@ -146,6 +148,22 @@ func (server *SugarDB) getExpiry(ctx context.Context, key string) time.Time { return entry.ExpireAt } +func (server *SugarDB) getHashExpiry(ctx context.Context, key string, field string) time.Time { + server.storeLock.RLock() + defer server.storeLock.RUnlock() + + database := ctx.Value("Database").(int) + + entry, ok := server.store[database][key] + if !ok { + return time.Time{} + } + + hash := entry.Value.(hash.Hash) + + return hash[field].ExpireAt +} + func (server *SugarDB) getValues(ctx context.Context, keys []string) map[string]interface{} { server.storeLock.Lock() defer server.storeLock.Unlock() @@ -278,6 +296,30 @@ func (server *SugarDB) setExpiry(ctx context.Context, key string, expireAt time. } } +func (server *SugarDB) setHashExpiry(ctx context.Context, key string, field string, expireAt time.Time) error { + server.storeLock.Lock() + defer server.storeLock.Unlock() + + database := ctx.Value("Database").(int) + + hashmap, ok := server.store[database][key].Value.(hash.Hash) + if !ok { + return fmt.Errorf("setHashExpiry can only be used on keys whose value is a Hash") + } + hashmap[field] = hash.HashValue{ + Value: hashmap[field].Value, + ExpireAt: expireAt, + } + + server.keysWithExpiry.rwMutex.Lock() + if !slices.Contains(server.keysWithExpiry.keys[database], key) { + server.keysWithExpiry.keys[database] = append(server.keysWithExpiry.keys[database], key) + } + server.keysWithExpiry.rwMutex.Unlock() + + return nil +} + func (server *SugarDB) deleteKey(ctx context.Context, key string) error { database := ctx.Value("Database").(int) @@ -646,6 +688,31 @@ func (server *SugarDB) evictKeysWithExpiredTTL(ctx context.Context) error { server.storeLock.Lock() defer server.storeLock.Unlock() for _, k := range keys { + + // handle keys within a hash type value + value := server.store[database][k].Value + t := reflect.TypeOf(value) + if t.Kind() == reflect.Map { + + hashkey, ok := server.store[database][k].Value.(hash.Hash) + if !ok { + return fmt.Errorf("Hash value should contain type HashValue, but type %s was found.", t.Elem().Name()) + } + + for k, v := range hashkey { + if v.ExpireAt.Before(time.Now()) { + delete(hashkey, k) + } + } + + } + + // Check if key is expired, move on if it's not + ExpireTime := server.store[database][k].ExpireAt + if ExpireTime.Before(time.Now()) { + continue + } + // Delete the expired key deletedCount += 1 if !server.isInCluster() { diff --git a/sugardb/modules.go b/sugardb/modules.go index 08f68be..ccaa585 100644 --- a/sugardb/modules.go +++ b/sugardb/modules.go @@ -44,9 +44,11 @@ func (server *SugarDB) getHandlerFuncParams(ctx context.Context, cmd []string, c Connection: conn, KeysExist: server.keysExist, GetExpiry: server.getExpiry, + GetHashExpiry: server.getHashExpiry, GetValues: server.getValues, SetValues: server.setValues, SetExpiry: server.setExpiry, + SetHashExpiry: server.setHashExpiry, TakeSnapshot: server.takeSnapshot, GetLatestSnapshotTime: server.getLatestSnapshotTime, RewriteAOF: server.rewriteAOF,