diff --git a/README.md b/README.md
index a776f5d0..255ecbf0 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,10 @@ much more powerful. Features in the roadmap include:
6) JSON
7) Improved Observability
-# Usage
+# Usage (Embedded)
+
+Install EchoVault with: `go get github.com/echoVault/echoVault`.
+Run `go mod tidy` to pull all of EchoVault's dependencies.
Here's an example of using EchoVault as an embedded library.
You can access all of EchoVault's commands using an ergonomic API.
@@ -108,8 +111,7 @@ func main() {
An embedded EchoVault instance can still be part of a cluster, and the changes triggered
from the API will be consistent across the cluster.
-
-# Installing
+# Usage (Client-Server)
### Homebrew
@@ -127,9 +129,8 @@ Next, [install the client via homebrew](https://github.com/EchoVault/EchoVault-C
You can download the binaries by clicking on a release tag and downloading
the binary for your system.
-### Configuration
-Checkout the [configuration wiki page](https://github.com/EchoVault/EchoVault/wiki/Configuration) for the possible configuration
-flags
+Checkout the [configuration section](#configuration) for the possible configuration
+flags.
# Clients
@@ -149,6 +150,163 @@ Steps:
2) If you're on MacOS, you can run `make build && docker-compose up --build` to build the project and spin up the development docker container.
3) If you're on another OS, you will have to use `go build` with the relevant flags for your system.
+# Table of Contents
+1. [Configuration](#configuration)
+2. [Eviction](#eviction)
+3. [Contribution](#contribution)
+
+# Configuration
+
+EchoVault is highly configurable. It provides the following configuration options to you:
+
+Flag: `--config`
+Type: `string/path`
+Description: The file path for the server configuration. A JSON or YAML file can be used for server configuration. You can combine CLI flags and config files, but remember that config files override CLI flags. The config file will be prioritised if you have the same config option in the CLI flags and the config file.
+
+Flag: `--port`
+Type: `integer`
+Description: The port on which to listen to client connections. The default is `7480`.
+
+Flag: `--bind-addr`
+Type: `string`
+Description: Specify the IP address to which the listener is bound.
+
+Flag: `--require-pass`
+Type: `boolean`
+Description: Determines whether the server should require a password for the default user before allowing commands. The default is `false`. If this option is provided, it must be accompanied by the `--password` config.
+
+Flag: `--password`
+Type: `string`
+Description: The password used to authorize the default user to run commands. This flag should be provided alongside the `--require-pass` flag.
+
+Flag: `--tls`
+Type: `boolean`
+Description: A TLS connection with a client is required. The default is `false`.
+
+Flag: `mtls`
+Type: `boolean`
+Description: Require mTLS connection with client. It is useful when the client and the server need to verify each other. If `--tls` and `mtls` are provided, `--mtls` will take higher priority. The default is `false`.
+
+Flag: `--cert-key-pair`
+Type: `string`
+Description: The cert/key pair used by the server to authenticate itself to the client when using TLS or mTLS. This flag can be provided multiple times with multiple cert/key pairs. This is a comma-separated string in the following format: `,`,
+
+Flag: `--client-ca`
+Type: `string`
+Description: The path to the RootCA that is used to verify client certs when the `--mtls` flag is provided to enable verifying the client. This flag can be passed multiple times with paths to several client RootCAs.
+
+Flag: `--server-id`
+Type: `string`
+Description: If this node is part of a raft replication cluster, then this flag provides the server ID to use within the cluster configuration. This ID must be unique to all the other nodes' IDs in the cluster.
+
+Flag: `--join-addr`
+Type: `string`
+Description: When adding a node to a replication cluster, this is the address and port of any cluster member. The current node will use this to request permission to join the cluster. The format of this flag is `:`.
+
+Flag: `--raft-port`
+Type: `integer`
+Description: If starting a node in a raft replication cluster, this port will be used for communication between nodes on the raft layer. The default is `7481`.
+
+Flag: `--memberlist-port`
+Type: `integer`
+Description. If starting a node in a replication cluster, this port is used for communication between nodes on the memberlist layer. The default is `7946`.
+
+Flag: `--in-memory`
+Type: `boolean`
+Description: When starting a node in a raft replication cluster, this directs the raft layer to store logs and snapshots in memory. It is only recommended in test mode. The default is `false`.
+
+Flag: `--data-dir`
+Type: `string`
+Description: The directory for storing Append-Only Logs, Write Ahead Logs, and Snapshots. The default is `/var/lib/echovault`
+
+Flag: `--bootstrap-cluster`
+Type: `boolean`
+Description: Whether to initialize a new replication cluster with this node as the leader. The default is `false`.
+
+Flag: `--acl-config`
+Type: `string`
+Description: The file path for the ACL layer config file. The ACL configuration file can be a YAML or JSON file.
+
+Flag: `--snapshot-threshold`
+Type: `integer`
+Description: The number of write commands required to trigger a snapshot. The default is `1,000`
+
+Flag: `--snapshot-interval`
+Type: `string`
+Description: The interval between snapshots. You can provide a parseable time format such as `30m45s` or `1h45m`. The default is 5 minutes.
+
+Flag: `--restore-snapshot`
+Type: `boolean`
+Description: Determines whether to restore from a snapshot on startup. The default is `false`.
+
+Flag: `--restore-aof`
+Type: `boolean`
+Description: This flag determines whether to restore from an aof file on startup. If both this flag and `--restore-snapshot` are provided, this flag will take higher priority.
+
+Flag: `--forward-commands`
+Type: `boolean`
+Description: This flag allows you to send write commands to any node in the cluster. The node will forward the command to the cluster leader. When this is false, write commands can only be accepted by the leader. The default is `false`.
+
+Flag: `--max-memory`
+Type: `string`
+Examples: "200mb", "8gb", "1tb"
+Description: The maximum memory usage that EchoVault should observe. Once this limit is reached, the chosen key eviction strategy is triggered. The default is no limit.
+
+Flag: `--eviction-policy`
+Type: `string`
+Description: This flag allows you to choose the key eviction strategy when the maximum memory is reached. The flag accepts the following options:
+1) noeviction - Do not evict any keys even when max-memory is exceeded. All new write operations will be rejected. This is the default eviction strategy.
+2) allkeys-lfu - Evict the least frequently used keys when max-memory is exceeded.
+3) allkeys-lru - Evict the least recently used keys when max-memory is exceeded.
+4) volatile-lfu - Evict the least frequently used keys with an expiration when max-memory is exceeded.
+5) volatile-lru - Evict the least recently used keys with an expiration when max-memory is exceeded.
+6) allkeys-random - Evict random keys until we get under the max-memory limit when max-memory is exceeded.
+7) volatile-random - Evict random keys with an expiration when max-memory is exceeded.
+
+Flag: `--eviction-sample`
+Type: `integer`
+Description: An integer specifying the number of keys to sample when checking for expired keys. By default, EchoVault will sample 20 keys. The sampling is repeated if the number of expired keys found exceeds 20%.
+
+Flag: `--eviction-interval`
+Type: `string`
+Example: "10s", "5m30s", "100ms"
+Description: The interval between each sampling of keys to evict. By default, this happens every 100 milliseconds.
+
+# Eviction
+
+### Memory Limit
+The memory limit can be set using the --max-memory config flag. This flag accepts a parsable memory value (e.g 100mb, 16gb). If the limit set is 0, then no memory limit is imposed. The default value is 0.
+
+### Passive eviction
+In passive eviction, the expired key is not deleted immediately once the expiry time is reached. The key will remain in the store until the next time it is accessed. When attempting to access an expired key, that is when the keys is deleted.
+
+### Active eviction
+Echovault will run a background goroutine that samples a set of volatile keys at a given interval. Any keys that are found to be expired will be deleted. If 20% or more of the sampled keys are deleted, then the process will immediately begin again. Otherwise, wait for the given interval until the next round of sampling/eviction. The default number of keys sampled is 20 and the default interval for sampling is 100 milliseconds. These can be configured using the --eviction-sample and --eviction-interval flags respectively.
+
+### Eviction Policies
+Eviction policy can be set using the --eviction-policy flag. The following options are available.
+
+noeviction:
+This policy does not evict any keys. When max memory is reached, all new write commands will be rejected until keys are manually deleted by the user.
+
+allkeys-lfu:
+With this policy, all keys are considered for eviction when the max memory is reached. When max memory is reached, the least frequently accessed keys will be evicted until the memory usage is under the memory limit.
+
+allkeys-lru:
+This policy will consider all keys for eviction when max memory is reached. The least recently accessed keys will be deleted one by one until we are below the memory limit.
+
+allkeys-random:
+Evict random keys until we're below the max memory limit.
+
+volatile-lfu:
+With this policy, only keys with an associated expiry time will be evicted to adhere to the memory limit. When the memory limit is exceeded, volatile keys will be evicted starting from the least frequently used until we are below the memory limit or are out of volatile keys to evict.
+
+volatile-lru:
+With this policy, only keys with an associated expiry time will be evicted to adhere to the memory limit. When the memory limit is exceeded, volatile keys will be evicted starting from the list recently used until we are below the memory limit or are out of volatile keys to evict.
+
+volatile-random:
+Evict random volatile keys until we're below the memory limit, or we're out of volatile keys to evict.
+
# Contribution
Contributions are welcome! If you're interested in contributing,
diff --git a/coverage/coverage.out b/coverage/coverage.out
index af745fb6..013414f3 100644
--- a/coverage/coverage.out
+++ b/coverage/coverage.out
@@ -979,470 +979,6 @@ github.com/echovault/echovault/pkg/modules/admin/commands.go:284.60,286.5 1 0
github.com/echovault/echovault/pkg/modules/admin/commands.go:287.113,288.47 1 0
github.com/echovault/echovault/pkg/modules/admin/commands.go:288.47,290.6 1 0
github.com/echovault/echovault/pkg/modules/admin/commands.go:291.5,291.45 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:34.108,35.34 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:35.34,37.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:38.2,39.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:39.9,41.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:42.2,42.67 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:42.67,44.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:45.2,45.42 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:48.106,49.19 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:49.19,51.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:53.2,54.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:54.9,56.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:58.2,60.30 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:60.30,61.27 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:61.27,64.9 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:68.2,68.16 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:68.16,70.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:73.2,77.18 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:77.18,79.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:79.8,81.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:82.2,82.21 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:82.21,84.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:85.2,85.17 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:85.17,87.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:89.2,90.29 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:90.29,92.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:95.2,96.51 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:96.51,97.22 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:97.22,99.12 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:101.3,101.49 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:103.2,103.51 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:103.51,104.22 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:104.22,106.12 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:108.3,108.49 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:112.2,113.48 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:113.48,114.21 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:114.21,116.12 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:118.3,118.47 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:120.2,120.48 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:120.48,121.21 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:121.21,123.12 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:125.3,125.47 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:129.2,130.79 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:130.79,131.37 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:131.37,133.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:135.2,136.30 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:136.30,137.10 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:138.100,140.53 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:141.53,143.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:144.52,146.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:151.2,153.54 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:153.54,155.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:156.2,156.54 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:156.54,158.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:160.2,162.25 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:165.102,166.18 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:166.18,168.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:170.2,174.35 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:174.35,175.36 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:175.36,176.48 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:176.48,178.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:179.4,179.12 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:181.3,181.50 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:181.50,182.51 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:182.51,185.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:189.2,189.19 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:189.19,192.34 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:192.34,195.4 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:196.3,197.28 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:197.28,199.24 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:199.24,201.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:203.3,203.26 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:206.2,206.19 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:206.19,208.46 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:208.46,209.43 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:209.43,211.38 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:211.38,213.30 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:213.30,215.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:217.5,217.28 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:222.2,222.74 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:225.102,227.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:227.9,229.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:230.2,231.33 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:231.33,233.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:234.2,235.25 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:238.106,240.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:240.9,242.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:243.2,243.45 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:243.45,245.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:246.2,246.42 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:249.108,250.18 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:250.18,252.3 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:253.2,254.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:254.9,256.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:257.2,257.53 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:257.53,259.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:260.2,260.42 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:263.106,265.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:265.9,267.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:268.2,269.74 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:272.103,273.18 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:273.18,275.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:276.2,277.9 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:277.9,279.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:280.2,282.33 3 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:282.33,285.19 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:285.19,287.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:287.9,289.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:291.3,291.22 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:291.22,293.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:295.3,295.18 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:295.18,297.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:299.3,299.43 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:299.43,300.61 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:300.61,302.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:303.4,303.58 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:303.58,305.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:308.3,308.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:308.52,309.23 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:309.23,311.13 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:313.4,313.39 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:316.3,316.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:316.52,317.23 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:317.23,319.13 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:321.4,321.39 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:324.3,324.49 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:324.49,325.22 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:325.22,327.13 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:329.4,329.37 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:332.3,332.49 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:332.49,333.22 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:333.22,335.13 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:337.4,337.37 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:340.3,340.45 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:340.45,341.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:341.52,343.13 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:345.4,345.41 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:348.3,348.45 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:348.45,349.52 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:349.52,351.5 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:354.3,354.55 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:354.55,356.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:358.3,358.55 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:358.55,360.4 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:361.3,361.54 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:364.2,365.25 2 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:368.103,369.19 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:369.19,371.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:373.2,374.9 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:374.9,376.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:378.2,382.16 4 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:382.16,384.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:386.2,386.15 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:386.15,387.35 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:387.35,389.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:392.2,396.20 3 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:396.20,397.59 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:397.59,399.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:402.2,402.37 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:402.37,403.59 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:403.59,405.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:409.2,409.29 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:409.29,413.31 3 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:413.31,414.35 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:414.35,417.43 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:417.43,419.6 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:419.11,422.6 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:423.5,423.10 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:427.3,427.17 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:427.17,429.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:432.2,432.42 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:435.103,436.18 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:436.18,438.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:440.2,441.9 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:441.9,443.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:445.2,449.16 4 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:449.16,451.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:453.2,453.15 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:453.15,454.35 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:454.35,456.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:459.2,461.20 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:461.20,464.17 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:464.17,466.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:467.3,468.17 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:468.17,470.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:473.2,473.37 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:473.37,476.17 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:476.17,478.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:479.3,480.17 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:480.17,482.4 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:485.2,486.16 2 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:486.16,488.3 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:490.2,490.42 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:493.33,501.60 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:501.60,503.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:512.60,514.5 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:523.62,525.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:534.62,536.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:545.62,547.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:556.62,558.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:567.62,569.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:578.62,580.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:589.62,591.7 1 1
-github.com/echovault/echovault/pkg/modules/acl/commands.go:603.62,605.7 1 0
-github.com/echovault/echovault/pkg/modules/acl/commands.go:614.62,616.7 1 0
-github.com/echovault/echovault/pkg/modules/connection/commands.go:26.108,27.18 1 1
-github.com/echovault/echovault/pkg/modules/connection/commands.go:28.10,29.54 1 1
-github.com/echovault/echovault/pkg/modules/connection/commands.go:30.9,31.34 1 1
-github.com/echovault/echovault/pkg/modules/connection/commands.go:32.9,33.72 1 1
-github.com/echovault/echovault/pkg/modules/connection/commands.go:37.33,45.60 1 0
-github.com/echovault/echovault/pkg/modules/connection/commands.go:45.60,47.5 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:34.13,35.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:35.34,39.3 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:41.2,42.29 2 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:42.29,44.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:52.104,54.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:54.16,56.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:58.2,63.16 5 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:63.16,65.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:69.2,69.16 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:69.16,70.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:70.34,72.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:72.9,74.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:77.2,77.44 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:77.44,79.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:79.34,81.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:82.3,82.36 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:83.8,83.51 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:83.51,85.33 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:85.33,87.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:88.3,88.45 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:89.8,91.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:91.34,94.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:94.9,97.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:99.2,99.16 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:99.16,101.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:102.2,104.76 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:104.76,106.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:109.2,109.28 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:109.28,111.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:113.2,113.17 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:116.105,117.44 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:117.44,119.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:121.2,124.15 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:124.15,125.29 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:125.29,126.16 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:126.16,132.5 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:137.2,137.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:137.30,138.15 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:138.15,143.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:148.2,148.28 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:148.28,149.31 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:149.31,150.52 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:150.52,152.5 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:153.4,154.12 2 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:156.3,156.60 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:156.60,158.4 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:159.3,159.55 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:163.2,163.28 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:163.28,164.58 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:164.58,166.4 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:169.2,169.42 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:172.104,174.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:174.16,176.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:177.2,179.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:179.33,181.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:183.2,184.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:184.16,186.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:187.2,191.51 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:194.105,196.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:196.16,198.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:200.2,203.27 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:203.27,204.31 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:204.31,206.12 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:208.3,208.33 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:208.33,210.18 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:210.18,212.5 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:213.4,214.12 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:216.3,216.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:218.2,218.15 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:218.15,219.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:219.34,220.14 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:220.14,223.5 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:227.2,227.28 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:227.28,229.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:231.2,233.30 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:233.30,234.24 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:234.24,236.12 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:238.3,238.96 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:241.2,241.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:244.104,246.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:246.16,248.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:249.2,250.27 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:250.27,252.17 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:252.17,254.12 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:256.3,256.13 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:258.2,258.51 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:261.108,263.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:263.16,265.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:267.2,269.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:269.33,271.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:273.2,273.51 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:273.51,275.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:276.2,279.31 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:279.31,281.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:283.2,285.30 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:288.111,290.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:290.16,292.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:294.2,296.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:296.33,298.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:300.2,300.52 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:300.52,302.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:303.2,307.31 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:307.31,309.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:311.2,312.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:312.46,314.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:316.2,316.47 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:319.104,321.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:321.16,323.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:325.2,327.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:327.33,329.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:331.2,331.52 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:331.52,333.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:334.2,338.31 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:338.31,340.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:342.2,343.39 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:343.39,345.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:347.2,347.12 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:347.12,349.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:351.2,351.47 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:354.107,356.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:356.16,358.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:360.2,364.16 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:364.16,366.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:367.2,368.42 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:368.42,370.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:372.2,372.33 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:372.33,374.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:376.2,376.51 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:376.51,378.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:379.2,381.19 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:381.19,384.3 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:386.2,388.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:389.12,390.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:390.39,392.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:393.3,393.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:394.12,395.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:395.39,397.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:398.3,398.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:399.12,400.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:400.39,402.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:403.3,403.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:403.39,405.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:406.3,406.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:407.12,408.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:408.39,409.40 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:409.40,411.5 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:412.4,412.47 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:414.3,414.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:415.10,416.71 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:419.2,419.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:422.109,424.16 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:424.16,426.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:428.2,432.16 3 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:432.16,434.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:435.2,436.44 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:436.44,438.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:440.2,440.33 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:440.33,442.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:444.2,444.51 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:444.51,446.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/commands.go:447.2,449.19 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:449.19,452.3 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:454.2,456.33 2 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:457.12,458.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:458.39,460.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:461.3,461.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:462.12,463.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:463.39,465.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:466.3,466.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:467.12,468.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:468.39,470.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:471.3,471.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:471.39,473.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:474.3,474.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:475.12,476.39 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:476.39,477.40 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:477.40,479.5 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:480.4,480.47 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:482.3,482.46 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:483.10,484.71 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:487.2,487.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/commands.go:490.33,659.2 1 0
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:22.49,23.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:23.34,25.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:26.2,26.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:29.50,30.25 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:30.25,32.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:33.2,34.30 2 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:34.30,35.15 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:35.15,37.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:39.2,39.18 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:42.49,43.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:43.19,45.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:46.2,46.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:49.50,50.18 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:50.18,52.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:53.2,53.21 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:56.49,57.18 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:57.18,59.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:60.2,60.21 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:63.53,64.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:64.19,66.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:67.2,67.21 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:70.56,71.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:71.19,73.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:74.2,74.21 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:77.49,78.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:78.19,80.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:81.2,81.21 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:84.52,85.34 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:85.34,87.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:88.2,88.30 1 1
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:91.54,92.34 1 0
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:92.34,94.3 1 0
-github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:95.2,95.30 1 0
-github.com/echovault/echovault/pkg/modules/generic/utils.go:31.77,32.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:32.19,34.3 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:35.2,35.33 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:36.13,38.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:40.12,41.26 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:41.26,43.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:44.3,45.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:47.12,48.26 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:48.26,50.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:51.3,52.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:54.12,55.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:55.19,57.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:58.3,58.29 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:58.29,60.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:61.3,63.17 3 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:63.17,65.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:66.3,67.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:69.12,70.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:70.19,72.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:73.3,73.29 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:73.29,75.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:76.3,78.17 3 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:78.17,80.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:81.3,82.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:84.14,85.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:85.19,87.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:88.3,88.29 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:88.29,90.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:91.3,93.17 3 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:93.17,95.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:96.3,97.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:99.14,100.19 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:100.19,102.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:103.3,103.29 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:103.29,105.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:106.3,108.17 3 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:108.17,110.4 1 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:111.3,112.46 2 1
-github.com/echovault/echovault/pkg/modules/generic/utils.go:114.10,115.95 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:31.105,33.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:33.16,35.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:37.2,40.25 3 1
@@ -1564,10 +1100,10 @@ github.com/echovault/echovault/pkg/modules/hash/commands.go:326.2,326.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:326.38,328.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:328.17,329.41 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:329.41,331.13 2 1
-github.com/echovault/echovault/pkg/modules/hash/commands.go:333.4,333.42 1 1
-github.com/echovault/echovault/pkg/modules/hash/commands.go:333.42,336.13 3 1
-github.com/echovault/echovault/pkg/modules/hash/commands.go:338.4,338.38 1 1
-github.com/echovault/echovault/pkg/modules/hash/commands.go:338.38,340.13 2 1
+github.com/echovault/echovault/pkg/modules/hash/commands.go:333.4,333.42 1 0
+github.com/echovault/echovault/pkg/modules/hash/commands.go:333.42,336.13 3 0
+github.com/echovault/echovault/pkg/modules/hash/commands.go:338.4,338.38 1 0
+github.com/echovault/echovault/pkg/modules/hash/commands.go:338.38,340.13 2 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:345.2,345.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:348.105,350.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:350.16,352.3 1 1
@@ -1707,6 +1243,470 @@ github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:99.2,99.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:102.50,103.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:103.18,105.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:106.2,106.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:34.108,35.34 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:35.34,37.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:38.2,39.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:39.9,41.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:42.2,42.67 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:42.67,44.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:45.2,45.42 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:48.106,49.19 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:49.19,51.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:53.2,54.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:54.9,56.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:58.2,60.30 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:60.30,61.27 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:61.27,64.9 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:68.2,68.16 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:68.16,70.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:73.2,77.18 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:77.18,79.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:79.8,81.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:82.2,82.21 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:82.21,84.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:85.2,85.17 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:85.17,87.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:89.2,90.29 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:90.29,92.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:95.2,96.51 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:96.51,97.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:97.22,99.12 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:101.3,101.49 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:103.2,103.51 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:103.51,104.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:104.22,106.12 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:108.3,108.49 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:112.2,113.48 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:113.48,114.21 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:114.21,116.12 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:118.3,118.47 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:120.2,120.48 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:120.48,121.21 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:121.21,123.12 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:125.3,125.47 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:129.2,130.79 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:130.79,131.37 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:131.37,133.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:135.2,136.30 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:136.30,137.10 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:138.100,140.53 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:141.53,143.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:144.52,146.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:151.2,153.54 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:153.54,155.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:156.2,156.54 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:156.54,158.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:160.2,162.25 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:165.102,166.18 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:166.18,168.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:170.2,174.35 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:174.35,175.36 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:175.36,176.48 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:176.48,178.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:179.4,179.12 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:181.3,181.50 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:181.50,182.51 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:182.51,185.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:189.2,189.19 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:189.19,192.34 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:192.34,195.4 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:196.3,197.28 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:197.28,199.24 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:199.24,201.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:203.3,203.26 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:206.2,206.19 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:206.19,208.46 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:208.46,209.43 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:209.43,211.38 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:211.38,213.30 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:213.30,215.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:217.5,217.28 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:222.2,222.74 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:225.102,227.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:227.9,229.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:230.2,231.33 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:231.33,233.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:234.2,235.25 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:238.106,240.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:240.9,242.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:243.2,243.45 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:243.45,245.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:246.2,246.42 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:249.108,250.18 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:250.18,252.3 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:253.2,254.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:254.9,256.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:257.2,257.53 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:257.53,259.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:260.2,260.42 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:263.106,265.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:265.9,267.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:268.2,269.74 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:272.103,273.18 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:273.18,275.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:276.2,277.9 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:277.9,279.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:280.2,282.33 3 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:282.33,285.19 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:285.19,287.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:287.9,289.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:291.3,291.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:291.22,293.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:295.3,295.18 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:295.18,297.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:299.3,299.43 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:299.43,300.61 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:300.61,302.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:303.4,303.58 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:303.58,305.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:308.3,308.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:308.52,309.23 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:309.23,311.13 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:313.4,313.39 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:316.3,316.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:316.52,317.23 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:317.23,319.13 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:321.4,321.39 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:324.3,324.49 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:324.49,325.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:325.22,327.13 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:329.4,329.37 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:332.3,332.49 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:332.49,333.22 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:333.22,335.13 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:337.4,337.37 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:340.3,340.45 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:340.45,341.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:341.52,343.13 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:345.4,345.41 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:348.3,348.45 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:348.45,349.52 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:349.52,351.5 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:354.3,354.55 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:354.55,356.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:358.3,358.55 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:358.55,360.4 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:361.3,361.54 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:364.2,365.25 2 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:368.103,369.19 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:369.19,371.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:373.2,374.9 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:374.9,376.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:378.2,382.16 4 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:382.16,384.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:386.2,386.15 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:386.15,387.35 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:387.35,389.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:392.2,396.20 3 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:396.20,397.59 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:397.59,399.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:402.2,402.37 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:402.37,403.59 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:403.59,405.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:409.2,409.29 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:409.29,413.31 3 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:413.31,414.35 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:414.35,417.43 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:417.43,419.6 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:419.11,422.6 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:423.5,423.10 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:427.3,427.17 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:427.17,429.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:432.2,432.42 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:435.103,436.18 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:436.18,438.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:440.2,441.9 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:441.9,443.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:445.2,449.16 4 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:449.16,451.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:453.2,453.15 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:453.15,454.35 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:454.35,456.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:459.2,461.20 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:461.20,464.17 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:464.17,466.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:467.3,468.17 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:468.17,470.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:473.2,473.37 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:473.37,476.17 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:476.17,478.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:479.3,480.17 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:480.17,482.4 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:485.2,486.16 2 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:486.16,488.3 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:490.2,490.42 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:493.33,501.60 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:501.60,503.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:512.60,514.5 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:523.62,525.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:534.62,536.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:545.62,547.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:556.62,558.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:567.62,569.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:578.62,580.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:589.62,591.7 1 1
+github.com/echovault/echovault/pkg/modules/acl/commands.go:603.62,605.7 1 0
+github.com/echovault/echovault/pkg/modules/acl/commands.go:614.62,616.7 1 0
+github.com/echovault/echovault/pkg/modules/connection/commands.go:26.108,27.18 1 1
+github.com/echovault/echovault/pkg/modules/connection/commands.go:28.10,29.54 1 1
+github.com/echovault/echovault/pkg/modules/connection/commands.go:30.9,31.34 1 1
+github.com/echovault/echovault/pkg/modules/connection/commands.go:32.9,33.72 1 1
+github.com/echovault/echovault/pkg/modules/connection/commands.go:37.33,45.60 1 0
+github.com/echovault/echovault/pkg/modules/connection/commands.go:45.60,47.5 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:34.13,35.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:35.34,39.3 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:41.2,42.29 2 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:42.29,44.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:52.104,54.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:54.16,56.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:58.2,63.16 5 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:63.16,65.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:69.2,69.16 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:69.16,70.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:70.34,72.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:72.9,74.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:77.2,77.44 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:77.44,79.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:79.34,81.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:82.3,82.36 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:83.8,83.51 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:83.51,85.33 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:85.33,87.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:88.3,88.45 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:89.8,91.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:91.34,94.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:94.9,97.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:99.2,99.16 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:99.16,101.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:102.2,104.76 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:104.76,106.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:109.2,109.28 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:109.28,111.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:113.2,113.17 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:116.105,117.44 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:117.44,119.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:121.2,124.15 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:124.15,125.29 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:125.29,126.16 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:126.16,132.5 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:137.2,137.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:137.30,138.15 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:138.15,143.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:148.2,148.28 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:148.28,149.31 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:149.31,150.52 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:150.52,152.5 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:153.4,154.12 2 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:156.3,156.60 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:156.60,158.4 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:159.3,159.55 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:163.2,163.28 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:163.28,164.58 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:164.58,166.4 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:169.2,169.42 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:172.104,174.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:174.16,176.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:177.2,179.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:179.33,181.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:183.2,184.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:184.16,186.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:187.2,191.51 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:194.105,196.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:196.16,198.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:200.2,203.27 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:203.27,204.31 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:204.31,206.12 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:208.3,208.33 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:208.33,210.18 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:210.18,212.5 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:213.4,214.12 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:216.3,216.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:218.2,218.15 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:218.15,219.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:219.34,220.14 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:220.14,223.5 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:227.2,227.28 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:227.28,229.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:231.2,233.30 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:233.30,234.24 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:234.24,236.12 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:238.3,238.96 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:241.2,241.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:244.104,246.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:246.16,248.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:249.2,250.27 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:250.27,252.17 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:252.17,254.12 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:256.3,256.13 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:258.2,258.51 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:261.108,263.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:263.16,265.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:267.2,269.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:269.33,271.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:273.2,273.51 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:273.51,275.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:276.2,279.31 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:279.31,281.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:283.2,285.30 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:288.111,290.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:290.16,292.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:294.2,296.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:296.33,298.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:300.2,300.52 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:300.52,302.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:303.2,307.31 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:307.31,309.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:311.2,312.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:312.46,314.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:316.2,316.47 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:319.104,321.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:321.16,323.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:325.2,327.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:327.33,329.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:331.2,331.52 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:331.52,333.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:334.2,338.31 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:338.31,340.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:342.2,343.39 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:343.39,345.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:347.2,347.12 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:347.12,349.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:351.2,351.47 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:354.107,356.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:356.16,358.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:360.2,364.16 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:364.16,366.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:367.2,368.42 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:368.42,370.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:372.2,372.33 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:372.33,374.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:376.2,376.51 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:376.51,378.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:379.2,381.19 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:381.19,384.3 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:386.2,388.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:389.12,390.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:390.39,392.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:393.3,393.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:394.12,395.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:395.39,397.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:398.3,398.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:399.12,400.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:400.39,402.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:403.3,403.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:403.39,405.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:406.3,406.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:407.12,408.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:408.39,409.40 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:409.40,411.5 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:412.4,412.47 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:414.3,414.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:415.10,416.71 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:419.2,419.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:422.109,424.16 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:424.16,426.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:428.2,432.16 3 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:432.16,434.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:435.2,436.44 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:436.44,438.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:440.2,440.33 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:440.33,442.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:444.2,444.51 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:444.51,446.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/commands.go:447.2,449.19 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:449.19,452.3 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:454.2,456.33 2 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:457.12,458.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:458.39,460.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:461.3,461.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:462.12,463.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:463.39,465.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:466.3,466.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:467.12,468.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:468.39,470.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:471.3,471.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:471.39,473.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:474.3,474.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:475.12,476.39 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:476.39,477.40 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:477.40,479.5 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:480.4,480.47 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:482.3,482.46 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:483.10,484.71 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:487.2,487.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/commands.go:490.33,659.2 1 0
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:22.49,23.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:23.34,25.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:26.2,26.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:29.50,30.25 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:30.25,32.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:33.2,34.30 2 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:34.30,35.15 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:35.15,37.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:39.2,39.18 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:42.49,43.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:43.19,45.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:46.2,46.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:49.50,50.18 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:50.18,52.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:53.2,53.21 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:56.49,57.18 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:57.18,59.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:60.2,60.21 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:63.53,64.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:64.19,66.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:67.2,67.21 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:70.56,71.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:71.19,73.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:74.2,74.21 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:77.49,78.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:78.19,80.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:81.2,81.21 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:84.52,85.34 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:85.34,87.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:88.2,88.30 1 1
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:91.54,92.34 1 0
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:92.34,94.3 1 0
+github.com/echovault/echovault/pkg/modules/generic/key_funcs.go:95.2,95.30 1 0
+github.com/echovault/echovault/pkg/modules/generic/utils.go:31.77,32.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:32.19,34.3 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:35.2,35.33 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:36.13,38.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:40.12,41.26 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:41.26,43.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:44.3,45.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:47.12,48.26 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:48.26,50.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:51.3,52.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:54.12,55.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:55.19,57.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:58.3,58.29 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:58.29,60.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:61.3,63.17 3 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:63.17,65.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:66.3,67.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:69.12,70.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:70.19,72.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:73.3,73.29 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:73.29,75.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:76.3,78.17 3 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:78.17,80.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:81.3,82.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:84.14,85.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:85.19,87.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:88.3,88.29 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:88.29,90.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:91.3,93.17 3 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:93.17,95.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:96.3,97.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:99.14,100.19 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:100.19,102.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:103.3,103.29 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:103.29,105.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:106.3,108.17 3 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:108.17,110.4 1 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:111.3,112.46 2 1
+github.com/echovault/echovault/pkg/modules/generic/utils.go:114.10,115.95 1 1
github.com/echovault/echovault/pkg/modules/list/commands.go:30.105,32.16 2 1
github.com/echovault/echovault/pkg/modules/list/commands.go:32.16,34.3 1 1
github.com/echovault/echovault/pkg/modules/list/commands.go:36.2,38.33 2 1
diff --git a/go.mod b/go.mod
index 8019d6f4..7125dfbb 100644
--- a/go.mod
+++ b/go.mod
@@ -10,7 +10,6 @@ require (
github.com/sethvargo/go-retry v0.2.4
github.com/tidwall/resp v0.1.1
gopkg.in/yaml.v3 v3.0.1
-
)
require (
diff --git a/internal/config/config.go b/internal/config/config.go
index cd20a934..82d8c56e 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -109,7 +109,8 @@ There is no limit by default.`, func(memory string) error {
})
evictionPolicy := constants.NoEviction
- flag.Func("eviction-policy", `The eviction policy used to remove keys when max-memory is reached. The options are:
+ flag.Func("eviction-policy",
+ `The eviction policy used to remove keys when max-memory is reached. The options are:
1) noeviction - Do not evict any keys even when max-memory is exceeded.
2) allkeys-lfu - Evict the least frequently used keys.
3) allkeys-lru - Evict the least recently used keys.
@@ -117,18 +118,18 @@ There is no limit by default.`, func(memory string) error {
5) volatile-lru - Evict the least recently used keys with an expiration.
6) allkeys-random - Evict random keys until we get under the max-memory limit.
7) volatile-random - Evict random keys with an expiration.`, func(policy string) error {
- policies := []string{
- constants.NoEviction,
- constants.AllKeysLFU, constants.AllKeysLRU, constants.AllKeysRandom,
- constants.VolatileLFU, constants.VolatileLRU, constants.VolatileRandom,
- }
- policyIdx := slices.Index(policies, strings.ToLower(policy))
- if policyIdx == -1 {
- return fmt.Errorf("policy %s is not a valid policy", policy)
- }
- evictionPolicy = strings.ToLower(policy)
- return nil
- })
+ policies := []string{
+ constants.NoEviction,
+ constants.AllKeysLFU, constants.AllKeysLRU, constants.AllKeysRandom,
+ constants.VolatileLFU, constants.VolatileLRU, constants.VolatileRandom,
+ }
+ policyIdx := slices.Index(policies, strings.ToLower(policy))
+ if policyIdx == -1 {
+ return fmt.Errorf("policy %s is not a valid policy", policy)
+ }
+ evictionPolicy = strings.ToLower(policy)
+ return nil
+ })
tls := flag.Bool("tls", false, "Start the echovault in TLS mode. Default is false.")
mtls := flag.Bool("mtls", false, "Use mTLS to verify the client.")
diff --git a/pkg/modules/acl/commands_test.go b/pkg/modules/acl/commands_test.go
index fa8d55b0..f35f7661 100644
--- a/pkg/modules/acl/commands_test.go
+++ b/pkg/modules/acl/commands_test.go
@@ -186,7 +186,9 @@ func Test_HandleAuth(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -288,7 +290,9 @@ func Test_HandleCat(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -405,7 +409,9 @@ func Test_HandleUsers(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -458,7 +464,9 @@ func Test_HandleSetUser(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -1044,7 +1052,9 @@ func Test_HandleGetUser(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -1190,7 +1200,9 @@ func Test_HandleDelUser(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -1261,7 +1273,9 @@ func Test_HandleWhoAmI(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)
@@ -1331,7 +1345,9 @@ func Test_HandleList(t *testing.T) {
t.Error(err)
}
defer func() {
- _ = conn.Close()
+ if conn != nil {
+ _ = conn.Close()
+ }
}()
r := resp.NewConn(conn)