From cd14e6c1b5e8328eb02253ad3044bb41b1495501 Mon Sep 17 00:00:00 2001 From: Alec Embke Date: Wed, 4 Sep 2024 14:44:05 -0700 Subject: [PATCH] chore: update docs --- .../fred/clients/struct.Transaction.html | 66 +- .../fred/interfaces/trait.AclInterface.html | 2 +- .../fred/interfaces/trait.AuthInterface.html | 2 +- .../interfaces/trait.ClientInterface.html | 2 +- .../fred/interfaces/trait.ClientLike.html | 2 +- .../interfaces/trait.ConfigInterface.html | 2 +- .../interfaces/trait.FunctionInterface.html | 2 +- .../fred/interfaces/trait.GeoInterface.html | 2 +- .../interfaces/trait.HashesInterface.html | 2 +- .../trait.HyperloglogInterface.html | 2 +- .../fred/interfaces/trait.KeysInterface.html | 2 +- .../fred/interfaces/trait.ListInterface.html | 2 +- .../interfaces/trait.MemoryInterface.html | 2 +- .../interfaces/trait.PubsubInterface.html | 2 +- .../interfaces/trait.RediSearchInterface.html | 2 +- .../interfaces/trait.RedisJsonInterface.html | 2 +- .../interfaces/trait.ServerInterface.html | 2 +- .../fred/interfaces/trait.SetsInterface.html | 2 +- .../interfaces/trait.SortedSetsInterface.html | 2 +- .../interfaces/trait.StreamsInterface.html | 2 +- .../interfaces/trait.TimeSeriesInterface.html | 2 +- docs/glommio/fred/mocks/index.html | 2 +- .../types/constant.DEFAULT_JITTER_MS.html | 2 +- .../fred/types/enum.BackpressurePolicy.html | 8 +- docs/glommio/fred/types/enum.Blocking.html | 6 +- .../types/enum.ClusterDiscoveryPolicy.html | 6 +- .../fred/types/enum.ReconnectError.html | 6 +- .../fred/types/enum.ReconnectPolicy.html | 18 +- .../glommio/fred/types/enum.ServerConfig.html | 28 +- .../fred/types/struct.BackpressureConfig.html | 6 +- .../fred/types/struct.ConnectionConfig.html | 6 +- docs/glommio/fred/types/struct.Options.html | 8 +- .../fred/types/struct.PerformanceConfig.html | 6 +- .../fred/types/struct.RedisConfig.html | 20 +- .../fred/types/struct.SentinelConfig.html | 4 +- docs/glommio/fred/types/struct.TcpConfig.html | 6 +- .../fred/types/struct.TracingConfig.html | 4 +- .../fred/types/struct.UnresponsiveConfig.html | 6 +- .../fred/types/trait.CredentialProvider.html | 6 +- docs/glommio/search-index.js | 4 +- docs/glommio/search.desc/fred/fred-desc-0-.js | 2 +- docs/glommio/src-files.js | 4 +- .../src/fred/clients/transaction.rs.html | 138 ++-- docs/glommio/src/fred/modules/mocks.rs.html | 34 +- .../glommio/src/fred/protocol/command.rs.html | 18 +- .../src/fred/protocol/responders.rs.html | 10 + .../src/fred/router/centralized.rs.html | 10 +- .../glommio/src/fred/router/clustered.rs.html | 70 +- docs/glommio/src/fred/router/commands.rs.html | 94 ++- docs/glommio/src/fred/router/mod.rs.html | 2 - docs/glommio/src/fred/router/reader.rs.html | 3 - .../src/fred/router/transactions.rs.html | 734 +++++++++++++----- docs/glommio/src/fred/types/config.rs.html | 4 + .../fred/clients/struct.Transaction.html | 66 +- .../fred/interfaces/trait.AclInterface.html | 2 +- .../fred/interfaces/trait.AuthInterface.html | 2 +- .../interfaces/trait.ClientInterface.html | 2 +- .../fred/interfaces/trait.ClientLike.html | 2 +- .../interfaces/trait.ConfigInterface.html | 2 +- .../interfaces/trait.FunctionInterface.html | 2 +- .../fred/interfaces/trait.GeoInterface.html | 2 +- .../interfaces/trait.HashesInterface.html | 2 +- .../trait.HyperloglogInterface.html | 2 +- .../fred/interfaces/trait.KeysInterface.html | 2 +- .../fred/interfaces/trait.ListInterface.html | 2 +- .../interfaces/trait.MemoryInterface.html | 2 +- .../interfaces/trait.PubsubInterface.html | 2 +- .../interfaces/trait.RediSearchInterface.html | 2 +- .../interfaces/trait.RedisJsonInterface.html | 2 +- .../interfaces/trait.ServerInterface.html | 2 +- .../fred/interfaces/trait.SetsInterface.html | 2 +- .../interfaces/trait.SortedSetsInterface.html | 2 +- .../interfaces/trait.StreamsInterface.html | 2 +- .../interfaces/trait.TimeSeriesInterface.html | 2 +- docs/tokio/fred/mocks/index.html | 2 +- .../types/constant.DEFAULT_JITTER_MS.html | 2 +- .../fred/types/enum.BackpressurePolicy.html | 8 +- docs/tokio/fred/types/enum.Blocking.html | 6 +- .../types/enum.ClusterDiscoveryPolicy.html | 6 +- .../tokio/fred/types/enum.ReconnectError.html | 6 +- .../fred/types/enum.ReconnectPolicy.html | 18 +- docs/tokio/fred/types/enum.ServerConfig.html | 30 +- .../fred/types/struct.BackpressureConfig.html | 6 +- .../fred/types/struct.ConnectionConfig.html | 6 +- docs/tokio/fred/types/struct.Options.html | 8 +- .../fred/types/struct.PerformanceConfig.html | 6 +- docs/tokio/fred/types/struct.RedisConfig.html | 22 +- .../fred/types/struct.SentinelConfig.html | 4 +- docs/tokio/fred/types/struct.TcpConfig.html | 6 +- .../fred/types/struct.TracingConfig.html | 4 +- .../fred/types/struct.UnresponsiveConfig.html | 6 +- .../fred/types/trait.CredentialProvider.html | 6 +- docs/tokio/search-index.js | 4 +- docs/tokio/search.desc/fred/fred-desc-0-.js | 2 +- docs/tokio/src-files.js | 4 +- .../src/fred/clients/transaction.rs.html | 138 ++-- docs/tokio/src/fred/modules/mocks.rs.html | 34 +- docs/tokio/src/fred/protocol/command.rs.html | 18 +- .../src/fred/protocol/responders.rs.html | 10 + .../tokio/src/fred/router/centralized.rs.html | 10 +- docs/tokio/src/fred/router/clustered.rs.html | 70 +- docs/tokio/src/fred/router/commands.rs.html | 94 ++- docs/tokio/src/fred/router/mod.rs.html | 2 - docs/tokio/src/fred/router/reader.rs.html | 3 - .../src/fred/router/transactions.rs.html | 734 +++++++++++++----- docs/tokio/src/fred/types/config.rs.html | 4 + 106 files changed, 1936 insertions(+), 830 deletions(-) delete mode 100644 docs/glommio/src/fred/router/reader.rs.html delete mode 100644 docs/tokio/src/fred/router/reader.rs.html diff --git a/docs/glommio/fred/clients/struct.Transaction.html b/docs/glommio/fred/clients/struct.Transaction.html index f2f9f424..22b7c8a2 100644 --- a/docs/glommio/fred/clients/struct.Transaction.html +++ b/docs/glommio/fred/clients/struct.Transaction.html @@ -1,9 +1,11 @@ -Transaction in fred::clients - Rust

Struct fred::clients::Transaction

source ·
pub struct Transaction { /* private fields */ }
Available on crate feature transactions only.
Expand description

A cheaply cloneable transaction block.

-

Implementations§

source§

impl Transaction

source

pub fn id(&self) -> u64

An ID identifying the underlying transaction state.

-
source

pub fn reset(&self)

Clear the internal command buffer and watched keys.

-
source

pub fn len(&self) -> usize

Read the number of commands queued to run.

-
source

pub fn watched_len(&self) -> usize

Read the number of keys to WATCH before the starting the transaction.

-
source

pub async fn exec<R>(&self, abort_on_error: bool) -> Result<R, RedisError>
where +Transaction in fred::clients - Rust

Struct fred::clients::Transaction

source ·
pub struct Transaction { /* private fields */ }
Available on crate feature transactions only.
Expand description

A cheaply cloneable transaction block.

+

Implementations§

source§

impl Transaction

source

pub fn id(&self) -> u64

An ID identifying the underlying transaction state.

+
source

pub fn reset(&self)

Clear the internal command buffer and watched keys.

+
source

pub fn len(&self) -> usize

Read the number of commands queued to run.

+
source

pub fn pipeline(&self, val: bool)

Whether to pipeline commands in the transaction.

+

Note: pipelined transactions should only be used with Redis version >=2.6.5.

+
source

pub fn watched_len(&self) -> usize

👎Deprecated since 9.2.0: Please use WATCH with clients from an ExclusivePool instead.

Read the number of keys to WATCH before the starting the transaction.

+
source

pub async fn exec<R>(&self, abort_on_error: bool) -> Result<R, RedisError>
where R: FromRedis,

Executes all previously queued commands in a transaction.

If abort_on_error is true the client will automatically send DISCARD if an error is received from any of the commands prior to EXEC. This does not apply to MOVED or ASK errors, which wll be followed @@ -22,11 +24,11 @@ assert_eq!((foo, bar), (1, 2)); Ok(()) }

-
source

pub fn watch_before<K>(&self, keys: K)
where - K: Into<MultipleKeys>,

Send the WATCH command with the provided keys before starting the transaction.

-
source

pub fn hash_slot(&self) -> Option<u16>

Read the hash slot against which this transaction will run, if known.

-
source

pub fn cluster_node(&self) -> Option<Server>

Read the server ID against which this transaction will run, if known.

-

Trait Implementations§

source§

impl AclInterface for Transaction

Available on crate feature i-acl only.
source

pub fn watch_before<K>(&self, keys: K)
where + K: Into<MultipleKeys>,

👎Deprecated since 9.2.0: Please use WATCH with clients from an ExclusivePool instead.

Send the WATCH command with the provided keys before starting the transaction.

+
source

pub fn hash_slot(&self) -> Option<u16>

Read the hash slot against which this transaction will run, if known.

+
source

pub fn cluster_node(&self) -> Option<Server>

Read the server ID against which this transaction will run, if known.

+

Trait Implementations§

source§

impl AclInterface for Transaction

Available on crate feature i-acl only.
source§

fn acl_setuser<S, V>( &self, username: S, rules: V, @@ -59,7 +61,7 @@ &self, count: Option<u32>, ) -> impl Future<Output = RedisResult<R>>
where - R: FromRedis,

Read count recent ACL security events. Read more
source§

fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>>

Clear the ACL security events logs. Read more
source§

impl AuthInterface for Transaction

source§

fn auth<S>( + R: FromRedis,

Read count recent ACL security events. Read more
source§

fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>>

Clear the ACL security events logs. Read more
source§

impl AuthInterface for Transaction

source§

fn auth<S>( &self, username: Option<String>, password: S, @@ -69,7 +71,7 @@ version: RespVersion, auth: Option<(Str, Str)>, setname: Option<Str>, -) -> impl Future<Output = RedisResult<()>>

Switch to a different protocol, optionally authenticating in the process. Read more
source§

impl ClientInterface for Transaction

Available on crate feature i-client only.
source§

fn client_id<R>(&self) -> impl Future<Output = RedisResult<R>>
where +) -> impl Future<Output = RedisResult<()>>

Switch to a different protocol, optionally authenticating in the process. Read more
source§

impl ClientInterface for Transaction

Available on crate feature i-client only.
source§

fn client_id<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Return the ID of the current connection. Read more
source§

fn connection_ids(&self) -> impl Future<Output = HashMap<Server, i64>>

Read the connection IDs for the active connections to each server. Read more
source§

fn client_info<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

The command returns information and statistics about the current client connection in a mostly human readable format. Read more
source§

fn client_kill<R>( @@ -125,7 +127,7 @@ enabled: bool, ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Available on crate feature i-tracking only.
This command controls the tracking of the keys in the next command executed by the connection, when tracking is -enabled in OPTIN or OPTOUT mode. Read more
source§

impl ClientLike for Transaction

source§

fn id(&self) -> &str

The unique ID identifying this client and underlying connections.
source§

fn client_config(&self) -> RedisConfig

Read the config used to initialize the client.
source§

fn client_reconnect_policy(&self) -> Option<ReconnectPolicy>

Read the reconnect policy used to initialize the client.
source§

fn connection_config(&self) -> &ConnectionConfig

Read the connection config used to initialize the client.
source§

fn protocol_version(&self) -> RespVersion

Read the RESP version used by the client when communicating with the server.
source§

fn has_reconnect_policy(&self) -> bool

Whether the client has a reconnection policy.
source§

fn is_pipelined(&self) -> bool

Whether the client will automatically pipeline commands.
source§

fn is_clustered(&self) -> bool

Whether the client is connected to a cluster.
source§

fn uses_sentinels(&self) -> bool

Whether the client uses the sentinel interface.
source§

fn update_perf_config(&self, config: PerformanceConfig)

Update the internal PerformanceConfig in place with new values.
source§

fn perf_config(&self) -> PerformanceConfig

Read the PerformanceConfig associated with this client.
source§

fn state(&self) -> ClientState

Read the state of the underlying connection(s). Read more
source§

fn is_connected(&self) -> bool

Whether all underlying connections are healthy.
source§

fn active_connections( +enabled in OPTIN or OPTOUT mode. Read more

source§

impl ClientLike for Transaction

source§

fn id(&self) -> &str

The unique ID identifying this client and underlying connections.
source§

fn client_config(&self) -> RedisConfig

Read the config used to initialize the client.
source§

fn client_reconnect_policy(&self) -> Option<ReconnectPolicy>

Read the reconnect policy used to initialize the client.
source§

fn connection_config(&self) -> &ConnectionConfig

Read the connection config used to initialize the client.
source§

fn protocol_version(&self) -> RespVersion

Read the RESP version used by the client when communicating with the server.
source§

fn has_reconnect_policy(&self) -> bool

Whether the client has a reconnection policy.
source§

fn is_pipelined(&self) -> bool

Whether the client will automatically pipeline commands.
source§

fn is_clustered(&self) -> bool

Whether the client is connected to a cluster.
source§

fn uses_sentinels(&self) -> bool

Whether the client uses the sentinel interface.
source§

fn update_perf_config(&self, config: PerformanceConfig)

Update the internal PerformanceConfig in place with new values.
source§

fn perf_config(&self) -> PerformanceConfig

Read the PerformanceConfig associated with this client.
source§

fn state(&self) -> ClientState

Read the state of the underlying connection(s). Read more
source§

fn is_connected(&self) -> bool

Whether all underlying connections are healthy.
source§

fn active_connections( &self, ) -> impl Future<Output = Result<Vec<Server>, RedisError>>

Read the set of active connections managed by the client.
source§

fn server_version(&self) -> Option<Version>

Read the server version, if known.
source§

fn set_resolver(&self, resolver: Rc<dyn Resolve>) -> impl Future

Available on crate feature dns only.
Override the DNS resolution logic for the client.
source§

fn connect(&self) -> ConnectHandle

Connect to the server. Read more
source§

fn force_reconnection(&self) -> impl Future<Output = RedisResult<()>>

Force a reconnection to the server(s). Read more
source§

fn wait_for_connect(&self) -> impl Future<Output = RedisResult<()>>

Wait for the result of the next connection attempt. Read more
source§

fn init(&self) -> impl Future<Output = RedisResult<ConnectHandle>>

Initialize a new routing and connection task and wait for it to connect successfully. Read more
source§

fn quit(&self) -> impl Future<Output = RedisResult<()>>

Close the connection to the Redis server. The returned future resolves when the command has been written to the socket, not when the connection has been fully closed. Some time after this future resolves the future @@ -154,7 +156,7 @@ ) -> impl Future<Output = RedisResult<Resp3Frame>>
Run a custom command similar to custom, but return the response frame directly without any -parsing. Read more
source§

fn with_options(&self, options: &Options) -> WithOptions<Self>

Customize various configuration options on commands.
source§

impl Clone for Transaction

source§

fn clone(&self) -> Transaction

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConfigInterface for Transaction

Available on crate feature i-config only.
source§

fn config_resetstat(&self) -> impl Future<Output = RedisResult<()>>

Resets the statistics reported by Redis using the INFO command. Read more
source§

fn config_rewrite(&self) -> impl Future<Output = RedisResult<()>>

The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal +parsing. Read more
source§

fn with_options(&self, options: &Options) -> WithOptions<Self>

Customize various configuration options on commands.
source§

impl Clone for Transaction

source§

fn clone(&self) -> Transaction

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConfigInterface for Transaction

Available on crate feature i-config only.
source§

fn config_resetstat(&self) -> impl Future<Output = RedisResult<()>>

Resets the statistics reported by Redis using the INFO command. Read more
source§

fn config_rewrite(&self) -> impl Future<Output = RedisResult<()>>

The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal changes needed to make it reflect the configuration currently used by the server, which may be different compared to the original one because of the use of the CONFIG SET command. Read more
source§

fn config_get<R, S>(&self, parameter: S) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, @@ -165,7 +167,7 @@ ) -> impl Future<Output = RedisResult<()>>
where P: Into<Str>, V: TryInto<RedisValue>, - V::Error: Into<RedisError>,

The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis. Read more
source§

impl Debug for Transaction

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FunctionInterface for Transaction

Available on crate feature i-scripts only.
source§

fn fcall<R, F, K, V>( + V::Error: Into<RedisError>,

The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis. Read more
source§

impl Debug for Transaction

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FunctionInterface for Transaction

Available on crate feature i-scripts only.
source§

fn fcall<R, F, K, V>( &self, func: F, keys: K, @@ -235,7 +237,7 @@ P: TryInto<FnPolicy>, P::Error: Into<RedisError>,

Restore libraries from the serialized payload on all cluster nodes concurrently. Read more
source§

fn function_stats<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Return information about the function that’s currently running and information about the available execution -engines. Read more
source§

impl GeoInterface for Transaction

Available on crate feature i-geo only.
source§

fn geoadd<R, K, V>( +engines. Read more

source§

impl GeoInterface for Transaction

Available on crate feature i-geo only.
source§

fn geoadd<R, K, V>( &self, key: K, options: Option<SetOptions>, @@ -340,7 +342,7 @@ R: FromRedis, D: Into<RedisKey>, S: Into<RedisKey>,

This command is like GEOSEARCH, but stores the result in destination key. Returns the number of members added to -the destination key. Read more
source§

impl HashesInterface for Transaction

Available on crate feature i-hashes only.
source§

fn hgetall<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>>
where +the destination key. Read more

source§

impl HashesInterface for Transaction

Available on crate feature i-hashes only.
source§

fn hgetall<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, K: Into<RedisKey>,

Returns all fields and values of the hash stored at key. Read more
source§

fn hdel<R, K, F>( &self, @@ -432,7 +434,7 @@ K: Into<RedisKey>, F: Into<RedisKey>,

Returns the string length of the value associated with field in the hash stored at key. Read more
source§

fn hvals<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, - K: Into<RedisKey>,

Returns all values in the hash stored at key. Read more
source§

impl HyperloglogInterface for Transaction

Available on crate feature i-hyperloglog only.
source§

fn pfadd<R, K, V>( + K: Into<RedisKey>,

Returns all values in the hash stored at key. Read more
source§

impl HyperloglogInterface for Transaction

Available on crate feature i-hyperloglog only.
source§

fn pfadd<R, K, V>( &self, key: K, elements: V, @@ -452,7 +454,7 @@ R: FromRedis, D: Into<RedisKey>, S: Into<MultipleKeys>,

Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the -observed sets of the source HyperLogLog structures. Read more
source§

impl KeysInterface for Transaction

Available on crate feature i-keys only.
source§

fn watch<K>(&self, keys: K) -> impl Future<Output = RedisResult<()>>
where +observed sets of the source HyperLogLog structures. Read more

source§

impl KeysInterface for Transaction

Available on crate feature i-keys only.
source§

fn watch<K>(&self, keys: K) -> impl Future<Output = RedisResult<()>>
where K: Into<MultipleKeys>,

Marks the given keys to be watched for conditional execution of a transaction. Read more
source§

fn unwatch(&self) -> impl Future<Output = RedisResult<()>>

Flushes all the previously watched keys for a transaction. Read more
source§

fn randomkey<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Return a random key from the currently selected database. Read more
source§

fn copy<R, S, D>( &self, @@ -629,7 +631,7 @@ ) -> impl Future<Output = Result<R, RedisError>>
where R: FromRedis, K1: Into<RedisKey>, - K2: Into<RedisKey>,

Runs the longest common subsequence algorithm on two keys. Read more
source§

impl ListInterface for Transaction

Available on crate feature i-lists only.
source§

fn blmpop<R, K>( + K2: Into<RedisKey>,

Runs the longest common subsequence algorithm on two keys. Read more
source§

impl ListInterface for Transaction

Available on crate feature i-lists only.
source§

fn blmpop<R, K>( &self, timeout: f64, keys: K, @@ -828,7 +830,7 @@ R: FromRedis, K: Into<RedisKey>, S: Into<MultipleStrings>,

Read-only variant of the SORT command. It is exactly like the original SORT but refuses the STORE option and can -safely be used in read-only replicas. Read more
source§

impl MemoryInterface for Transaction

Available on crate feature i-memory only.
source§

fn memory_doctor<R>(&self) -> impl Future<Output = RedisResult<R>>
where +safely be used in read-only replicas. Read more

source§

impl MemoryInterface for Transaction

Available on crate feature i-memory only.
source§

fn memory_doctor<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

The MEMORY DOCTOR command reports about different memory-related issues that the Redis server experiences, and advises about possible remedies. Read more
source§

fn memory_malloc_stats<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

The MEMORY MALLOC-STATS command provides an internal statistics report from the memory allocator. Read more
source§

fn memory_purge(&self) -> impl Future<Output = RedisResult<()>>

The MEMORY PURGE command attempts to purge dirty pages so these can be reclaimed by the allocator. Read more
source§

fn memory_stats<R>(&self) -> impl Future<Output = RedisResult<R>>
where @@ -838,8 +840,8 @@ samples: Option<u32>, ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, - K: Into<RedisKey>,

The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM. Read more
source§

impl PartialEq for Transaction

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl PubsubInterface for Transaction

Available on crate feature i-pubsub only.
source§

fn subscribe<S>(&self, channels: S) -> impl Future<Output = RedisResult<()>>
where + K: Into<RedisKey>,

The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM. Read more
source§

impl PartialEq for Transaction

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PubsubInterface for Transaction

Available on crate feature i-pubsub only.
source§

fn subscribe<S>(&self, channels: S) -> impl Future<Output = RedisResult<()>>

Subscribe to a channel on the publish-subscribe interface. Read more
source§

fn unsubscribe<S>(&self, channels: S) -> impl Future<Output = RedisResult<()>>

Unsubscribe from a channel on the PubSub interface. Read more
source§

fn psubscribe<S>(&self, patterns: S) -> impl Future<Output = RedisResult<()>>

Subscribes the client to the given patterns. Read more
source§

fn punsubscribe<S>(&self, patterns: S) -> impl Future<Output = RedisResult<()>>
where @@ -882,7 +884,7 @@ channels: S, ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, - S: Into<MultipleStrings>,

Returns the number of subscribers for the specified shard channels. Read more
source§

impl RediSearchInterface for Transaction

Available on crate feature i-redisearch only.
source§

fn ft_list<R>(&self) -> impl Future<Output = RedisResult<R>>
where + S: Into<MultipleStrings>,

Returns the number of subscribers for the specified shard channels. Read more
source§

impl RediSearchInterface for Transaction

Available on crate feature i-redisearch only.
source§

fn ft_list<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Returns a list of all existing indexes. Read more
source§

fn ft_aggregate<R, I, Q>( &self, index: I, @@ -1047,7 +1049,7 @@ ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, I: Into<Str>, - F: Into<Str>,

Return a distinct set of values indexed in a Tag field. Read more
source§

impl RedisJsonInterface for Transaction

Available on crate feature i-redis-json only.
source§

fn json_arrappend<R, K, P, V>( + F: Into<Str>,

Return a distinct set of values indexed in a Tag field. Read more
source§

impl RedisJsonInterface for Transaction

Available on crate feature i-redis-json only.
source§

fn json_arrappend<R, K, P, V>( &self, key: K, path: P, @@ -1228,7 +1230,7 @@ ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, K: Into<RedisKey>, - P: Into<Str>,

Report the type of JSON value at path. Read more
source§

impl ServerInterface for Transaction

Available on crate feature i-server only.
source§

fn bgrewriteaof<R>(&self) -> impl Future<Output = RedisResult<R>>
where + P: Into<Str>,

Report the type of JSON value at path. Read more
source§

impl ServerInterface for Transaction

Available on crate feature i-server only.
source§

fn bgrewriteaof<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Instruct Redis to start an Append Only File rewrite process. Read more
source§

fn bgsave<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Save the DB in background. Read more
source§

fn dbsize<R>(&self) -> impl Future<Output = RedisResult<R>>
where R: FromRedis,

Return the number of keys in the selected database. Read more
source§

fn select(&self, db: u8) -> impl Future<Output = RedisResult<()>>

Select the database this client should use. Read more
source§

fn failover( @@ -1246,7 +1248,7 @@ ) -> impl Future<Output = Result<R, RedisError>>
where R: FromRedis,

This command blocks the current client until all the previous write commands are successfully transferred and acknowledged by at least the specified number of replicas. If the timeout, specified in milliseconds, is -reached, the command returns even if the specified number of replicas were not yet reached. Read more
source§

fn sentinel_primary(&self) -> Option<Server>

Read the primary Redis server identifier returned from the sentinel nodes.
source§

fn sentinel_nodes(&self) -> Option<Vec<Server>>

Read the set of known sentinel nodes.
source§

impl SetsInterface for Transaction

Available on crate feature i-sets only.
source§

fn sadd<R, K, V>( +reached, the command returns even if the specified number of replicas were not yet reached. Read more

source§

fn sentinel_primary(&self) -> Option<Server>

Read the primary Redis server identifier returned from the sentinel nodes.
source§

fn sentinel_nodes(&self) -> Option<Vec<Server>>

Read the set of known sentinel nodes.
source§

impl SetsInterface for Transaction

Available on crate feature i-sets only.
source§

fn sadd<R, K, V>( &self, key: K, members: V, @@ -1331,7 +1333,7 @@ ) -> impl Future<Output = RedisResult<R>>
where R: FromRedis, D: Into<RedisKey>, - K: Into<MultipleKeys>,

This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination. Read more
source§

impl SortedSetsInterface for Transaction

Available on crate feature i-sorted-sets only.
This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination. Read more
source§

impl SortedSetsInterface for Transaction

Available on crate feature i-sorted-sets only.
source§

fn bzmpop<R, K>( &self, timeout: f64, keys: K, @@ -1640,7 +1642,7 @@ R: FromRedis, K: Into<RedisKey>, V: TryInto<MultipleValues>, - V::Error: Into<RedisError>,

Returns the scores associated with the specified members in the sorted set stored at key. Read more
source§

impl StreamsInterface for Transaction

Available on crate feature i-streams only.
Returns the scores associated with the specified members in the sorted set stored at key. Read more
source§

impl StreamsInterface for Transaction

Available on crate feature i-streams only.
source§

fn xinfo_consumers<R, K, S>( &self, key: K, groupname: S, @@ -1922,7 +1924,7 @@ R: FromRedis, K: Into<RedisKey>, G: Into<Str>, - A: Into<XPendingArgs>,

Inspect the list of pending messages in a consumer group. Read more
source§

impl TimeSeriesInterface for Transaction

Available on crate feature i-time-series only.
source§

fn ts_add<R, K, T, L>( + A: Into<XPendingArgs>,

Inspect the list of pending messages in a consumer group. Read more
source§

impl TimeSeriesInterface for Transaction

Available on crate feature i-time-series only.
source§

fn ts_add<R, K, T, L>( &self, key: K, timestamp: T, @@ -2116,7 +2118,7 @@ F::Error: Into<RedisError>, T: TryInto<GetTimestamp>, T::Error: Into<RedisError>, - I: IntoIterator<Item = i64>,

Query a range in reverse direction. Read more
source§

impl Eq for Transaction

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + I: IntoIterator<Item = i64>,

Query a range in reverse direction. Read more
source§

impl Eq for Transaction

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/interfaces/trait.AclInterface.html b/docs/glommio/fred/interfaces/trait.AclInterface.html index 4e40866c..1cc08438 100644 --- a/docs/glommio/fred/interfaces/trait.AclInterface.html +++ b/docs/glommio/fred/interfaces/trait.AclInterface.html @@ -102,4 +102,4 @@

https://redis.io/commands/acl-log

source

fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>>

Clear the ACL security events logs.

https://redis.io/commands/acl-log

-

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl AclInterface for RedisClient

source§

impl AclInterface for RedisPool

source§

impl AclInterface for SentinelClient

source§

impl AclInterface for SubscriberClient

source§

impl AclInterface for Transaction

source§

impl<C: AclInterface> AclInterface for Pipeline<C>

source§

impl<C: AclInterface> AclInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.AuthInterface.html b/docs/glommio/fred/interfaces/trait.AuthInterface.html index ad32bb07..f01ced70 100644 --- a/docs/glommio/fred/interfaces/trait.AuthInterface.html +++ b/docs/glommio/fred/interfaces/trait.AuthInterface.html @@ -31,4 +31,4 @@ ) -> impl Future<Output = RedisResult<()>>

Switch to a different protocol, optionally authenticating in the process.

If running against clustered servers this function will issue the HELLO command to each server concurrently.

https://redis.io/commands/hello

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl AuthInterface for RedisClient

source§

impl AuthInterface for SentinelClient

source§

impl AuthInterface for SubscriberClient

source§

impl AuthInterface for Transaction

source§

impl<C: AuthInterface> AuthInterface for Pipeline<C>

Available on crate feature i-server only.
source§

impl<C: AuthInterface> AuthInterface for WithOptions<C>

Available on crate feature i-server only.
\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl AuthInterface for RedisClient

source§

impl AuthInterface for SentinelClient

source§

impl AuthInterface for SubscriberClient

source§

impl AuthInterface for Transaction

source§

impl<C: AuthInterface> AuthInterface for Pipeline<C>

Available on crate feature i-server only.
source§

impl<C: AuthInterface> AuthInterface for WithOptions<C>

Available on crate feature i-server only.
\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.ClientInterface.html b/docs/glommio/fred/interfaces/trait.ClientInterface.html index 8bb4a933..20d0201c 100644 --- a/docs/glommio/fred/interfaces/trait.ClientInterface.html +++ b/docs/glommio/fred/interfaces/trait.ClientInterface.html @@ -168,4 +168,4 @@

This function is designed to work against a specific server. See with_options for a variation that works with all deployment types.

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ClientInterface for RedisClient

source§

impl ClientInterface for RedisPool

source§

impl ClientInterface for SentinelClient

source§

impl ClientInterface for SubscriberClient

source§

impl ClientInterface for Transaction

source§

impl<C: ClientInterface> ClientInterface for Pipeline<C>

source§

impl<C: ClientInterface> ClientInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ClientInterface for RedisClient

source§

impl ClientInterface for RedisPool

source§

impl ClientInterface for SentinelClient

source§

impl ClientInterface for SubscriberClient

source§

impl ClientInterface for Transaction

source§

impl<C: ClientInterface> ClientInterface for Pipeline<C>

source§

impl<C: ClientInterface> ClientInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.ClientLike.html b/docs/glommio/fred/interfaces/trait.ClientLike.html index b27d6567..87ac5c52 100644 --- a/docs/glommio/fred/interfaces/trait.ClientLike.html +++ b/docs/glommio/fred/interfaces/trait.ClientLike.html @@ -151,4 +151,4 @@ parsing.

Note: RESP2 frames from the server are automatically converted to the RESP3 format when parsed by the client.

source

fn with_options(&self, options: &Options) -> WithOptions<Self>

Customize various configuration options on commands.

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ClientLike for RedisClient

source§

impl ClientLike for RedisPool

source§

impl ClientLike for Replicas

source§

impl ClientLike for SentinelClient

source§

impl ClientLike for SubscriberClient

source§

impl ClientLike for Transaction

source§

impl<C: ClientLike> ClientLike for Pipeline<C>

source§

impl<C: ClientLike> ClientLike for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ClientLike for RedisClient

source§

impl ClientLike for RedisPool

source§

impl ClientLike for Replicas

source§

impl ClientLike for SentinelClient

source§

impl ClientLike for SubscriberClient

source§

impl ClientLike for Transaction

source§

impl<C: ClientLike> ClientLike for Pipeline<C>

source§

impl<C: ClientLike> ClientLike for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.ConfigInterface.html b/docs/glommio/fred/interfaces/trait.ConfigInterface.html index d4634502..60726924 100644 --- a/docs/glommio/fred/interfaces/trait.ConfigInterface.html +++ b/docs/glommio/fred/interfaces/trait.ConfigInterface.html @@ -36,4 +36,4 @@ V: TryInto<RedisValue>, V::Error: Into<RedisError>,

The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis.

https://redis.io/commands/config-set

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ConfigInterface for RedisClient

source§

impl ConfigInterface for RedisPool

source§

impl ConfigInterface for Replicas

source§

impl ConfigInterface for SubscriberClient

source§

impl ConfigInterface for Transaction

source§

impl<C: ConfigInterface> ConfigInterface for Pipeline<C>

source§

impl<C: ConfigInterface> ConfigInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ConfigInterface for RedisClient

source§

impl ConfigInterface for RedisPool

source§

impl ConfigInterface for Replicas

source§

impl ConfigInterface for SubscriberClient

source§

impl ConfigInterface for Transaction

source§

impl<C: ConfigInterface> ConfigInterface for Pipeline<C>

source§

impl<C: ConfigInterface> ConfigInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.FunctionInterface.html b/docs/glommio/fred/interfaces/trait.FunctionInterface.html index bfb89e9e..99209899 100644 --- a/docs/glommio/fred/interfaces/trait.FunctionInterface.html +++ b/docs/glommio/fred/interfaces/trait.FunctionInterface.html @@ -190,4 +190,4 @@ engines.

Note: This command runs on a backchannel connection to the server.

https://redis.io/commands/function-stats/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl FunctionInterface for RedisClient

source§

impl FunctionInterface for RedisPool

source§

impl FunctionInterface for Replicas

source§

impl FunctionInterface for SubscriberClient

source§

impl FunctionInterface for Transaction

source§

impl<C: FunctionInterface> FunctionInterface for Pipeline<C>

source§

impl<C: FunctionInterface> FunctionInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl FunctionInterface for RedisClient

source§

impl FunctionInterface for RedisPool

source§

impl FunctionInterface for Replicas

source§

impl FunctionInterface for SubscriberClient

source§

impl FunctionInterface for Transaction

source§

impl<C: FunctionInterface> FunctionInterface for Pipeline<C>

source§

impl<C: FunctionInterface> FunctionInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.GeoInterface.html b/docs/glommio/fred/interfaces/trait.GeoInterface.html index 18a1c4d4..9f624c76 100644 --- a/docs/glommio/fred/interfaces/trait.GeoInterface.html +++ b/docs/glommio/fred/interfaces/trait.GeoInterface.html @@ -229,4 +229,4 @@ S: Into<RedisKey>,

This command is like GEOSEARCH, but stores the result in destination key. Returns the number of members added to the destination key.

https://redis.io/commands/geosearchstore

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl GeoInterface for RedisClient

source§

impl GeoInterface for RedisPool

source§

impl GeoInterface for Replicas

source§

impl GeoInterface for SubscriberClient

source§

impl GeoInterface for Transaction

source§

impl<C: GeoInterface> GeoInterface for Pipeline<C>

source§

impl<C: GeoInterface> GeoInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl GeoInterface for RedisClient

source§

impl GeoInterface for RedisPool

source§

impl GeoInterface for Replicas

source§

impl GeoInterface for SubscriberClient

source§

impl GeoInterface for Transaction

source§

impl<C: GeoInterface> GeoInterface for Pipeline<C>

source§

impl<C: GeoInterface> GeoInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.HashesInterface.html b/docs/glommio/fred/interfaces/trait.HashesInterface.html index bdc05c1b..4c2870fd 100644 --- a/docs/glommio/fred/interfaces/trait.HashesInterface.html +++ b/docs/glommio/fred/interfaces/trait.HashesInterface.html @@ -230,4 +230,4 @@ R: FromRedis, K: Into<RedisKey>,

Returns all values in the hash stored at key.

https://redis.io/commands/hvals

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl HashesInterface for RedisClient

source§

impl HashesInterface for RedisPool

source§

impl HashesInterface for Replicas

source§

impl HashesInterface for SubscriberClient

source§

impl HashesInterface for Transaction

source§

impl<C: HashesInterface> HashesInterface for Pipeline<C>

source§

impl<C: HashesInterface> HashesInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl HashesInterface for RedisClient

source§

impl HashesInterface for RedisPool

source§

impl HashesInterface for Replicas

source§

impl HashesInterface for SubscriberClient

source§

impl HashesInterface for Transaction

source§

impl<C: HashesInterface> HashesInterface for Pipeline<C>

source§

impl<C: HashesInterface> HashesInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.HyperloglogInterface.html b/docs/glommio/fred/interfaces/trait.HyperloglogInterface.html index 673dc12b..44a16583 100644 --- a/docs/glommio/fred/interfaces/trait.HyperloglogInterface.html +++ b/docs/glommio/fred/interfaces/trait.HyperloglogInterface.html @@ -49,4 +49,4 @@ S: Into<MultipleKeys>,

Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed sets of the source HyperLogLog structures.

https://redis.io/commands/pfmerge

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl HyperloglogInterface for RedisClient

source§

impl HyperloglogInterface for RedisPool

source§

impl HyperloglogInterface for Replicas

source§

impl HyperloglogInterface for SubscriberClient

source§

impl HyperloglogInterface for Transaction

source§

impl<C: HyperloglogInterface> HyperloglogInterface for Pipeline<C>

source§

impl<C: HyperloglogInterface> HyperloglogInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl HyperloglogInterface for RedisClient

source§

impl HyperloglogInterface for RedisPool

source§

impl HyperloglogInterface for Replicas

source§

impl HyperloglogInterface for SubscriberClient

source§

impl HyperloglogInterface for Transaction

source§

impl<C: HyperloglogInterface> HyperloglogInterface for Pipeline<C>

source§

impl<C: HyperloglogInterface> HyperloglogInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.KeysInterface.html b/docs/glommio/fred/interfaces/trait.KeysInterface.html index 5dc80423..36de44f2 100644 --- a/docs/glommio/fred/interfaces/trait.KeysInterface.html +++ b/docs/glommio/fred/interfaces/trait.KeysInterface.html @@ -462,4 +462,4 @@ K1: Into<RedisKey>, K2: Into<RedisKey>,

Runs the longest common subsequence algorithm on two keys.

https://redis.io/commands/lcs/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl KeysInterface for RedisClient

source§

impl KeysInterface for RedisPool

source§

impl KeysInterface for Replicas

source§

impl KeysInterface for SubscriberClient

source§

impl KeysInterface for Transaction

source§

impl<C: KeysInterface> KeysInterface for Pipeline<C>

source§

impl<C: KeysInterface> KeysInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl KeysInterface for RedisClient

source§

impl KeysInterface for RedisPool

source§

impl KeysInterface for Replicas

source§

impl KeysInterface for SubscriberClient

source§

impl KeysInterface for Transaction

source§

impl<C: KeysInterface> KeysInterface for Pipeline<C>

source§

impl<C: KeysInterface> KeysInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.ListInterface.html b/docs/glommio/fred/interfaces/trait.ListInterface.html index e841e24f..fee139a6 100644 --- a/docs/glommio/fred/interfaces/trait.ListInterface.html +++ b/docs/glommio/fred/interfaces/trait.ListInterface.html @@ -463,4 +463,4 @@ S: Into<MultipleStrings>,

Read-only variant of the SORT command. It is exactly like the original SORT but refuses the STORE option and can safely be used in read-only replicas.

https://redis.io/commands/sort_ro/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ListInterface for RedisClient

source§

impl ListInterface for RedisPool

source§

impl ListInterface for Replicas

source§

impl ListInterface for SubscriberClient

source§

impl ListInterface for Transaction

source§

impl<C: ListInterface> ListInterface for Pipeline<C>

source§

impl<C: ListInterface> ListInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ListInterface for RedisClient

source§

impl ListInterface for RedisPool

source§

impl ListInterface for Replicas

source§

impl ListInterface for SubscriberClient

source§

impl ListInterface for Transaction

source§

impl<C: ListInterface> ListInterface for Pipeline<C>

source§

impl<C: ListInterface> ListInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.MemoryInterface.html b/docs/glommio/fred/interfaces/trait.MemoryInterface.html index ddf738f0..b377b33d 100644 --- a/docs/glommio/fred/interfaces/trait.MemoryInterface.html +++ b/docs/glommio/fred/interfaces/trait.MemoryInterface.html @@ -35,4 +35,4 @@ R: FromRedis, K: Into<RedisKey>,

The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM.

https://redis.io/commands/memory-usage

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl MemoryInterface for RedisClient

source§

impl MemoryInterface for RedisPool

source§

impl MemoryInterface for Replicas

source§

impl MemoryInterface for SubscriberClient

source§

impl MemoryInterface for Transaction

source§

impl<C: MemoryInterface> MemoryInterface for Pipeline<C>

source§

impl<C: MemoryInterface> MemoryInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl MemoryInterface for RedisClient

source§

impl MemoryInterface for RedisPool

source§

impl MemoryInterface for Replicas

source§

impl MemoryInterface for SubscriberClient

source§

impl MemoryInterface for Transaction

source§

impl<C: MemoryInterface> MemoryInterface for Pipeline<C>

source§

impl<C: MemoryInterface> MemoryInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.PubsubInterface.html b/docs/glommio/fred/interfaces/trait.PubsubInterface.html index d51fee80..b1860e97 100644 --- a/docs/glommio/fred/interfaces/trait.PubsubInterface.html +++ b/docs/glommio/fred/interfaces/trait.PubsubInterface.html @@ -143,4 +143,4 @@ R: FromRedis, S: Into<MultipleStrings>,

Returns the number of subscribers for the specified shard channels.

https://redis.io/commands/pubsub-shardnumsub/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl PubsubInterface for RedisClient

source§

impl PubsubInterface for SentinelClient

source§

impl PubsubInterface for SubscriberClient

source§

impl PubsubInterface for Transaction

source§

impl<C: PubsubInterface> PubsubInterface for Pipeline<C>

source§

impl<C: PubsubInterface> PubsubInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl PubsubInterface for RedisClient

source§

impl PubsubInterface for SentinelClient

source§

impl PubsubInterface for SubscriberClient

source§

impl PubsubInterface for Transaction

source§

impl<C: PubsubInterface> PubsubInterface for Pipeline<C>

source§

impl<C: PubsubInterface> PubsubInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.RediSearchInterface.html b/docs/glommio/fred/interfaces/trait.RediSearchInterface.html index 55efeea8..0b94cf6e 100644 --- a/docs/glommio/fred/interfaces/trait.RediSearchInterface.html +++ b/docs/glommio/fred/interfaces/trait.RediSearchInterface.html @@ -415,4 +415,4 @@ I: Into<Str>, F: Into<Str>,

Return a distinct set of values indexed in a Tag field.

https://redis.io/docs/latest/commands/ft.tagvals/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl RediSearchInterface for RedisClient

source§

impl RediSearchInterface for RedisPool

source§

impl RediSearchInterface for Replicas

source§

impl RediSearchInterface for SubscriberClient

source§

impl RediSearchInterface for Transaction

source§

impl<C: RediSearchInterface> RediSearchInterface for Pipeline<C>

source§

impl<C: RediSearchInterface> RediSearchInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl RediSearchInterface for RedisClient

source§

impl RediSearchInterface for RedisPool

source§

impl RediSearchInterface for Replicas

source§

impl RediSearchInterface for SubscriberClient

source§

impl RediSearchInterface for Transaction

source§

impl<C: RediSearchInterface> RediSearchInterface for Pipeline<C>

source§

impl<C: RediSearchInterface> RediSearchInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.RedisJsonInterface.html b/docs/glommio/fred/interfaces/trait.RedisJsonInterface.html index cc77889b..6b360d23 100644 --- a/docs/glommio/fred/interfaces/trait.RedisJsonInterface.html +++ b/docs/glommio/fred/interfaces/trait.RedisJsonInterface.html @@ -459,4 +459,4 @@

§String K: Into<RedisKey>, P: Into<Str>,

Report the type of JSON value at path.

https://redis.io/commands/json.type/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl RedisJsonInterface for RedisClient

source§

impl RedisJsonInterface for RedisPool

source§

impl RedisJsonInterface for Replicas

source§

impl RedisJsonInterface for SubscriberClient

source§

impl RedisJsonInterface for Transaction

source§

impl<C: RedisJsonInterface> RedisJsonInterface for Pipeline<C>

source§

impl<C: RedisJsonInterface> RedisJsonInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl RedisJsonInterface for RedisClient

source§

impl RedisJsonInterface for RedisPool

source§

impl RedisJsonInterface for Replicas

source§

impl RedisJsonInterface for SubscriberClient

source§

impl RedisJsonInterface for Transaction

source§

impl<C: RedisJsonInterface> RedisJsonInterface for Pipeline<C>

source§

impl<C: RedisJsonInterface> RedisJsonInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.ServerInterface.html b/docs/glommio/fred/interfaces/trait.ServerInterface.html index 84b840ed..8f854376 100644 --- a/docs/glommio/fred/interfaces/trait.ServerInterface.html +++ b/docs/glommio/fred/interfaces/trait.ServerInterface.html @@ -59,4 +59,4 @@

https://redis.io/commands/wait/

source

fn sentinel_primary(&self) -> Option<Server>

Read the primary Redis server identifier returned from the sentinel nodes.

source

fn sentinel_nodes(&self) -> Option<Vec<Server>>

Read the set of known sentinel nodes.

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ServerInterface for RedisClient

source§

impl ServerInterface for RedisPool

source§

impl ServerInterface for Replicas

source§

impl ServerInterface for SubscriberClient

source§

impl ServerInterface for Transaction

source§

impl<C: ServerInterface> ServerInterface for Pipeline<C>

source§

impl<C: ServerInterface> ServerInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ServerInterface for RedisClient

source§

impl ServerInterface for RedisPool

source§

impl ServerInterface for Replicas

source§

impl ServerInterface for SubscriberClient

source§

impl ServerInterface for Transaction

source§

impl<C: ServerInterface> ServerInterface for Pipeline<C>

source§

impl<C: ServerInterface> ServerInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.SetsInterface.html b/docs/glommio/fred/interfaces/trait.SetsInterface.html index a72210c2..18a8ddb5 100644 --- a/docs/glommio/fred/interfaces/trait.SetsInterface.html +++ b/docs/glommio/fred/interfaces/trait.SetsInterface.html @@ -218,4 +218,4 @@ D: Into<RedisKey>, K: Into<MultipleKeys>,

This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination.

https://redis.io/commands/sunionstore

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl SetsInterface for RedisClient

source§

impl SetsInterface for RedisPool

source§

impl SetsInterface for Replicas

source§

impl SetsInterface for SubscriberClient

source§

impl SetsInterface for Transaction

source§

impl<C: SetsInterface> SetsInterface for Pipeline<C>

source§

impl<C: SetsInterface> SetsInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl SetsInterface for RedisClient

source§

impl SetsInterface for RedisPool

source§

impl SetsInterface for Replicas

source§

impl SetsInterface for SubscriberClient

source§

impl SetsInterface for Transaction

source§

impl<C: SetsInterface> SetsInterface for Pipeline<C>

source§

impl<C: SetsInterface> SetsInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.SortedSetsInterface.html b/docs/glommio/fred/interfaces/trait.SortedSetsInterface.html index f6861638..37de9400 100644 --- a/docs/glommio/fred/interfaces/trait.SortedSetsInterface.html +++ b/docs/glommio/fred/interfaces/trait.SortedSetsInterface.html @@ -704,4 +704,4 @@ V: TryInto<MultipleValues>, V::Error: Into<RedisError>,

Returns the scores associated with the specified members in the sorted set stored at key.

https://redis.io/commands/zmscore

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl SortedSetsInterface for RedisClient

source§

impl SortedSetsInterface for RedisPool

source§

impl SortedSetsInterface for Replicas

source§

impl SortedSetsInterface for SubscriberClient

source§

impl SortedSetsInterface for Transaction

source§

impl<C: SortedSetsInterface> SortedSetsInterface for Pipeline<C>

source§

impl<C: SortedSetsInterface> SortedSetsInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl SortedSetsInterface for RedisClient

source§

impl SortedSetsInterface for RedisPool

source§

impl SortedSetsInterface for Replicas

source§

impl SortedSetsInterface for SubscriberClient

source§

impl SortedSetsInterface for Transaction

source§

impl<C: SortedSetsInterface> SortedSetsInterface for Pipeline<C>

source§

impl<C: SortedSetsInterface> SortedSetsInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.StreamsInterface.html b/docs/glommio/fred/interfaces/trait.StreamsInterface.html index a07ea8a3..5816efc8 100644 --- a/docs/glommio/fred/interfaces/trait.StreamsInterface.html +++ b/docs/glommio/fred/interfaces/trait.StreamsInterface.html @@ -686,4 +686,4 @@ G: Into<Str>, A: Into<XPendingArgs>,

Inspect the list of pending messages in a consumer group.

https://redis.io/commands/xpending

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl StreamsInterface for RedisClient

source§

impl StreamsInterface for RedisPool

source§

impl StreamsInterface for Replicas

source§

impl StreamsInterface for SubscriberClient

source§

impl StreamsInterface for Transaction

source§

impl<C: StreamsInterface> StreamsInterface for Pipeline<C>

source§

impl<C: StreamsInterface> StreamsInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl StreamsInterface for RedisClient

source§

impl StreamsInterface for RedisPool

source§

impl StreamsInterface for Replicas

source§

impl StreamsInterface for SubscriberClient

source§

impl StreamsInterface for Transaction

source§

impl<C: StreamsInterface> StreamsInterface for Pipeline<C>

source§

impl<C: StreamsInterface> StreamsInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/interfaces/trait.TimeSeriesInterface.html b/docs/glommio/fred/interfaces/trait.TimeSeriesInterface.html index ac583793..36a634f0 100644 --- a/docs/glommio/fred/interfaces/trait.TimeSeriesInterface.html +++ b/docs/glommio/fred/interfaces/trait.TimeSeriesInterface.html @@ -447,4 +447,4 @@ T::Error: Into<RedisError>, I: IntoIterator<Item = i64>,

Query a range in reverse direction.

https://redis.io/commands/ts.revrange/

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl TimeSeriesInterface for RedisClient

source§

impl TimeSeriesInterface for RedisPool

source§

impl TimeSeriesInterface for Replicas

source§

impl TimeSeriesInterface for SubscriberClient

source§

impl TimeSeriesInterface for Transaction

source§

impl<C: TimeSeriesInterface> TimeSeriesInterface for Pipeline<C>

source§

impl<C: TimeSeriesInterface> TimeSeriesInterface for WithOptions<C>

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl TimeSeriesInterface for RedisClient

source§

impl TimeSeriesInterface for RedisPool

source§

impl TimeSeriesInterface for Replicas

source§

impl TimeSeriesInterface for SubscriberClient

source§

impl TimeSeriesInterface for Transaction

source§

impl<C: TimeSeriesInterface> TimeSeriesInterface for Pipeline<C>

source§

impl<C: TimeSeriesInterface> TimeSeriesInterface for WithOptions<C>

\ No newline at end of file diff --git a/docs/glommio/fred/mocks/index.html b/docs/glommio/fred/mocks/index.html index 3c7750e1..35b604cf 100644 --- a/docs/glommio/fred/mocks/index.html +++ b/docs/glommio/fred/mocks/index.html @@ -1,4 +1,4 @@ -fred::mocks - Rust

Module fred::mocks

source ·
Available on crate feature mocks only.
Expand description

An interface for mocking Redis commands.

+fred::mocks - Rust

Module fred::mocks

source ·
Available on crate feature mocks only.
Expand description

An interface for mocking Redis commands.

There are several patterns for utilizing a mocking layer in tests. In some cases a simple “echo” interface is enough, or in others callers may need to buffer a series of commands before performing any assertions, etc. More complicated test scenarios may require storing and operating on real values.

diff --git a/docs/glommio/fred/types/constant.DEFAULT_JITTER_MS.html b/docs/glommio/fred/types/constant.DEFAULT_JITTER_MS.html index e3c6735d..3cb9e9d0 100644 --- a/docs/glommio/fred/types/constant.DEFAULT_JITTER_MS.html +++ b/docs/glommio/fred/types/constant.DEFAULT_JITTER_MS.html @@ -1,2 +1,2 @@ -DEFAULT_JITTER_MS in fred::types - Rust

Constant fred::types::DEFAULT_JITTER_MS

source ·
pub const DEFAULT_JITTER_MS: u32 = 100;
Expand description

The default amount of jitter when waiting to reconnect.

+DEFAULT_JITTER_MS in fred::types - Rust

Constant fred::types::DEFAULT_JITTER_MS

source ·
pub const DEFAULT_JITTER_MS: u32 = 100;
Expand description

The default amount of jitter when waiting to reconnect.

\ No newline at end of file diff --git a/docs/glommio/fred/types/enum.BackpressurePolicy.html b/docs/glommio/fred/types/enum.BackpressurePolicy.html index 3d920cac..5fd0afd3 100644 --- a/docs/glommio/fred/types/enum.BackpressurePolicy.html +++ b/docs/glommio/fred/types/enum.BackpressurePolicy.html @@ -1,4 +1,4 @@ -BackpressurePolicy in fred::types - Rust

Enum fred::types::BackpressurePolicy

source ·
pub enum BackpressurePolicy {
+BackpressurePolicy in fred::types - Rust

Enum fred::types::BackpressurePolicy

source ·
pub enum BackpressurePolicy {
     Sleep {
         disable_backpressure_scaling: bool,
         min_sleep_duration: Duration,
@@ -15,9 +15,9 @@
 disable_auto_backpressure is true.

Default: 10 ms

§

Drain

Wait for all in-flight commands to finish before sending the next command.

-

Implementations§

source§

impl BackpressurePolicy

source

pub fn default_sleep() -> Self

Create a new Sleep policy with the legacy default values.

-

Trait Implementations§

source§

impl Clone for BackpressurePolicy

source§

fn clone(&self) -> BackpressurePolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BackpressurePolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BackpressurePolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for BackpressurePolicy

source§

fn eq(&self, other: &BackpressurePolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for BackpressurePolicy

source§

impl StructuralPartialEq for BackpressurePolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Implementations§

source§

impl BackpressurePolicy

source

pub fn default_sleep() -> Self

Create a new Sleep policy with the legacy default values.

+

Trait Implementations§

source§

impl Clone for BackpressurePolicy

source§

fn clone(&self) -> BackpressurePolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BackpressurePolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BackpressurePolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for BackpressurePolicy

source§

fn eq(&self, other: &BackpressurePolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for BackpressurePolicy

source§

impl StructuralPartialEq for BackpressurePolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/enum.Blocking.html b/docs/glommio/fred/types/enum.Blocking.html index fd6c39b1..45cb6402 100644 --- a/docs/glommio/fred/types/enum.Blocking.html +++ b/docs/glommio/fred/types/enum.Blocking.html @@ -1,4 +1,4 @@ -Blocking in fred::types - Rust

Enum fred::types::Blocking

source ·
pub enum Blocking {
+Blocking in fred::types - Rust

Enum fred::types::Blocking

source ·
pub enum Blocking {
     Block,
     Error,
     Interrupt,
@@ -7,8 +7,8 @@
 

Variants§

§

Block

Wait to send the command until the blocked command finishes. (Default)

§

Error

Return an error to the caller.

§

Interrupt

Interrupt the blocked command by automatically sending CLIENT UNBLOCK for the blocked connection.

-

Trait Implementations§

source§

impl Clone for Blocking

source§

fn clone(&self) -> Blocking

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Blocking

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Blocking

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for Blocking

source§

fn eq(&self, other: &Blocking) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for Blocking

source§

impl StructuralPartialEq for Blocking

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for Blocking

source§

fn clone(&self) -> Blocking

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Blocking

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Blocking

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for Blocking

source§

fn eq(&self, other: &Blocking) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for Blocking

source§

impl StructuralPartialEq for Blocking

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/enum.ClusterDiscoveryPolicy.html b/docs/glommio/fred/types/enum.ClusterDiscoveryPolicy.html index 3cf4a256..85f04ca7 100644 --- a/docs/glommio/fred/types/enum.ClusterDiscoveryPolicy.html +++ b/docs/glommio/fred/types/enum.ClusterDiscoveryPolicy.html @@ -1,4 +1,4 @@ -ClusterDiscoveryPolicy in fred::types - Rust

Enum fred::types::ClusterDiscoveryPolicy

source ·
pub enum ClusterDiscoveryPolicy {
+ClusterDiscoveryPolicy in fred::types - Rust

Enum fred::types::ClusterDiscoveryPolicy

source ·
pub enum ClusterDiscoveryPolicy {
     ConfigEndpoint,
     UseCache,
 }
Expand description

A policy that determines how clustered clients initially connect to and discover other cluster nodes.

@@ -8,8 +8,8 @@

Default.

§

UseCache

Try connecting to nodes specified in both the client’s ServerConfig and the most recently cached routing table.

-

Trait Implementations§

source§

impl Clone for ClusterDiscoveryPolicy

source§

fn clone(&self) -> ClusterDiscoveryPolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ClusterDiscoveryPolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ClusterDiscoveryPolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ClusterDiscoveryPolicy

source§

fn eq(&self, other: &ClusterDiscoveryPolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for ClusterDiscoveryPolicy

source§

impl StructuralPartialEq for ClusterDiscoveryPolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for ClusterDiscoveryPolicy

source§

fn clone(&self) -> ClusterDiscoveryPolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ClusterDiscoveryPolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ClusterDiscoveryPolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ClusterDiscoveryPolicy

source§

fn eq(&self, other: &ClusterDiscoveryPolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for ClusterDiscoveryPolicy

source§

impl StructuralPartialEq for ClusterDiscoveryPolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/enum.ReconnectError.html b/docs/glommio/fred/types/enum.ReconnectError.html index f7436364..fac214d4 100644 --- a/docs/glommio/fred/types/enum.ReconnectError.html +++ b/docs/glommio/fred/types/enum.ReconnectError.html @@ -1,4 +1,4 @@ -ReconnectError in fred::types - Rust

Enum fred::types::ReconnectError

source ·
pub enum ReconnectError {
+ReconnectError in fred::types - Rust

Enum fred::types::ReconnectError

source ·
pub enum ReconnectError {
     ClusterDown,
     Loading,
     MasterDown,
@@ -19,8 +19,8 @@
 
§

NoReplicas

The NOREPLICAS prefix.

§

Custom(&'static str)

A case-sensitive prefix on an error message.

See the source for examples.

-

Trait Implementations§

source§

impl Clone for ReconnectError

source§

fn clone(&self) -> ReconnectError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ReconnectError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ReconnectError

source§

fn eq(&self, other: &ReconnectError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for ReconnectError

source§

impl StructuralPartialEq for ReconnectError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for ReconnectError

source§

fn clone(&self) -> ReconnectError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ReconnectError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ReconnectError

source§

fn eq(&self, other: &ReconnectError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for ReconnectError

source§

impl StructuralPartialEq for ReconnectError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/enum.ReconnectPolicy.html b/docs/glommio/fred/types/enum.ReconnectPolicy.html index 3c97791e..5e5f6686 100644 --- a/docs/glommio/fred/types/enum.ReconnectPolicy.html +++ b/docs/glommio/fred/types/enum.ReconnectPolicy.html @@ -1,4 +1,4 @@ -ReconnectPolicy in fred::types - Rust

Enum fred::types::ReconnectPolicy

source ·
pub enum ReconnectPolicy {
+ReconnectPolicy in fred::types - Rust

Enum fred::types::ReconnectPolicy

source ·
pub enum ReconnectPolicy {
     Constant {
         attempts: u32,
         max_attempts: u32,
@@ -25,24 +25,24 @@
 

Variants§

§

Constant

Wait a constant amount of time between reconnect attempts, in ms.

Fields

§attempts: u32
§max_attempts: u32
§delay: u32
§jitter: u32
§

Linear

Backoff reconnection attempts linearly, adding delay each time.

Fields

§attempts: u32
§max_attempts: u32
§max_delay: u32
§delay: u32
§jitter: u32
§

Exponential

Backoff reconnection attempts exponentially, multiplying the last delay by mult each time.

-

Fields

§attempts: u32
§max_attempts: u32
§min_delay: u32
§max_delay: u32
§mult: u32
§jitter: u32

Implementations§

source§

impl ReconnectPolicy

source

pub fn new_constant(max_attempts: u32, delay: u32) -> ReconnectPolicy

Create a new reconnect policy with a constant backoff.

-
source

pub fn new_linear( +

Fields

§attempts: u32
§max_attempts: u32
§min_delay: u32
§max_delay: u32
§mult: u32
§jitter: u32

Implementations§

source§

impl ReconnectPolicy

source

pub fn new_constant(max_attempts: u32, delay: u32) -> ReconnectPolicy

Create a new reconnect policy with a constant backoff.

+
source

pub fn new_linear( max_attempts: u32, max_delay: u32, delay: u32, ) -> ReconnectPolicy

Create a new reconnect policy with a linear backoff.

-
source

pub fn new_exponential( +

source

pub fn new_exponential( max_attempts: u32, min_delay: u32, max_delay: u32, mult: u32, ) -> ReconnectPolicy

Create a new reconnect policy with an exponential backoff.

-
source

pub fn set_jitter(&mut self, jitter_ms: u32)

Set the amount of jitter to add to each reconnect delay.

+
source

pub fn set_jitter(&mut self, jitter_ms: u32)

Set the amount of jitter to add to each reconnect delay.

Default: 50 ms

-
source

pub fn attempts(&self) -> u32

Read the number of reconnection attempts.

-
source

pub fn next_delay(&mut self) -> Option<u64>

Calculate the next delay, incrementing attempts in the process.

-

Trait Implementations§

source§

impl Clone for ReconnectPolicy

source§

fn clone(&self) -> ReconnectPolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ReconnectPolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ReconnectPolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ReconnectPolicy

source§

fn eq(&self, other: &ReconnectPolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for ReconnectPolicy

source§

impl StructuralPartialEq for ReconnectPolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source

pub fn attempts(&self) -> u32

Read the number of reconnection attempts.

+
source

pub fn next_delay(&mut self) -> Option<u64>

Calculate the next delay, incrementing attempts in the process.

+

Trait Implementations§

source§

impl Clone for ReconnectPolicy

source§

fn clone(&self) -> ReconnectPolicy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ReconnectPolicy

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ReconnectPolicy

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ReconnectPolicy

source§

fn eq(&self, other: &ReconnectPolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for ReconnectPolicy

source§

impl StructuralPartialEq for ReconnectPolicy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/enum.ServerConfig.html b/docs/glommio/fred/types/enum.ServerConfig.html index cfd8a7e3..86b99f31 100644 --- a/docs/glommio/fred/types/enum.ServerConfig.html +++ b/docs/glommio/fred/types/enum.ServerConfig.html @@ -1,4 +1,4 @@ -ServerConfig in fred::types - Rust

Enum fred::types::ServerConfig

source ·
pub enum ServerConfig {
+ServerConfig in fred::types - Rust

Enum fred::types::ServerConfig

source ·
pub enum ServerConfig {
     Centralized {
         server: Server,
     },
@@ -22,29 +22,29 @@
 
§service_name: String

The service name for primary/main instances.

§username: Option<String>
Available on crate feature sentinel-auth only.

An optional ACL username for the client to use when authenticating.

§password: Option<String>
Available on crate feature sentinel-auth only.

An optional password for the client to use when authenticating.

-

Implementations§

source§

impl ServerConfig

source

pub fn new_centralized<S>(host: S, port: u16) -> ServerConfig
where +

Implementations§

source§

impl ServerConfig

source

pub fn new_centralized<S>(host: S, port: u16) -> ServerConfig
where S: Into<String>,

Create a new centralized config with the provided host and port.

-
source

pub fn new_clustered<S>(hosts: Vec<(S, u16)>) -> ServerConfig
where +

source

pub fn new_clustered<S>(hosts: Vec<(S, u16)>) -> ServerConfig
where S: Into<String>,

Create a new clustered config with the provided set of hosts and ports.

Only one valid host in the cluster needs to be provided here. The client will use CLUSTER NODES to discover the other nodes.

-
source

pub fn new_sentinel<H, N>(hosts: Vec<(H, u16)>, service_name: N) -> ServerConfig
where +

source

pub fn new_sentinel<H, N>(hosts: Vec<(H, u16)>, service_name: N) -> ServerConfig
where H: Into<String>, N: Into<String>,

Create a new sentinel config with the provided set of hosts and the name of the service.

This library will connect using the details from the Redis documentation.

-
source

pub fn default_centralized() -> ServerConfig

Create a centralized config with default settings for a local deployment.

-
source

pub fn default_clustered() -> ServerConfig

Create a clustered config with the same defaults as specified in the create-cluster script provided by Redis.

-
source

pub fn is_clustered(&self) -> bool

Whether the config uses a clustered deployment.

-
source

pub fn is_sentinel(&self) -> bool

Whether the config is for a centralized server behind a sentinel node(s).

-
source

pub fn is_centralized(&self) -> bool

Whether the config is for a centralized server.

-
source

pub fn is_unix_socket(&self) -> bool

Whether the config uses a Unix socket.

-
source

pub fn hosts(&self) -> Vec<Server>

Read the server hosts or sentinel hosts if using the sentinel interface.

-
source

pub fn set_cluster_discovery_policy( +

source

pub fn default_centralized() -> ServerConfig

Create a centralized config with default settings for a local deployment.

+
source

pub fn default_clustered() -> ServerConfig

Create a clustered config with the same defaults as specified in the create-cluster script provided by Redis.

+
source

pub fn is_clustered(&self) -> bool

Whether the config uses a clustered deployment.

+
source

pub fn is_sentinel(&self) -> bool

Whether the config is for a centralized server behind a sentinel node(s).

+
source

pub fn is_centralized(&self) -> bool

Whether the config is for a centralized server.

+
source

pub fn is_unix_socket(&self) -> bool

Whether the config uses a Unix socket.

+
source

pub fn hosts(&self) -> Vec<Server>

Read the server hosts or sentinel hosts if using the sentinel interface.

+
source

pub fn set_cluster_discovery_policy( &mut self, new_policy: ClusterDiscoveryPolicy, ) -> Result<(), RedisError>

Set the ClusterDiscoveryPolicy, if possible.

-

Trait Implementations§

source§

impl Clone for ServerConfig

source§

fn clone(&self) -> ServerConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ServerConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ServerConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ServerConfig

source§

fn eq(&self, other: &ServerConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for ServerConfig

source§

impl StructuralPartialEq for ServerConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for ServerConfig

source§

fn clone(&self) -> ServerConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ServerConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ServerConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ServerConfig

source§

fn eq(&self, other: &ServerConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for ServerConfig

source§

impl StructuralPartialEq for ServerConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/struct.BackpressureConfig.html b/docs/glommio/fred/types/struct.BackpressureConfig.html index 01c861eb..2e18a819 100644 --- a/docs/glommio/fred/types/struct.BackpressureConfig.html +++ b/docs/glommio/fred/types/struct.BackpressureConfig.html @@ -1,4 +1,4 @@ -BackpressureConfig in fred::types - Rust

Struct fred::types::BackpressureConfig

source ·
pub struct BackpressureConfig {
+BackpressureConfig in fred::types - Rust

Struct fred::types::BackpressureConfig

source ·
pub struct BackpressureConfig {
     pub disable_auto_backpressure: bool,
     pub max_in_flight_commands: u64,
     pub policy: BackpressurePolicy,
@@ -11,8 +11,8 @@
 

Default: 10_000

§policy: BackpressurePolicy

The backpressure policy to apply when the max number of in-flight commands is reached.

Default: Drain.

-

Trait Implementations§

source§

impl Clone for BackpressureConfig

source§

fn clone(&self) -> BackpressureConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BackpressureConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BackpressureConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for BackpressureConfig

source§

fn eq(&self, other: &BackpressureConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for BackpressureConfig

source§

impl StructuralPartialEq for BackpressureConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for BackpressureConfig

source§

fn clone(&self) -> BackpressureConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BackpressureConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BackpressureConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for BackpressureConfig

source§

fn eq(&self, other: &BackpressureConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for BackpressureConfig

source§

impl StructuralPartialEq for BackpressureConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/struct.ConnectionConfig.html b/docs/glommio/fred/types/struct.ConnectionConfig.html index 6ef9a6dd..d8ee4072 100644 --- a/docs/glommio/fred/types/struct.ConnectionConfig.html +++ b/docs/glommio/fred/types/struct.ConnectionConfig.html @@ -1,4 +1,4 @@ -ConnectionConfig in fred::types - Rust

Struct fred::types::ConnectionConfig

source ·
pub struct ConnectionConfig {
Show 15 fields +ConnectionConfig in fred::types - Rust

Struct fred::types::ConnectionConfig

source ·
pub struct ConnectionConfig {
Show 15 fields pub connection_timeout: Duration, pub internal_command_timeout: Duration, pub cluster_cache_update_delay: Duration, @@ -48,8 +48,8 @@

May cause a panic if spawn_local_into fails.

§connection_task_queue: Option<TaskQueueHandle>
Available on crate feature glommio only.

The task queue onto which connection reader tasks will be spawned.

May cause a panic if spawn_local_into fails.

-

Trait Implementations§

source§

impl Clone for ConnectionConfig

source§

fn clone(&self) -> ConnectionConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ConnectionConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ConnectionConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ConnectionConfig

source§

fn eq(&self, other: &ConnectionConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for ConnectionConfig

source§

impl StructuralPartialEq for ConnectionConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for ConnectionConfig

source§

fn clone(&self) -> ConnectionConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ConnectionConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ConnectionConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for ConnectionConfig

source§

fn eq(&self, other: &ConnectionConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for ConnectionConfig

source§

impl StructuralPartialEq for ConnectionConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/struct.Options.html b/docs/glommio/fred/types/struct.Options.html index 0c0f666a..ab24880b 100644 --- a/docs/glommio/fred/types/struct.Options.html +++ b/docs/glommio/fred/types/struct.Options.html @@ -1,4 +1,4 @@ -Options in fred::types - Rust

Struct fred::types::Options

source ·
pub struct Options {
+Options in fred::types - Rust

Struct fred::types::Options

source ·
pub struct Options {
     pub max_attempts: Option<u32>,
     pub max_redirections: Option<u32>,
     pub timeout: Option<Duration>,
@@ -43,9 +43,9 @@
 storage layer rather than wait for a reconnection delay.

Default: false

§caching: Option<bool>
Available on crate feature i-tracking only.

Whether to send CLIENT CACHING yes|no before the command.

-

Implementations§

source§

impl Options

source

pub fn extend(&mut self, other: &Self) -> &mut Self

Set the non-null values from other onto self.

-

Trait Implementations§

source§

impl Clone for Options

source§

fn clone(&self) -> Options

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Options

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Options

source§

fn default() -> Options

Returns the “default value” for a type. Read more
source§

impl PartialEq for Options

source§

fn eq(&self, other: &Options) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for Options

source§

impl StructuralPartialEq for Options

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Implementations§

source§

impl Options

source

pub fn extend(&mut self, other: &Self) -> &mut Self

Set the non-null values from other onto self.

+

Trait Implementations§

source§

impl Clone for Options

source§

fn clone(&self) -> Options

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Options

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Options

source§

fn default() -> Options

Returns the “default value” for a type. Read more
source§

impl PartialEq for Options

source§

fn eq(&self, other: &Options) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for Options

source§

impl StructuralPartialEq for Options

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/struct.PerformanceConfig.html b/docs/glommio/fred/types/struct.PerformanceConfig.html index 8d925678..54c2e9fd 100644 --- a/docs/glommio/fred/types/struct.PerformanceConfig.html +++ b/docs/glommio/fred/types/struct.PerformanceConfig.html @@ -1,4 +1,4 @@ -PerformanceConfig in fred::types - Rust

Struct fred::types::PerformanceConfig

source ·
pub struct PerformanceConfig {
+PerformanceConfig in fred::types - Rust

Struct fred::types::PerformanceConfig

source ·
pub struct PerformanceConfig {
     pub auto_pipeline: bool,
     pub backpressure: BackpressureConfig,
     pub default_command_timeout: Duration,
@@ -23,8 +23,8 @@
 
§blocking_encode_threshold: usize
Available on crate feature blocking-encoding only.

The minimum size, in bytes, of frames that should be encoded or decoded with a blocking task.

See block_in_place for more information.

Default: 50_000_000

-

Trait Implementations§

source§

impl Clone for PerformanceConfig

source§

fn clone(&self) -> PerformanceConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PerformanceConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PerformanceConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for PerformanceConfig

source§

fn eq(&self, other: &PerformanceConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Eq for PerformanceConfig

source§

impl StructuralPartialEq for PerformanceConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for PerformanceConfig

source§

fn clone(&self) -> PerformanceConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PerformanceConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PerformanceConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for PerformanceConfig

source§

fn eq(&self, other: &PerformanceConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Eq for PerformanceConfig

source§

impl StructuralPartialEq for PerformanceConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where diff --git a/docs/glommio/fred/types/struct.RedisConfig.html b/docs/glommio/fred/types/struct.RedisConfig.html index 4279f77a..0fe18778 100644 --- a/docs/glommio/fred/types/struct.RedisConfig.html +++ b/docs/glommio/fred/types/struct.RedisConfig.html @@ -1,4 +1,4 @@ -RedisConfig in fred::types - Rust

Struct fred::types::RedisConfig

source ·
pub struct RedisConfig {
+RedisConfig in fred::types - Rust

Struct fred::types::RedisConfig

source ·
pub struct RedisConfig {
     pub fail_fast: bool,
     pub blocking: Blocking,
     pub username: Option<String>,
@@ -53,10 +53,10 @@
 

Default: None

When used with the sentinel-auth feature this interface will take precedence over all username and password fields for both sentinel nodes and Redis servers.

-

Implementations§

source§

impl RedisConfig

source

pub fn uses_tls(&self) -> bool

Whether the client uses TLS.

-
source

pub fn uses_native_tls(&self) -> bool

Whether the client uses a native-tls connector.

-
source

pub fn uses_rustls(&self) -> bool

Whether the client uses a rustls connector.

-
source

pub fn from_url(url: &str) -> Result<RedisConfig, RedisError>

Parse a URL string into a RedisConfig.

+

Implementations§

source§

impl RedisConfig

source

pub fn uses_tls(&self) -> bool

Whether the client uses TLS.

+
source

pub fn uses_native_tls(&self) -> bool

Whether the client uses a native-tls connector.

+
source

pub fn uses_rustls(&self) -> bool

Whether the client uses a rustls connector.

+
source

pub fn from_url(url: &str) -> Result<RedisConfig, RedisError>

Parse a URL string into a RedisConfig.

§URL Syntax

Centralized

redis|rediss :// [[username:]password@] host [:port][/database]
@@ -103,7 +103,7 @@ 
§Q

See the from_url_centralized, from_url_clustered, from_url_sentinel, and from_url_unix for more information. Or see the RedisConfig unit tests for examples.

-
source

pub fn from_url_centralized(url: &str) -> Result<RedisConfig, RedisError>

Create a centralized RedisConfig struct from a URL.

+
source

pub fn from_url_centralized(url: &str) -> Result<RedisConfig, RedisError>

Create a centralized RedisConfig struct from a URL.

redis://username:password@foo.com:6379/1
 rediss://username:password@foo.com:6379/1
 redis://foo.com:6379/1
@@ -118,7 +118,7 @@ 
§Q
  • The port field is optional in this context. If it is not specified then 6379 will be used.
  • Any node or sentinel query parameters will be ignored.
  • -
    source

    pub fn from_url_clustered(url: &str) -> Result<RedisConfig, RedisError>

    Create a clustered RedisConfig struct from a URL.

    +
    source

    pub fn from_url_clustered(url: &str) -> Result<RedisConfig, RedisError>

    Create a clustered RedisConfig struct from a URL.

    redis-cluster://username:password@foo.com:30001?node=bar.com:30002&node=baz.com:30003
     rediss-cluster://username:password@foo.com:30001?node=bar.com:30002&node=baz.com:30003
     rediss://foo.com:30001?node=bar.com:30002&node=baz.com:30003
    @@ -135,7 +135,7 @@ 
    §Q
  • Any node query parameters will be used to find other known cluster nodes.
  • Any sentinel query parameters will be ignored.
  • -
    source

    pub fn from_url_sentinel(url: &str) -> Result<RedisConfig, RedisError>

    Create a sentinel RedisConfig struct from a URL.

    +
    source

    pub fn from_url_sentinel(url: &str) -> Result<RedisConfig, RedisError>

    Create a sentinel RedisConfig struct from a URL.

    redis-sentinel://username:password@foo.com:6379/1?sentinelServiceName=fakename&node=foo.com:30001&node=bar.com:30002
     rediss-sentinel://username:password@foo.com:6379/0?sentinelServiceName=fakename&node=foo.com:30001&node=bar.com:30002
     redis://foo.com:6379?sentinelServiceName=fakename
    @@ -161,8 +161,8 @@ 
    §Q

    The above example will use ("username1", "password1") when authenticating to the backing Redis servers, and ("username2", "password2") when initially connecting to the sentinel nodes. Additionally, all 3 addresses (foo.com:26379, bar.com:26379, baz.com:26380) specify known sentinel nodes.

    -

    Trait Implementations§

    source§

    impl Clone for RedisConfig

    source§

    fn clone(&self) -> RedisConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RedisConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RedisConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for RedisConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for RedisConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for RedisConfig

    source§

    fn clone(&self) -> RedisConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RedisConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RedisConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for RedisConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for RedisConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/glommio/fred/types/struct.SentinelConfig.html b/docs/glommio/fred/types/struct.SentinelConfig.html index 92d10ae6..7a305472 100644 --- a/docs/glommio/fred/types/struct.SentinelConfig.html +++ b/docs/glommio/fred/types/struct.SentinelConfig.html @@ -1,4 +1,4 @@ -SentinelConfig in fred::types - Rust

    Struct fred::types::SentinelConfig

    source ·
    pub struct SentinelConfig {
    +SentinelConfig in fred::types - Rust

    Struct fred::types::SentinelConfig

    source ·
    pub struct SentinelConfig {
         pub host: String,
         pub port: u16,
         pub username: Option<String>,
    @@ -20,7 +20,7 @@
     

    Default: None

    §tracing: TracingConfig
    Available on crate feature partial-tracing only.

    Whether to enable tracing for this client.

    Default: false

    -

    Trait Implementations§

    source§

    impl Clone for SentinelConfig

    source§

    fn clone(&self) -> SentinelConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SentinelConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SentinelConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for SentinelConfig

    source§

    fn clone(&self) -> SentinelConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SentinelConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SentinelConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/glommio/fred/types/struct.TcpConfig.html b/docs/glommio/fred/types/struct.TcpConfig.html index b10e30a6..d245f9ec 100644 --- a/docs/glommio/fred/types/struct.TcpConfig.html +++ b/docs/glommio/fred/types/struct.TcpConfig.html @@ -1,4 +1,4 @@ -TcpConfig in fred::types - Rust

    Struct fred::types::TcpConfig

    source ·
    pub struct TcpConfig {
    +TcpConfig in fred::types - Rust

    Struct fred::types::TcpConfig

    source ·
    pub struct TcpConfig {
         pub nodelay: Option<bool>,
         pub linger: Option<Duration>,
         pub ttl: Option<u32>,
    @@ -8,8 +8,8 @@
     
    §linger: Option<Duration>

    Set the SO_LINGER value.

    §ttl: Option<u32>

    Set the IP_TTL value.

    §keepalive: Option<TcpKeepalive>

    Trait Implementations§

    source§

    impl Clone for TcpConfig

    source§

    fn clone(&self) -> TcpConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TcpConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TcpConfig

    source§

    fn default() -> TcpConfig

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TcpConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for TcpConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for TcpConfig

    source§

    fn clone(&self) -> TcpConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TcpConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TcpConfig

    source§

    fn default() -> TcpConfig

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TcpConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for TcpConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/glommio/fred/types/struct.TracingConfig.html b/docs/glommio/fred/types/struct.TracingConfig.html index cc5f451e..45a4c883 100644 --- a/docs/glommio/fred/types/struct.TracingConfig.html +++ b/docs/glommio/fred/types/struct.TracingConfig.html @@ -1,4 +1,4 @@ -TracingConfig in fred::types - Rust

    Struct fred::types::TracingConfig

    source ·
    pub struct TracingConfig {
    +TracingConfig in fred::types - Rust

    Struct fred::types::TracingConfig

    source ·
    pub struct TracingConfig {
         pub enabled: bool,
         pub default_tracing_level: Level,
         pub full_tracing_level: Level,
    @@ -9,7 +9,7 @@
     

    Default: INFO

    §full_tracing_level: Level
    Available on crate feature full-tracing only.

    Set the tracing::Level of spans under full-tracing feature.

    Default: DEBUG

    -

    Implementations§

    source§

    impl TracingConfig

    source

    pub fn new(enabled: bool) -> Self

    Trait Implementations§

    source§

    impl Clone for TracingConfig

    source§

    fn clone(&self) -> TracingConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TracingConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TracingConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Implementations§

    source§

    impl TracingConfig

    source

    pub fn new(enabled: bool) -> Self

    Trait Implementations§

    source§

    impl Clone for TracingConfig

    source§

    fn clone(&self) -> TracingConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TracingConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TracingConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/glommio/fred/types/struct.UnresponsiveConfig.html b/docs/glommio/fred/types/struct.UnresponsiveConfig.html index 56eef6c0..3e83d627 100644 --- a/docs/glommio/fred/types/struct.UnresponsiveConfig.html +++ b/docs/glommio/fred/types/struct.UnresponsiveConfig.html @@ -1,4 +1,4 @@ -UnresponsiveConfig in fred::types - Rust

    Struct fred::types::UnresponsiveConfig

    source ·
    pub struct UnresponsiveConfig {
    +UnresponsiveConfig in fred::types - Rust

    Struct fred::types::UnresponsiveConfig

    source ·
    pub struct UnresponsiveConfig {
         pub max_timeout: Option<Duration>,
         pub interval: Duration,
     }
    Expand description

    Configuration options used to detect potentially unresponsive connections.

    @@ -15,8 +15,8 @@
    §interval: Duration

    The frequency at which the client checks for unresponsive connections.

    This value should usually be less than half of max_timeout and always more than 1 ms.

    Default: 2 sec

    -

    Trait Implementations§

    source§

    impl Clone for UnresponsiveConfig

    source§

    fn clone(&self) -> UnresponsiveConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnresponsiveConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for UnresponsiveConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for UnresponsiveConfig

    source§

    fn eq(&self, other: &UnresponsiveConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for UnresponsiveConfig

    source§

    impl StructuralPartialEq for UnresponsiveConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for UnresponsiveConfig

    source§

    fn clone(&self) -> UnresponsiveConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnresponsiveConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for UnresponsiveConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for UnresponsiveConfig

    source§

    fn eq(&self, other: &UnresponsiveConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for UnresponsiveConfig

    source§

    impl StructuralPartialEq for UnresponsiveConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/glommio/fred/types/trait.CredentialProvider.html b/docs/glommio/fred/types/trait.CredentialProvider.html index 8ebd2967..dd88a788 100644 --- a/docs/glommio/fred/types/trait.CredentialProvider.html +++ b/docs/glommio/fred/types/trait.CredentialProvider.html @@ -1,4 +1,4 @@ -CredentialProvider in fred::types - Rust

    Trait fred::types::CredentialProvider

    source ·
    pub trait CredentialProvider: Debug + 'static {
    +CredentialProvider in fred::types - Rust

    Trait fred::types::CredentialProvider

    source ·
    pub trait CredentialProvider: Debug + 'static {
         // Required method
         fn fetch<'life0, 'life1, 'async_trait>(
             &'life0 self,
    @@ -11,12 +11,12 @@
         // Provided method
         fn refresh_interval(&self) -> Option<Duration> { ... }
     }
    Available on crate feature credential-provider only.
    Expand description

    A trait that can be used to override the credentials used in each AUTH or HELLO command.

    -

    Required Methods§

    source

    fn fetch<'life0, 'life1, 'async_trait>( +

    Required Methods§

    source

    fn fetch<'life0, 'life1, 'async_trait>( &'life0 self, server: Option<&'life1 Server>, ) -> Pin<Box<dyn Future<Output = Result<(Option<String>, Option<String>), RedisError>> + 'async_trait>>
    where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

    Read the username and password that should be used in the next AUTH or HELLO command.

    -

    Provided Methods§

    source

    fn refresh_interval(&self) -> Option<Duration>

    Configure the client to call fetch and send AUTH or HELLO on some interval.

    +

    Provided Methods§

    source

    fn refresh_interval(&self) -> Option<Duration>

    Configure the client to call fetch and send AUTH or HELLO on some interval.

    Implementors§

    \ No newline at end of file diff --git a/docs/glommio/search-index.js b/docs/glommio/search-index.js index 15169d4b..8950aca2 100644 --- a/docs/glommio/search-index.js +++ b/docs/glommio/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["fred",{"t":"DDCQCCQCCDCDDDDDCCFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPFGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKPKPPPPPKKKKPPKKKKKPKKKKPKKPPPKPKKIGKKPKPPKKKKKKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFKFONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNONNNNNNNNNNNNNNNNNNNFONNONNNOONNNNNNNNNHONNNNNNEEEEEEEEEEEEEEEEEEEEEEEPPPGGGPPPPPPPIPPPPPPPPPPPFGPPPPPPGPPPPGFPPPPPPPPGGGGGGPPGPGGFGFGGGPPPPIPPFPPPPPPPPPKPPPPPPPFSFPPPPPPPPPPPGPPPGPPPPPPGGPPPPPPPPPPGPKKFFFFFGPPFFPGFGGPFPFPPPPPKPPPPPGPPGPPPPFPPPFPPGPPPPPPPFIPIPPGGPPPPPPPPPPPPPPPPPFFPGPPPPPPPPPPPPFFFFFIIFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFGPPPRFPPPPPPPPPPPPPFPPGGFFFGGGGPPPFKPKIGIGPPPFPFGKPFGFFFFFFFGFFPPFGFPGPPGGPPPPPFFPPPPGGPPFPPPPPPPPPPPPGPPPPPPPPPFPPGFGGPGFPPFPPPPPPPPFFPPFGGGFIIPPPGFGGFPGNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNOOOONNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNONOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOONOOOOOOOOONNNNNNNNNOOOOONNOOOMNNNNOMNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOONNMOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNOONONNNNNNNNNNNNNNNNOMNNNNNNNNNNNNNNNONOOOONOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNOOOOONNOOOOOOOONNNNNNNNNNOOONOONOOMOOOOOOOOOOOOOOOOOONNOOONNNNNNNNNNNNNNNNNNNNNMNNNNNOOOOOOOOOOOOOOOOOONNNNNNNNNOOOOOOOOOOOOOOONOOOONNOOOONNONOOMMNNNNOOOOOOOOOOOONNNNNNNNOOONOOOOOOOOONNNNNMNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOSHHHHHHH","n":["bytes","bytes_utils","clients","cmd","error","interfaces","json_quote","mocks","monitor","native_tls","prelude","rustls","rustls_native_certs","serde_json","socket2","tracing","types","util","Pipeline","RedisClient","RedisPool","Replicas","SentinelClient","SubscriberClient","Transaction","WithOptions","active_connections","all","borrow","","","","","","","","borrow_mut","","","","","","","","client","clients","clone","","","","","","","clone_into","","","","","","","","clone_new","","clone_to_uninit","","","","","","","","cluster_node","connect","connect_pool","default","deref","","","","","","","","","deref_mut","","","","","","","","drop","","","","","","","","enable_heartbeat","eq","exec","fmt","","","","","","","","","force_reconnection","from","","","","","","","","from_clients","hash_slot","hscan","id","init","","","","","","","","","into","","","","","","","","last","","len","manage_subscriptions","new","","","","next","next_connected","nodes","options","pipeline","","prefer_connected","psubscribe","punsubscribe","quit","replicas","","reset","resubscribe_all","scan","scan_cluster","set_resolver","size","split_cluster","sscan","ssubscribe","subscribe","sunsubscribe","sync","to_client","to_owned","","","","","","","","to_string","tracked_channels","tracked_patterns","tracked_shard_channels","try_all","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","unsubscribe","unsubscribe_all","update_perf_config","vzip","","","","","","","","wait_for_connect","watch_before","watched_len","with_cluster_node","zscan","Auth","Backpressure","Canceled","Cluster","Config","IO","InvalidArgument","InvalidCommand","NotFound","Parse","Protocol","RedisError","RedisErrorKind","Replica","Sentinel","Timeout","Tls","Unknown","Url","borrow","","borrow_mut","","change_kind","clone","","clone_into","","clone_to_uninit","","deref","","deref_mut","","details","drop","","eq","","fmt","","","from","","","init","","into","","is_canceled","is_cluster","is_not_found","is_replica","kind","new","new_canceled","source","to_owned","","to_str","to_string","try_from","","try_into","","type_id","","vzip","","AclInterface","Array","AuthInterface","BigNumber","BlobError","BlobString","Boolean","ChunkedString","ClientInterface","ClientLike","ClusterInterface","ConfigInterface","Double","Err","EventInterface","FunctionInterface","GeoInterface","HashesInterface","HeartbeatInterface","Hello","HyperloglogInterface","KeysInterface","ListInterface","LuaInterface","Map","MemoryInterface","MetricsInterface","Null","Number","Ok","PubsubInterface","Push","RediSearchInterface","RedisJsonInterface","RedisResult","Resp3Frame","SentinelInterface","ServerInterface","Set","SetsInterface","SimpleError","SimpleString","SlowlogInterface","SortedSetsInterface","StreamsInterface","TimeSeriesInterface","TrackingInterface","TransactionInterface","VerbatimString","acl_cat","","acl_deluser","","acl_genpass","","acl_getuser","","acl_list","","acl_load","","acl_log_count","","acl_log_reset","","acl_save","","acl_setuser","","acl_users","","acl_whoami","","active_connections","","append","","auth","bgrewriteaof","","bgsave","","blmove","","blmpop","","blpop","","brpop","","brpoplpush","","bzmpop","","bzpopmax","","bzpopmin","","cached_cluster_state","","ckquorum","","client_caching","","client_config","","client_getname","","client_getredir","","client_id","","client_info","","client_kill","","client_list","","client_pause","","client_reconnect_policy","","client_reply","","client_setname","","client_tracking","","client_trackinginfo","","client_unblock","","client_unpause","","cluster_add_slots","","cluster_bumpepoch","","cluster_change_rx","cluster_count_failure_reports","","cluster_count_keys_in_slot","","cluster_del_slots","","cluster_failover","","cluster_flushslots","","cluster_forget","","cluster_get_keys_in_slot","","cluster_info","","cluster_keyslot","","cluster_meet","","cluster_myid","","cluster_nodes","","cluster_replicas","","cluster_replicate","","cluster_reset","","cluster_saveconfig","","cluster_set_config_epoch","","cluster_setslot","","cluster_slots","","command_queue_len","","config_get","","","","config_resetstat","","config_rewrite","","config_set","","","","connect","","connection_config","","connection_ids","","copy","","custom","","custom_raw","","dbsize","","decr","","decr_by","","del","","dump","","enable_heartbeat","error_rx","eval","","evalsha","","exists","","expire","","expire_at","","failover","","","","fcall","","fcall_ro","","flushall","","flushall_cluster","","flushconfig","","force_reconnection","","ft_aggregate","","ft_aliasadd","","ft_aliasdel","","ft_aliasupdate","","ft_alter","","ft_config_get","","ft_config_set","","ft_create","","ft_cursor_del","","ft_cursor_read","","ft_dictadd","","ft_dictdel","","ft_dictdump","","ft_dropindex","","ft_explain","","ft_info","","ft_list","","ft_search","","ft_spellcheck","","ft_sugadd","","ft_sugdel","","ft_sugget","","ft_suglen","","ft_syndump","","ft_synupdate","","ft_tagvals","","function_delete","","function_delete_cluster","","function_dump","","function_flush","","function_flush_cluster","","function_kill","","function_list","","function_load","","function_load_cluster","","function_restore","","function_restore_cluster","","function_stats","","geoadd","","geodist","","geohash","","geopos","","georadius","","georadiusbymember","","geosearch","","geosearchstore","","get","","get_master_addr_by_name","","getdel","","getrange","","getset","","has_reconnect_policy","","hdel","","hello","hexists","","hget","","hgetall","","hincrby","","hincrbyfloat","","hkeys","","hlen","","hmget","","hmset","","hrandfield","","hset","","hsetnx","","hstrlen","","hvals","","id","","incr","","incr_by","","incr_by_float","","info","","info_cache","","init","","invalidation_rx","","is_clustered","","is_connected","","is_pipelined","","json_arrappend","","json_arrindex","","json_arrinsert","","json_arrlen","","json_arrpop","","json_arrtrim","","json_clear","","json_debug_memory","","json_del","","json_get","","json_merge","","json_mget","","json_mset","","json_numincrby","","json_objkeys","","json_objlen","","json_resp","","json_set","","json_strappend","","json_strlen","","json_toggle","","json_type","","keyspace_event_rx","lastsave","","lcs","","lindex","","linsert","","llen","","lmove","","lmpop","","lpop","","lpos","","lpush","","lpushx","","lrange","","lrem","","lset","","ltrim","","master","","masters","","memory_doctor","","memory_malloc_stats","","memory_purge","","memory_stats","","memory_usage","","message_rx","mget","","monitor","","mset","","msetnx","","multi","","myid","","num_primary_cluster_nodes","","on_any","on_cluster_change","on_error","on_invalidation","","on_keyspace_event","on_message","on_reconnect","on_unresponsive","pending_scripts","","perf_config","","persist","","pexpire","","pexpire_at","","pfadd","","pfcount","","pfmerge","","ping","","protocol_version","","psubscribe","","pttl","","publish","","pubsub_channels","","pubsub_numpat","","pubsub_numsub","","pubsub_shardchannels","","pubsub_shardnumsub","","punsubscribe","","quit","","randomkey","","read_latency_metrics","","read_network_latency_metrics","","read_redelivery_count","","read_req_size_metrics","","read_res_size_metrics","","reconnect_rx","remove","","rename","","renamenx","","replicas","","reset","","restore","","rpop","","rpoplpush","","rpush","","rpushx","","sadd","","scard","","script_debug","","script_exists","","script_flush","","script_flush_cluster","","script_kill","","script_kill_cluster","","script_load","","script_load_cluster","","sdiff","","sdiffstore","","select","","sentinel_nodes","","sentinel_primary","","sentinels","","server_version","","set","","","","set_resolver","","setrange","","shutdown","","simulate_failure","","sinter","","sinterstore","","sismember","","slowlog_get","","slowlog_length","","slowlog_reset","","smembers","","smismember","","smove","","sort","","sort_ro","","spawn_event_listener","spop","","spublish","","srandmember","","srem","","ssubscribe","","start_tracking","","state","","stop_tracking","","strlen","","subscribe","","sunion","","sunionstore","","sunsubscribe","","sync_cluster","","take_latency_metrics","","take_network_latency_metrics","","take_redelivery_count","","take_req_size_metrics","","take_res_size_metrics","","ts_add","","ts_alter","","ts_create","","ts_createrule","","ts_decrby","","ts_del","","ts_deleterule","","ts_get","","ts_incrby","","ts_info","","ts_madd","","ts_mget","","ts_mrange","","ts_mrevrange","","ts_queryindex","","ts_range","","ts_revrange","","ttl","","unblock_self","","unlink","","unresponsive_rx","unsubscribe","","unwatch","","update_perf_config","","uses_sentinels","","wait","","wait_for_connect","","watch","","with_options","","xack","","xadd","","xautoclaim","","xautoclaim_values","","xclaim","","xclaim_values","","xdel","","xgroup_create","","xgroup_createconsumer","","xgroup_delconsumer","","xgroup_destroy","","xgroup_setid","","xinfo_consumers","","xinfo_groups","","xinfo_stream","","xlen","","xpending","","xrange","","xrange_values","","xread","","xread_map","","xreadgroup","","xreadgroup_map","","xrevrange","","xrevrange_values","","xtrim","","zadd","","zcard","","zcount","","zdiff","","zdiffstore","","zincrby","","zinter","","zinterstore","","zlexcount","","zmpop","","zmscore","","zpopmax","","zpopmin","","zrandmember","","zrange","","zrangebylex","","zrangebyscore","","zrangestore","","zrank","","zrem","","zremrangebylex","","zremrangebyrank","","zremrangebyscore","","zrevrange","","zrevrangebylex","","zrevrangebyscore","","zrevrank","","zscore","","zunion","","zunionstore","","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","Buffer","Echo","MockCommand","Mocks","SimpleMap","args","borrow","","","","borrow_mut","","","","clear","","clone","clone_into","clone_to_uninit","cmd","del","deref","","","","deref_mut","","","","drop","","","","eq","fmt","","","","from","","","","get","init","","","","inner","","into","","","","len","new","","pop_back","pop_front","process_command","","","","process_transaction","","push_back","push_front","set","subcommand","take","","to_owned","try_from","","","","try_into","","","","type_id","","","","vzip","","","","Command","args","borrow","borrow_mut","client","clone","clone_into","clone_to_uninit","command","db","deref","deref_mut","drop","eq","fmt","","from","init","into","run","timestamp","to_owned","to_string","try_from","try_into","type_id","vzip","Blocking","Builder","ConnectionConfig","Expiration","FromRedis","Options","PerformanceConfig","ReconnectPolicy","RedisClient","RedisConfig","RedisError","RedisErrorKind","RedisKey","RedisPool","RedisValue","RedisValueKind","Server","ServerConfig","SetOptions","TcpConfig","TlsConfig","TlsConnector","TracingConfig","Add","Addr","After","AggregateOperation","AggregateOptions","Aggregator","All","","","AllowCrossSlotKeys","AllowOOM","AllowStale","AlmostExact","Any","Append","Apply","Array","","","","Asc","Auto","Avg","","","BackpressureConfig","BackpressurePolicy","Before","BigNumber","BlobError","BlobString","Block","","Blocking","Boolean","","","","BucketTimestamp","Builder","Busy","ByLex","ByScore","Bytes","","","Centralized","ChunkedString","ClientKillFilter","ClientKillType","ClientPauseKind","ClientReplyFlag","ClientState","ClientUnblockFlag","Clients","Cluster","ClusterDiscoveryPolicy","ClusterDown","ClusterFailoverFlag","ClusterHash","ClusterInfo","ClusterResetFlag","ClusterRouting","ClusterSetSlotState","ClusterState","ClusterStateChange","Clustered","CommandStats","Compressed","ConfigEndpoint","ConnectHandle","Connected","Connecting","ConnectionConfig","Constant","Count","","","CountDistinct","CountDistinctIsh","Cpu","CrashAfterElection","CrashAfterPromotion","CredentialProvider","Custom","","","","","","","CustomCommand","DEFAULT_JITTER_MS","DatabaseMemoryStats","Default","DefaultHost","Desc","Disconnected","Disconnecting","Double","","","","","Drain","DuplicatePolicy","EX","EXAT","Earliest","Encoding","End","Error","","Exact","Exclude","Exclusive","Expiration","ExpireOptions","Exponential","Fail","Feet","Filter","First","","FirstKey","FirstValue","","Flush","FnPolicy","Force","FromRedis","FromRedisKey","FtAggregateOptions","FtAlterOptions","FtCreateOptions","FtSearchOptions","Function","FunctionFlag","GT","Geo","GeoPosition","GeoRadiusInfo","GeoShape","GeoUnit","GeoValue","GetLabels","GetTimestamp","GreaterThan","GroupBy","","HScanResult","Hard","Hash","","Hello","Help","HostMapping","ID","Importing","Include","Inclusive","Index","IndexKind","InfiniteLex","InfiniteScore","InfoKind","Integer","","","Interrupt","Invalidation","JSON","KEEPTTL","Keyspace","KeyspaceEvent","Kilometers","LAddr","LMoveDirection","LT","Last","","Latest","Left","LessThan","Lex","Library","Limit","","LimitCount","Linear","List","ListLocation","Load","Loading","Manual","Map","","","","Master","MasterDown","Max","","","","","","","MaxLen","Memory","MemoryStats","Message","","MessageKind","Meters","Mid","Migrating","Miles","Min","","","","","","MinID","Misconf","MultipleGeoValues","MultipleHashSlots","MultipleIDs","MultipleKeys","MultipleOrderedPairs","MultipleStrings","MultipleValues","MultipleWeights","MultipleZaddValues","NX","","Native","NegInfiniteScore","NegInfinityLex","NewInGroup","No","NoCluster","NoReplicas","NoSave","NoWrites","Node","None","","Normal","Now","Null","","","","Number","","Numeric","Off","","Offset","Ok","On","","Options","Ordering","PMessage","PX","PXAT","Page","PerformanceConfig","Persistence","Pubsub","Push","Quantile","Queued","","","RESP2","RESP3","Random","RandomSample","Range","","RangeAggregation","ReadOnly","Rebalance","ReconnectError","ReconnectPolicy","RedisConfig","RedisKey","RedisMap","RedisValue","RedisValueKind","Reducer","ReducerFunc","Remove","Replace","Replica","ReplicaConfig","ReplicaFilter","Replication","Resolve","Resp2TimeSeriesValues","Resp3Frame","Resp3TimeSeriesValues","RespVersion","Right","Rustls","SMessage","SScanResult","Save","ScanResult","ScanType","Scanner","Score","Script","ScriptDebugFlag","SearchField","SearchFilter","SearchGeoFilter","SearchHighlight","SearchParameter","SearchReducer","SearchSchema","SearchSchemaKind","SearchSortBy","SearchSummarize","SelectedLabels","Sentinel","SentinelConfig","SentinelFailureKind","Server","","ServerConfig","Set","","SetOptions","ShutdownFlags","SimpleError","SimpleString","Skip","SkipMe","Sleep","SlotRange","SlowlogEntry","Soft","Some","","SortBy","SortOrder","SpellcheckTerms","Stable","Start","Stats","","StdDev","StdP","","StdS","","Stream","String","","","","","StringOrNumber","Sum","","","","","Sync","TWA","Tag","Takeover","TcpConfig","Text","Timeout","Timestamp","TlsConfig","TlsConnector","TlsHostMapping","ToList","Toggle","TracingConfig","Type","Uncompressed","UnresponsiveConfig","UseCache","User","VarP","","VarS","","Vector","VerbatimString","Version","WithCursor","WithLabels","Write","XCap","XCapKind","XCapTrim","XID","XPendingArgs","XReadResponse","XReadValue","XX","","Yes","ZCmp","ZRange","ZRangeBound","ZRangeKind","ZScanResult","ZSet","ZSort","add_attributes","aggregation","alias","align","allocator_active","allocator_allocated","allocator_fragmentation_bytes","allocator_fragmentation_ratio","allocator_resident","allocator_rss_bytes","allocator_rss_ratio","aof_buffer","args","","array_len","as_bool","","as_bytes","","","as_bytes_str","","as_f64","as_functions","as_geo_position","as_i64","as_str","","","as_str_lossy","","as_string","as_u64","as_usize","attempts","attribute","","","","attributes","attributes_mut","auto_client_setname","auto_pipeline","avg","backpressure","blocking","","blocking_encode_threshold","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","broadcast_channel_capacity","bucket_duration","bucket_timestamp","build","","build_pool","build_sentinel_client","build_subscriber_client","caching","can_hash","channel","clients_normal","clients_slaves","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","cluster_cache_update_delay","cluster_current_epoch","cluster_hash","","","cluster_known_nodes","cluster_my_epoch","cluster_node","cluster_owner","cluster_size","cluster_slots_assigned","cluster_slots_fail","cluster_slots_ok","cluster_slots_pfail","cluster_state","cluster_stats_messages_received","cluster_stats_messages_sent","cmd","cmp","","","","","","","","cmp_precedence","connection_error_count","connection_task_queue","connection_timeout","connector","consumer","convert","","coordinates","count","","create_client","","","","","credential_provider","cursor","","","","","","database","dataset_bytes","dataset_percentage","db","","default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","default_centralized","","default_clustered","","default_command_timeout","default_native_tls","default_rustls","default_sleep","default_tracing_level","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","dialect","","disable_auto_backpressure","disable_cluster_health_check","distance","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","duration","empty","enabled","encode_len","end","","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","evalsha","evalsha_with_reload","expander","explainscore","extend","fail_fast","","fcall","fcall_ro","fetch","field_name","fields","","filter","","","","filters","find_key","flags","flatten_array_values","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fragmentation","fragmentation_bytes","frags","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_buffer","from_cluster_slots","from_code","from_config","from_hash","from_iter","","","","","","","from_key","","","from_lua","from_name","from_redis_value","from_static","","from_static_str","","","from_str","","from_url","from_url_centralized","from_url_clustered","from_url_sentinel","from_value","","","","","","","","full_tracing_level","func","functions","geofilters","get_config","get_connection_config","get_hash","","","","","","","","","","get_performance_config","get_policy","get_sentinel_config","get_server","groupby","has_more","","","","","hash","","","","","","","","","","","","hash_key","highlight","host","","hostnames","hosts","id","","identifier","idle","ignore_reconnection_errors","infields","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","inkeys","inner","","","","","","","","","inorder","internal_command_timeout","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_array","into_bytes","","into_bytes_str","into_geo_radius_result","into_integer","into_json","into_map","into_owned_bytes","into_set","into_string","","into_values","into_xautoclaim_values","into_xread_response","into_xread_value","into_zset_result","ip","is_aggregate_type","is_array","is_boolean","is_bytes","is_centralized","is_clustered","is_double","is_end_stream_frame","is_integer","is_map","is_maybe_map","is_normal_pubsub_message","is_null","is_ok","is_pattern_pubsub_message","is_queued","is_sentinel","is_shard_pubsub_message","is_string","is_unix_socket","keepalive","key","keys","keys_bytes_per_key","keys_count","kind","","","","","language","","language_field","latitude","lazy_connections","len","","","","","","","","","","","limit","linger","load","","longitude","lua","lua_caches","major","map","max","","max_attempts","max_command_attempts","max_command_buffer_len","max_feed_count","max_idle","max_in_flight_commands","max_redirections","","max_timeout","maxtextfields","member","","min","","minor","mocks","name","","","","","new","","","","","","","","","","new_centralized","new_clustered","new_constant","new_empty","new_end_stream","new_exponential","new_linear","new_ok","new_sentinel","new_static","new_with_tls","next","","","","","next_delay","no_backpressure","nocontent","nodelay","nofields","nofreqs","nohl","nooffsets","nostopwords","on","operation","options","order","overhead_hashtable_expires","overhead_hashtable_main","overhead_hashtable_slot_to_keys","overhead_total","params","","parse","partial_cmp","","","","","","","","password","","patch","payload","payload_field","peak_allocated","peak_percentage","pipeline","policy","port","","position","","pre","prefixes","pretty","primary","primary_fallback","property","radius","random_node","random_slot","range","reconnect_errors","reconnect_on_auth_error","reduce","refresh_interval","","replica","replicas","","replication_backlog","resolve","results","","","","","return","router_task_queue","rss_overhead_bytes","rss_overhead_ratio","samples","score","score_field","scorer","separator","server","","","set_cluster_discovery_policy","set_config","set_connection_config","set_jitter","set_performance_config","set_policy","set_sentinel_config","sha1","skipinitialscan","","slop","slots","sortby","start","","startup_allocated","stddev","stopwords","sum","summarize","tags","take","","","","take_attributes","take_results","","","","","tcp","temporary","timeout","","","timestamp","tls","","tls_server_name","to_byte","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_owned_frame","to_str","to_string","","","","","","","","total_allocated","tracing","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ttl","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","unique_hash_slots","unique_primary_nodes","units","unresponsive","username","","uses_native_tls","uses_rustls","uses_tls","value","","verbatim","","verbatim_string_format","version","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","with_config","with_connection_config","with_performance_config","with_sentinel_config","withcount","withpayloads","withscores","withsortkeys","expression","","fields","max","name","num","offset","properties","reducers","disable_backpressure_scaling","min_sleep_duration","attempts","","","delay","","jitter","","","max_attempts","","","max_delay","","min_delay","mult","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","arguments","casesensitive","name","noindex","","","","","","nostem","phonetic","separator","sortable","","","","unf","","","","weight","withsuffixtrie","","hosts","","password","policy","server","service_name","username","dictionary","","terms","","NONE","f64_to_redis_string","group_by_hash_slot","redis_keyslot","redis_string_to_f64","sha1_hash","static_bytes","static_str"],"q":[[0,"fred"],[18,"fred::clients"],[228,"fred::error"],[297,"fred::interfaces"],[1157,"fred::interfaces::Resp3Frame"],[1187,"fred::mocks"],[1274,"fred::monitor"],[1301,"fred::prelude"],[1324,"fred::types"],[4750,"fred::types::AggregateOperation"],[4759,"fred::types::BackpressurePolicy"],[4761,"fred::types::ReconnectPolicy"],[4776,"fred::types::Resp3Frame"],[4806,"fred::types::SearchSchemaKind"],[4829,"fred::types::ServerConfig"],[4836,"fred::types::SpellcheckTerms"],[4840,"fred::util"],[4848,"fred::clients::pool"],[4849,"fred::protocol::types"],[4850,"alloc::vec"],[4851,"core::result"],[4852,"core::future::future"],[4853,"fred::clients::pipeline"],[4854,"fred::glommio::interfaces"],[4855,"fred::modules::response"],[4856,"fred::clients::replica"],[4857,"fred::clients::redis"],[4858,"fred::clients::options"],[4859,"core::clone"],[4860,"fred::clients::sentinel"],[4861,"fred::clients::pubsub"],[4862,"fred::clients::transaction"],[4863,"core::option"],[4864,"core::time"],[4865,"core::fmt"],[4866,"fred::types::scan"],[4867,"futures_core::stream"],[4868,"fred::types::args"],[4869,"core::convert"],[4870,"bytes_utils::string"],[4871,"fred::types::config"],[4872,"std::collections::hash::map"],[4873,"fred::types::multiple"],[4874,"alloc::rc"],[4875,"alloc::string"],[4876,"alloc::collections::btree::set"],[4877,"core::any"],[4878,"serde_json::error"],[4879,"alloc::borrow"],[4880,"core::error"],[4881,"fred::commands::interfaces::acl"],[4882,"fred::commands::interfaces::keys"],[4883,"fred::commands::interfaces::server"],[4884,"fred::commands::interfaces::lists"],[4885,"fred::types::lists"],[4886,"fred::commands::interfaces::sorted_sets"],[4887,"fred::types::sorted_sets"],[4888,"fred::commands::interfaces::cluster"],[4889,"fred::commands::interfaces::sentinel"],[4890,"fred::commands::interfaces::client"],[4891,"fred::types::client"],[4892,"fred::types::misc"],[4893,"fred::types::cluster"],[4894,"fred::commands::interfaces::metrics"],[4895,"fred::commands::interfaces::config"],[4896,"fred::commands::interfaces::lua"],[4897,"fred::commands::interfaces::redisearch"],[4898,"fred::types::redisearch"],[4899,"bytes::bytes"],[4900,"fred::commands::interfaces::geo"],[4901,"fred::types::geo"],[4902,"fred::commands::interfaces::hashes"],[4903,"redis_protocol::resp3::types"],[4904,"fred::commands::interfaces::tracking"],[4905,"fred::commands::interfaces::redis_json"],[4906,"serde_json::value"],[4907,"fred::commands::interfaces::memory"],[4908,"core::net::ip_addr"],[4909,"fred::commands::interfaces::transactions"],[4910,"core::ops::function"],[4911,"fred::commands::interfaces::hyperloglog"],[4912,"fred::commands::interfaces::pubsub"],[4913,"fred::modules::metrics"],[4914,"fred::commands::interfaces::sets"],[4915,"semver"],[4916,"fred::commands::interfaces::slowlog"],[4917,"fred::commands::interfaces::timeseries"],[4918,"fred::types::timeseries"],[4919,"core::iter::traits::collect"],[4920,"fred::commands::interfaces::streams"],[4921,"fred::types::streams"],[4922,"core::hash"],[4923,"core::cmp"],[4924,"fred::modules::mocks"],[4925,"redis_protocol::error"],[4926,"fred::types::scripts"],[4927,"fred::types::builder"],[4928,"fred::protocol::hashers"],[4929,"fred::protocol::tls"],[4930,"fred::router::replicas"],[4931,"core::marker"],[4932,"alloc::boxed"],[4933,"core::pin"],[4934,"alloc::collections::vec_deque"],[4935,"tokio_native_tls"],[4936,"native_tls"],[4937,"rustls::client::client_conn"],[4938,"tokio_rustls"],[4939,"std::collections::hash::set"],[4940,"semver::parse"],[4941,"alloc::collections::btree::map"],[4942,"fred::modules"],[4943,"fred::utils"],[4944,"redis_protocol::utils"]],"i":"``````````````````````````bAb0B`2AlBdBfAjBh657432101757432106574321042657432100774655743210657432106574321070065744321076574321070406577432106574321067027432771541722774024477442221265743210422266574321065743210657432102276574321070044Gb0000000000``000000l1010010101010100101001001010100000000011001010101`Kn`00000````0Cf`````1````1``110`1``````1`11``````1Gl00000000000000000000000Ad0Hb0HfHh000Hj000000000Ib00000If0Ij0Il08800000000000000880000000000002222Jl33333333333333333333333333333333333333Kf0Kh04400000044;;;;33::;;;;88::::::::L`3Lb000<<<<<<66::Lf000>>>>77>>Lh000000000000000000000000000000000000000000000000000111111111111111111111111Mj000000000000000??99??????Ad0Nh0Hf111111111111111111111111111122Hb0000033==33O`0444444Od0000000000000000000000000000000000000000000=Hh033Hj0000000000000000000000000Ij000Ol000000000Jl77227777A@b033If022288222244<<999999A@h00000====A@j0;;00000000000000>>;;Kf000000000577<<<<7777<<88888888A@n000Lb0000000000000001111;;;;;;99Ad0??::00??00::222222AAj00000333333<<<<`3355333355??11??Hb066444466885555555555AB`00000000000000000000000000000000011Il022<88224444Hh0553355ACd000000000000000000000000000000000000000000000000000Ib00000000000000000000000000000000000000000000000000000000000B@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBh=<;:987654321500`````AEj0AElAEfAEh321010333313210321032103321032101321010321001000AEn3210011242144321432143214321`AF`00000000000000000`0000000```````````````````````JnInOj```JbNnAJ`AKh00AL``MhAJfKnGnAGhHdNdACjAIjABhALd``Oj999AH`ABd`;:98``AGnAEd0<;:AHl>``````Nn0`3````````10ABbAHj`AAn0`Ed=<;==4AAh0`AFhAFj:AIjAKdABfACb```;4Nd99KnGnAGfAGhHdAHb`AAd08`ALfAH`JhAL`MdAKn``EdAGjN`AJfABdABhAFh0AIjMh`K`````````A@fAKd``0````ADj`9`KbAKbEnKnAAh`InKdMdAKnAKl`00`GnAGhHdAH```KnEn``11JdInAHb``KbBBjAJ`AJf``KdALf`NnAIjABhALd10=GnAGfAGhHdEn`ADn8ABd87AA`9AKdK``1Jh````=``InABb`AHj2?>?>5Kn``ABlJb```````MlA@f;`````>`4ABnM`1AIf0000000AIhAIlHd:0:Df1011111;0101111EdAJhAJjAK`LlKn0EbE`A@l1DnKl3AAbNj74ADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnA@lADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfE`44AFfAAb111EjHdOnAIf04NjKnAFhAFjAFlAFnhAG`9AGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfEbAGlDfEjKl3312333333330AAbh4OhAKfAKhAFdAKj6AGd<AAbNj3AFhAFjAFlAFnhAG`On9AGdAGfDfNlAGhHdJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfAJlAJnAK`AKbEnAKfAKhAFdAKjIdADjAEdAKnAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAKf0Mb0EjDn1AFd0AMbM`AJlAJnAMh0AGdLn:AFh8HdAAb0NjKn4AFjAFlAFnh0AG`OnAGbIh>AGfDfNlAGh0?AFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAn0AIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKf0AKhAFd0AKj0IdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAIf0AJlAAbNjKn000A@lADnJj0000F`DbFfG`AE`0000ADlAFh0000AFjAFl0AFn0000h000AG`OnAGbIhAGdAGf000000000000000Df000000000000000000000000Nl00AGhHd000000000000000000000000000000000000AFfJ`InJbJdJf0ObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNf0N`AI`Mn000AIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFn0000000000000000000000AIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKl0000AKnAEb00000AL`ACl0ACf000ALbACh0ACj0000ADf00000ABbABdABf0ABhABl00ACb0ABn0ALdAC`0ALfKnIhAKjAFfAKfJjAE`ADlNlHdFnABlAD`Df49;AIb15AGf26AAbAKhDn000Af6:AGlNfAIdAIfAIhAHnAIlAKjMbAFf0=KnhDfHdOhAKfAKhAFd:888IhAC`ALlF`DbFfG`AAb?AFh?>=<;:9AKjAIb:MbhEfAFlAHlAGbAIhAInADfAGd9=NjKnA@lADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfMbJjAE`ADlDfNlMnFnAClACf9EbAHhAAbNjKnA@lADn?F`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfHdDf1111111101Fn2222AIh3333AHl04Kn555055051051AHfOhObAIf049OnM`AEbMbLn0NfAGd;JjAE`ADlIhNlMnFnAClACfAJl=AHfAKfLj>1AIfAAbB@`A@lAJhEjEb0E`AJbAHd34AHhLnAI`AIb:9=>?AJnKnDfNlHd3ALlF`DbFfG`EbLnEjLjMbAIhDnEfhNjAAb1KnAFhAFjAFlAFn7AG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfKnAKhAAb2hAGhAAnAKfAFdAKjAIfDnEf9Nj<>{{{d{Lh}}ceCdg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{El}}}Af}0{{{d{Lh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}Af}0{{{d{Lf}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Lf}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Dj}}}}0{{{d{Lf}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Lf}}Cd}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Lf}}Cd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}022{{{d{Lf}}{Bl{c}}Cd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Lf}}Cdc}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}000{{{d{Lf}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Mf}}}{{H`{Mh}}}Af}0{{{d{Lf}}ce}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Mf}}}{{H`{Mh}}}}066{{{d{Mj}}c{Bl{Ml}}Cde}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Mn}}}Af}0{{{d{Mj}}ceg{Bl{N`}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{Mj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{Mj}}ceHnN`CdCdCd{Bl{{Ld{DlNb}}}}{Bl{Nd}}{Bl{Df}}{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Nf}}}Af}0{{{d{Mj}}ceHnN`CdCdCd{Bl{{Ld{DlNb}}}}{Bl{Nd}}{Bl{Df}}{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Mj}}c{Bl{Hd}}{Bl{Nf}}{Bl{{Ld{HnN`}}}}{Bl{{Ld{HnHnN`}}}}{Bl{Nd}}{Bl{{Ld{DlNb}}}}CdCdCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Mj}}ce{Bl{Hd}}{Bl{Nf}}{Bl{{Ld{HnN`}}}}{Bl{{Ld{HnHnN`}}}}{Bl{Nd}}{Bl{{Ld{DlNb}}}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}011{{{d{Hb}}cC`C`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ad}}}Cd}0{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Hf}}Nj{Bl{{Ld{DjDj}}}}{Bl{Dj}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}000{{{d{Nh}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Nh}}ceI`}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Nh}}ceHn}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0222255{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{Nh}}c{Bl{{Ld{I`Cd}}}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}011{{{d{Nh}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{Hd}}}Af}06655{{{d{Ad}}}{{d{Gd}}}}0>>{{{d{Hb}}cI`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}cHn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ad}}{Bl{Nn}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bn}}}}}}}}}}0{{{d{O`}}}{{`{Ob}}}}0{{{d{Ad}}}Cd}00000{{{d{Od}}ce{j{g}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ceg{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ceI`{j{g}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}c{Bl{e}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}c{Bl{e}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}ceI`I`}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}02222{{{d{Od}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}c{Bl{e}}{Bl{g}}{Bl{i}}k}{{`{{A`{}{{f{{Cf{m}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{El}}}Af}0{{{d{Od}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{Dj}}}Af}0{{{d{Od}}{j{{Ld{ceg}}}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}022777777{{{d{Od}}ceg{Bl{Ml}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}c{Bl{e}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0996699{{{d{Jl}}}{{`{Oh}}}}{{{d{Hh}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Hb}}ceCdCd{Bl{I`}}Cd}{{`{{A`{}{{f{{n{gl}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}cI`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}cOjeg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{Hj}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ceHlHl}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}cHl{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Hj}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce{Bl{I`}}{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{Hj}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}cI`e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}00011{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ol}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}000{{{d{Ol}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}011{{{d{Ol}}c{Bl{Cn}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Jl}}}{{`{On}}}}{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ij}}cA@`ClCn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{H`{Nl}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{H`{Nl}}}Af}0{{{d{A@b}}}Bh}099{{{d{If}}}C`}0{{{d{Jl}}ceg}{{`{{Cf{Bj}}}}}{{A@d{l}{{f{{Cf{Bj}}}}}}}{{A@d{h}{{f{{Cf{Bj}}}}}}}{{A@d{{j{Jn}}}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{{j{Jn}}}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{l}{{f{{Cf{Bj}}}}}}}}{{{d{O`}}c}{{`{{Cf{Bj}}}}}{{A@d{Ob}{{f{{Cf{Bj}}}}}}}}0{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{Oh}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{On}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{h}{{f{{Cf{Bj}}}}}}}}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}E`}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}cI`{Bl{A@f}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}000{{{d{A@h}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@h}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@h}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}Nj}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}077{{{d{A@j}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Hd}}}Af}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{A@j}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{El}}}Af}0220044{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Kf}}}A@l}000{{{d{Kf}}}C`}01111{{{d{Jl}}}{{`{h}}}}{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Hb}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0001111{{{d{Hb}}cI`HdCdCd{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Lb}}AA`}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Lb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{El}}}Af}0{{{d{Lb}}Cd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}000{{{d{Lb}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}000{{{d{Lb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}000{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Hh}}Kj}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hh}}}{{Bl{{j{h}}}}}}0{{{d{Hh}}}{{Bl{h}}}}0{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Ad}}}{{Bl{AAb}}}}0{{{d{Hb}}ce{Bl{AAd}}{Bl{Ml}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ij}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Nl}}}Af}0{{{d{Ad}}{Fd{Fb}}}{{`{A`}}}}0{{{d{Hb}}cCne}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ad}}{Bl{AAf}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Ij}}AAh}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0<<;;{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{AAj}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{AAj}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{AAj}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@n}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Hj}}c{Bl{Dj}}{Bl{AAl}}e{Bl{Nd}}Cd{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{d{Hj}}c{Bl{Dj}}{Bl{AAl}}e{Bl{Nd}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{`{c}}e}{{`{{Cf{Bj}}}}}Bb{{A@d{c}{{f{{Cf{Bj}}}}}}}}{{{d{A@n}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{A@j}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Hd}}}Af}01166{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{O`}}cCdCdCdCd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{Ad}}}AAn}0{{{d{O`}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}044{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}066{{{d{If}}}{{`{{A`{}{{f{{n{Bjl}}}}}}}}}}0{{{d{Kf}}}A@l}000{{{d{Kf}}}C`}01111{{{d{AB`}}ceHn{Bl{Dl}}{Bl{ABb}}{Bl{Dl}}{Bl{ABd}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{ABf}}}{{H`{Nl}}}Af}0{{{d{AB`}}c{Bl{Dl}}{Bl{Dl}}{Bl{ABd}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}c{Bl{Dl}}{Bl{ABb}}{Bl{Dl}}{Bl{ABd}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}ce{Ld{ABhDl}}{Bl{Dl}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{AB`}}cHn{Bl{ABf}}{Bl{Dl}}Cd{Bl{Dl}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{AB`}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{AB`}}cCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}03300{{{d{AB`}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{ABj{}{{D`{{Ld{cABfHn}}}}}}}Af}0{{{d{AB`}}Cd{Bl{c}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{ABl}}}{{Dh{Dj}}}{{ABj{}{{D`{e}}}}}Af}0{{{d{AB`}}ceCdg{Bl{{Ld{I`I`}}}}{Bl{ABl}}{Bl{Dl}}{Bl{ABn}}k{Bl{AC`}}}{{`{{A`{}{{f{{Cf{m}}}}}}}}}{{H`{ACb}}}{{H`{ACb}}}{{ABj{}{{D`{I`}}}}}{{Dh{Dj}}}{{ABj{}{{D`{i}}}}}Af}000{{{d{AB`}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{ABj{}{{D`{c}}}}}Af}0{{{d{AB`}}cegCdi{Bl{{Ld{I`I`}}}}{Bl{Dl}}{Bl{ABn}}}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{H`{ACb}}}{{H`{ACb}}}{{ABj{}{{D`{I`}}}}}Af}000{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Il}}{Bl{Jh}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Jl}}}{{`{h}}}}{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{Hb}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Ad}}E`}Bj}0{{{d{Ad}}}Cd}0{{{d{Hh}}I`I`}{{`{{A`{}{{f{{n{cl}}}}}}}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Fn}}}}0{{{d{Ad}}{d{Ej}}}{{B`{Ad}}}}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACf}}}Af}0{{{d{ACd}}cCdegi}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{H`{ACh}}}{{Dh{ACj}}}{{H`{ACl}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}Cd}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}Cd}{{`{{A`{}{{f{{Cf{{Ld{Fh{j{{ACn{kmo}}}}}}}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACj}}}Af{AD`ADbADd}Af}0{{{d{ACd}}cegDli{Bl{Dl}}{Bl{Dl}}{Bl{Dl}}CdCd}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACf}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}{Bl{Dl}}{Bl{Dl}}CdCd}{{`{{A`{}{{f{{Cf{{j{{ACn{kmo}}}}}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACf}}}Af{AD`ADbADd}Af}0{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{d{ACd}}cegCd}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}Af}000{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}011{{{d{ACd}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{ACd}}cCd{Bl{Dl}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}011{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ADf}}}Af}0{{{d{ACd}}ceg{Bl{Dl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{ACd}}ceg{Bl{Dl}}}{{`{{A`{}{{f{{Cf{{j{{ACn{ikm}}}}}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af{AD`ADbADd}Af}0{{{d{ACd}}{Bl{Dl}}{Bl{Dl}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{ACf}}}Af}0{{{d{ACd}}{Bl{Dl}}{Bl{Dl}}ce}{{`{{A`{}{{f{{Cf{{ADh{gikm}}}}}}}}}}}{{Dh{Fn}}}{{Dh{ACf}}}{AD`ADbADd}Af{AD`ADbADd}Af}0{{{d{ACd}}ce{Bl{Dl}}{Bl{Dl}}Cdgi}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Fn}}}{{Dh{ACf}}}Af}0{{{d{ACd}}ce{Bl{Dl}}{Bl{Dl}}Cdgi}{{`{{A`{}{{f{{Cf{{ADh{kmoAa}}}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Fn}}}{{Dh{ACf}}}{AD`ADbADd}Af{AD`ADbADd}Af}05544{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{ACh}}}Af}0{{{d{Ib}}c{Bl{Ml}}{Bl{ADj}}CdCde}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{ADl}}}Af}0{{{d{Ib}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}cHnHn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}cCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Ib}}cHne}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ib}}ce{Bl{ADn}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{AE`}}}Af}0{{{d{Ib}}ceg{Bl{ADn}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}{{Dh{AE`}}}Af}0{{{d{Ib}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cId{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{Ib}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}000{{{d{Ib}}c{Bl{{Ld{I`Cd}}}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}ceg{Bl{AEd}}Cd{Bl{AAl}}Cd}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}ceg{Bl{AAl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cegCd{Bl{AAl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cegi{Bl{AEd}}Cd{Bl{AAl}}}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}07799{{{d{Ib}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0::{{{d{Ib}}cI`I`Cd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}055442222==<<````````````````````````````````````{d{{d{c}}}{}}000{{{d{Ah}}}{{d{Ahc}}}{}}000{{{d{AEf}}}Bj}{{{d{AEh}}}Bj}{{{d{AEj}}}AEj}{{d{d{Ahc}}}Bj{}}{dBj}`{{{d{AEf}}{j{Hd}}}{{n{Hdl}}}}{C`{{d{c}}}{}}000{C`{{d{Ahc}}}{}}000{C`Bj}000{{{d{AEj}}{d{AEj}}}Cd}{{{d{AEj}}{d{AhCh}}}Cj}{{{d{AEl}}{d{AhCh}}}Cj}{{{d{AEf}}{d{AhCh}}}Cj}{{{d{AEh}}{d{AhCh}}}Cj}{cc{}}0009{{}C`}000{{{d{AEf}}}{{Eh{DfHd}}}}{{{d{AEh}}}{{j{AEj}}}}{{}c{}}000{{{d{AEh}}}C`}{{}AEf}{{}AEh}{{{d{AEh}}}{{Bl{AEj}}}}0{{{d{AEn}}AEj}{{n{Hdl}}}}{{{d{AEl}}AEj}{{n{Hdl}}}}{{{d{AEf}}AEj}{{n{Hdl}}}}{{{d{AEh}}AEj}{{n{Hdl}}}}{{{d{AEn}}{j{AEj}}}{{n{Hdl}}}}0{{{d{AEh}}AEj}Bj}0{{{d{AEf}}{j{Hd}}}{{n{Hdl}}}}`=<{dc{}}{c{{n{e}}}{}{}}000{{}{{n{c}}}{}}000{dFl}000????``{d{{d{c}}}{}}{{{d{Ah}}}{{d{Ahc}}}{}}`{{{d{AF`}}}AF`}{{d{d{Ahc}}}Bj{}}{dBj}``{C`{{d{c}}}{}}{C`{{d{Ahc}}}{}}{C`Bj}{{{d{AF`}}{d{AF`}}}Cd}{{{d{AF`}}{d{AhCh}}}Cj}0{cc{}}{{}C`}{{}c{}}{Dn{{n{{`{{Dd{}{{D`{AF`}}}}}}l}}}}`{dc{}}{dFh}{c{{n{e}}}{}{}}{{}{{n{c}}}{}}{dFl}6``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{AhKn}}}{{n{BjAFb}}}}`````````````{{{d{Hd}}}{{Bl{C`}}}}{{{d{Kn}}}{{Bl{Cd}}}}{{{d{Hd}}}{{Bl{Cd}}}}{{{d{Kn}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{Df}}}{{d{{An{Kj}}}}}}{{{d{Hd}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{Df}}}{{Bl{Dj}}}}{{{d{Hd}}}{{Bl{Dj}}}}{{{d{Hd}}}{{Bl{Hn}}}}{{{d{Hd}}{d{Gd}}}{{n{{j{AFd}}l}}}}{{{d{Hd}}}{{n{{Bl{Nf}}l}}}}{{{d{Hd}}}{{Bl{I`}}}}{{{d{Kn}}}{{Bl{{d{Gd}}}}}}{{{d{Df}}}{{Bl{{d{Gd}}}}}}{{{d{Hd}}}{{Bl{{Gh{Gd}}}}}}{{{d{Df}}}{{Gh{Gd}}}}1{{{d{Hd}}}{{Bl{Fh}}}}{{{d{Hd}}}{{Bl{Dl}}}}{{{d{Hd}}}{{Bl{C`}}}}{{{d{Ed}}}Cn}````{{{d{Kn}}}{{Bl{d}}}}{{{d{AhKn}}}{{Bl{{d{Ah}}}}}}```````{d{{d{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ah}}}{{d{Ahc}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{AFf}}}{{n{All}}}}`{{{d{AFf}}C`}{{n{bl}}}}{{{d{AFf}}}{{n{Bdl}}}}{{{d{AFf}}}{{n{Bfl}}}}`{{{d{Hd}}}Cd}```{{{d{AAb}}}AAb}{{{d{Nj}}}Nj}{{{d{Kn}}}Kn}{{{d{AFh}}}AFh}{{{d{AFj}}}AFj}{{{d{AFl}}}AFl}{{{d{AFn}}}AFn}{{{d{h}}}h}{{{d{AG`}}}AG`}{{{d{On}}}On}{{{d{AGb}}}AGb}{{{d{Ih}}}Ih}{{{d{AGd}}}AGd}{{{d{AGf}}}AGf}{{{d{Df}}}Df}{{{d{Nl}}}Nl}{{{d{AGh}}}AGh}{{{d{Hd}}}Hd}{{{d{AFf}}}AFf}{{{d{J`}}}J`}{{{d{In}}}In}{{{d{Jb}}}Jb}{{{d{Jd}}}Jd}{{{d{Jf}}}Jf}{{{d{Ob}}}Ob}{{{d{AGj}}}AGj}{{{d{AGl}}}AGl}{{{d{K`}}}K`}{{{d{Kb}}}Kb}{{{d{Kd}}}Kd}{{{d{AGn}}}AGn}{{{d{Ed}}}Ed}{{{d{AH`}}}AH`}{{{d{AHb}}}AHb}{{{d{AHd}}}AHd}{{{d{AHf}}}AHf}{{{d{AHh}}}AHh}{{{d{AHj}}}AHj}{{{d{Eb}}}Eb}{{{d{E`}}}E`}{{{d{Dn}}}Dn}{{{d{AHl}}}AHl}{{{d{AHn}}}AHn}{{{d{Ef}}}Ef}{{{d{Ej}}}Ej}{{{d{Nf}}}Nf}{{{d{N`}}}N`}{{{d{AI`}}}AI`}{{{d{Mn}}}Mn}{{{d{AIb}}}AIb}{{{d{Hl}}}Hl}{{{d{Oj}}}Oj}{{{d{AAf}}}AAf}{{{d{Oh}}}Oh}{{{d{Nn}}}Nn}{{{d{Kl}}}Kl}{{{d{Jn}}}Jn}{{{d{Ml}}}Ml}{{{d{A@f}}}A@f}{{{d{AAd}}}AAd}{{{d{AAn}}}AAn}{{{d{AId}}}AId}{{{d{AIf}}}AIf}{{{d{AIh}}}AIh}{{{d{AA`}}}AA`}{{{d{AAh}}}AAh}{{{d{Nd}}}Nd}{{{d{Mh}}}Mh}{{{d{Jh}}}Jh}{{{d{Fn}}}Fn}{{{d{AIj}}}AIj}{{{d{AIl}}}AIl}{{{d{AIn}}}AIn}{{{d{AJ`}}}AJ`}{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{{d{AJf}}}AJf}{{{d{Lj}}}Lj}{{{d{AJh}}}AJh}{{{d{AJj}}}AJj}{{{d{AJl}}}AJl}{{{d{AJn}}}AJn}{{{d{AK`}}}AK`}{{{d{Mb}}}Mb}{{{d{AKb}}}AKb}{{{d{Ln}}}Ln}{{{d{AKd}}}AKd}{{{d{M`}}}M`}{{{d{Ll}}}Ll}{{{d{Md}}}Md}{{{d{En}}}En}{{{d{AKf}}}AKf}{{{d{AKh}}}AKh}{{{d{AFd}}}AFd}{{{d{AKj}}}AKj}{{{d{Id}}}Id}{{{d{ADj}}}ADj}{{{d{AEd}}}AEd}{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{AEb}}}AEb}{{{d{AL`}}}AL`}{{{d{ACl}}}ACl}{{{d{ACf}}}ACf}{{{d{ALb}}}ALb}{{{d{ACh}}}ACh}{{{d{ACj}}}ACj}{{{d{ADf}}}ADf}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{ABf}}}ABf}{{{d{ABh}}}ABh}{{{d{ABl}}}ABl}{{{d{ACb}}}ACb}{{{d{ABn}}}ABn}{{{d{ALd}}}ALd}{{{d{AC`}}}AC`}{{{d{ALf}}}ALf}{{d{d{Ahc}}}Bj{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dBj}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``{{{d{Df}}}Cl}`````{{{d{Df}}{d{c}}}{{Bl{h}}}Ad}`````````{{{d{AAb}}{d{AAb}}}ALh}{{{d{h}}{d{h}}}ALh}{{{d{Df}}{d{Df}}}ALh}{{{d{Oh}}{d{Oh}}}ALh}{{{d{AKf}}{d{AKf}}}ALh}{{{d{AKh}}{d{AKh}}}ALh}{{{d{AFd}}{d{AFd}}}ALh}{{{d{AKj}}{d{AKj}}}ALh}7`````{Df{{n{cl}}}AD`}{Hd{{n{cl}}}Af}```{{{d{{ALl{}{{ALj{c}}}}}}}Al{}}{{{d{F`}}}Al}{{{d{Db}}}Al}{{{d{Ff}}}Al}{{{d{G`}}}Al}`{{{d{{ALl{}{{ALj{c}}}}}}}{{Bl{{Gh{Gd}}}}}{}}{{{d{F`}}}{{Bl{{Gh{Gd}}}}}}{{{d{Db}}}{{Bl{{Gh{Gd}}}}}}{{{d{Ff}}}{{Bl{{Gh{Gd}}}}}}{{{d{G`}}}{{Bl{{Gh{Gd}}}}}}``````{{}AFh}{{}AGd}{{}AFf}{{}AGj}{{}AGl}{{}Ed}{{}AH`}{{}AHb}{{}AHd}{{}AHf}{{}AHh}{{}AHj}{{}Eb}{{}E`}{{}Dn}{{}AHl}{{}AHn}{{}Ef}{{}Ej}{{}AIb}{{}AId}{{}AIf}{{}Mh}{{}Lj}{{}AJl}{{}AJn}{{}Mb}{{}Ln}{{}AKn}{{}ABf}{{}AFf}?0?`{{}{{n{AFnl}}}}0{{}AHb}`{C`{{d{c}}}{}}000000000000000000000000{{{d{Nl}}}{{d{c}}}{}}111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111{C`{{d{Ahc}}}{}}00000000000000000000000{{{d{AhNl}}}{{d{Ahc}}}{}}1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111`````{C`Bj}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{Kn}}}C`}``{{{d{AAb}}{d{AAb}}}Cd}{{{d{Nj}}{d{Nj}}}Cd}{{{d{Kn}}{d{Kn}}}Cd}{{{d{AFh}}{d{AFh}}}Cd}{{{d{AFj}}{d{AFj}}}Cd}{{{d{AFl}}{d{AFl}}}Cd}{{{d{AFn}}{d{AFn}}}Cd}{{{d{h}}{d{h}}}Cd}{{{d{AG`}}{d{AG`}}}Cd}{{{d{On}}{d{On}}}Cd}{{{d{AGb}}{d{AGb}}}Cd}{{{d{AGd}}{d{AGd}}}Cd}{{{d{AGf}}{d{AGf}}}Cd}{{{d{Df}}{d{Df}}}Cd}{{{d{Nl}}{d{Nl}}}Cd}{{{d{AGh}}{d{AGh}}}Cd}{{{d{Hd}}{d{Hd}}}Cd}{{{d{J`}}{d{J`}}}Cd}{{{d{In}}{d{In}}}Cd}{{{d{Jb}}{d{Jb}}}Cd}{{{d{Jd}}{d{Jd}}}Cd}{{{d{Jf}}{d{Jf}}}Cd}{{{d{Ob}}{d{Ob}}}Cd}{{{d{AGj}}{d{AGj}}}Cd}{{{d{AGl}}{d{AGl}}}Cd}{{{d{K`}}{d{K`}}}Cd}{{{d{Kb}}{d{Kb}}}Cd}{{{d{Kd}}{d{Kd}}}Cd}{{{d{AGn}}{d{AGn}}}Cd}{{{d{Ed}}{d{Ed}}}Cd}{{{d{AH`}}{d{AH`}}}Cd}{{{d{AHb}}{d{AHb}}}Cd}{{{d{AHd}}{d{AHd}}}Cd}{{{d{AHf}}{d{AHf}}}Cd}{{{d{AHh}}{d{AHh}}}Cd}{{{d{AHj}}{d{AHj}}}Cd}{{{d{Eb}}{d{Eb}}}Cd}{{{d{E`}}{d{E`}}}Cd}{{{d{Dn}}{d{Dn}}}Cd}{{{d{AHl}}{d{AHl}}}Cd}{{{d{Ej}}{d{Ej}}}Cd}{{{d{Nf}}{d{Nf}}}Cd}{{{d{N`}}{d{N`}}}Cd}{{{d{AI`}}{d{AI`}}}Cd}{{{d{Mn}}{d{Mn}}}Cd}{{{d{AIb}}{d{AIb}}}Cd}{{{d{Hl}}{d{Hl}}}Cd}{{{d{Oj}}{d{Oj}}}Cd}{{{d{AAf}}{d{AAf}}}Cd}{{{d{Oh}}{d{Oh}}}Cd}{{{d{Nn}}{d{Nn}}}Cd}{{{d{Kl}}{d{Kl}}}Cd}{{{d{Jn}}{d{Jn}}}Cd}{{{d{Ml}}{d{Ml}}}Cd}{{{d{A@f}}{d{A@f}}}Cd}{{{d{AAd}}{d{AAd}}}Cd}{{{d{AAn}}{d{AAn}}}Cd}{{{d{AId}}{d{AId}}}Cd}{{{d{AIf}}{d{AIf}}}Cd}{{{d{AIh}}{d{AIh}}}Cd}{{{d{AA`}}{d{AA`}}}Cd}{{{d{AAh}}{d{AAh}}}Cd}{{{d{Nd}}{d{Nd}}}Cd}{{{d{Mh}}{d{Mh}}}Cd}{{{d{Jh}}{d{Jh}}}Cd}{{{d{Fn}}{d{Fn}}}Cd}{{{d{AIj}}{d{AIj}}}Cd}{{{d{AIl}}{d{AIl}}}Cd}{{{d{AIn}}{d{AIn}}}Cd}{{{d{AJ`}}{d{AJ`}}}Cd}{{{d{AJb}}{d{AJb}}}Cd}{{{d{AJd}}{d{AJd}}}Cd}{{{d{AJf}}{d{AJf}}}Cd}{{{d{AJl}}{d{AJl}}}Cd}{{{d{AJn}}{d{AJn}}}Cd}{{{d{AK`}}{d{AK`}}}Cd}{{{d{AKb}}{d{AKb}}}Cd}{{{d{En}}{d{En}}}Cd}{{{d{AKf}}{d{AKf}}}Cd}{{{d{AKh}}{d{AKh}}}Cd}{{{d{AFd}}{d{AFd}}}Cd}{{{d{AKj}}{d{AKj}}}Cd}{{{d{Id}}{d{Id}}}Cd}{{{d{ADj}}{d{ADj}}}Cd}{{{d{AEd}}{d{AEd}}}Cd}{{{d{AKn}}{d{AKn}}}Cd}{{{d{AL`}}{d{AL`}}}Cd}{{{d{ACl}}{d{ACl}}}Cd}{{{d{ACf}}{d{ACf}}}Cd}{{{d{ALb}}{d{ALb}}}Cd}{{{d{ACh}}{d{ACh}}}Cd}{{{d{ACj}}{d{ACj}}}Cd}{{{d{ADf}}{d{ADf}}}Cd}{{{d{ABb}}{d{ABb}}}Cd}{{{d{ABd}}{d{ABd}}}Cd}{{{d{ABf}}{d{ABf}}}Cd}{{{d{ABh}}{d{ABh}}}Cd}{{{d{ABl}}{d{ABl}}}Cd}{{{d{ACb}}{d{ACb}}}Cd}{{{d{ABn}}{d{ABn}}}Cd}{{{d{ALd}}{d{ALd}}}Cd}{{{d{AC`}}{d{AC`}}}Cd}{{{d{ALf}}{d{ALf}}}Cd}{{{d{AKf}}{d{c}}eg}{{Cf{i}}}{LbALnAM`}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}{{{d{AKf}}{d{Al}}ce}{{Cf{g}}}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}``{{{d{AhEj}}{d{Ej}}}{{d{AhEj}}}}``{{{d{AFd}}{d{c}}eg}{{Cf{i}}}{LfALnAM`}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}0{{{d{AMb}}{Bl{{d{h}}}}}{{AMf{{AMd{A`}}}}}}```{{{d{AMh}}{d{h}}{d{h}}}{{AMf{{AMd{A`}}}}}}0```{{{d{AFh}}{d{{An{Hd}}}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{AFd}}}{{d{{An{AKh}}}}}}{{HdC`}Hd}{{{d{AAb}}{d{AhCh}}}{{n{BjAMj}}}}0{{{d{Nj}}{d{AhCh}}}{{n{BjAMj}}}}{{{d{Kn}}{d{AhCh}}}{{n{BjAMj}}}}{{{d{AFh}}{d{AhCh}}}Cj}{{{d{AFj}}{d{AhCh}}}Cj}{{{d{AFl}}{d{AhCh}}}Cj}{{{d{AFn}}{d{AhCh}}}Cj}{{{d{h}}{d{AhCh}}}Cj}0{{{d{AG`}}{d{AhCh}}}Cj}{{{d{On}}{d{AhCh}}}Cj}{{{d{AGb}}{d{AhCh}}}Cj}{{{d{Ih}}{d{AhCh}}}Cj}{{{d{AGd}}{d{AhCh}}}Cj}{{{d{AGf}}{d{AhCh}}}Cj}{{{d{Df}}{d{AhCh}}}Cj}{{{d{Nl}}{d{AhCh}}}Cj}{{{d{AGh}}{d{AhCh}}}Cj}0{{{d{Hd}}{d{AhCh}}}Cj}{{{d{AFf}}{d{AhCh}}}Cj}{{{d{J`}}{d{AhCh}}}Cj}{{{d{In}}{d{AhCh}}}Cj}{{{d{Jb}}{d{AhCh}}}Cj}{{{d{Jd}}{d{AhCh}}}Cj}{{{d{Jf}}{d{AhCh}}}Cj}{{{d{Ob}}{d{AhCh}}}Cj}{{{d{AGj}}{d{AhCh}}}Cj}{{{d{AGl}}{d{AhCh}}}Cj}{{{d{K`}}{d{AhCh}}}Cj}{{{d{Kb}}{d{AhCh}}}Cj}{{{d{Kd}}{d{AhCh}}}Cj}{{{d{AGn}}{d{AhCh}}}Cj}{{{d{Ed}}{d{AhCh}}}Cj}{{{d{AH`}}{d{AhCh}}}Cj}{{{d{AHb}}{d{AhCh}}}Cj}{{{d{AHd}}{d{AhCh}}}Cj}{{{d{AHf}}{d{AhCh}}}Cj}{{{d{AHh}}{d{AhCh}}}Cj}{{{d{AHj}}{d{AhCh}}}Cj}{{{d{Eb}}{d{AhCh}}}Cj}{{{d{E`}}{d{AhCh}}}Cj}{{{d{Dn}}{d{AhCh}}}Cj}{{{d{AHl}}{d{AhCh}}}Cj}{{{d{AHn}}{d{AhCh}}}Cj}{{{d{Ef}}{d{AhCh}}}Cj}{{{d{Ej}}{d{AhCh}}}Cj}{{{d{Nf}}{d{AhCh}}}Cj}{{{d{N`}}{d{AhCh}}}Cj}{{{d{AI`}}{d{AhCh}}}Cj}{{{d{Mn}}{d{AhCh}}}Cj}{{{d{AIb}}{d{AhCh}}}Cj}{{{d{Hl}}{d{AhCh}}}Cj}{{{d{Oj}}{d{AhCh}}}Cj}{{{d{AAf}}{d{AhCh}}}Cj}{{{d{Oh}}{d{AhCh}}}Cj}{{{d{Nn}}{d{AhCh}}}Cj}{{{d{Kl}}{d{AhCh}}}Cj}{{{d{Jn}}{d{AhCh}}}Cj}{{{d{Ml}}{d{AhCh}}}Cj}{{{d{A@f}}{d{AhCh}}}Cj}{{{d{AAd}}{d{AhCh}}}Cj}{{{d{AAn}}{d{AhCh}}}Cj}0{{{d{AId}}{d{AhCh}}}Cj}{{{d{AIf}}{d{AhCh}}}Cj}{{{d{AIh}}{d{AhCh}}}Cj}{{{d{AA`}}{d{AhCh}}}Cj}{{{d{AAh}}{d{AhCh}}}Cj}{{{d{Nd}}{d{AhCh}}}Cj}{{{d{Mh}}{d{AhCh}}}Cj}{{{d{Jh}}{d{AhCh}}}Cj}{{{d{Fn}}{d{AhCh}}}Cj}{{{d{AIj}}{d{AhCh}}}Cj}{{{d{AIl}}{d{AhCh}}}Cj}{{{d{AIn}}{d{AhCh}}}Cj}{{{d{AJ`}}{d{AhCh}}}Cj}{{{d{AJb}}{d{AhCh}}}Cj}{{{d{AJd}}{d{AhCh}}}Cj}{{{d{AJf}}{d{AhCh}}}Cj}{{{d{Lj}}{d{AhCh}}}Cj}{{{d{AJh}}{d{AhCh}}}Cj}{{{d{AJj}}{d{AhCh}}}Cj}{{{d{AJl}}{d{AhCh}}}Cj}{{{d{AJn}}{d{AhCh}}}Cj}{{{d{AK`}}{d{AhCh}}}Cj}{{{d{Mb}}{d{AhCh}}}Cj}{{{d{AKb}}{d{AhCh}}}Cj}{{{d{Ln}}{d{AhCh}}}Cj}{{{d{AKd}}{d{AhCh}}}Cj}{{{d{M`}}{d{AhCh}}}Cj}{{{d{Ll}}{d{AhCh}}}Cj}{{{d{Md}}{d{AhCh}}}Cj}{{{d{En}}{d{AhCh}}}Cj}{{{d{AKf}}{d{AhCh}}}Cj}0{{{d{AKh}}{d{AhCh}}}Cj}{{{d{AFd}}{d{AhCh}}}Cj}0{{{d{AKj}}{d{AhCh}}}Cj}0{{{d{Id}}{d{AhCh}}}Cj}{{{d{ADj}}{d{AhCh}}}Cj}{{{d{AEd}}{d{AhCh}}}Cj}{{{d{AKl}}{d{AhCh}}}Cj}{{{d{AKn}}{d{AhCh}}}Cj}{{{d{AEb}}{d{AhCh}}}Cj}{{{d{AL`}}{d{AhCh}}}Cj}{{{d{ACl}}{d{AhCh}}}Cj}{{{d{ACf}}{d{AhCh}}}Cj}{{{d{ALb}}{d{AhCh}}}Cj}{{{d{ACh}}{d{AhCh}}}Cj}{{{d{ACj}}{d{AhCh}}}Cj}{{{d{ADf}}{d{AhCh}}}Cj}{{{d{ABb}}{d{AhCh}}}Cj}{{{d{ABd}}{d{AhCh}}}Cj}{{{d{ABf}}{d{AhCh}}}Cj}{{{d{ABh}}{d{AhCh}}}Cj}{{{d{ABl}}{d{AhCh}}}Cj}{{{d{ACb}}{d{AhCh}}}Cj}{{{d{ABn}}{d{AhCh}}}Cj}{{{d{ALd}}{d{AhCh}}}Cj}{{{d{AC`}}{d{AhCh}}}Cj}{{{d{ALf}}{d{AhCh}}}Cj}```{cc{}}0{I`Kn}1{HnKn}{CdKn}33{ClJj}{{{j{Cl}}}Jj}{{{d{{An{Cl}}}}}Jj}{{{AMl{Cl}}}Jj}77777{{{j{Hn}}}AE`}{{{AMl{Hn}}}AE`}{HnAE`}:{{{Bl{Hn}}}AE`};;{{{d{{An{Kj}}}}}AFh}{{{d{Gd}}}AFh}{ClAFh}{{{Bl{Cl}}}AFh}?{cAFl{{Dh{AFn}}}}{cc{}}{AMnAFn}{AN`AFn}{ANbAFn}3{ANdAFn}{{{Ld{{d{Gd}}Cl}}}h}5{{{d{h}}}h}{{{Ld{FhCl}}}h}77777{ANfAGf}{ANhAGf}{C`AGf}{DlAGf}{HnAGf}{CnAGf}{ClAGf}>{KjAGf}{{{d{Gd}}}AGf}{FhAGf}{DjAGf}{ANjAGf}{I`AGf}{ANlAGf}{ANnAGf}{DlDf}{ANnDf}{{{d{Gd}}}Df}{FhDf}{{{d{Fh}}}Df}{DjDf}{{{d{Dj}}}Df}{{{d{Df}}}Df}{ANfDf}{CdDf}{KjDf}{AO`Df}{ClDf}{I`Df}{CnDf}{ANjDf}{ANhDf}{cc{}}{{{AMd{{An{Kj}}}}}Df}{MfDf}{AObDf}{C`Df}{ANlDf}{HnDf}{{{d{{An{Kj}}}}}Df}7{{{d{Nl}}}Nl}{BjNl}9{{{Ld{ceg}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{BjHd}{{{d{Fh}}}Hd}{{{Ld{cegikmoAaAcAeAg}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{d{{An{Kj}}}}}Hd}{CdHd}{{{Ld{cegikmoAaAcAe}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{FhHd}{{{Ld{cegikmoAaAcAeAgAi}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBa}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{cc{}}{DfHd}{{{AMd{{An{Kj}}}}}Hd}{MfHd}{DjHd}{NlHd}{{{Ld{cegikmoAaAc}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{ce}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAo}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{HnHd}{ANhHd}{{{Ld{cegi}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAeAgAiAk}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{KjHd}{{{Ld{cegik}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{ClHd}{CnHd}{{{Ld{cegikm}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{d{Gd}}}Hd}{ANlHd}{ANnHd}{{{Ld{cegikmoAa}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmo}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{ANfHd}{I`Hd}{{{Ld{cegikmoAaAcAeAgAiAkAm}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{cc{}}00000{CdJf}111111111111111111111{{{Ld{HnHn}}}Nf}222{{{AMl{AI`}}}Mn}{{{j{AI`}}}Mn}{AI`Mn}555555555555555555555{{{Ld{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikm}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Bl{Df}}}Fn}{cFn{{Dh{Df}}}}9{{{Ld{ceg}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAg}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{ce}}}Fn{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBa}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAc}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAa}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAi}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAiAk}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAo}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmo}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{d{{AOd{c}}}}}Fn{{Dh{Df}}Bb}}{{{Ld{cegikmoAaAcAeAgAiAkAm}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegi}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegik}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{BjFn}{{{j{c}}}Fn{{Dh{Df}}}}{{{AMl{c}}}Fn{{Dh{Df}}}}{{{Ld{cegikmoAaAcAe}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{cc{}}000000000000000000000000000{I`AKl}{{{d{Gd}}}AKl}{FhAKl}3{{{d{Fh}}}AKl}4{{{d{Fh}}}AEb}{I`AEb}6{{{d{Gd}}}AEb}{{{d{AEb}}}AEb}{FhAEb}99{BjACl}{{{AMl{c}}}ACf{{Dh{ACj}}}}{{{j{c}}}ACf{{Dh{ACj}}}}{cACf{{Dh{ACj}}}}==={{{Bl{Bj}}}ACh}{FhACj}{DjACj}{{{d{Gd}}}ACj}{{{d{Fh}}}ACj}{cc{}}{BjADf}{{{Ld{DlceDlg}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}{{Dh{Dj}}}}2{{{Ld{DlceDl}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}}{{{Ld{ceDl}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}}{{{Ld{ceDlg}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}{{Dh{Dj}}}}555{I`ABf}6{{{j{c}}}ABl{{Dh{Dj}}}}{{{AOd{c}}}ABl{{Dh{Dj}}}}8{I`ACb}9{{{Ld{ABhDl}}}ABn}::{{{Ld{cALd}}}AC`{{Dh{Dj}}}};;{{AOfcBl}{{n{KnAFb}}}{{ABj{}{{D`{Kn}}}}}}{{Hdc}{{n{Ihl}}}{{Dh{Dj}}}}{{{d{Al}}c}{{n{AKjl}}}{{Dh{Dj}}}}{DnAFf}{cAKf{{Dh{Dj}}}}{cJj{{ABj{}{{D`{Cl}}}}}}{cAE`{{ABj{}{{D`{Hn}}}}}}{eADl{{Dh{Hd}}}{{ABj{}{{D`{{Ld{Hnc}}}}}}}}{gNl{{Dh{Df}}}{{Dh{Hd}}}{{ABj{}{{D`{{Ld{ce}}}}}}}}{eHd{{Dh{Hd}}}{{ABj{}{{D`{c}}}}}}{eFn{{Dh{Df}}}{{ABj{}{{D`{c}}}}}}{eABl{{Dh{Dj}}}{{ABj{}{{D`{c}}}}}}{Df{{n{AD`l}}}}{Df{{n{Dfl}}}}{Df{{n{Hdl}}}}:<{{HdCdCdCd}{{n{AIbl}}}}{{{d{{An{Kj}}}}}Df}{{{d{{An{Kj}}}}}Hd}{{{d{Gd}}}AGf}{{{d{Gd}}}Df}{{{d{Gd}}}Hd}{{{d{Gd}}}{{n{AAb}}}}{{{d{Gd}}}{{Bl{AKh}}}}{{{d{Gd}}}{{n{Dnl}}}}000{Hd{{n{Afl}}}}{Hd{{n{Dfl}}}}{Hd{{n{Hdl}}}}{Hd{{n{AGll}}}}{Hd{{n{Nfl}}}}{Hd{{n{AIdl}}}}{Hd{{n{AIfl}}}}{Hd{{n{AIhl}}}}``{{{d{AKj}}}{{d{{Eh{DjAFd}}}}}}`{{{d{AFf}}}{{Bl{{d{Dn}}}}}}{{{d{AFf}}}{{d{Eb}}}}{{{d{c}}{d{e}}}Dl{ADbAOh}AOj}000000000{{{d{AFf}}}{{d{E`}}}}{{{d{AFf}}}{{Bl{{d{Ed}}}}}}4{{{d{Ih}}Cl}{{Bl{{d{h}}}}}}`{{{d{{ALl{}{{ALj{c}}}}}}}Cd{}}{{{d{F`}}}Cd}{{{d{Db}}}Cd}{{{d{Ff}}}Cd}{{{d{G`}}}Cd}{{{d{AAb}}{d{Ahc}}}BjAOl}{{{d{Kn}}{d{Ahc}}}BjAOl}{{{d{AFh}}{d{{An{Hd}}}}}{{Bl{Cl}}}}{{{d{h}}{d{Ahc}}}BjAOl}{{{d{Df}}{d{Ahc}}}BjAOl}{{{d{Hd}}{d{Ahc}}}BjAOl}{{{d{Oh}}{d{Ahc}}}BjAOl}{{{d{AKf}}{d{Ahc}}}BjAOl}{{{d{AKh}}{d{Ahc}}}BjAOl}{{{d{AFd}}{d{Ahc}}}BjAOl}{{{d{AKj}}{d{Ahc}}}BjAOl}`{{{d{{An{Kj}}}}}Cl}````{{{d{AHl}}}{{j{h}}}}``````{{}C`}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{Jj{{j{Cl}}}}{AE`{{j{Hn}}}}{ADl{{j{{Ld{HnHd}}}}}}{{{d{Df}}}{{d{Mf}}}}{Nl{{Eh{DfHd}}}}{Mn{{j{AI`}}}}{Fn{{j{Df}}}}{ACl{{j{{Ld{DfHd}}}}}}{ACf{{j{ACj}}}}```{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Hd{{j{Hd}}}}{DfMf}{Hd{{Bl{Mf}}}}{Hd{{Bl{Dj}}}}{{HdCdCdCd}{{n{{j{AIb}}l}}}}{Hd{{n{HdHd}}}}{Hd{{n{Ofl}}}}{Hd{{n{Nll}}}}{Hd{{Bl{{j{Kj}}}}}}{Hd{{n{{AOn{Hd}}l}}}}{Df{{Bl{Fh}}}}{Hd{{Bl{Fh}}}}{Fn{{j{Hd}}}}{Hd{{n{{Ld{Fh{j{{ACn{ceg}}}}}}l}}}Af{AD`ADbADd}Af}{Hd{{n{{ADh{cegi}}l}}}{AD`ADbADd}Af{AD`ADbADd}Af}{Hd{{n{{j{{ACn{ceg}}}}l}}}Af{AD`ADbADd}Af}{Hd{{n{{j{{Ld{HdHn}}}}l}}}}`{{{d{Hd}}}Cd}000{{{d{AHl}}}Cd}01{{{d{Kn}}}Cd}222022021021`````{{{d{Kn}}}AOf}{{{d{Hd}}}AGh}````````{{{d{Kn}}}C`}{{{d{Jj}}}C`}{{{d{AE`}}}C`}{{{d{ADl}}}C`}{{{d{Ih}}}C`}{{{d{Nl}}}C`}{{{d{Mn}}}C`}{{{d{Fn}}}C`}{{{d{ACl}}}C`}{{{d{ACf}}}C`}```{{{d{AKf}}{d{Al}}}{{Cf{Bj}}}}``{{{d{AKf}}}{{Bl{{d{Dj}}}}}}``{{{d{B@`}}{d{A@`}}{d{Gd}}}{{Bl{Fh}}}}``````````````````{{{d{AFd}}}{{d{Dj}}}}{{{d{AKj}}}{{d{Dj}}}}```{{DlDlDl}AAb}{{}AE`}{{}ADl}{{cCl}h{{Dh{Dj}}}}{{}Ih}{{}Nl}{CdAHn}{{ceCd}Kl{{Dh{Dj}}}{{Dh{AFh}}}}{{}Fn}{{c{j{AKh}}}AFd{{Dh{Dj}}}}{{cCl}AHl{{Dh{Fh}}}}{{{j{{Ld{cCl}}}}}AHl{{Dh{Fh}}}}{{CnCn}Ed}{{}Kn}0{{CnCnCnCn}Ed}{{CnCnCn}Ed}{{}Hd}{{{j{{Ld{cCl}}}}e}AHl{{Dh{Fh}}}{{Dh{Fh}}}}{{{d{Gd}}cCd}Kl{{Dh{AFh}}}}{{cCl{Bl{Fh}}}h{{Dh{Dj}}}}{{{ALl{}{{ALj{c}}}}}{{n{Bjl}}}{}}{F`{{n{Bjl}}}}{Db{{n{Bjl}}}}{Ff{{n{Bjl}}}}{G`{{n{Bjl}}}}{{{d{AhEd}}}{{Bl{Dl}}}}``````````````````{{{d{Gd}}}{{n{AAbB@b}}}}{{{d{AAb}}{d{AAb}}}{{Bl{ALh}}}}{{{d{h}}{d{h}}}{{Bl{ALh}}}}{{{d{Df}}{d{Df}}}{{Bl{ALh}}}}{{{d{Oh}}{d{Oh}}}{{Bl{ALh}}}}{{{d{AKf}}{d{AKf}}}{{Bl{ALh}}}}{{{d{AKh}}{d{AKh}}}{{Bl{ALh}}}}{{{d{AFd}}{d{AFd}}}{{Bl{ALh}}}}{{{d{AKj}}{d{AKj}}}{{Bl{ALh}}}}```````````````{{{d{Ih}}}{{B@d{h{Ld{{j{{Ld{ClCl}}}}{Fj{h}}}}}}}}````{{{d{Ih}}}{{Bl{{d{h}}}}}}{{{d{Ih}}}{{Bl{{d{AGb}}}}}}````{{{d{AMb}}}{{Bl{Cb}}}}0`{{{d{Ih}}{d{h}}}{{j{h}}}}``{{{d{Fb}}DjCl}{{AMf{{AMd{A`}}}}}}{{{d{{ALl{}{{ALj{c}}}}}}}{{d{{Bl{c}}}}}{}}{{{d{F`}}}{{d{{Bl{c}}}}}{}}{{{d{Db}}}{{d{{Bl{c}}}}}{}}{{{d{Ff}}}{{d{{Bl{c}}}}}{}}{{{d{G`}}}{{d{{Bl{c}}}}}{}}````````````{{{d{AhAHl}}AHj}{{n{Bjl}}}}{{{d{AhAFf}}Dn}{{d{AhAFf}}}}{{{d{AhAFf}}Eb}{{d{AhAFf}}}}{{{d{AhEd}}Cn}Bj}{{{d{AhAFf}}E`}{{d{AhAFf}}}}{{{d{AhAFf}}Ed}{{d{AhAFf}}}}{{{d{AhAFf}}Ef}{{d{AhAFf}}}}{{{d{AKf}}}{{d{Dj}}}}```{{{d{Ih}}}{{d{{An{AGb}}}}}}`````````{{{d{AhKn}}}Kn}{{{d{AhDf}}}Mf}{{{d{AhNl}}}Nl}{{{d{AhHd}}}Hd}{{{d{AhKn}}}Bl}{{{d{Ah{ALl{}{{ALj{c}}}}}}}{{Bl{c}}}{}}{{{d{AhF`}}}{{Bl{c}}}{}}{{{d{AhDb}}}{{Bl{c}}}{}}{{{d{AhFf}}}{{Bl{c}}}{}}{{{d{AhG`}}}{{Bl{c}}}{}}`````````{{{d{Nj}}}Kj}{dc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Kn}}}B@f}{{{d{AKh}}}{{d{Gd}}}}{dFh}{{{d{Kn}}}{{Bl{Fh}}}}111111```{c{{n{e}}}{}{}}0{{{Ld{AOfc}}}{{n{Kn}}}{{Dh{Mf}}}}1111111111{{{Ld{Hnc}}}{{n{ADle}}}{{H`{Hd}}}{}}{{{AMl{{Ld{Hnc}}}}}{{n{ADle}}}{{H`{Hd}}}{}}{{{j{{Ld{Hnc}}}}}{{n{ADle}}}{{H`{Hd}}}{}}444{B@h{{n{AFnc}}}{}}5{{{d{Gd}}}{{n{hc}}}{}}{Fh{{n{hc}}}{}}777777{Hd{{n{AGfc}}}{}}8{Hd{{n{Dfc}}}{}}9{{{Eh{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}:{{{B@d{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{Ld{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{j{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{AOd{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{d{{AOd{{Ld{ce}}}}}}}{{n{Nlg}}}{{H`{Df}}Bb}{{H`{Hd}}Bb}{}}{{{AMl{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{c{{n{e}}}{}{}}{Dl{{n{Hdc}}}{}}{{{j{c}}}{{n{Hde}}}{{H`{Hd}}}{}}2{AOb{{n{Hdc}}}{}}{AO`{{n{Hdc}}}{}}{C`{{n{Hdc}}}{}}{{{Bl{c}}}{{n{Hde}}}{{H`{Hd}}}{}}{Kn{{n{Hdc}}}{}}{{{B@d{ce}}}{{n{Hdg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{d{{AOd{c}}}}}{{n{Hde}}}{{H`{Hd}}Bb}{}}{{{AMl{c}}}{{n{Hde}}}{{H`{Hd}}}{}}{{{AOd{c}}}{{n{Hde}}}{{H`{Hd}}Bb}{}}{{{Eh{ce}}}{{n{Hdg}}}{{H`{Df}}}{{H`{Hd}}}{}}<<<<<{{{d{Gd}}}{{n{Jfc}}}{}}{Fh{{n{Jfc}}}{}}{{{d{Fh}}}{{n{Jfc}}}{}}???{Hd{{n{AGlc}}}{}}{c{{n{e}}}{}{}}000000000000000000{Hd{{n{Nfc}}}{}}111{{{Ld{HnHnc}}}{{n{AI`e}}}{{H`{Hd}}}{}}22222222222222{Hd{{n{AIdc}}}{}}3{Hd{{n{AIfc}}}{}}{Hd{{n{AIhc}}}{}}5555{Dj{{n{Mhc}}}{}}{{{d{Gd}}}{{n{Mhc}}}{}}{{{d{Dj}}}{{n{Mhc}}}{}}8{Fh{{n{Mhc}}}{}}{{{d{Fh}}}{{n{Mhc}}}{}}:::::::::::::::::::::::::::::::{Hn{{n{AKlc}}}{}};;{Hn{{n{AEbc}}}{}}<{{{d{Gd}}}{{n{AL`c}}}{}}{{{AMl{{Ld{ce}}}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{{{Eh{ce}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}?{{{Ld{ce}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{{{j{{Ld{ce}}}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{c{{n{e}}}{}{}}0{{{d{Gd}}}{{n{ALbc}}}{}}{{{Ld{ce}}}{{n{AChg}}}{{H`{ALb}}}{{Dh{AGf}}}{}}{{{Ld{ceg{Bl{I`}}}}}{{n{AChi}}}{{H`{ALb}}}{{H`{AL`}}}{{Dh{AGf}}}{}}3{{{Ld{ceg}}}{{n{AChi}}}{{H`{ALb}}}{{H`{AL`}}}{{Dh{AGf}}}{}}4444{Dj{{n{ABfc}}}{}}{{{d{Gd}}}{{n{ABfc}}}{}}6{Fh{{n{ABfc}}}{}}77{{{d{Gd}}}{{n{ACbc}}}{}}8888{{{d{Gd}}}{{n{ALfc}}}{}}9{{}{{n{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{dFl}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ih}}}{{j{Cl}}}}{{{d{Ih}}}{{j{h}}}}````{{{d{Dn}}}Cd}00````{{{d{Kn}}}{{Bl{{d{B@j}}}}}}`{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhDn}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhEb}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhE`}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhEf}}}}}}```````````````````````````````````````````````````````````````````````````````````````````````{Hn{{n{Hdl}}}}{e{{n{{B@d{Cl{AMl{Df}}}}l}}}{{H`{Df}}}{{ABj{}{{D`{c}}}}}}{{{d{{An{Kj}}}}}Cl}{{{d{Gd}}}{{n{Hnl}}}}{{{d{Gd}}}Fh}{{{d{{An{Kj}}}}}Mf}{{{d{Gd}}}Dj}","D":"MNf","p":[[5,"RedisPool",18,4848],[1,"reference"],[17,"Output"],[5,"Server",1324,4849],[5,"Vec",4850],[5,"RedisError",228],[6,"Result",4851],[10,"Future",4852],[5,"Pipeline",18,4853],[10,"ClientLike",297,4854],[10,"FromRedis",1324,4855],[0,"mut"],[5,"Replicas",18,4856],[5,"RedisClient",18,4857],[1,"slice"],[5,"WithOptions",18,4858],[10,"Clone",4859],[5,"SentinelClient",18,4860],[5,"SubscriberClient",18,4861],[5,"Transaction",18,4862],[1,"unit"],[6,"Option",4863],[8,"ConnectHandle",1324],[1,"usize"],[5,"Duration",4864],[1,"bool"],[8,"RedisResult",297],[5,"Formatter",4865],[8,"Result",4865],[1,"u16"],[1,"u32"],[17,"Item"],[5,"HScanResult",1324,4866],[10,"Stream",4867],[5,"RedisKey",1324,4868],[10,"Into",4869],[8,"Str",4870],[1,"u64"],[5,"RedisConfig",1324,4871],[5,"PerformanceConfig",1324,4871],[5,"ConnectionConfig",1324,4871],[6,"ReconnectPolicy",1324,4871],[5,"SentinelConfig",1324,4871],[5,"HashMap",4872],[5,"Options",1324,4871],[8,"MultipleStrings",1324,4873],[6,"ScanType",1324,4866],[5,"ScanResult",1324,4866],[10,"Resolve",1324,4849],[5,"Rc",4874],[5,"SScanResult",1324,4866],[5,"String",4875],[5,"BTreeSet",4876],[5,"TypeId",4877],[5,"MultipleKeys",1324,4873],[5,"ZScanResult",1324,4866],[6,"RedisErrorKind",228],[1,"str"],[5,"Error",4878],[6,"Cow",4879],[10,"Error",4880],[10,"AclInterface",297,4881],[8,"MultipleValues",1324,4873],[10,"TryInto",4869],[10,"KeysInterface",297,4882],[6,"RedisValue",1324,4868],[10,"AuthInterface",297],[10,"ServerInterface",297,4883],[10,"ListInterface",297,4884],[6,"LMoveDirection",1324,4885],[1,"f64"],[1,"i64"],[10,"SortedSetsInterface",297,4886],[6,"ZCmp",1324,4887],[10,"ClusterInterface",297,4888],[5,"ClusterRouting",1324,4849],[10,"SentinelInterface",297,4889],[10,"ClientInterface",297,4890],[6,"ClientKillFilter",1324,4891],[6,"ClientKillType",1324,4891],[6,"ClientPauseKind",1324,4891],[6,"ClientReplyFlag",1324,4891],[6,"Toggle",1324,4891],[6,"ClientUnblockFlag",1324,4892],[5,"MultipleHashSlots",1324,4873],[10,"EventInterface",297],[6,"ClusterStateChange",1324,4892],[6,"ClusterFailoverFlag",1324,4893],[6,"ClusterResetFlag",1324,4893],[6,"ClusterSetSlotState",1324,4893],[10,"MetricsInterface",297,4894],[10,"ConfigInterface",297,4895],[1,"u8"],[5,"CustomCommand",1324,4892],[6,"Resp3Frame",1324],[10,"HeartbeatInterface",297],[10,"LuaInterface",297,4896],[1,"tuple"],[10,"FunctionInterface",297,4896],[10,"RediSearchInterface",297,4897],[5,"FtAggregateOptions",1324,4898],[5,"FtAlterOptions",1324,4898],[5,"FtCreateOptions",1324,4898],[5,"SearchSchema",1324,4898],[5,"FtSearchOptions",1324,4898],[6,"SpellcheckTerms",1324,4898],[5,"Bytes",4899],[6,"FnPolicy",1324,4892],[10,"GeoInterface",297,4900],[6,"SetOptions",1324,4892],[5,"MultipleGeoValues",1324,4901],[6,"GeoUnit",1324,4901],[8,"Any",1324],[6,"SortOrder",1324,4892],[5,"GeoPosition",1324,4901],[10,"HashesInterface",297,4902],[6,"RespVersion",1324,4903],[5,"RedisMap",1324,4868],[6,"InfoKind",1324,4892],[10,"TrackingInterface",297,4904],[5,"Invalidation",1324,4891],[10,"RedisJsonInterface",297,4905],[6,"Value",4906],[5,"KeyspaceEvent",1324,4892],[6,"ListLocation",1324,4885],[10,"MemoryInterface",297,4907],[5,"Message",1324,4849],[6,"IpAddr",4908],[10,"TransactionInterface",297,4909],[10,"Fn",4910],[6,"ExpireOptions",1324,4892],[10,"HyperloglogInterface",297,4911],[10,"PubsubInterface",297,4912],[5,"Stats",1324,4913],[10,"SetsInterface",297,4914],[6,"ScriptDebugFlag",1324,4892],[5,"Version",1324,4915],[6,"Expiration",1324,4892],[6,"ShutdownFlags",1324,4892],[6,"SentinelFailureKind",1324,4892],[10,"SlowlogInterface",297,4916],[8,"Limit",1324],[6,"ClientState",1324,4892],[10,"TimeSeriesInterface",297,4917],[6,"Encoding",1324,4918],[6,"DuplicatePolicy",1324,4918],[6,"Timestamp",1324,4918],[6,"Aggregator",1324,4918],[10,"IntoIterator",4919],[6,"GetLabels",1324,4918],[5,"RangeAggregation",1324,4918],[5,"GroupBy",1324,4918],[6,"GetTimestamp",1324,4918],[10,"StreamsInterface",297,4920],[5,"MultipleIDs",1324,4921],[5,"XCap",1324,4921],[6,"XID",1324,4921],[5,"MultipleOrderedPairs",1324,4921],[8,"XReadValue",1324,4921],[10,"FromRedisKey",1324,4855],[10,"Hash",4922],[10,"Eq",4923],[5,"XPendingArgs",1324,4921],[8,"XReadResponse",1324,4921],[6,"Ordering",1324,4887],[5,"MultipleZaddValues",1324,4887],[6,"AggregateOptions",1324,4892],[5,"MultipleWeights",1324,4887],[5,"ZRange",1324,4887],[6,"ZSort",1324,4887],[5,"SimpleMap",1187,4924],[5,"Buffer",1187,4924],[5,"MockCommand",1187,4924],[5,"Echo",1187,4924],[10,"Mocks",1187,4924],[5,"Command",1274],[5,"RedisProtocolError",4925],[5,"Function",1324,4926],[5,"Builder",1324,4927],[6,"ClusterHash",1324,4928],[6,"TlsHostMapping",1324,4929],[5,"TlsConfig",1324,4929],[6,"TlsConnector",1324,4929],[6,"MessageKind",1324,4849],[5,"SlotRange",1324,4849],[5,"ReplicaConfig",1324,4930],[6,"StringOrNumber",1324,4868],[6,"RedisValueKind",1324,4868],[6,"ClusterState",1324,4893],[5,"ClusterInfo",1324,4893],[6,"ReconnectError",1324,4871],[6,"Blocking",1324,4871],[6,"BackpressurePolicy",1324,4871],[5,"BackpressureConfig",1324,4871],[5,"TcpConfig",1324,4871],[5,"UnresponsiveConfig",1324,4871],[6,"ClusterDiscoveryPolicy",1324,4871],[6,"ServerConfig",1324,4871],[5,"TracingConfig",1324,4871],[5,"GeoValue",1324,4901],[5,"GeoRadiusInfo",1324,4901],[5,"DatabaseMemoryStats",1324,4892],[5,"MemoryStats",1324,4892],[5,"SlowlogEntry",1324,4892],[6,"ReducerFunc",1324,4898],[5,"SearchReducer",1324,4898],[5,"SearchField",1324,4898],[6,"Load",1324,4898],[5,"WithCursor",1324,4898],[5,"SearchParameter",1324,4898],[6,"AggregateOperation",1324,4898],[5,"SearchFilter",1324,4898],[5,"SearchGeoFilter",1324,4898],[5,"SearchSummarize",1324,4898],[5,"SearchHighlight",1324,4898],[5,"SearchSortBy",1324,4898],[6,"IndexKind",1324,4898],[6,"SearchSchemaKind",1324,4898],[5,"Script",1324,4926],[6,"FunctionFlag",1324,4926],[5,"Library",1324,4926],[6,"ZRangeBound",1324,4887],[6,"ZRangeKind",1324,4887],[6,"XCapTrim",1324,4921],[6,"XCapKind",1324,4921],[6,"Reducer",1324,4918],[6,"BucketTimestamp",1324,4918],[6,"Ordering",4923],[17,"Page"],[10,"Scanner",1324,4866],[10,"Send",4931],[10,"Sync",4931],[10,"CredentialProvider",1324,4871],[5,"Box",4932],[5,"Pin",4933],[10,"ReplicaFilter",1324,4930],[5,"Error",4865],[5,"VecDeque",4934],[5,"TlsConnector",4935],[5,"TlsConnector",4936],[5,"ClientConfig",4937],[5,"TlsConnector",4938],[1,"i32"],[1,"f32"],[1,"isize"],[1,"i8"],[1,"i16"],[1,"i128"],[1,"u128"],[1,"array"],[6,"FrameKind",4903],[10,"Sized",4931],[10,"BuildHasher",4922],[10,"Hasher",4922],[5,"HashSet",4939],[10,"HostMapping",1324,4929],[5,"Error",4940],[5,"BTreeMap",4941],[6,"OwnedFrame",4903],[5,"TlsConnectorBuilder",4936],[6,"VerbatimStringFormat",4903],[10,"FnOnce",4910],[15,"BlobString",1157],[15,"BlobError",1157],[15,"SimpleString",1157],[15,"SimpleError",1157],[15,"Boolean",1157],[15,"Number",1157],[15,"Double",1157],[15,"BigNumber",1157],[15,"VerbatimString",1157],[15,"Array",1157],[15,"Map",1157],[15,"Set",1157],[15,"Push",1157],[15,"Hello",1157],[8,"LimitCount",1324],[15,"Filter",4750],[15,"Apply",4750],[15,"GroupBy",4750],[15,"SortBy",4750],[15,"Limit",4750],[15,"Sleep",4759],[15,"Constant",4761],[15,"Linear",4761],[15,"Exponential",4761],[15,"Custom",4806],[15,"Tag",4806],[15,"Text",4806],[15,"Numeric",4806],[15,"Geo",4806],[15,"Vector",4806],[15,"GeoShape",4806],[15,"Clustered",4829],[15,"Sentinel",4829],[15,"Centralized",4829],[15,"Include",4836],[15,"Exclude",4836]],"r":[[7,4942],[18,4853],[19,4857],[20,4848],[21,4856],[22,4860],[23,4861],[24,4862],[25,4858],[297,4881],[305,4890],[306,4854],[307,4888],[308,4895],[312,4896],[313,4900],[314,4902],[317,4911],[318,4882],[319,4884],[320,4896],[322,4907],[323,4894],[327,4912],[329,4897],[330,4905],[333,4889],[334,4883],[336,4914],[339,4916],[340,4886],[341,4920],[342,4917],[343,4904],[344,4909],[949,4854],[1187,4924],[1188,4924],[1189,4924],[1190,4924],[1191,4924],[1301,4871],[1302,4927],[1303,4871],[1304,4892],[1305,4855],[1306,4871],[1307,4871],[1308,4871],[1309,4857],[1310,4871],[1311,228],[1312,228],[1313,4868],[1314,4848],[1315,4868],[1316,4868],[1317,4849],[1318,4871],[1319,4892],[1320,4871],[1321,4929],[1322,4929],[1323,4871],[1327,4898],[1328,4892],[1329,4918],[1349,4871],[1350,4871],[1357,4871],[1362,4918],[1363,4927],[1372,4891],[1373,4891],[1374,4891],[1375,4891],[1376,4892],[1377,4892],[1380,4871],[1382,4893],[1383,4928],[1384,4893],[1385,4893],[1386,4849],[1387,4893],[1388,4893],[1389,4892],[1397,4871],[1407,4871],[1415,4892],[1416,4871],[1417,4892],[1429,4918],[1433,4918],[1440,4892],[1441,4892],[1452,4892],[1454,4855],[1455,4855],[1456,4898],[1457,4898],[1458,4898],[1459,4898],[1460,4926],[1461,4926],[1464,4901],[1465,4901],[1467,4901],[1468,4901],[1469,4918],[1470,4918],[1472,4918],[1474,4866],[1480,4929],[1486,4898],[1489,4892],[1494,4891],[1498,4892],[1501,4885],[1509,4926],[1515,4885],[1516,4898],[1534,4892],[1535,4849],[1537,4849],[1550,4901],[1551,4873],[1552,4921],[1553,4873],[1554,4921],[1555,4873],[1556,4873],[1557,4887],[1558,4887],[1588,4871],[1589,4887],[1594,4871],[1608,4918],[1611,4871],[1612,4871],[1613,4871],[1614,4868],[1615,4868],[1616,4868],[1617,4868],[1618,4918],[1619,4898],[1623,4930],[1624,4930],[1626,4849],[1627,4918],[1629,4918],[1630,4903],[1634,4866],[1636,4866],[1637,4866],[1638,4866],[1640,4926],[1641,4892],[1642,4898],[1643,4898],[1644,4898],[1645,4898],[1646,4898],[1647,4898],[1648,4898],[1649,4898],[1650,4898],[1651,4898],[1654,4871],[1655,4892],[1656,4849],[1658,4871],[1661,4892],[1662,4892],[1668,4849],[1669,4892],[1674,4892],[1675,4898],[1678,4913],[1691,4868],[1701,4871],[1704,4918],[1705,4929],[1706,4929],[1707,4929],[1709,4891],[1710,4871],[1713,4871],[1722,4915],[1723,4898],[1726,4921],[1727,4921],[1728,4921],[1729,4921],[1730,4921],[1731,4921],[1732,4921],[1736,4887],[1737,4887],[1738,4887],[1739,4887],[1740,4866],[1742,4887],[4841,4943],[4843,4944],[4844,4943],[4846,4943],[4847,4943]],"b":[[106,"impl-Debug-for-RedisClient"],[107,"impl-Display-for-RedisClient"],[267,"impl-Display-for-RedisError"],[268,"impl-Debug-for-RedisError"],[1288,"impl-Display-for-Command"],[1289,"impl-Debug-for-Command"],[3023,"impl-Display-for-Version"],[3024,"impl-Debug-for-Version"],[3031,"impl-Debug-for-Server"],[3032,"impl-Display-for-Server"],[3041,"impl-Display-for-RedisValueKind"],[3042,"impl-Debug-for-RedisValueKind"],[3086,"impl-Debug-for-ClientState"],[3087,"impl-Display-for-ClientState"],[3118,"impl-Debug-for-Script"],[3119,"impl-Display-for-Script"],[3121,"impl-Display-for-Function"],[3122,"impl-Debug-for-Function"],[3123,"impl-Display-for-Library"],[3124,"impl-Debug-for-Library"],[3153,"impl-From%3Ci64%3E-for-BytesFrame"],[3155,"impl-From%3Cf64%3E-for-BytesFrame"],[3156,"impl-From%3Cbool%3E-for-BytesFrame"],[3159,"impl-From%3Cu16%3E-for-MultipleHashSlots"],[3160,"impl-From%3CVec%3Cu16%3E%3E-for-MultipleHashSlots"],[3161,"impl-From%3C%26%5Bu16%5D%3E-for-MultipleHashSlots"],[3162,"impl-From%3CVecDeque%3Cu16%3E%3E-for-MultipleHashSlots"],[3168,"impl-From%3CVec%3Cf64%3E%3E-for-MultipleWeights"],[3169,"impl-From%3CVecDeque%3Cf64%3E%3E-for-MultipleWeights"],[3170,"impl-From%3Cf64%3E-for-MultipleWeights"],[3172,"impl-From%3COption%3Cf64%3E%3E-for-MultipleWeights"],[3175,"impl-From%3C%26%5Bu8%5D%3E-for-ClusterHash"],[3176,"impl-From%3C%26str%3E-for-ClusterHash"],[3177,"impl-From%3Cu16%3E-for-ClusterHash"],[3178,"impl-From%3COption%3Cu16%3E%3E-for-ClusterHash"],[3182,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3183,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3184,"impl-From%3CClientConfig%3E-for-TlsConnector"],[3186,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3187,"impl-From%3C(%26str,+u16)%3E-for-Server"],[3189,"impl-From%3C%26Server%3E-for-Server"],[3190,"impl-From%3C(String,+u16)%3E-for-Server"],[3196,"impl-From%3Ci32%3E-for-StringOrNumber"],[3197,"impl-From%3Cf32%3E-for-StringOrNumber"],[3198,"impl-From%3Cusize%3E-for-StringOrNumber"],[3199,"impl-From%3Cu64%3E-for-StringOrNumber"],[3200,"impl-From%3Cf64%3E-for-StringOrNumber"],[3201,"impl-From%3Cu32%3E-for-StringOrNumber"],[3202,"impl-From%3Cu16%3E-for-StringOrNumber"],[3204,"impl-From%3Cu8%3E-for-StringOrNumber"],[3205,"impl-From%3C%26str%3E-for-StringOrNumber"],[3206,"impl-From%3CString%3E-for-StringOrNumber"],[3207,"impl-From%3CStrInner%3CBytes%3E%3E-for-StringOrNumber"],[3208,"impl-From%3Cisize%3E-for-StringOrNumber"],[3209,"impl-From%3Ci64%3E-for-StringOrNumber"],[3210,"impl-From%3Ci8%3E-for-StringOrNumber"],[3211,"impl-From%3Ci16%3E-for-StringOrNumber"],[3212,"impl-From%3Cu64%3E-for-RedisKey"],[3213,"impl-From%3Ci16%3E-for-RedisKey"],[3214,"impl-From%3C%26str%3E-for-RedisKey"],[3215,"impl-From%3CString%3E-for-RedisKey"],[3216,"impl-From%3C%26String%3E-for-RedisKey"],[3217,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisKey"],[3218,"impl-From%3C%26StrInner%3CBytes%3E%3E-for-RedisKey"],[3219,"impl-From%3C%26RedisKey%3E-for-RedisKey"],[3220,"impl-From%3Ci32%3E-for-RedisKey"],[3221,"impl-From%3Cbool%3E-for-RedisKey"],[3222,"impl-From%3Cu8%3E-for-RedisKey"],[3223,"impl-From%3Ci128%3E-for-RedisKey"],[3224,"impl-From%3Cu16%3E-for-RedisKey"],[3225,"impl-From%3Ci64%3E-for-RedisKey"],[3226,"impl-From%3Cu32%3E-for-RedisKey"],[3227,"impl-From%3Cisize%3E-for-RedisKey"],[3228,"impl-From%3Cf32%3E-for-RedisKey"],[3230,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisKey"],[3231,"impl-From%3CBytes%3E-for-RedisKey"],[3232,"impl-From%3Cu128%3E-for-RedisKey"],[3233,"impl-From%3Cusize%3E-for-RedisKey"],[3234,"impl-From%3Ci8%3E-for-RedisKey"],[3235,"impl-From%3Cf64%3E-for-RedisKey"],[3236,"impl-From%3C%26%5Bu8%5D%3E-for-RedisKey"],[3238,"impl-From%3C%26RedisMap%3E-for-RedisMap"],[3239,"impl-From%3C()%3E-for-RedisMap"],[3241,"impl-From%3C(A0,+A1,+A2)%3E-for-RedisValue"],[3242,"impl-From%3C()%3E-for-RedisValue"],[3243,"impl-From%3C%26String%3E-for-RedisValue"],[3244,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-RedisValue"],[3245,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-RedisValue"],[3246,"impl-From%3C%26%5Bu8%5D%3E-for-RedisValue"],[3247,"impl-From%3Cbool%3E-for-RedisValue"],[3248,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-RedisValue"],[3249,"impl-From%3CString%3E-for-RedisValue"],[3250,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-RedisValue"],[3251,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-RedisValue"],[3253,"impl-From%3CRedisKey%3E-for-RedisValue"],[3254,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisValue"],[3255,"impl-From%3CBytes%3E-for-RedisValue"],[3256,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisValue"],[3257,"impl-From%3CRedisMap%3E-for-RedisValue"],[3258,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-RedisValue"],[3259,"impl-From%3C(A0,+A1)%3E-for-RedisValue"],[3260,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-RedisValue"],[3261,"impl-From%3Cf64%3E-for-RedisValue"],[3262,"impl-From%3Cf32%3E-for-RedisValue"],[3263,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-RedisValue"],[3264,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-RedisValue"],[3265,"impl-From%3Cu8%3E-for-RedisValue"],[3266,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-RedisValue"],[3267,"impl-From%3Cu16%3E-for-RedisValue"],[3268,"impl-From%3Cu32%3E-for-RedisValue"],[3269,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-RedisValue"],[3270,"impl-From%3C%26str%3E-for-RedisValue"],[3271,"impl-From%3Ci8%3E-for-RedisValue"],[3272,"impl-From%3Ci16%3E-for-RedisValue"],[3273,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-RedisValue"],[3274,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-RedisValue"],[3275,"impl-From%3Ci32%3E-for-RedisValue"],[3276,"impl-From%3Ci64%3E-for-RedisValue"],[3277,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-RedisValue"],[3310,"impl-From%3CVecDeque%3CGeoValue%3E%3E-for-MultipleGeoValues"],[3311,"impl-From%3CVec%3CGeoValue%3E%3E-for-MultipleGeoValues"],[3312,"impl-From%3CGeoValue%3E-for-MultipleGeoValues"],[3334,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-MultipleKeys"],[3335,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-MultipleKeys"],[3336,"impl-From%3COption%3CRedisKey%3E%3E-for-MultipleKeys"],[3337,"impl-From%3CT%3E-for-MultipleKeys"],[3339,"impl-From%3C(A0,+A1,+A2)%3E-for-MultipleKeys"],[3340,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-MultipleKeys"],[3341,"impl-From%3C(A0,+A1)%3E-for-MultipleKeys"],[3342,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-MultipleKeys"],[3343,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-MultipleKeys"],[3344,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-MultipleKeys"],[3345,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-MultipleKeys"],[3346,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-MultipleKeys"],[3347,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-MultipleKeys"],[3348,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-MultipleKeys"],[3349,"impl-From%3C%26%5BK;+N%5D%3E-for-MultipleKeys"],[3350,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-MultipleKeys"],[3351,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-MultipleKeys"],[3352,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-MultipleKeys"],[3353,"impl-From%3C()%3E-for-MultipleKeys"],[3354,"impl-From%3CVec%3CT%3E%3E-for-MultipleKeys"],[3355,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleKeys"],[3356,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-MultipleKeys"],[3385,"impl-From%3Ci64%3E-for-ZRangeBound"],[3386,"impl-From%3C%26str%3E-for-ZRangeBound"],[3387,"impl-From%3CString%3E-for-ZRangeBound"],[3389,"impl-From%3C%26String%3E-for-ZRangeBound"],[3391,"impl-From%3C%26String%3E-for-ZRange"],[3392,"impl-From%3Ci64%3E-for-ZRange"],[3394,"impl-From%3C%26str%3E-for-ZRange"],[3395,"impl-From%3C%26ZRange%3E-for-ZRange"],[3396,"impl-From%3CString%3E-for-ZRange"],[3400,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleIDs"],[3401,"impl-From%3CVec%3CT%3E%3E-for-MultipleIDs"],[3402,"impl-From%3CT%3E-for-MultipleIDs"],[3407,"impl-From%3CString%3E-for-XID"],[3408,"impl-From%3CStrInner%3CBytes%3E%3E-for-XID"],[3409,"impl-From%3C%26str%3E-for-XID"],[3410,"impl-From%3C%26String%3E-for-XID"],[3412,"impl-From%3C()%3E-for-XPendingArgs"],[3413,"impl-From%3C(u64,+S,+E,+u64,+C)%3E-for-XPendingArgs"],[3415,"impl-From%3C(u64,+S,+E,+u64)%3E-for-XPendingArgs"],[3416,"impl-From%3C(S,+E,+u64)%3E-for-XPendingArgs"],[3417,"impl-From%3C(S,+E,+u64,+C)%3E-for-XPendingArgs"],[3423,"impl-From%3CVec%3CS%3E%3E-for-GetLabels"],[3424,"impl-From%3C%5BS;+N%5D%3E-for-GetLabels"],[4173,"impl-TryFrom%3C(f64,+T)%3E-for-MultipleZaddValues"],[4174,"impl-TryFrom%3CVecDeque%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[4175,"impl-TryFrom%3CVec%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[4181,"impl-TryFrom%3C%26str%3E-for-Server"],[4182,"impl-TryFrom%3CString%3E-for-Server"],[4193,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisMap"],[4195,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisMap"],[4196,"impl-TryFrom%3C(K,+V)%3E-for-RedisMap"],[4197,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-RedisMap"],[4198,"impl-TryFrom%3C%5B(K,+V);+N%5D%3E-for-RedisMap"],[4199,"impl-TryFrom%3C%26%5B(K,+V);+N%5D%3E-for-RedisMap"],[4200,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-RedisMap"],[4202,"impl-TryFrom%3Cu64%3E-for-RedisValue"],[4203,"impl-TryFrom%3CVec%3CT%3E%3E-for-RedisValue"],[4205,"impl-TryFrom%3Cu128%3E-for-RedisValue"],[4206,"impl-TryFrom%3Ci128%3E-for-RedisValue"],[4207,"impl-TryFrom%3Cusize%3E-for-RedisValue"],[4208,"impl-TryFrom%3COption%3CT%3E%3E-for-RedisValue"],[4209,"impl-TryFrom%3CBytesFrame%3E-for-RedisValue"],[4210,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisValue"],[4211,"impl-TryFrom%3C%26%5BT;+N%5D%3E-for-RedisValue"],[4212,"impl-TryFrom%3CVecDeque%3CT%3E%3E-for-RedisValue"],[4213,"impl-TryFrom%3C%5BT;+N%5D%3E-for-RedisValue"],[4214,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisValue"],[4220,"impl-TryFrom%3C%26str%3E-for-Toggle"],[4221,"impl-TryFrom%3CString%3E-for-Toggle"],[4222,"impl-TryFrom%3C%26String%3E-for-Toggle"],[4273,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-FnPolicy"],[4274,"impl-TryFrom%3C%26str%3E-for-FnPolicy"],[4275,"impl-TryFrom%3C%26StrInner%3CBytes%3E%3E-for-FnPolicy"],[4277,"impl-TryFrom%3CString%3E-for-FnPolicy"],[4278,"impl-TryFrom%3C%26String%3E-for-FnPolicy"],[4316,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[4317,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-MultipleOrderedPairs"],[4319,"impl-TryFrom%3C(K,+V)%3E-for-MultipleOrderedPairs"],[4320,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[4324,"impl-TryFrom%3C(K,+S)%3E-for-XCap"],[4325,"impl-TryFrom%3C(K,+T,+S,+Option%3Ci64%3E)%3E-for-XCap"],[4327,"impl-TryFrom%3C(K,+T,+S)%3E-for-XCap"],[4332,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-Timestamp"],[4333,"impl-TryFrom%3C%26str%3E-for-Timestamp"],[4335,"impl-TryFrom%3CString%3E-for-Timestamp"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAP0L8AABAAEACgAAAAwABAAdAA8ALwAOAEAABwBLABsAaAAIAH4AAQCBAAUAngABAKsAAgCwAAgAvQAYANgABwD4AAMA/QAJAAgBBwASAQEAHQEMADMBAAC2AwAAhgQdAKoEBwC0BAIAuQQQAM8EAwDfBAIA6gQQAP0EAQAABQIABQUFAAwFAAAQBRwALgUBADMFBgA7BQEAPwUAAEEFAABDBQIASAUAAE0FAABRBQAAVgUBAFkFAABbBQAAYwUBAG8FAgB0BQEAeAUHAIQFAQCHBQAAiwUAAI0FAgCSBQEAmwUAAJ0FAwCkBQQAqwUBAK4FAAC3BQEAuwUAAMAFAADCBQAAxAUCAMgFAADKBQMA1AUAANgFAADaBQAA3AUBAN8FAgDjBQEA6AUAAOsFAADyBQAA9AUAAPYFAgD6BQQAAwYKABgGAgAeBgEAIQYCACYGAAAqBgAALQYDADIGAgA8BgEAPwYAAEEGAABDBgEARgYCAFYGAQBaBgAAYAYBAGQGAAB1BgEAegYAAH0GAACCBgEAhwYAAIkGAQCNBgEAkAYGAJgGAQCbBgAAnQYIAKcGAQCtBgAAsAYBALQGBQC9BgEAxgYCAM4GAADRBgwA3wYAAOEGAADqBgAA8wYFAPsGAAAAB/0A/wcBAAIIAAAJCGMBbgkAAHIJAQB2CQcAfwkHAIwJAACPCQIAkwkDAJkJBACfCSEAygkBAc4KgQBRCwAAUwtnAL0LAQDFCwIAywsBANALfwBSDAAAVAwBAFgMAwBhDAIAZQwAAGgMAwBtDAAAbwwCAHMMAQB2DAEAfQwGAIUMGACfDAYApwwBAKoMCgC2DBgA1QwAAOsMAADvDAIABw0DAAwNEQA6DQIAPg0AAEANAQBDDQIASA0DAE8NBABVDQEAWA0CAF4NAABgDQEAYw0AAGUNAABoDQAAaw0AAHANCQCCDQAAiA0HAJENAACTDQAAlg0JAKQNAACmDQUArQ0IALcNAAC9DQIAwQ2DAEcOBADZDgAA3g4AAOYOAADqDgAA7Q4AAPAOAAD0DgQA+w4FAAIPAwAIDwUAEA8BABMPAQAWDwEAHA8AACEPBQAqDwIALg8BADMPAAA1DwAAOg8BAEMPAwBJDwAASw8OAFsPBwBlDwUAbg8DAHUPAQB5DwAAfA8AAIIPAACFDwQAiw8GAJMPAACdDwIAoQ8AAKMPBwCuDwAAsA8DALUPAAC3DwIAvQ92ADYQCABBEDcBehF+APsRAAADEgMACBJ+AIsSBQCSEgUAmhJDAOUSAwA="}]]')); +var searchIndex = new Map(JSON.parse('[["fred",{"t":"DDCQCCQCCDCDDDDDCCFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPFGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKPKPPPPPKKKKPPKKKKKPKKKKPKKPPPKPKKIGKKPKPPKKKKKKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFKFONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNONNNNNNNNNNNNNNNNNNNFONNONNNOONNNNNNNNNHONNNNNNEEEEEEEEEEEEEEEEEEEEEEEPPPGGGPPPPPPPIPPPPPPPPPPPFGPPPPPPGPPPPGFPPPPPPPPGGGGGGPPGPGGFGFGGGPPPPIPPFPPPPPPPPPKPPPPPPPFSFPPPPPPPPPPPGPPPGPPPPPPGGPPPPPPPPPPGPKKFFFFFGPPFFPGFGGPFPFPPPPPKPPPPPGPPGPPPPFPPPFPPGPPPPPPPFIPIPPGGPPPPPPPPPPPPPPPPPFFPGPPPPPPPPPPPPFFFFFIIFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFGPPPRFPPPPPPPPPPPPPFPPGGFFFGGGGPPPFKPKIGIGPPPFPFGKPFGFFFFFFFGFFPPFGFPGPPGGPPPPPFFPPPPGGPPFPPPPPPPPPPPPGPPPPPPPPPFPPGFGGPGFPPFPPPPPPPPFFPPFGGGFIIPPPGFGGFPGNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNOOOONNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNONOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOONOOOOOOOOONNNNNNNNNOOOOONNOOOMNNNNOMNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOONNMOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNOONONNNNNNNNNNNNNNNNOMNNNNNNNNNNNNNNNONOOOONOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNOOOOONNOOOOOOOONNNNNNNNNNOOONOONOOMOOOOOOOOOOOOOOOOOONNOOONNNNNNNNNNNNNNNNNNNNNMNNNNNOOOOOOOOOOOOOOOOOONNNNNNNNNOOOOOOOOOOOOOOONOOOONNOOOONNONOOMMNNNNOOOOOOOOOOOONNNNNNNNOOONOOOOOOOOONNNNNMNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOSHHHHHHH","n":["bytes","bytes_utils","clients","cmd","error","interfaces","json_quote","mocks","monitor","native_tls","prelude","rustls","rustls_native_certs","serde_json","socket2","tracing","types","util","Pipeline","RedisClient","RedisPool","Replicas","SentinelClient","SubscriberClient","Transaction","WithOptions","active_connections","all","borrow","","","","","","","","borrow_mut","","","","","","","","client","clients","clone","","","","","","","clone_into","","","","","","","","clone_new","","clone_to_uninit","","","","","","","","cluster_node","connect","connect_pool","default","deref","","","","","","","","","deref_mut","","","","","","","","drop","","","","","","","","enable_heartbeat","eq","exec","fmt","","","","","","","","","force_reconnection","from","","","","","","","","from_clients","hash_slot","hscan","id","init","","","","","","","","","into","","","","","","","","last","","len","manage_subscriptions","new","","","","next","next_connected","nodes","options","pipeline","","","prefer_connected","psubscribe","punsubscribe","quit","replicas","","reset","resubscribe_all","scan","scan_cluster","set_resolver","size","split_cluster","sscan","ssubscribe","subscribe","sunsubscribe","sync","to_client","to_owned","","","","","","","","to_string","tracked_channels","tracked_patterns","tracked_shard_channels","try_all","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","unsubscribe","unsubscribe_all","update_perf_config","vzip","","","","","","","","wait_for_connect","watch_before","watched_len","with_cluster_node","zscan","Auth","Backpressure","Canceled","Cluster","Config","IO","InvalidArgument","InvalidCommand","NotFound","Parse","Protocol","RedisError","RedisErrorKind","Replica","Sentinel","Timeout","Tls","Unknown","Url","borrow","","borrow_mut","","change_kind","clone","","clone_into","","clone_to_uninit","","deref","","deref_mut","","details","drop","","eq","","fmt","","","from","","","init","","into","","is_canceled","is_cluster","is_not_found","is_replica","kind","new","new_canceled","source","to_owned","","to_str","to_string","try_from","","try_into","","type_id","","vzip","","AclInterface","Array","AuthInterface","BigNumber","BlobError","BlobString","Boolean","ChunkedString","ClientInterface","ClientLike","ClusterInterface","ConfigInterface","Double","Err","EventInterface","FunctionInterface","GeoInterface","HashesInterface","HeartbeatInterface","Hello","HyperloglogInterface","KeysInterface","ListInterface","LuaInterface","Map","MemoryInterface","MetricsInterface","Null","Number","Ok","PubsubInterface","Push","RediSearchInterface","RedisJsonInterface","RedisResult","Resp3Frame","SentinelInterface","ServerInterface","Set","SetsInterface","SimpleError","SimpleString","SlowlogInterface","SortedSetsInterface","StreamsInterface","TimeSeriesInterface","TrackingInterface","TransactionInterface","VerbatimString","acl_cat","","acl_deluser","","acl_genpass","","acl_getuser","","acl_list","","acl_load","","acl_log_count","","acl_log_reset","","acl_save","","acl_setuser","","acl_users","","acl_whoami","","active_connections","","append","","auth","bgrewriteaof","","bgsave","","blmove","","blmpop","","blpop","","brpop","","brpoplpush","","bzmpop","","bzpopmax","","bzpopmin","","cached_cluster_state","","ckquorum","","client_caching","","client_config","","client_getname","","client_getredir","","client_id","","client_info","","client_kill","","client_list","","client_pause","","client_reconnect_policy","","client_reply","","client_setname","","client_tracking","","client_trackinginfo","","client_unblock","","client_unpause","","cluster_add_slots","","cluster_bumpepoch","","cluster_change_rx","cluster_count_failure_reports","","cluster_count_keys_in_slot","","cluster_del_slots","","cluster_failover","","cluster_flushslots","","cluster_forget","","cluster_get_keys_in_slot","","cluster_info","","cluster_keyslot","","cluster_meet","","cluster_myid","","cluster_nodes","","cluster_replicas","","cluster_replicate","","cluster_reset","","cluster_saveconfig","","cluster_set_config_epoch","","cluster_setslot","","cluster_slots","","command_queue_len","","config_get","","","","config_resetstat","","config_rewrite","","config_set","","","","connect","","connection_config","","connection_ids","","copy","","custom","","custom_raw","","dbsize","","decr","","decr_by","","del","","dump","","enable_heartbeat","error_rx","eval","","evalsha","","exists","","expire","","expire_at","","failover","","","","fcall","","fcall_ro","","flushall","","flushall_cluster","","flushconfig","","force_reconnection","","ft_aggregate","","ft_aliasadd","","ft_aliasdel","","ft_aliasupdate","","ft_alter","","ft_config_get","","ft_config_set","","ft_create","","ft_cursor_del","","ft_cursor_read","","ft_dictadd","","ft_dictdel","","ft_dictdump","","ft_dropindex","","ft_explain","","ft_info","","ft_list","","ft_search","","ft_spellcheck","","ft_sugadd","","ft_sugdel","","ft_sugget","","ft_suglen","","ft_syndump","","ft_synupdate","","ft_tagvals","","function_delete","","function_delete_cluster","","function_dump","","function_flush","","function_flush_cluster","","function_kill","","function_list","","function_load","","function_load_cluster","","function_restore","","function_restore_cluster","","function_stats","","geoadd","","geodist","","geohash","","geopos","","georadius","","georadiusbymember","","geosearch","","geosearchstore","","get","","get_master_addr_by_name","","getdel","","getrange","","getset","","has_reconnect_policy","","hdel","","hello","hexists","","hget","","hgetall","","hincrby","","hincrbyfloat","","hkeys","","hlen","","hmget","","hmset","","hrandfield","","hset","","hsetnx","","hstrlen","","hvals","","id","","incr","","incr_by","","incr_by_float","","info","","info_cache","","init","","invalidation_rx","","is_clustered","","is_connected","","is_pipelined","","json_arrappend","","json_arrindex","","json_arrinsert","","json_arrlen","","json_arrpop","","json_arrtrim","","json_clear","","json_debug_memory","","json_del","","json_get","","json_merge","","json_mget","","json_mset","","json_numincrby","","json_objkeys","","json_objlen","","json_resp","","json_set","","json_strappend","","json_strlen","","json_toggle","","json_type","","keyspace_event_rx","lastsave","","lcs","","lindex","","linsert","","llen","","lmove","","lmpop","","lpop","","lpos","","lpush","","lpushx","","lrange","","lrem","","lset","","ltrim","","master","","masters","","memory_doctor","","memory_malloc_stats","","memory_purge","","memory_stats","","memory_usage","","message_rx","mget","","monitor","","mset","","msetnx","","multi","","myid","","num_primary_cluster_nodes","","on_any","on_cluster_change","on_error","on_invalidation","","on_keyspace_event","on_message","on_reconnect","on_unresponsive","pending_scripts","","perf_config","","persist","","pexpire","","pexpire_at","","pfadd","","pfcount","","pfmerge","","ping","","protocol_version","","psubscribe","","pttl","","publish","","pubsub_channels","","pubsub_numpat","","pubsub_numsub","","pubsub_shardchannels","","pubsub_shardnumsub","","punsubscribe","","quit","","randomkey","","read_latency_metrics","","read_network_latency_metrics","","read_redelivery_count","","read_req_size_metrics","","read_res_size_metrics","","reconnect_rx","remove","","rename","","renamenx","","replicas","","reset","","restore","","rpop","","rpoplpush","","rpush","","rpushx","","sadd","","scard","","script_debug","","script_exists","","script_flush","","script_flush_cluster","","script_kill","","script_kill_cluster","","script_load","","script_load_cluster","","sdiff","","sdiffstore","","select","","sentinel_nodes","","sentinel_primary","","sentinels","","server_version","","set","","","","set_resolver","","setrange","","shutdown","","simulate_failure","","sinter","","sinterstore","","sismember","","slowlog_get","","slowlog_length","","slowlog_reset","","smembers","","smismember","","smove","","sort","","sort_ro","","spawn_event_listener","spop","","spublish","","srandmember","","srem","","ssubscribe","","start_tracking","","state","","stop_tracking","","strlen","","subscribe","","sunion","","sunionstore","","sunsubscribe","","sync_cluster","","take_latency_metrics","","take_network_latency_metrics","","take_redelivery_count","","take_req_size_metrics","","take_res_size_metrics","","ts_add","","ts_alter","","ts_create","","ts_createrule","","ts_decrby","","ts_del","","ts_deleterule","","ts_get","","ts_incrby","","ts_info","","ts_madd","","ts_mget","","ts_mrange","","ts_mrevrange","","ts_queryindex","","ts_range","","ts_revrange","","ttl","","unblock_self","","unlink","","unresponsive_rx","unsubscribe","","unwatch","","update_perf_config","","uses_sentinels","","wait","","wait_for_connect","","watch","","with_options","","xack","","xadd","","xautoclaim","","xautoclaim_values","","xclaim","","xclaim_values","","xdel","","xgroup_create","","xgroup_createconsumer","","xgroup_delconsumer","","xgroup_destroy","","xgroup_setid","","xinfo_consumers","","xinfo_groups","","xinfo_stream","","xlen","","xpending","","xrange","","xrange_values","","xread","","xread_map","","xreadgroup","","xreadgroup_map","","xrevrange","","xrevrange_values","","xtrim","","zadd","","zcard","","zcount","","zdiff","","zdiffstore","","zincrby","","zinter","","zinterstore","","zlexcount","","zmpop","","zmscore","","zpopmax","","zpopmin","","zrandmember","","zrange","","zrangebylex","","zrangebyscore","","zrangestore","","zrank","","zrem","","zremrangebylex","","zremrangebyrank","","zremrangebyscore","","zrevrange","","zrevrangebylex","","zrevrangebyscore","","zrevrank","","zscore","","zunion","","zunionstore","","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","Buffer","Echo","MockCommand","Mocks","SimpleMap","args","borrow","","","","borrow_mut","","","","clear","","clone","clone_into","clone_to_uninit","cmd","del","deref","","","","deref_mut","","","","drop","","","","eq","fmt","","","","from","","","","get","init","","","","inner","","into","","","","len","new","","pop_back","pop_front","process_command","","","","process_transaction","","push_back","push_front","set","subcommand","take","","to_owned","try_from","","","","try_into","","","","type_id","","","","vzip","","","","Command","args","borrow","borrow_mut","client","clone","clone_into","clone_to_uninit","command","db","deref","deref_mut","drop","eq","fmt","","from","init","into","run","timestamp","to_owned","to_string","try_from","try_into","type_id","vzip","Blocking","Builder","ConnectionConfig","Expiration","FromRedis","Options","PerformanceConfig","ReconnectPolicy","RedisClient","RedisConfig","RedisError","RedisErrorKind","RedisKey","RedisPool","RedisValue","RedisValueKind","Server","ServerConfig","SetOptions","TcpConfig","TlsConfig","TlsConnector","TracingConfig","Add","Addr","After","AggregateOperation","AggregateOptions","Aggregator","All","","","AllowCrossSlotKeys","AllowOOM","AllowStale","AlmostExact","Any","Append","Apply","Array","","","","Asc","Auto","Avg","","","BackpressureConfig","BackpressurePolicy","Before","BigNumber","BlobError","BlobString","Block","","Blocking","Boolean","","","","BucketTimestamp","Builder","Busy","ByLex","ByScore","Bytes","","","Centralized","ChunkedString","ClientKillFilter","ClientKillType","ClientPauseKind","ClientReplyFlag","ClientState","ClientUnblockFlag","Clients","Cluster","ClusterDiscoveryPolicy","ClusterDown","ClusterFailoverFlag","ClusterHash","ClusterInfo","ClusterResetFlag","ClusterRouting","ClusterSetSlotState","ClusterState","ClusterStateChange","Clustered","CommandStats","Compressed","ConfigEndpoint","ConnectHandle","Connected","Connecting","ConnectionConfig","Constant","Count","","","CountDistinct","CountDistinctIsh","Cpu","CrashAfterElection","CrashAfterPromotion","CredentialProvider","Custom","","","","","","","CustomCommand","DEFAULT_JITTER_MS","DatabaseMemoryStats","Default","DefaultHost","Desc","Disconnected","Disconnecting","Double","","","","","Drain","DuplicatePolicy","EX","EXAT","Earliest","Encoding","End","Error","","Exact","Exclude","Exclusive","Expiration","ExpireOptions","Exponential","Fail","Feet","Filter","First","","FirstKey","FirstValue","","Flush","FnPolicy","Force","FromRedis","FromRedisKey","FtAggregateOptions","FtAlterOptions","FtCreateOptions","FtSearchOptions","Function","FunctionFlag","GT","Geo","GeoPosition","GeoRadiusInfo","GeoShape","GeoUnit","GeoValue","GetLabels","GetTimestamp","GreaterThan","GroupBy","","HScanResult","Hard","Hash","","Hello","Help","HostMapping","ID","Importing","Include","Inclusive","Index","IndexKind","InfiniteLex","InfiniteScore","InfoKind","Integer","","","Interrupt","Invalidation","JSON","KEEPTTL","Keyspace","KeyspaceEvent","Kilometers","LAddr","LMoveDirection","LT","Last","","Latest","Left","LessThan","Lex","Library","Limit","","LimitCount","Linear","List","ListLocation","Load","Loading","Manual","Map","","","","Master","MasterDown","Max","","","","","","","MaxLen","Memory","MemoryStats","Message","","MessageKind","Meters","Mid","Migrating","Miles","Min","","","","","","MinID","Misconf","MultipleGeoValues","MultipleHashSlots","MultipleIDs","MultipleKeys","MultipleOrderedPairs","MultipleStrings","MultipleValues","MultipleWeights","MultipleZaddValues","NX","","Native","NegInfiniteScore","NegInfinityLex","NewInGroup","No","NoCluster","NoReplicas","NoSave","NoWrites","Node","None","","Normal","Now","Null","","","","Number","","Numeric","Off","","Offset","Ok","On","","Options","Ordering","PMessage","PX","PXAT","Page","PerformanceConfig","Persistence","Pubsub","Push","Quantile","Queued","","","RESP2","RESP3","Random","RandomSample","Range","","RangeAggregation","ReadOnly","Rebalance","ReconnectError","ReconnectPolicy","RedisConfig","RedisKey","RedisMap","RedisValue","RedisValueKind","Reducer","ReducerFunc","Remove","Replace","Replica","ReplicaConfig","ReplicaFilter","Replication","Resolve","Resp2TimeSeriesValues","Resp3Frame","Resp3TimeSeriesValues","RespVersion","Right","Rustls","SMessage","SScanResult","Save","ScanResult","ScanType","Scanner","Score","Script","ScriptDebugFlag","SearchField","SearchFilter","SearchGeoFilter","SearchHighlight","SearchParameter","SearchReducer","SearchSchema","SearchSchemaKind","SearchSortBy","SearchSummarize","SelectedLabels","Sentinel","SentinelConfig","SentinelFailureKind","Server","","ServerConfig","Set","","SetOptions","ShutdownFlags","SimpleError","SimpleString","Skip","SkipMe","Sleep","SlotRange","SlowlogEntry","Soft","Some","","SortBy","SortOrder","SpellcheckTerms","Stable","Start","Stats","","StdDev","StdP","","StdS","","Stream","String","","","","","StringOrNumber","Sum","","","","","Sync","TWA","Tag","Takeover","TcpConfig","Text","Timeout","Timestamp","TlsConfig","TlsConnector","TlsHostMapping","ToList","Toggle","TracingConfig","Type","Uncompressed","UnresponsiveConfig","UseCache","User","VarP","","VarS","","Vector","VerbatimString","Version","WithCursor","WithLabels","Write","XCap","XCapKind","XCapTrim","XID","XPendingArgs","XReadResponse","XReadValue","XX","","Yes","ZCmp","ZRange","ZRangeBound","ZRangeKind","ZScanResult","ZSet","ZSort","add_attributes","aggregation","alias","align","allocator_active","allocator_allocated","allocator_fragmentation_bytes","allocator_fragmentation_ratio","allocator_resident","allocator_rss_bytes","allocator_rss_ratio","aof_buffer","args","","array_len","as_bool","","as_bytes","","","as_bytes_str","","as_f64","as_functions","as_geo_position","as_i64","as_str","","","as_str_lossy","","as_string","as_u64","as_usize","attempts","attribute","","","","attributes","attributes_mut","auto_client_setname","auto_pipeline","avg","backpressure","blocking","","blocking_encode_threshold","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","broadcast_channel_capacity","bucket_duration","bucket_timestamp","build","","build_pool","build_sentinel_client","build_subscriber_client","caching","can_hash","channel","clients_normal","clients_slaves","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","cluster_cache_update_delay","cluster_current_epoch","cluster_hash","","","cluster_known_nodes","cluster_my_epoch","cluster_node","cluster_owner","cluster_size","cluster_slots_assigned","cluster_slots_fail","cluster_slots_ok","cluster_slots_pfail","cluster_state","cluster_stats_messages_received","cluster_stats_messages_sent","cmd","cmp","","","","","","","","cmp_precedence","connection_error_count","connection_task_queue","connection_timeout","connector","consumer","convert","","coordinates","count","","create_client","","","","","credential_provider","cursor","","","","","","database","dataset_bytes","dataset_percentage","db","","default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","default_centralized","","default_clustered","","default_command_timeout","default_native_tls","default_rustls","default_sleep","default_tracing_level","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","dialect","","disable_auto_backpressure","disable_cluster_health_check","distance","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","duration","empty","enabled","encode_len","end","","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","evalsha","evalsha_with_reload","expander","explainscore","extend","fail_fast","","fcall","fcall_ro","fetch","field_name","fields","","filter","","","","filters","find_key","flags","flatten_array_values","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fragmentation","fragmentation_bytes","frags","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_buffer","from_cluster_slots","from_code","from_config","from_hash","from_iter","","","","","","","from_key","","","from_lua","from_name","from_redis_value","from_static","","from_static_str","","","from_str","","from_url","from_url_centralized","from_url_clustered","from_url_sentinel","from_value","","","","","","","","full_tracing_level","func","functions","geofilters","get_config","get_connection_config","get_hash","","","","","","","","","","get_performance_config","get_policy","get_sentinel_config","get_server","groupby","has_more","","","","","hash","","","","","","","","","","","","hash_key","highlight","host","","hostnames","hosts","id","","identifier","idle","ignore_reconnection_errors","infields","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","inkeys","inner","","","","","","","","","inorder","internal_command_timeout","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_array","into_bytes","","into_bytes_str","into_geo_radius_result","into_integer","into_json","into_map","into_owned_bytes","into_set","into_string","","into_values","into_xautoclaim_values","into_xread_response","into_xread_value","into_zset_result","ip","is_aggregate_type","is_array","is_boolean","is_bytes","is_centralized","is_clustered","is_double","is_end_stream_frame","is_integer","is_map","is_maybe_map","is_normal_pubsub_message","is_null","is_ok","is_pattern_pubsub_message","is_queued","is_sentinel","is_shard_pubsub_message","is_string","is_unix_socket","keepalive","key","keys","keys_bytes_per_key","keys_count","kind","","","","","language","","language_field","latitude","lazy_connections","len","","","","","","","","","","","limit","linger","load","","longitude","lua","lua_caches","major","map","max","","max_attempts","max_command_attempts","max_command_buffer_len","max_feed_count","max_idle","max_in_flight_commands","max_redirections","","max_timeout","maxtextfields","member","","min","","minor","mocks","name","","","","","new","","","","","","","","","","new_centralized","new_clustered","new_constant","new_empty","new_end_stream","new_exponential","new_linear","new_ok","new_sentinel","new_static","new_with_tls","next","","","","","next_delay","no_backpressure","nocontent","nodelay","nofields","nofreqs","nohl","nooffsets","nostopwords","on","operation","options","order","overhead_hashtable_expires","overhead_hashtable_main","overhead_hashtable_slot_to_keys","overhead_total","params","","parse","partial_cmp","","","","","","","","password","","patch","payload","payload_field","peak_allocated","peak_percentage","pipeline","policy","port","","position","","pre","prefixes","pretty","primary","primary_fallback","property","radius","random_node","random_slot","range","reconnect_errors","reconnect_on_auth_error","reduce","refresh_interval","","replica","replicas","","replication_backlog","resolve","results","","","","","return","router_task_queue","rss_overhead_bytes","rss_overhead_ratio","samples","score","score_field","scorer","separator","server","","","set_cluster_discovery_policy","set_config","set_connection_config","set_jitter","set_performance_config","set_policy","set_sentinel_config","sha1","skipinitialscan","","slop","slots","sortby","start","","startup_allocated","stddev","stopwords","sum","summarize","tags","take","","","","take_attributes","take_results","","","","","tcp","temporary","timeout","","","timestamp","tls","","tls_server_name","to_byte","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_owned_frame","to_str","to_string","","","","","","","","total_allocated","tracing","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ttl","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","unique_hash_slots","unique_primary_nodes","units","unresponsive","username","","uses_native_tls","uses_rustls","uses_tls","value","","verbatim","","verbatim_string_format","version","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","with_config","with_connection_config","with_performance_config","with_sentinel_config","withcount","withpayloads","withscores","withsortkeys","expression","","fields","max","name","num","offset","properties","reducers","disable_backpressure_scaling","min_sleep_duration","attempts","","","delay","","jitter","","","max_attempts","","","max_delay","","min_delay","mult","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","arguments","casesensitive","name","noindex","","","","","","nostem","phonetic","separator","sortable","","","","unf","","","","weight","withsuffixtrie","","hosts","","password","policy","server","service_name","username","dictionary","","terms","","NONE","f64_to_redis_string","group_by_hash_slot","redis_keyslot","redis_string_to_f64","sha1_hash","static_bytes","static_str"],"q":[[0,"fred"],[18,"fred::clients"],[229,"fred::error"],[298,"fred::interfaces"],[1158,"fred::interfaces::Resp3Frame"],[1188,"fred::mocks"],[1275,"fred::monitor"],[1302,"fred::prelude"],[1325,"fred::types"],[4751,"fred::types::AggregateOperation"],[4760,"fred::types::BackpressurePolicy"],[4762,"fred::types::ReconnectPolicy"],[4777,"fred::types::Resp3Frame"],[4807,"fred::types::SearchSchemaKind"],[4830,"fred::types::ServerConfig"],[4837,"fred::types::SpellcheckTerms"],[4841,"fred::util"],[4849,"fred::clients::pool"],[4850,"fred::protocol::types"],[4851,"alloc::vec"],[4852,"core::result"],[4853,"core::future::future"],[4854,"fred::clients::pipeline"],[4855,"fred::glommio::interfaces"],[4856,"fred::modules::response"],[4857,"fred::clients::replica"],[4858,"fred::clients::redis"],[4859,"fred::clients::options"],[4860,"core::clone"],[4861,"fred::clients::sentinel"],[4862,"fred::clients::pubsub"],[4863,"fred::clients::transaction"],[4864,"core::option"],[4865,"core::time"],[4866,"core::fmt"],[4867,"fred::types::scan"],[4868,"futures_core::stream"],[4869,"fred::types::args"],[4870,"core::convert"],[4871,"bytes_utils::string"],[4872,"fred::types::config"],[4873,"std::collections::hash::map"],[4874,"fred::types::multiple"],[4875,"alloc::rc"],[4876,"alloc::string"],[4877,"alloc::collections::btree::set"],[4878,"core::any"],[4879,"serde_json::error"],[4880,"alloc::borrow"],[4881,"core::error"],[4882,"fred::commands::interfaces::acl"],[4883,"fred::commands::interfaces::keys"],[4884,"fred::commands::interfaces::server"],[4885,"fred::commands::interfaces::lists"],[4886,"fred::types::lists"],[4887,"fred::commands::interfaces::sorted_sets"],[4888,"fred::types::sorted_sets"],[4889,"fred::commands::interfaces::cluster"],[4890,"fred::commands::interfaces::sentinel"],[4891,"fred::commands::interfaces::client"],[4892,"fred::types::client"],[4893,"fred::types::misc"],[4894,"fred::types::cluster"],[4895,"fred::commands::interfaces::metrics"],[4896,"fred::commands::interfaces::config"],[4897,"fred::commands::interfaces::lua"],[4898,"fred::commands::interfaces::redisearch"],[4899,"fred::types::redisearch"],[4900,"bytes::bytes"],[4901,"fred::commands::interfaces::geo"],[4902,"fred::types::geo"],[4903,"fred::commands::interfaces::hashes"],[4904,"redis_protocol::resp3::types"],[4905,"fred::commands::interfaces::tracking"],[4906,"fred::commands::interfaces::redis_json"],[4907,"serde_json::value"],[4908,"fred::commands::interfaces::memory"],[4909,"core::net::ip_addr"],[4910,"fred::commands::interfaces::transactions"],[4911,"core::ops::function"],[4912,"fred::commands::interfaces::hyperloglog"],[4913,"fred::commands::interfaces::pubsub"],[4914,"fred::modules::metrics"],[4915,"fred::commands::interfaces::sets"],[4916,"semver"],[4917,"fred::commands::interfaces::slowlog"],[4918,"fred::commands::interfaces::timeseries"],[4919,"fred::types::timeseries"],[4920,"core::iter::traits::collect"],[4921,"fred::commands::interfaces::streams"],[4922,"fred::types::streams"],[4923,"core::hash"],[4924,"core::cmp"],[4925,"fred::modules::mocks"],[4926,"redis_protocol::error"],[4927,"fred::types::scripts"],[4928,"fred::types::builder"],[4929,"fred::protocol::hashers"],[4930,"fred::protocol::tls"],[4931,"fred::router::replicas"],[4932,"core::marker"],[4933,"alloc::boxed"],[4934,"core::pin"],[4935,"alloc::collections::vec_deque"],[4936,"rustls::client::client_conn"],[4937,"native_tls"],[4938,"tokio_native_tls"],[4939,"tokio_rustls"],[4940,"std::collections::hash::set"],[4941,"semver::parse"],[4942,"alloc::collections::btree::map"],[4943,"fred::modules"],[4944,"fred::utils"],[4945,"redis_protocol::utils"]],"i":"``````````````````````````bAb0B`2AlBdBfAjBh6574321017574321065743210426574321007746557432106574321065743210700657443210765743210704065774321065743210670274327715410722774024477442221265743210422266574321065743210657432102276574321070044Gb0000000000``000000l1010010101010100101001001010100000000011001010101`Kn`00000````0Cf`````1````1``110`1``````1`11``````1Gl00000000000000000000000Ad0Hb0HfHh000Hj000000000Ib00000If0Ij0Il08800000000000000880000000000002222Jl33333333333333333333333333333333333333Kf0Kh04400000044;;;;33::;;;;88::::::::L`3Lb000<<<<<<66::Lf000>>>>77>>Lh000000000000000000000000000000000000000000000000000111111111111111111111111Mj000000000000000??99??????Ad0Nh0Hf111111111111111111111111111122Hb0000033==33O`0444444Od0000000000000000000000000000000000000000000=Hh033Hj0000000000000000000000000Ij000Ol000000000Jl77227777A@b033If022288222244<<999999A@h00000====A@j0;;00000000000000>>;;Kf000000000577<<<<7777<<88888888A@n000Lb0000000000000001111;;;;;;99Ad0??::00??00::222222AAj00000333333<<<<`3355333355??11??Hb066444466885555555555AB`00000000000000000000000000000000011Il022<88224444Hh0553355ACd000000000000000000000000000000000000000000000000000Ib00000000000000000000000000000000000000000000000000000000000B@nBA`BAbBAdBAfBAhBAjBAlBAnBB`BBbBBdBBfBBh=<;:987654321500`````AEj0AElAEfAEh321010333313210321032103321032101321010321001000AEn3210011242144321432143214321`AF`00000000000000000`0000000```````````````````````JnInOj```JbNnAJ`AKh00AL``MhAJfKnGnAGhHdNdACjAIjABhALd``Oj999AH`ABd`;:98``AGnAEd0<;:AHl>``````Nn0`3````````10ABbAHj`AAn0`Ed=<;==4AAh0`AFhAFj:AIjAKdABfACb```;4Nd99KnGnAGfAGhHdAHb`AAd08`ALfAH`JhAL`MdAKn``EdAGjN`AJfABdABhAFh0AIjMh`K`````````A@fAKd``0````ADj`9`KbAKbEnKnAAh`InKdMdAKnAKl`00`GnAGhHdAH```KnEn``11JdInAHb``KbBBjAJ`AJf``KdALf`NnAIjABhALd10=GnAGfAGhHdEn`ADn8ABd87AA`9AKdK``1Jh````=``InABb`AHj2?>?>5Kn``ABlJb```````MlA@f;`````>`4ABnM`1AIf0000000AIhAIlHd:0:Df1011111;0101111EdAJhAJjAK`LlKn0EbE`A@l1DnKl3AAbNj74ADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnA@lADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfE`44AFfAAb111EjHdOnAIf04NjKnAFhAFjAFlAFnhAG`9AGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAAbNjKnAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfEbAGlDfEjKl3312333333330AAbh4OhAKfAKhAFdAKj6AGd<AAbNj3AFhAFjAFlAFnhAG`On9AGdAGfDfNlAGhHdJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfAJlAJnAK`AKbEnAKfAKhAFdAKjIdADjAEdAKnAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAKf0Mb0EjDn1AFd0AMbM`AJlAJnAMh0AGdLn:AFh8HdAAb0NjKn4AFjAFlAFnh0AG`OnAGbIh>AGfDfNlAGh0?AFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAn0AIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKf0AKhAFd0AKj0IdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfAIf0AJlAAbNjKn000A@lADnJj0000F`DbFfG`AE`0000ADlAFh0000AFjAFl0AFn0000h000AG`OnAGbIhAGdAGf000000000000000Df000000000000000000000000Nl00AGhHd000000000000000000000000000000000000AFfJ`InJbJdJf0ObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNf0N`AI`Mn000AIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFn0000000000000000000000AIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKl0000AKnAEb00000AL`ACl0ACf000ALbACh0ACj0000ADf00000ABbABdABf0ABhABl00ACb0ABn0ALdAC`0ALfKnIhAKjAFfAKfJjAE`ADlNlHdFnABlAD`Df49;AIb15AGf26AAbAKhDn000Af6:AGlNfAIdAIfAIhAHnAIlAKjMbAFf0=KnhDfHdOhAKfAKhAFd:888IhAC`ALlF`DbFfG`AAb?AFh?>=<;:9AKjAIb:MbhEfAFlAHlAGbAIhAInADfAGd9=NjKnA@lADnJjF`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfMbJjAE`ADlDfNlMnFnAClACf9EbAHhAAbNjKnA@lADn?F`DbFfG`AE`ADlAFhAFjAFlAFnhAG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfHdDf1111111101Fn2222AIh3333AHl04Kn555055051051AHfOhObAIf049OnM`AEbMbLn0NfAGd;JjAE`ADlIhNlMnFnAClACfAJl=AHfAKfLj>1AIfAAbB@`A@lAJhEjEb0E`AJbAHd34AHhLnAI`AIb:9=>?AJnKnDfNlHd3ALlF`DbFfG`EbLnEjLjMbAIhDnEfhNjAAb1KnAFhAFjAFlAFn7AG`OnAGbIhAGdAGfDfNlAGhHdAFfJ`InJbJdJfObAGjAGlK`KbKdAGnEdAH`AHbAHdAHfAHhAHjEbE`DnAHlAHnEfEjNfN`AI`MnAIbHlOjAAfOhNnKlJnMlA@fAAdAAnAIdAIfAIhAA`AAhNdMhJhFnAIjAIlAInAJ`AJbAJdAJfLjAJhAJjAJlAJnAK`MbAKbLnAKdM`LlMdEnAKfAKhAFdAKjIdADjAEdAKlAKnAEbAL`AClACfALbAChACjADfABbABdABfABhABlACbABnALdAC`ALfKnAKhAAb2hAGhAAnAKfAFdAKjAIfDnEf9Nj<>{{{d{Lh}}ceCdg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{El}}}Af}0{{{d{Lh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}Af}0{{{d{Lf}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Lf}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Dj}}}}0{{{d{Lf}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Lf}}Cd}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Lf}}Cd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}022{{{d{Lf}}{Bl{c}}Cd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Lf}}Cdc}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}000{{{d{Lf}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Mf}}}{{H`{Mh}}}Af}0{{{d{Lf}}ce}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Mf}}}{{H`{Mh}}}}066{{{d{Mj}}c{Bl{Ml}}Cde}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Mn}}}Af}0{{{d{Mj}}ceg{Bl{N`}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{Mj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{Mj}}ceHnN`CdCdCd{Bl{{Ld{DlNb}}}}{Bl{Nd}}{Bl{Df}}{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Nf}}}Af}0{{{d{Mj}}ceHnN`CdCdCd{Bl{{Ld{DlNb}}}}{Bl{Nd}}{Bl{Df}}{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Mj}}c{Bl{Hd}}{Bl{Nf}}{Bl{{Ld{HnN`}}}}{Bl{{Ld{HnHnN`}}}}{Bl{Nd}}{Bl{{Ld{DlNb}}}}CdCdCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Mj}}ce{Bl{Hd}}{Bl{Nf}}{Bl{{Ld{HnN`}}}}{Bl{{Ld{HnHnN`}}}}{Bl{Nd}}{Bl{{Ld{DlNb}}}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}011{{{d{Hb}}cC`C`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ad}}}Cd}0{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Hf}}Nj{Bl{{Ld{DjDj}}}}{Bl{Dj}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}000{{{d{Nh}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Nh}}ceI`}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Nh}}ceHn}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0222255{{{d{Nh}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{Nh}}c{Bl{{Ld{I`Cd}}}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}011{{{d{Nh}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{Hd}}}Af}06655{{{d{Ad}}}{{d{Gd}}}}0>>{{{d{Hb}}cI`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}cHn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ad}}{Bl{Nn}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bn}}}}}}}}}}0{{{d{O`}}}{{`{Ob}}}}0{{{d{Ad}}}Cd}00000{{{d{Od}}ce{j{g}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ceg{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ceI`{j{g}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}c{Bl{e}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}c{Bl{e}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}ceI`I`}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}02222{{{d{Od}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{Od}}c{Bl{e}}{Bl{g}}{Bl{i}}k}{{`{{A`{}{{f{{Cf{m}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{El}}}Af}0{{{d{Od}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{Dj}}}Af}0{{{d{Od}}{j{{Ld{ceg}}}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}022777777{{{d{Od}}ceg{Bl{Ml}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0{{{d{Od}}c{Bl{e}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Of}}}Af}0996699{{{d{Jl}}}{{`{Oh}}}}{{{d{Hh}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Hb}}ceCdCd{Bl{I`}}Cd}{{`{{A`{}{{f{{n{gl}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}cI`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}cOjeg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{Hj}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ceHlHl}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}cHl{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Hj}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce{Bl{I`}}{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{Hj}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}cI`e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}00011{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ol}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}000{{{d{Ol}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}011{{{d{Ol}}c{Bl{Cn}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Jl}}}{{`{On}}}}{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ij}}cA@`ClCn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{H`{Nl}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{H`{Nl}}}Af}0{{{d{A@b}}}Bh}099{{{d{If}}}C`}0{{{d{Jl}}ceg}{{`{{Cf{Bj}}}}}{{A@d{l}{{f{{Cf{Bj}}}}}}}{{A@d{h}{{f{{Cf{Bj}}}}}}}{{A@d{{j{Jn}}}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{{j{Jn}}}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{l}{{f{{Cf{Bj}}}}}}}}{{{d{O`}}c}{{`{{Cf{Bj}}}}}{{A@d{Ob}{{f{{Cf{Bj}}}}}}}}0{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{Oh}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{On}{{f{{Cf{Bj}}}}}}}}{{{d{Jl}}c}{{`{{Cf{Bj}}}}}{{A@d{h}{{f{{Cf{Bj}}}}}}}}0{{{d{Ij}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}E`}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hb}}cI`{Bl{A@f}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}000{{{d{A@h}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@h}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@h}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Ad}}}Nj}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}077{{{d{A@j}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Hd}}}Af}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{A@j}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{El}}}Af}0220044{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{Kf}}}A@l}000{{{d{Kf}}}C`}01111{{{d{Jl}}}{{`{h}}}}{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Hb}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0001111{{{d{Hb}}cI`HdCdCd{Bl{I`}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{Hj}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}000{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Lb}}AA`}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Lb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{El}}}Af}0{{{d{Lb}}Cd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}000{{{d{Lb}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}000{{{d{Lb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}000{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Hh}}Kj}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hh}}}{{Bl{{j{h}}}}}}0{{{d{Hh}}}{{Bl{h}}}}0{{{d{Ij}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Dj}}}Af}0{{{d{Ad}}}{{Bl{AAb}}}}0{{{d{Hb}}ce{Bl{AAd}}{Bl{Ml}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ij}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Nl}}}Af}0{{{d{Ad}}{Fd{Fb}}}{{`{A`}}}}0{{{d{Hb}}cCne}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ad}}{Bl{AAf}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Ij}}AAh}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0<<;;{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{AAj}}{Bl{I`}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{AAj}}}{{`{{A`{}{{f{{Cf{c}}}}}}}}}Af}0{{{d{AAj}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{A@n}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Hj}}c{Bl{Dj}}{Bl{AAl}}e{Bl{Nd}}Cd{Bl{Df}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{d{Hj}}c{Bl{Dj}}{Bl{AAl}}e{Bl{Nd}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{`{c}}e}{{`{{Cf{Bj}}}}}Bb{{A@d{c}{{f{{Cf{Bj}}}}}}}}{{{d{A@n}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{A@j}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{H`{Hd}}}Af}01166{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{O`}}cCdCdCdCd}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{Ad}}}AAn}0{{{d{O`}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}044{{{d{A@n}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{A@n}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}066{{{d{If}}}{{`{{A`{}{{f{{n{Bjl}}}}}}}}}}0{{{d{Kf}}}A@l}000{{{d{Kf}}}C`}01111{{{d{AB`}}ceHn{Bl{Dl}}{Bl{ABb}}{Bl{Dl}}{Bl{ABd}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{ABf}}}{{H`{Nl}}}Af}0{{{d{AB`}}c{Bl{Dl}}{Bl{Dl}}{Bl{ABd}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}c{Bl{Dl}}{Bl{ABb}}{Bl{Dl}}{Bl{ABd}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}ce{Ld{ABhDl}}{Bl{Dl}}}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{AB`}}cHn{Bl{ABf}}{Bl{Dl}}Cd{Bl{Dl}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Nl}}}Af}0{{{d{AB`}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{AB`}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}Af}0{{{d{AB`}}cCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}03300{{{d{AB`}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{ABj{}{{D`{{Ld{cABfHn}}}}}}}Af}0{{{d{AB`}}Cd{Bl{c}}g}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{ABl}}}{{Dh{Dj}}}{{ABj{}{{D`{e}}}}}Af}0{{{d{AB`}}ceCdg{Bl{{Ld{I`I`}}}}{Bl{ABl}}{Bl{Dl}}{Bl{ABn}}k{Bl{AC`}}}{{`{{A`{}{{f{{Cf{m}}}}}}}}}{{H`{ACb}}}{{H`{ACb}}}{{ABj{}{{D`{I`}}}}}{{Dh{Dj}}}{{ABj{}{{D`{i}}}}}Af}000{{{d{AB`}}e}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Dj}}}{{ABj{}{{D`{c}}}}}Af}0{{{d{AB`}}cegCdi{Bl{{Ld{I`I`}}}}{Bl{Dl}}{Bl{ABn}}}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{H`{ACb}}}{{H`{ACb}}}{{ABj{}{{D`{I`}}}}}Af}000{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Il}}{Bl{Jh}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Jl}}}{{`{h}}}}{{{d{A@j}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{El}}}}0{{{d{Hb}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Ad}}E`}Bj}0{{{d{Ad}}}Cd}0{{{d{Hh}}I`I`}{{`{{A`{}{{f{{n{cl}}}}}}}}}Af}0{{{d{Ad}}}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}}0{{{d{Hb}}c}{{`{{A`{}{{f{{Cf{Bj}}}}}}}}}{{Dh{Fn}}}}0{{{d{Ad}}{d{Ej}}}{{B`{Ad}}}}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACf}}}Af}0{{{d{ACd}}cCdegi}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{H`{ACh}}}{{Dh{ACj}}}{{H`{ACl}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}Cd}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}Cd}{{`{{A`{}{{f{{Cf{{Ld{Fh{j{{ACn{kmo}}}}}}}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACj}}}Af{AD`ADbADd}Af}0{{{d{ACd}}cegDli{Bl{Dl}}{Bl{Dl}}{Bl{Dl}}CdCd}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACf}}}Af}0{{{d{ACd}}cegDli{Bl{Dl}}{Bl{Dl}}{Bl{Dl}}CdCd}{{`{{A`{}{{f{{Cf{{j{{ACn{kmo}}}}}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{ACf}}}Af{AD`ADbADd}Af}0{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{El}}}Af}0{{{d{ACd}}cegCd}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{Dj}}}Af}000{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}Af}0{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ACj}}}Af}011{{{d{ACd}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{ACd}}cCd{Bl{Dl}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}011{{{d{ACd}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Dj}}}{{Dh{ADf}}}Af}0{{{d{ACd}}ceg{Bl{Dl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af}0{{{d{ACd}}ceg{Bl{Dl}}}{{`{{A`{}{{f{{Cf{{j{{ACn{ikm}}}}}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}{{H`{Hd}}}Af{AD`ADbADd}Af}0{{{d{ACd}}{Bl{Dl}}{Bl{Dl}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{ACf}}}Af}0{{{d{ACd}}{Bl{Dl}}{Bl{Dl}}ce}{{`{{A`{}{{f{{Cf{{ADh{gikm}}}}}}}}}}}{{Dh{Fn}}}{{Dh{ACf}}}{AD`ADbADd}Af{AD`ADbADd}Af}0{{{d{ACd}}ce{Bl{Dl}}{Bl{Dl}}Cdgi}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Fn}}}{{Dh{ACf}}}Af}0{{{d{ACd}}ce{Bl{Dl}}{Bl{Dl}}Cdgi}{{`{{A`{}{{f{{Cf{{ADh{kmoAa}}}}}}}}}}}{{Dh{Dj}}}{{Dh{Dj}}}{{Dh{Fn}}}{{Dh{ACf}}}{AD`ADbADd}Af{AD`ADbADd}Af}05544{{{d{ACd}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{ACh}}}Af}0{{{d{Ib}}c{Bl{Ml}}{Bl{ADj}}CdCde}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{ADl}}}Af}0{{{d{Ib}}c}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}cHnHn}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}cCd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}Af}0{{{d{Ib}}cHne}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}0{{{d{Ib}}ce{Bl{ADn}}Cd}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Fn}}}{{Dh{AE`}}}Af}0{{{d{Ib}}ceg{Bl{ADn}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{Dh{Fn}}}{{Dh{AE`}}}Af}0{{{d{Ib}}ceg}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cId{Bl{I`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Fn}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Gn}}}Af}0{{{d{Ib}}c{Bl{C`}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}000{{{d{Ib}}c{Bl{{Ld{I`Cd}}}}}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0{{{d{Ib}}ceg{Bl{AEd}}Cd{Bl{AAl}}Cd}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}ceg{Bl{AAl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cegCd{Bl{AAl}}}{{`{{A`{}{{f{{Cf{i}}}}}}}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}cegi{Bl{AEd}}Cd{Bl{AAl}}}{{`{{A`{}{{f{{Cf{k}}}}}}}}}{{Dh{Df}}}{{Dh{Df}}}{{H`{AEb}}}{{H`{AEb}}}Af}0{{{d{Ib}}ce}{{`{{A`{}{{f{{Cf{g}}}}}}}}}{{Dh{Df}}}{{H`{Hd}}}Af}07799{{{d{Ib}}cI`I`}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}0::{{{d{Ib}}cI`I`Cd}{{`{{A`{}{{f{{Cf{e}}}}}}}}}{{Dh{Df}}}Af}055442222==<<````````````````````````````````````{d{{d{c}}}{}}000{{{d{Ah}}}{{d{Ahc}}}{}}000{{{d{AEf}}}Bj}{{{d{AEh}}}Bj}{{{d{AEj}}}AEj}{{d{d{Ahc}}}Bj{}}{dBj}`{{{d{AEf}}{j{Hd}}}{{n{Hdl}}}}{C`{{d{c}}}{}}000{C`{{d{Ahc}}}{}}000{C`Bj}000{{{d{AEj}}{d{AEj}}}Cd}{{{d{AEj}}{d{AhCh}}}Cj}{{{d{AEl}}{d{AhCh}}}Cj}{{{d{AEf}}{d{AhCh}}}Cj}{{{d{AEh}}{d{AhCh}}}Cj}{cc{}}0009{{}C`}000{{{d{AEf}}}{{Eh{DfHd}}}}{{{d{AEh}}}{{j{AEj}}}}{{}c{}}000{{{d{AEh}}}C`}{{}AEf}{{}AEh}{{{d{AEh}}}{{Bl{AEj}}}}0{{{d{AEn}}AEj}{{n{Hdl}}}}{{{d{AEl}}AEj}{{n{Hdl}}}}{{{d{AEf}}AEj}{{n{Hdl}}}}{{{d{AEh}}AEj}{{n{Hdl}}}}{{{d{AEn}}{j{AEj}}}{{n{Hdl}}}}0{{{d{AEh}}AEj}Bj}0{{{d{AEf}}{j{Hd}}}{{n{Hdl}}}}`=<{dc{}}{c{{n{e}}}{}{}}000{{}{{n{c}}}{}}000{dFl}000????``{d{{d{c}}}{}}{{{d{Ah}}}{{d{Ahc}}}{}}`{{{d{AF`}}}AF`}{{d{d{Ahc}}}Bj{}}{dBj}``{C`{{d{c}}}{}}{C`{{d{Ahc}}}{}}{C`Bj}{{{d{AF`}}{d{AF`}}}Cd}{{{d{AF`}}{d{AhCh}}}Cj}0{cc{}}{{}C`}{{}c{}}{Dn{{n{{`{{Dd{}{{D`{AF`}}}}}}l}}}}`{dc{}}{dFh}{c{{n{e}}}{}{}}{{}{{n{c}}}{}}{dFl}6``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{AhKn}}}{{n{BjAFb}}}}`````````````{{{d{Hd}}}{{Bl{C`}}}}{{{d{Kn}}}{{Bl{Cd}}}}{{{d{Hd}}}{{Bl{Cd}}}}{{{d{Kn}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{Df}}}{{d{{An{Kj}}}}}}{{{d{Hd}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{Df}}}{{Bl{Dj}}}}{{{d{Hd}}}{{Bl{Dj}}}}{{{d{Hd}}}{{Bl{Hn}}}}{{{d{Hd}}{d{Gd}}}{{n{{j{AFd}}l}}}}{{{d{Hd}}}{{n{{Bl{Nf}}l}}}}{{{d{Hd}}}{{Bl{I`}}}}{{{d{Kn}}}{{Bl{{d{Gd}}}}}}{{{d{Df}}}{{Bl{{d{Gd}}}}}}{{{d{Hd}}}{{Bl{{Gh{Gd}}}}}}{{{d{Df}}}{{Gh{Gd}}}}1{{{d{Hd}}}{{Bl{Fh}}}}{{{d{Hd}}}{{Bl{Dl}}}}{{{d{Hd}}}{{Bl{C`}}}}{{{d{Ed}}}Cn}````{{{d{Kn}}}{{Bl{d}}}}{{{d{AhKn}}}{{Bl{{d{Ah}}}}}}```````{d{{d{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ah}}}{{d{Ahc}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{AFf}}}{{n{All}}}}`{{{d{AFf}}C`}{{n{bl}}}}{{{d{AFf}}}{{n{Bdl}}}}{{{d{AFf}}}{{n{Bfl}}}}`{{{d{Hd}}}Cd}```{{{d{AAb}}}AAb}{{{d{Nj}}}Nj}{{{d{Kn}}}Kn}{{{d{AFh}}}AFh}{{{d{AFj}}}AFj}{{{d{AFl}}}AFl}{{{d{AFn}}}AFn}{{{d{h}}}h}{{{d{AG`}}}AG`}{{{d{On}}}On}{{{d{AGb}}}AGb}{{{d{Ih}}}Ih}{{{d{AGd}}}AGd}{{{d{AGf}}}AGf}{{{d{Df}}}Df}{{{d{Nl}}}Nl}{{{d{AGh}}}AGh}{{{d{Hd}}}Hd}{{{d{AFf}}}AFf}{{{d{J`}}}J`}{{{d{In}}}In}{{{d{Jb}}}Jb}{{{d{Jd}}}Jd}{{{d{Jf}}}Jf}{{{d{Ob}}}Ob}{{{d{AGj}}}AGj}{{{d{AGl}}}AGl}{{{d{K`}}}K`}{{{d{Kb}}}Kb}{{{d{Kd}}}Kd}{{{d{AGn}}}AGn}{{{d{Ed}}}Ed}{{{d{AH`}}}AH`}{{{d{AHb}}}AHb}{{{d{AHd}}}AHd}{{{d{AHf}}}AHf}{{{d{AHh}}}AHh}{{{d{AHj}}}AHj}{{{d{Eb}}}Eb}{{{d{E`}}}E`}{{{d{Dn}}}Dn}{{{d{AHl}}}AHl}{{{d{AHn}}}AHn}{{{d{Ef}}}Ef}{{{d{Ej}}}Ej}{{{d{Nf}}}Nf}{{{d{N`}}}N`}{{{d{AI`}}}AI`}{{{d{Mn}}}Mn}{{{d{AIb}}}AIb}{{{d{Hl}}}Hl}{{{d{Oj}}}Oj}{{{d{AAf}}}AAf}{{{d{Oh}}}Oh}{{{d{Nn}}}Nn}{{{d{Kl}}}Kl}{{{d{Jn}}}Jn}{{{d{Ml}}}Ml}{{{d{A@f}}}A@f}{{{d{AAd}}}AAd}{{{d{AAn}}}AAn}{{{d{AId}}}AId}{{{d{AIf}}}AIf}{{{d{AIh}}}AIh}{{{d{AA`}}}AA`}{{{d{AAh}}}AAh}{{{d{Nd}}}Nd}{{{d{Mh}}}Mh}{{{d{Jh}}}Jh}{{{d{Fn}}}Fn}{{{d{AIj}}}AIj}{{{d{AIl}}}AIl}{{{d{AIn}}}AIn}{{{d{AJ`}}}AJ`}{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{{d{AJf}}}AJf}{{{d{Lj}}}Lj}{{{d{AJh}}}AJh}{{{d{AJj}}}AJj}{{{d{AJl}}}AJl}{{{d{AJn}}}AJn}{{{d{AK`}}}AK`}{{{d{Mb}}}Mb}{{{d{AKb}}}AKb}{{{d{Ln}}}Ln}{{{d{AKd}}}AKd}{{{d{M`}}}M`}{{{d{Ll}}}Ll}{{{d{Md}}}Md}{{{d{En}}}En}{{{d{AKf}}}AKf}{{{d{AKh}}}AKh}{{{d{AFd}}}AFd}{{{d{AKj}}}AKj}{{{d{Id}}}Id}{{{d{ADj}}}ADj}{{{d{AEd}}}AEd}{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{AEb}}}AEb}{{{d{AL`}}}AL`}{{{d{ACl}}}ACl}{{{d{ACf}}}ACf}{{{d{ALb}}}ALb}{{{d{ACh}}}ACh}{{{d{ACj}}}ACj}{{{d{ADf}}}ADf}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{ABf}}}ABf}{{{d{ABh}}}ABh}{{{d{ABl}}}ABl}{{{d{ACb}}}ACb}{{{d{ABn}}}ABn}{{{d{ALd}}}ALd}{{{d{AC`}}}AC`}{{{d{ALf}}}ALf}{{d{d{Ahc}}}Bj{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dBj}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``{{{d{Df}}}Cl}`````{{{d{Df}}{d{c}}}{{Bl{h}}}Ad}`````````{{{d{AAb}}{d{AAb}}}ALh}{{{d{h}}{d{h}}}ALh}{{{d{Df}}{d{Df}}}ALh}{{{d{Oh}}{d{Oh}}}ALh}{{{d{AKf}}{d{AKf}}}ALh}{{{d{AKh}}{d{AKh}}}ALh}{{{d{AFd}}{d{AFd}}}ALh}{{{d{AKj}}{d{AKj}}}ALh}7`````{Df{{n{cl}}}AD`}{Hd{{n{cl}}}Af}```{{{d{{ALl{}{{ALj{c}}}}}}}Al{}}{{{d{F`}}}Al}{{{d{Db}}}Al}{{{d{Ff}}}Al}{{{d{G`}}}Al}`{{{d{{ALl{}{{ALj{c}}}}}}}{{Bl{{Gh{Gd}}}}}{}}{{{d{F`}}}{{Bl{{Gh{Gd}}}}}}{{{d{Db}}}{{Bl{{Gh{Gd}}}}}}{{{d{Ff}}}{{Bl{{Gh{Gd}}}}}}{{{d{G`}}}{{Bl{{Gh{Gd}}}}}}``````{{}AFh}{{}AGd}{{}AFf}{{}AGj}{{}AGl}{{}Ed}{{}AH`}{{}AHb}{{}AHd}{{}AHf}{{}AHh}{{}AHj}{{}Eb}{{}E`}{{}Dn}{{}AHl}{{}AHn}{{}Ef}{{}Ej}{{}AIb}{{}AId}{{}AIf}{{}Mh}{{}Lj}{{}AJl}{{}AJn}{{}Mb}{{}Ln}{{}AKn}{{}ABf}{{}AFf}?0?`{{}{{n{AFnl}}}}0{{}AHb}`{C`{{d{c}}}{}}00000000000000000000000{{{d{Nl}}}{{d{c}}}{}}1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111{C`{{d{Ahc}}}{}}000000000000000000000000{{{d{AhNl}}}{{d{Ahc}}}{}}111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111`````{C`Bj}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{Kn}}}C`}``{{{d{AAb}}{d{AAb}}}Cd}{{{d{Nj}}{d{Nj}}}Cd}{{{d{Kn}}{d{Kn}}}Cd}{{{d{AFh}}{d{AFh}}}Cd}{{{d{AFj}}{d{AFj}}}Cd}{{{d{AFl}}{d{AFl}}}Cd}{{{d{AFn}}{d{AFn}}}Cd}{{{d{h}}{d{h}}}Cd}{{{d{AG`}}{d{AG`}}}Cd}{{{d{On}}{d{On}}}Cd}{{{d{AGb}}{d{AGb}}}Cd}{{{d{AGd}}{d{AGd}}}Cd}{{{d{AGf}}{d{AGf}}}Cd}{{{d{Df}}{d{Df}}}Cd}{{{d{Nl}}{d{Nl}}}Cd}{{{d{AGh}}{d{AGh}}}Cd}{{{d{Hd}}{d{Hd}}}Cd}{{{d{J`}}{d{J`}}}Cd}{{{d{In}}{d{In}}}Cd}{{{d{Jb}}{d{Jb}}}Cd}{{{d{Jd}}{d{Jd}}}Cd}{{{d{Jf}}{d{Jf}}}Cd}{{{d{Ob}}{d{Ob}}}Cd}{{{d{AGj}}{d{AGj}}}Cd}{{{d{AGl}}{d{AGl}}}Cd}{{{d{K`}}{d{K`}}}Cd}{{{d{Kb}}{d{Kb}}}Cd}{{{d{Kd}}{d{Kd}}}Cd}{{{d{AGn}}{d{AGn}}}Cd}{{{d{Ed}}{d{Ed}}}Cd}{{{d{AH`}}{d{AH`}}}Cd}{{{d{AHb}}{d{AHb}}}Cd}{{{d{AHd}}{d{AHd}}}Cd}{{{d{AHf}}{d{AHf}}}Cd}{{{d{AHh}}{d{AHh}}}Cd}{{{d{AHj}}{d{AHj}}}Cd}{{{d{Eb}}{d{Eb}}}Cd}{{{d{E`}}{d{E`}}}Cd}{{{d{Dn}}{d{Dn}}}Cd}{{{d{AHl}}{d{AHl}}}Cd}{{{d{Ej}}{d{Ej}}}Cd}{{{d{Nf}}{d{Nf}}}Cd}{{{d{N`}}{d{N`}}}Cd}{{{d{AI`}}{d{AI`}}}Cd}{{{d{Mn}}{d{Mn}}}Cd}{{{d{AIb}}{d{AIb}}}Cd}{{{d{Hl}}{d{Hl}}}Cd}{{{d{Oj}}{d{Oj}}}Cd}{{{d{AAf}}{d{AAf}}}Cd}{{{d{Oh}}{d{Oh}}}Cd}{{{d{Nn}}{d{Nn}}}Cd}{{{d{Kl}}{d{Kl}}}Cd}{{{d{Jn}}{d{Jn}}}Cd}{{{d{Ml}}{d{Ml}}}Cd}{{{d{A@f}}{d{A@f}}}Cd}{{{d{AAd}}{d{AAd}}}Cd}{{{d{AAn}}{d{AAn}}}Cd}{{{d{AId}}{d{AId}}}Cd}{{{d{AIf}}{d{AIf}}}Cd}{{{d{AIh}}{d{AIh}}}Cd}{{{d{AA`}}{d{AA`}}}Cd}{{{d{AAh}}{d{AAh}}}Cd}{{{d{Nd}}{d{Nd}}}Cd}{{{d{Mh}}{d{Mh}}}Cd}{{{d{Jh}}{d{Jh}}}Cd}{{{d{Fn}}{d{Fn}}}Cd}{{{d{AIj}}{d{AIj}}}Cd}{{{d{AIl}}{d{AIl}}}Cd}{{{d{AIn}}{d{AIn}}}Cd}{{{d{AJ`}}{d{AJ`}}}Cd}{{{d{AJb}}{d{AJb}}}Cd}{{{d{AJd}}{d{AJd}}}Cd}{{{d{AJf}}{d{AJf}}}Cd}{{{d{AJl}}{d{AJl}}}Cd}{{{d{AJn}}{d{AJn}}}Cd}{{{d{AK`}}{d{AK`}}}Cd}{{{d{AKb}}{d{AKb}}}Cd}{{{d{En}}{d{En}}}Cd}{{{d{AKf}}{d{AKf}}}Cd}{{{d{AKh}}{d{AKh}}}Cd}{{{d{AFd}}{d{AFd}}}Cd}{{{d{AKj}}{d{AKj}}}Cd}{{{d{Id}}{d{Id}}}Cd}{{{d{ADj}}{d{ADj}}}Cd}{{{d{AEd}}{d{AEd}}}Cd}{{{d{AKn}}{d{AKn}}}Cd}{{{d{AL`}}{d{AL`}}}Cd}{{{d{ACl}}{d{ACl}}}Cd}{{{d{ACf}}{d{ACf}}}Cd}{{{d{ALb}}{d{ALb}}}Cd}{{{d{ACh}}{d{ACh}}}Cd}{{{d{ACj}}{d{ACj}}}Cd}{{{d{ADf}}{d{ADf}}}Cd}{{{d{ABb}}{d{ABb}}}Cd}{{{d{ABd}}{d{ABd}}}Cd}{{{d{ABf}}{d{ABf}}}Cd}{{{d{ABh}}{d{ABh}}}Cd}{{{d{ABl}}{d{ABl}}}Cd}{{{d{ACb}}{d{ACb}}}Cd}{{{d{ABn}}{d{ABn}}}Cd}{{{d{ALd}}{d{ALd}}}Cd}{{{d{AC`}}{d{AC`}}}Cd}{{{d{ALf}}{d{ALf}}}Cd}{{{d{AKf}}{d{c}}eg}{{Cf{i}}}{LbALnAM`}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}{{{d{AKf}}{d{Al}}ce}{{Cf{g}}}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}``{{{d{AhEj}}{d{Ej}}}{{d{AhEj}}}}``{{{d{AFd}}{d{c}}eg}{{Cf{i}}}{LfALnAM`}{{Dh{Fn}}ALn}{{H`{Gn}}ALn}Af}0{{{d{AMb}}{Bl{{d{h}}}}}{{AMf{{AMd{A`}}}}}}```{{{d{AMh}}{d{h}}{d{h}}}{{AMf{{AMd{A`}}}}}}0```{{{d{AFh}}{d{{An{Hd}}}}}{{Bl{{d{{An{Kj}}}}}}}}{{{d{AFd}}}{{d{{An{AKh}}}}}}{{HdC`}Hd}{{{d{AAb}}{d{AhCh}}}{{n{BjAMj}}}}0{{{d{Nj}}{d{AhCh}}}{{n{BjAMj}}}}{{{d{Kn}}{d{AhCh}}}{{n{BjAMj}}}}{{{d{AFh}}{d{AhCh}}}Cj}{{{d{AFj}}{d{AhCh}}}Cj}{{{d{AFl}}{d{AhCh}}}Cj}{{{d{AFn}}{d{AhCh}}}Cj}{{{d{h}}{d{AhCh}}}Cj}0{{{d{AG`}}{d{AhCh}}}Cj}{{{d{On}}{d{AhCh}}}Cj}{{{d{AGb}}{d{AhCh}}}Cj}{{{d{Ih}}{d{AhCh}}}Cj}{{{d{AGd}}{d{AhCh}}}Cj}{{{d{AGf}}{d{AhCh}}}Cj}{{{d{Df}}{d{AhCh}}}Cj}{{{d{Nl}}{d{AhCh}}}Cj}{{{d{AGh}}{d{AhCh}}}Cj}0{{{d{Hd}}{d{AhCh}}}Cj}{{{d{AFf}}{d{AhCh}}}Cj}{{{d{J`}}{d{AhCh}}}Cj}{{{d{In}}{d{AhCh}}}Cj}{{{d{Jb}}{d{AhCh}}}Cj}{{{d{Jd}}{d{AhCh}}}Cj}{{{d{Jf}}{d{AhCh}}}Cj}{{{d{Ob}}{d{AhCh}}}Cj}{{{d{AGj}}{d{AhCh}}}Cj}{{{d{AGl}}{d{AhCh}}}Cj}{{{d{K`}}{d{AhCh}}}Cj}{{{d{Kb}}{d{AhCh}}}Cj}{{{d{Kd}}{d{AhCh}}}Cj}{{{d{AGn}}{d{AhCh}}}Cj}{{{d{Ed}}{d{AhCh}}}Cj}{{{d{AH`}}{d{AhCh}}}Cj}{{{d{AHb}}{d{AhCh}}}Cj}{{{d{AHd}}{d{AhCh}}}Cj}{{{d{AHf}}{d{AhCh}}}Cj}{{{d{AHh}}{d{AhCh}}}Cj}{{{d{AHj}}{d{AhCh}}}Cj}{{{d{Eb}}{d{AhCh}}}Cj}{{{d{E`}}{d{AhCh}}}Cj}{{{d{Dn}}{d{AhCh}}}Cj}{{{d{AHl}}{d{AhCh}}}Cj}{{{d{AHn}}{d{AhCh}}}Cj}{{{d{Ef}}{d{AhCh}}}Cj}{{{d{Ej}}{d{AhCh}}}Cj}{{{d{Nf}}{d{AhCh}}}Cj}{{{d{N`}}{d{AhCh}}}Cj}{{{d{AI`}}{d{AhCh}}}Cj}{{{d{Mn}}{d{AhCh}}}Cj}{{{d{AIb}}{d{AhCh}}}Cj}{{{d{Hl}}{d{AhCh}}}Cj}{{{d{Oj}}{d{AhCh}}}Cj}{{{d{AAf}}{d{AhCh}}}Cj}{{{d{Oh}}{d{AhCh}}}Cj}{{{d{Nn}}{d{AhCh}}}Cj}{{{d{Kl}}{d{AhCh}}}Cj}{{{d{Jn}}{d{AhCh}}}Cj}{{{d{Ml}}{d{AhCh}}}Cj}{{{d{A@f}}{d{AhCh}}}Cj}{{{d{AAd}}{d{AhCh}}}Cj}{{{d{AAn}}{d{AhCh}}}Cj}0{{{d{AId}}{d{AhCh}}}Cj}{{{d{AIf}}{d{AhCh}}}Cj}{{{d{AIh}}{d{AhCh}}}Cj}{{{d{AA`}}{d{AhCh}}}Cj}{{{d{AAh}}{d{AhCh}}}Cj}{{{d{Nd}}{d{AhCh}}}Cj}{{{d{Mh}}{d{AhCh}}}Cj}{{{d{Jh}}{d{AhCh}}}Cj}{{{d{Fn}}{d{AhCh}}}Cj}{{{d{AIj}}{d{AhCh}}}Cj}{{{d{AIl}}{d{AhCh}}}Cj}{{{d{AIn}}{d{AhCh}}}Cj}{{{d{AJ`}}{d{AhCh}}}Cj}{{{d{AJb}}{d{AhCh}}}Cj}{{{d{AJd}}{d{AhCh}}}Cj}{{{d{AJf}}{d{AhCh}}}Cj}{{{d{Lj}}{d{AhCh}}}Cj}{{{d{AJh}}{d{AhCh}}}Cj}{{{d{AJj}}{d{AhCh}}}Cj}{{{d{AJl}}{d{AhCh}}}Cj}{{{d{AJn}}{d{AhCh}}}Cj}{{{d{AK`}}{d{AhCh}}}Cj}{{{d{Mb}}{d{AhCh}}}Cj}{{{d{AKb}}{d{AhCh}}}Cj}{{{d{Ln}}{d{AhCh}}}Cj}{{{d{AKd}}{d{AhCh}}}Cj}{{{d{M`}}{d{AhCh}}}Cj}{{{d{Ll}}{d{AhCh}}}Cj}{{{d{Md}}{d{AhCh}}}Cj}{{{d{En}}{d{AhCh}}}Cj}{{{d{AKf}}{d{AhCh}}}Cj}0{{{d{AKh}}{d{AhCh}}}Cj}{{{d{AFd}}{d{AhCh}}}Cj}0{{{d{AKj}}{d{AhCh}}}Cj}0{{{d{Id}}{d{AhCh}}}Cj}{{{d{ADj}}{d{AhCh}}}Cj}{{{d{AEd}}{d{AhCh}}}Cj}{{{d{AKl}}{d{AhCh}}}Cj}{{{d{AKn}}{d{AhCh}}}Cj}{{{d{AEb}}{d{AhCh}}}Cj}{{{d{AL`}}{d{AhCh}}}Cj}{{{d{ACl}}{d{AhCh}}}Cj}{{{d{ACf}}{d{AhCh}}}Cj}{{{d{ALb}}{d{AhCh}}}Cj}{{{d{ACh}}{d{AhCh}}}Cj}{{{d{ACj}}{d{AhCh}}}Cj}{{{d{ADf}}{d{AhCh}}}Cj}{{{d{ABb}}{d{AhCh}}}Cj}{{{d{ABd}}{d{AhCh}}}Cj}{{{d{ABf}}{d{AhCh}}}Cj}{{{d{ABh}}{d{AhCh}}}Cj}{{{d{ABl}}{d{AhCh}}}Cj}{{{d{ACb}}{d{AhCh}}}Cj}{{{d{ABn}}{d{AhCh}}}Cj}{{{d{ALd}}{d{AhCh}}}Cj}{{{d{AC`}}{d{AhCh}}}Cj}{{{d{ALf}}{d{AhCh}}}Cj}```{cc{}}0{HnKn}1{CdKn}{I`Kn}33{{{d{{An{Cl}}}}}Jj}{{{AMl{Cl}}}Jj}{ClJj}6{{{j{Cl}}}Jj}77777{{{Bl{Hn}}}AE`}{HnAE`}{{{j{Hn}}}AE`}{{{AMl{Hn}}}AE`};{{{d{{An{Kj}}}}}AFh}{{{d{Gd}}}AFh}={ClAFh}{{{Bl{Cl}}}AFh}?{cAFl{{Dh{AFn}}}}{cc{}}{AMnAFn}1{AN`AFn}{ANbAFn}{ANdAFn}{{{Ld{FhCl}}}h}5{{{Ld{{d{Gd}}Cl}}}h}{{{d{h}}}h}777777{{{d{Gd}}}AGf}{C`AGf}{FhAGf}{ANfAGf}{DlAGf}{HnAGf}{CnAGf}{ANhAGf}{ClAGf}{KjAGf}{ANjAGf}{ANlAGf}{ANnAGf}{I`AGf}{DjAGf}{cc{}}{CdDf}{HnDf}{ANlDf}{ANfDf}{{{AMd{{An{Kj}}}}}Df}{ANhDf}{DlDf}{MfDf}{{{d{{An{Kj}}}}}Df}{C`Df}{FhDf}{ANnDf}{CnDf}{{{d{Gd}}}Df}{ClDf}{AO`Df}{AObDf}{{{d{Fh}}}Df}{KjDf}{ANjDf}{DjDf}{{{d{Dj}}}Df}{{{d{Df}}}Df}{I`Df}{{{d{Nl}}}Nl}{cc{}}{BjNl}1{{{Ld{cegikmoAaAc}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegi}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{d{Gd}}}Hd}{{{d{Fh}}}Hd}{{{d{{An{Kj}}}}}Hd}6{{{Ld{cegikmoAaAcAeAgAiAk}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{ce}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}}{CdHd}{{{Ld{cegikmo}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBa}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{DjHd}{{{Ld{cegikmoAaAcAeAgAi}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikmoAaAcAe}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{{{Ld{cegikm}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{HnHd}{{{Ld{ceg}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{ANfHd}{{{AMd{{An{Kj}}}}}Hd}{{{Ld{cegikmoAa}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{KjHd}{ClHd}{{{Ld{cegik}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{BjHd}{NlHd}{{{Ld{cegikmoAaAcAeAgAiAkAmAo}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{I`Hd}{DfHd}{CnHd}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{ANhHd}{MfHd}{{{Ld{cegikmoAaAcAeAgAiAkAm}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{FhHd}{{{Ld{cegikmoAaAcAeAg}}}Hd{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}{{Dh{Hd}}}}{ANlHd}{ANnHd}{cc{}}0000{CdJf}1111111111111111111111{{{Ld{HnHn}}}Nf}2222{AI`Mn}{{{j{AI`}}}Mn}{{{AMl{AI`}}}Mn}55555555555555555555{{{Ld{cegikmoAaAcAeAgAiAkAm}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAiAkAmAo}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmo}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAa}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Bl{Df}}}Fn}{BjFn}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikm}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAiAk}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegik}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegi}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{AMl{c}}}Fn{{Dh{Df}}}}{{{Ld{cegikmoAaAc}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAe}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAg}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{cFn{{Dh{Df}}}}{{{j{c}}}Fn{{Dh{Df}}}}{{{d{{AOd{c}}}}}Fn{{Dh{Df}}Bb}}{{{Ld{ceg}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{cc{}}{{{Ld{cegikmoAaAcAeAgAiAkAmAoBa}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{cegikmoAaAcAeAgAi}}}Fn{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}{{Dh{Df}}}}{{{Ld{ce}}}Fn{{Dh{Df}}}{{Dh{Df}}}}3333333333333333333333333333{I`AKl}4{{{d{Fh}}}AKl}{FhAKl}{{{d{Gd}}}AKl}7{{{d{Fh}}}AEb}{{{d{Gd}}}AEb}{I`AEb}{FhAEb};{{{d{AEb}}}AEb}<<{BjACl}{{{j{c}}}ACf{{Dh{ACj}}}}{{{AMl{c}}}ACf{{Dh{ACj}}}}?{cACf{{Dh{ACj}}}}{cc{}}{{{Bl{Bj}}}ACh}1{{{d{Fh}}}ACj}{{{d{Gd}}}ACj}3{FhACj}{DjACj}{{{Ld{DlceDl}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}}6{BjADf}{{{Ld{ceDl}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}}{{{Ld{ceDlg}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}{{Dh{Dj}}}}{{{Ld{DlceDlg}}}ADf{{Dh{ACj}}}{{Dh{ACj}}}{{Dh{Dj}}}}::{I`ABf};;{{{j{c}}}ABl{{Dh{Dj}}}}{{{AOd{c}}}ABl{{Dh{Dj}}}}=={I`ACb}>{{{Ld{ABhDl}}}ABn}??{{{Ld{cALd}}}AC`{{Dh{Dj}}}}{cc{}}{{AOfcBl}{{n{KnAFb}}}{{ABj{}{{D`{Kn}}}}}}{{Hdc}{{n{Ihl}}}{{Dh{Dj}}}}{{{d{Al}}c}{{n{AKjl}}}{{Dh{Dj}}}}{DnAFf}{cAKf{{Dh{Dj}}}}{cJj{{ABj{}{{D`{Cl}}}}}}{cAE`{{ABj{}{{D`{Hn}}}}}}{eADl{{Dh{Hd}}}{{ABj{}{{D`{{Ld{Hnc}}}}}}}}{gNl{{Dh{Df}}}{{Dh{Hd}}}{{ABj{}{{D`{{Ld{ce}}}}}}}}{eHd{{Dh{Hd}}}{{ABj{}{{D`{c}}}}}}{eFn{{Dh{Df}}}{{ABj{}{{D`{c}}}}}}{eABl{{Dh{Dj}}}{{ABj{}{{D`{c}}}}}}{Df{{n{AD`l}}}}{Df{{n{Dfl}}}}{Df{{n{Hdl}}}}:<{{HdCdCdCd}{{n{AIbl}}}}{{{d{{An{Kj}}}}}Df}{{{d{{An{Kj}}}}}Hd}{{{d{Gd}}}AGf}{{{d{Gd}}}Df}{{{d{Gd}}}Hd}{{{d{Gd}}}{{n{AAb}}}}{{{d{Gd}}}{{Bl{AKh}}}}{{{d{Gd}}}{{n{Dnl}}}}000{Hd{{n{Afl}}}}{Hd{{n{Dfl}}}}{Hd{{n{Hdl}}}}{Hd{{n{AGll}}}}{Hd{{n{Nfl}}}}{Hd{{n{AIdl}}}}{Hd{{n{AIfl}}}}{Hd{{n{AIhl}}}}``{{{d{AKj}}}{{d{{Eh{DjAFd}}}}}}`{{{d{AFf}}}{{Bl{{d{Dn}}}}}}{{{d{AFf}}}{{d{Eb}}}}{{{d{c}}{d{e}}}Dl{ADbAOh}AOj}000000000{{{d{AFf}}}{{d{E`}}}}{{{d{AFf}}}{{Bl{{d{Ed}}}}}}4{{{d{Ih}}Cl}{{Bl{{d{h}}}}}}`{{{d{{ALl{}{{ALj{c}}}}}}}Cd{}}{{{d{F`}}}Cd}{{{d{Db}}}Cd}{{{d{Ff}}}Cd}{{{d{G`}}}Cd}{{{d{AAb}}{d{Ahc}}}BjAOl}{{{d{Kn}}{d{Ahc}}}BjAOl}{{{d{AFh}}{d{{An{Hd}}}}}{{Bl{Cl}}}}{{{d{h}}{d{Ahc}}}BjAOl}{{{d{Df}}{d{Ahc}}}BjAOl}{{{d{Hd}}{d{Ahc}}}BjAOl}{{{d{Oh}}{d{Ahc}}}BjAOl}{{{d{AKf}}{d{Ahc}}}BjAOl}{{{d{AKh}}{d{Ahc}}}BjAOl}{{{d{AFd}}{d{Ahc}}}BjAOl}{{{d{AKj}}{d{Ahc}}}BjAOl}`{{{d{{An{Kj}}}}}Cl}````{{{d{AHl}}}{{j{h}}}}``````{{}C`}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{Jj{{j{Cl}}}}{AE`{{j{Hn}}}}{ADl{{j{{Ld{HnHd}}}}}}{{{d{Df}}}{{d{Mf}}}}{Nl{{Eh{DfHd}}}}{Mn{{j{AI`}}}}{Fn{{j{Df}}}}{ACl{{j{{Ld{DfHd}}}}}}{ACf{{j{ACj}}}}```{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Hd{{j{Hd}}}}{DfMf}{Hd{{Bl{Mf}}}}{Hd{{Bl{Dj}}}}{{HdCdCdCd}{{n{{j{AIb}}l}}}}{Hd{{n{HdHd}}}}{Hd{{n{Ofl}}}}{Hd{{n{Nll}}}}{Hd{{Bl{{j{Kj}}}}}}{Hd{{n{{AOn{Hd}}l}}}}{Df{{Bl{Fh}}}}{Hd{{Bl{Fh}}}}{Fn{{j{Hd}}}}{Hd{{n{{Ld{Fh{j{{ACn{ceg}}}}}}l}}}Af{AD`ADbADd}Af}{Hd{{n{{ADh{cegi}}l}}}{AD`ADbADd}Af{AD`ADbADd}Af}{Hd{{n{{j{{ACn{ceg}}}}l}}}Af{AD`ADbADd}Af}{Hd{{n{{j{{Ld{HdHn}}}}l}}}}`{{{d{Hd}}}Cd}000{{{d{AHl}}}Cd}01{{{d{Kn}}}Cd}222022021021`````{{{d{Kn}}}AOf}{{{d{Hd}}}AGh}````````{{{d{Kn}}}C`}{{{d{Jj}}}C`}{{{d{AE`}}}C`}{{{d{ADl}}}C`}{{{d{Ih}}}C`}{{{d{Nl}}}C`}{{{d{Mn}}}C`}{{{d{Fn}}}C`}{{{d{ACl}}}C`}{{{d{ACf}}}C`}```{{{d{AKf}}{d{Al}}}{{Cf{Bj}}}}``{{{d{AKf}}}{{Bl{{d{Dj}}}}}}``{{{d{B@`}}{d{A@`}}{d{Gd}}}{{Bl{Fh}}}}``````````````````{{{d{AFd}}}{{d{Dj}}}}{{{d{AKj}}}{{d{Dj}}}}```{{DlDlDl}AAb}{{}AE`}{{}ADl}{{cCl}h{{Dh{Dj}}}}{{}Ih}{{}Nl}{CdAHn}{{ceCd}Kl{{Dh{Dj}}}{{Dh{AFh}}}}{{}Fn}{{c{j{AKh}}}AFd{{Dh{Dj}}}}{{cCl}AHl{{Dh{Fh}}}}{{{j{{Ld{cCl}}}}}AHl{{Dh{Fh}}}}{{CnCn}Ed}{{}Kn}0{{CnCnCnCn}Ed}{{CnCnCn}Ed}{{}Hd}{{{j{{Ld{cCl}}}}e}AHl{{Dh{Fh}}}{{Dh{Fh}}}}{{{d{Gd}}cCd}Kl{{Dh{AFh}}}}{{cCl{Bl{Fh}}}h{{Dh{Dj}}}}{{{ALl{}{{ALj{c}}}}}{{n{Bjl}}}{}}{F`{{n{Bjl}}}}{Db{{n{Bjl}}}}{Ff{{n{Bjl}}}}{G`{{n{Bjl}}}}{{{d{AhEd}}}{{Bl{Dl}}}}``````````````````{{{d{Gd}}}{{n{AAbB@b}}}}{{{d{AAb}}{d{AAb}}}{{Bl{ALh}}}}{{{d{h}}{d{h}}}{{Bl{ALh}}}}{{{d{Df}}{d{Df}}}{{Bl{ALh}}}}{{{d{Oh}}{d{Oh}}}{{Bl{ALh}}}}{{{d{AKf}}{d{AKf}}}{{Bl{ALh}}}}{{{d{AKh}}{d{AKh}}}{{Bl{ALh}}}}{{{d{AFd}}{d{AFd}}}{{Bl{ALh}}}}{{{d{AKj}}{d{AKj}}}{{Bl{ALh}}}}```````````````{{{d{Ih}}}{{B@d{h{Ld{{j{{Ld{ClCl}}}}{Fj{h}}}}}}}}````{{{d{Ih}}}{{Bl{{d{h}}}}}}{{{d{Ih}}}{{Bl{{d{AGb}}}}}}````{{{d{AMb}}}{{Bl{Cb}}}}0`{{{d{Ih}}{d{h}}}{{j{h}}}}``{{{d{Fb}}DjCl}{{AMf{{AMd{A`}}}}}}{{{d{{ALl{}{{ALj{c}}}}}}}{{d{{Bl{c}}}}}{}}{{{d{F`}}}{{d{{Bl{c}}}}}{}}{{{d{Db}}}{{d{{Bl{c}}}}}{}}{{{d{Ff}}}{{d{{Bl{c}}}}}{}}{{{d{G`}}}{{d{{Bl{c}}}}}{}}````````````{{{d{AhAHl}}AHj}{{n{Bjl}}}}{{{d{AhAFf}}Dn}{{d{AhAFf}}}}{{{d{AhAFf}}Eb}{{d{AhAFf}}}}{{{d{AhEd}}Cn}Bj}{{{d{AhAFf}}E`}{{d{AhAFf}}}}{{{d{AhAFf}}Ed}{{d{AhAFf}}}}{{{d{AhAFf}}Ef}{{d{AhAFf}}}}{{{d{AKf}}}{{d{Dj}}}}```{{{d{Ih}}}{{d{{An{AGb}}}}}}`````````{{{d{AhKn}}}Kn}{{{d{AhDf}}}Mf}{{{d{AhNl}}}Nl}{{{d{AhHd}}}Hd}{{{d{AhKn}}}Bl}{{{d{Ah{ALl{}{{ALj{c}}}}}}}{{Bl{c}}}{}}{{{d{AhF`}}}{{Bl{c}}}{}}{{{d{AhDb}}}{{Bl{c}}}{}}{{{d{AhFf}}}{{Bl{c}}}{}}{{{d{AhG`}}}{{Bl{c}}}{}}`````````{{{d{Nj}}}Kj}{dc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Kn}}}B@f}{{{d{AKh}}}{{d{Gd}}}}{dFh}{{{d{Kn}}}{{Bl{Fh}}}}111111```{c{{n{e}}}{}{}}00{{{Ld{AOfc}}}{{n{Kn}}}{{Dh{Mf}}}}111111111{{{AMl{{Ld{Hnc}}}}}{{n{ADle}}}{{H`{Hd}}}{}}{{{j{{Ld{Hnc}}}}}{{n{ADle}}}{{H`{Hd}}}{}}{{{Ld{Hnc}}}{{n{ADle}}}{{H`{Hd}}}{}}4444{B@h{{n{AFnc}}}{}}5{Fh{{n{hc}}}{}}{{{d{Gd}}}{{n{hc}}}{}}77777{Hd{{n{AGfc}}}{}}8{Hd{{n{Dfc}}}{}}9{{{Eh{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{B@d{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{d{{AOd{{Ld{ce}}}}}}}{{n{Nlg}}}{{H`{Df}}Bb}{{H`{Hd}}Bb}{}}{{{AMl{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{AOd{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{j{{Ld{ce}}}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{Ld{ce}}}{{n{Nlg}}}{{H`{Df}}}{{H`{Hd}}}{}}{c{{n{e}}}{}{}}0{{{AOd{c}}}{{n{Hde}}}{{H`{Hd}}Bb}{}}{{{AMl{c}}}{{n{Hde}}}{{H`{Hd}}}{}}{Kn{{n{Hdc}}}{}}{AOb{{n{Hdc}}}{}}{C`{{n{Hdc}}}{}}{{{Bl{c}}}{{n{Hde}}}{{H`{Hd}}}{}}{{{d{{AOd{c}}}}}{{n{Hde}}}{{H`{Hd}}Bb}{}}{Dl{{n{Hdc}}}{}}{{{B@d{ce}}}{{n{Hdg}}}{{H`{Df}}}{{H`{Hd}}}{}}{{{j{c}}}{{n{Hde}}}{{H`{Hd}}}{}}{{{Eh{ce}}}{{n{Hdg}}}{{H`{Df}}}{{H`{Hd}}}{}};{AO`{{n{Hdc}}}{}}<<<<<<{{{d{Gd}}}{{n{Jfc}}}{}}{Fh{{n{Jfc}}}{}}{{{d{Fh}}}{{n{Jfc}}}{}}???{Hd{{n{AGlc}}}{}}{c{{n{e}}}{}{}}000000000000000000{Hd{{n{Nfc}}}{}}1{{{Ld{HnHnc}}}{{n{AI`e}}}{{H`{Hd}}}{}}22222222222222{Hd{{n{AIdc}}}{}}33{Hd{{n{AIfc}}}{}}{Hd{{n{AIhc}}}{}}5555{Fh{{n{Mhc}}}{}}{{{d{Dj}}}{{n{Mhc}}}{}}{{{d{Gd}}}{{n{Mhc}}}{}}{Dj{{n{Mhc}}}{}}9{{{d{Fh}}}{{n{Mhc}}}{}}:::::::::::::::::::::::::::::::{Hn{{n{AKlc}}}{}};{Hn{{n{AEbc}}}{}}<{{{d{Gd}}}{{n{AL`c}}}{}}={{{Ld{ce}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{{{j{{Ld{ce}}}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{{{AMl{{Ld{ce}}}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{{{Eh{ce}}}{{n{AClg}}}{{Dh{Df}}}{{H`{Hd}}}{}}{c{{n{e}}}{}{}}00{{{d{Gd}}}{{n{ALbc}}}{}}{{{Ld{ceg{Bl{I`}}}}}{{n{AChi}}}{{H`{ALb}}}{{H`{AL`}}}{{Dh{AGf}}}{}}{{{Ld{ceg}}}{{n{AChi}}}{{H`{ALb}}}{{H`{AL`}}}{{Dh{AGf}}}{}}{{{Ld{ce}}}{{n{AChg}}}{{H`{ALb}}}{{Dh{AGf}}}{}}44444{Dj{{n{ABfc}}}{}}5{{{d{Gd}}}{{n{ABfc}}}{}}{Fh{{n{ABfc}}}{}}77{{{d{Gd}}}{{n{ACbc}}}{}}88888{{{d{Gd}}}{{n{ALfc}}}{}}{{}{{n{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{dFl}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ih}}}{{j{Cl}}}}{{{d{Ih}}}{{j{h}}}}````{{{d{Dn}}}Cd}00````{{{d{Kn}}}{{Bl{{d{B@j}}}}}}`{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhDn}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhEb}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhE`}}}}}}{{{d{AhAFf}}c}{{d{AhAFf}}}{{B@l{{d{AhEf}}}}}}```````````````````````````````````````````````````````````````````````````````````````````````{Hn{{n{Hdl}}}}{e{{n{{B@d{Cl{AMl{Df}}}}l}}}{{H`{Df}}}{{ABj{}{{D`{c}}}}}}{{{d{{An{Kj}}}}}Cl}{{{d{Gd}}}{{n{Hnl}}}}{{{d{Gd}}}Fh}{{{d{{An{Kj}}}}}Mf}{{{d{Gd}}}Dj}","D":"MNh","p":[[5,"RedisPool",18,4849],[1,"reference"],[17,"Output"],[5,"Server",1325,4850],[5,"Vec",4851],[5,"RedisError",229],[6,"Result",4852],[10,"Future",4853],[5,"Pipeline",18,4854],[10,"ClientLike",298,4855],[10,"FromRedis",1325,4856],[0,"mut"],[5,"Replicas",18,4857],[5,"RedisClient",18,4858],[1,"slice"],[5,"WithOptions",18,4859],[10,"Clone",4860],[5,"SentinelClient",18,4861],[5,"SubscriberClient",18,4862],[5,"Transaction",18,4863],[1,"unit"],[6,"Option",4864],[8,"ConnectHandle",1325],[1,"usize"],[5,"Duration",4865],[1,"bool"],[8,"RedisResult",298],[5,"Formatter",4866],[8,"Result",4866],[1,"u16"],[1,"u32"],[17,"Item"],[5,"HScanResult",1325,4867],[10,"Stream",4868],[5,"RedisKey",1325,4869],[10,"Into",4870],[8,"Str",4871],[1,"u64"],[5,"RedisConfig",1325,4872],[5,"PerformanceConfig",1325,4872],[5,"ConnectionConfig",1325,4872],[6,"ReconnectPolicy",1325,4872],[5,"SentinelConfig",1325,4872],[5,"HashMap",4873],[5,"Options",1325,4872],[8,"MultipleStrings",1325,4874],[6,"ScanType",1325,4867],[5,"ScanResult",1325,4867],[10,"Resolve",1325,4850],[5,"Rc",4875],[5,"SScanResult",1325,4867],[5,"String",4876],[5,"BTreeSet",4877],[5,"TypeId",4878],[5,"MultipleKeys",1325,4874],[5,"ZScanResult",1325,4867],[6,"RedisErrorKind",229],[1,"str"],[5,"Error",4879],[6,"Cow",4880],[10,"Error",4881],[10,"AclInterface",298,4882],[8,"MultipleValues",1325,4874],[10,"TryInto",4870],[10,"KeysInterface",298,4883],[6,"RedisValue",1325,4869],[10,"AuthInterface",298],[10,"ServerInterface",298,4884],[10,"ListInterface",298,4885],[6,"LMoveDirection",1325,4886],[1,"f64"],[1,"i64"],[10,"SortedSetsInterface",298,4887],[6,"ZCmp",1325,4888],[10,"ClusterInterface",298,4889],[5,"ClusterRouting",1325,4850],[10,"SentinelInterface",298,4890],[10,"ClientInterface",298,4891],[6,"ClientKillFilter",1325,4892],[6,"ClientKillType",1325,4892],[6,"ClientPauseKind",1325,4892],[6,"ClientReplyFlag",1325,4892],[6,"Toggle",1325,4892],[6,"ClientUnblockFlag",1325,4893],[5,"MultipleHashSlots",1325,4874],[10,"EventInterface",298],[6,"ClusterStateChange",1325,4893],[6,"ClusterFailoverFlag",1325,4894],[6,"ClusterResetFlag",1325,4894],[6,"ClusterSetSlotState",1325,4894],[10,"MetricsInterface",298,4895],[10,"ConfigInterface",298,4896],[1,"u8"],[5,"CustomCommand",1325,4893],[6,"Resp3Frame",1325],[10,"HeartbeatInterface",298],[10,"LuaInterface",298,4897],[1,"tuple"],[10,"FunctionInterface",298,4897],[10,"RediSearchInterface",298,4898],[5,"FtAggregateOptions",1325,4899],[5,"FtAlterOptions",1325,4899],[5,"FtCreateOptions",1325,4899],[5,"SearchSchema",1325,4899],[5,"FtSearchOptions",1325,4899],[6,"SpellcheckTerms",1325,4899],[5,"Bytes",4900],[6,"FnPolicy",1325,4893],[10,"GeoInterface",298,4901],[6,"SetOptions",1325,4893],[5,"MultipleGeoValues",1325,4902],[6,"GeoUnit",1325,4902],[8,"Any",1325],[6,"SortOrder",1325,4893],[5,"GeoPosition",1325,4902],[10,"HashesInterface",298,4903],[6,"RespVersion",1325,4904],[5,"RedisMap",1325,4869],[6,"InfoKind",1325,4893],[10,"TrackingInterface",298,4905],[5,"Invalidation",1325,4892],[10,"RedisJsonInterface",298,4906],[6,"Value",4907],[5,"KeyspaceEvent",1325,4893],[6,"ListLocation",1325,4886],[10,"MemoryInterface",298,4908],[5,"Message",1325,4850],[6,"IpAddr",4909],[10,"TransactionInterface",298,4910],[10,"Fn",4911],[6,"ExpireOptions",1325,4893],[10,"HyperloglogInterface",298,4912],[10,"PubsubInterface",298,4913],[5,"Stats",1325,4914],[10,"SetsInterface",298,4915],[6,"ScriptDebugFlag",1325,4893],[5,"Version",1325,4916],[6,"Expiration",1325,4893],[6,"ShutdownFlags",1325,4893],[6,"SentinelFailureKind",1325,4893],[10,"SlowlogInterface",298,4917],[8,"Limit",1325],[6,"ClientState",1325,4893],[10,"TimeSeriesInterface",298,4918],[6,"Encoding",1325,4919],[6,"DuplicatePolicy",1325,4919],[6,"Timestamp",1325,4919],[6,"Aggregator",1325,4919],[10,"IntoIterator",4920],[6,"GetLabels",1325,4919],[5,"RangeAggregation",1325,4919],[5,"GroupBy",1325,4919],[6,"GetTimestamp",1325,4919],[10,"StreamsInterface",298,4921],[5,"MultipleIDs",1325,4922],[5,"XCap",1325,4922],[6,"XID",1325,4922],[5,"MultipleOrderedPairs",1325,4922],[8,"XReadValue",1325,4922],[10,"FromRedisKey",1325,4856],[10,"Hash",4923],[10,"Eq",4924],[5,"XPendingArgs",1325,4922],[8,"XReadResponse",1325,4922],[6,"Ordering",1325,4888],[5,"MultipleZaddValues",1325,4888],[6,"AggregateOptions",1325,4893],[5,"MultipleWeights",1325,4888],[5,"ZRange",1325,4888],[6,"ZSort",1325,4888],[5,"SimpleMap",1188,4925],[5,"Buffer",1188,4925],[5,"MockCommand",1188,4925],[5,"Echo",1188,4925],[10,"Mocks",1188,4925],[5,"Command",1275],[5,"RedisProtocolError",4926],[5,"Function",1325,4927],[5,"Builder",1325,4928],[6,"ClusterHash",1325,4929],[6,"TlsHostMapping",1325,4930],[5,"TlsConfig",1325,4930],[6,"TlsConnector",1325,4930],[6,"MessageKind",1325,4850],[5,"SlotRange",1325,4850],[5,"ReplicaConfig",1325,4931],[6,"StringOrNumber",1325,4869],[6,"RedisValueKind",1325,4869],[6,"ClusterState",1325,4894],[5,"ClusterInfo",1325,4894],[6,"ReconnectError",1325,4872],[6,"Blocking",1325,4872],[6,"BackpressurePolicy",1325,4872],[5,"BackpressureConfig",1325,4872],[5,"TcpConfig",1325,4872],[5,"UnresponsiveConfig",1325,4872],[6,"ClusterDiscoveryPolicy",1325,4872],[6,"ServerConfig",1325,4872],[5,"TracingConfig",1325,4872],[5,"GeoValue",1325,4902],[5,"GeoRadiusInfo",1325,4902],[5,"DatabaseMemoryStats",1325,4893],[5,"MemoryStats",1325,4893],[5,"SlowlogEntry",1325,4893],[6,"ReducerFunc",1325,4899],[5,"SearchReducer",1325,4899],[5,"SearchField",1325,4899],[6,"Load",1325,4899],[5,"WithCursor",1325,4899],[5,"SearchParameter",1325,4899],[6,"AggregateOperation",1325,4899],[5,"SearchFilter",1325,4899],[5,"SearchGeoFilter",1325,4899],[5,"SearchSummarize",1325,4899],[5,"SearchHighlight",1325,4899],[5,"SearchSortBy",1325,4899],[6,"IndexKind",1325,4899],[6,"SearchSchemaKind",1325,4899],[5,"Script",1325,4927],[6,"FunctionFlag",1325,4927],[5,"Library",1325,4927],[6,"ZRangeBound",1325,4888],[6,"ZRangeKind",1325,4888],[6,"XCapTrim",1325,4922],[6,"XCapKind",1325,4922],[6,"Reducer",1325,4919],[6,"BucketTimestamp",1325,4919],[6,"Ordering",4924],[17,"Page"],[10,"Scanner",1325,4867],[10,"Send",4932],[10,"Sync",4932],[10,"CredentialProvider",1325,4872],[5,"Box",4933],[5,"Pin",4934],[10,"ReplicaFilter",1325,4931],[5,"Error",4866],[5,"VecDeque",4935],[5,"ClientConfig",4936],[5,"TlsConnector",4937],[5,"TlsConnector",4938],[5,"TlsConnector",4939],[1,"f32"],[1,"i8"],[1,"isize"],[1,"i16"],[1,"i32"],[1,"u128"],[1,"i128"],[1,"array"],[6,"FrameKind",4904],[10,"Sized",4932],[10,"BuildHasher",4923],[10,"Hasher",4923],[5,"HashSet",4940],[10,"HostMapping",1325,4930],[5,"Error",4941],[5,"BTreeMap",4942],[6,"OwnedFrame",4904],[5,"TlsConnectorBuilder",4937],[6,"VerbatimStringFormat",4904],[10,"FnOnce",4911],[15,"BlobString",1158],[15,"BlobError",1158],[15,"SimpleString",1158],[15,"SimpleError",1158],[15,"Boolean",1158],[15,"Number",1158],[15,"Double",1158],[15,"BigNumber",1158],[15,"VerbatimString",1158],[15,"Array",1158],[15,"Map",1158],[15,"Set",1158],[15,"Push",1158],[15,"Hello",1158],[8,"LimitCount",1325],[15,"Filter",4751],[15,"Apply",4751],[15,"GroupBy",4751],[15,"SortBy",4751],[15,"Limit",4751],[15,"Sleep",4760],[15,"Constant",4762],[15,"Linear",4762],[15,"Exponential",4762],[15,"Custom",4807],[15,"Tag",4807],[15,"Text",4807],[15,"Numeric",4807],[15,"Geo",4807],[15,"Vector",4807],[15,"GeoShape",4807],[15,"Clustered",4830],[15,"Sentinel",4830],[15,"Centralized",4830],[15,"Include",4837],[15,"Exclude",4837]],"r":[[7,4943],[18,4854],[19,4858],[20,4849],[21,4857],[22,4861],[23,4862],[24,4863],[25,4859],[298,4882],[306,4891],[307,4855],[308,4889],[309,4896],[313,4897],[314,4901],[315,4903],[318,4912],[319,4883],[320,4885],[321,4897],[323,4908],[324,4895],[328,4913],[330,4898],[331,4906],[334,4890],[335,4884],[337,4915],[340,4917],[341,4887],[342,4921],[343,4918],[344,4905],[345,4910],[950,4855],[1188,4925],[1189,4925],[1190,4925],[1191,4925],[1192,4925],[1302,4872],[1303,4928],[1304,4872],[1305,4893],[1306,4856],[1307,4872],[1308,4872],[1309,4872],[1310,4858],[1311,4872],[1312,229],[1313,229],[1314,4869],[1315,4849],[1316,4869],[1317,4869],[1318,4850],[1319,4872],[1320,4893],[1321,4872],[1322,4930],[1323,4930],[1324,4872],[1328,4899],[1329,4893],[1330,4919],[1350,4872],[1351,4872],[1358,4872],[1363,4919],[1364,4928],[1373,4892],[1374,4892],[1375,4892],[1376,4892],[1377,4893],[1378,4893],[1381,4872],[1383,4894],[1384,4929],[1385,4894],[1386,4894],[1387,4850],[1388,4894],[1389,4894],[1390,4893],[1398,4872],[1408,4872],[1416,4893],[1417,4872],[1418,4893],[1430,4919],[1434,4919],[1441,4893],[1442,4893],[1453,4893],[1455,4856],[1456,4856],[1457,4899],[1458,4899],[1459,4899],[1460,4899],[1461,4927],[1462,4927],[1465,4902],[1466,4902],[1468,4902],[1469,4902],[1470,4919],[1471,4919],[1473,4919],[1475,4867],[1481,4930],[1487,4899],[1490,4893],[1495,4892],[1499,4893],[1502,4886],[1510,4927],[1516,4886],[1517,4899],[1535,4893],[1536,4850],[1538,4850],[1551,4902],[1552,4874],[1553,4922],[1554,4874],[1555,4922],[1556,4874],[1557,4874],[1558,4888],[1559,4888],[1589,4872],[1590,4888],[1595,4872],[1609,4919],[1612,4872],[1613,4872],[1614,4872],[1615,4869],[1616,4869],[1617,4869],[1618,4869],[1619,4919],[1620,4899],[1624,4931],[1625,4931],[1627,4850],[1628,4919],[1630,4919],[1631,4904],[1635,4867],[1637,4867],[1638,4867],[1639,4867],[1641,4927],[1642,4893],[1643,4899],[1644,4899],[1645,4899],[1646,4899],[1647,4899],[1648,4899],[1649,4899],[1650,4899],[1651,4899],[1652,4899],[1655,4872],[1656,4893],[1657,4850],[1659,4872],[1662,4893],[1663,4893],[1669,4850],[1670,4893],[1675,4893],[1676,4899],[1679,4914],[1692,4869],[1702,4872],[1705,4919],[1706,4930],[1707,4930],[1708,4930],[1710,4892],[1711,4872],[1714,4872],[1723,4916],[1724,4899],[1727,4922],[1728,4922],[1729,4922],[1730,4922],[1731,4922],[1732,4922],[1733,4922],[1737,4888],[1738,4888],[1739,4888],[1740,4888],[1741,4867],[1743,4888],[4842,4944],[4844,4945],[4845,4944],[4847,4944],[4848,4944]],"b":[[106,"impl-Debug-for-RedisClient"],[107,"impl-Display-for-RedisClient"],[268,"impl-Display-for-RedisError"],[269,"impl-Debug-for-RedisError"],[1289,"impl-Debug-for-Command"],[1290,"impl-Display-for-Command"],[3024,"impl-Debug-for-Version"],[3025,"impl-Display-for-Version"],[3032,"impl-Debug-for-Server"],[3033,"impl-Display-for-Server"],[3042,"impl-Debug-for-RedisValueKind"],[3043,"impl-Display-for-RedisValueKind"],[3087,"impl-Debug-for-ClientState"],[3088,"impl-Display-for-ClientState"],[3119,"impl-Debug-for-Script"],[3120,"impl-Display-for-Script"],[3122,"impl-Debug-for-Function"],[3123,"impl-Display-for-Function"],[3124,"impl-Display-for-Library"],[3125,"impl-Debug-for-Library"],[3154,"impl-From%3Cf64%3E-for-BytesFrame"],[3156,"impl-From%3Cbool%3E-for-BytesFrame"],[3157,"impl-From%3Ci64%3E-for-BytesFrame"],[3160,"impl-From%3C%26%5Bu16%5D%3E-for-MultipleHashSlots"],[3161,"impl-From%3CVecDeque%3Cu16%3E%3E-for-MultipleHashSlots"],[3162,"impl-From%3Cu16%3E-for-MultipleHashSlots"],[3164,"impl-From%3CVec%3Cu16%3E%3E-for-MultipleHashSlots"],[3170,"impl-From%3COption%3Cf64%3E%3E-for-MultipleWeights"],[3171,"impl-From%3Cf64%3E-for-MultipleWeights"],[3172,"impl-From%3CVec%3Cf64%3E%3E-for-MultipleWeights"],[3173,"impl-From%3CVecDeque%3Cf64%3E%3E-for-MultipleWeights"],[3175,"impl-From%3C%26%5Bu8%5D%3E-for-ClusterHash"],[3176,"impl-From%3C%26str%3E-for-ClusterHash"],[3178,"impl-From%3Cu16%3E-for-ClusterHash"],[3179,"impl-From%3COption%3Cu16%3E%3E-for-ClusterHash"],[3183,"impl-From%3CClientConfig%3E-for-TlsConnector"],[3185,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3186,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3187,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[3188,"impl-From%3C(String,+u16)%3E-for-Server"],[3190,"impl-From%3C(%26str,+u16)%3E-for-Server"],[3191,"impl-From%3C%26Server%3E-for-Server"],[3198,"impl-From%3C%26str%3E-for-StringOrNumber"],[3199,"impl-From%3Cusize%3E-for-StringOrNumber"],[3200,"impl-From%3CString%3E-for-StringOrNumber"],[3201,"impl-From%3Cf32%3E-for-StringOrNumber"],[3202,"impl-From%3Cu64%3E-for-StringOrNumber"],[3203,"impl-From%3Cf64%3E-for-StringOrNumber"],[3204,"impl-From%3Cu32%3E-for-StringOrNumber"],[3205,"impl-From%3Ci8%3E-for-StringOrNumber"],[3206,"impl-From%3Cu16%3E-for-StringOrNumber"],[3207,"impl-From%3Cu8%3E-for-StringOrNumber"],[3208,"impl-From%3Cisize%3E-for-StringOrNumber"],[3209,"impl-From%3Ci16%3E-for-StringOrNumber"],[3210,"impl-From%3Ci32%3E-for-StringOrNumber"],[3211,"impl-From%3Ci64%3E-for-StringOrNumber"],[3212,"impl-From%3CStrInner%3CBytes%3E%3E-for-StringOrNumber"],[3214,"impl-From%3Cbool%3E-for-RedisKey"],[3215,"impl-From%3Cf64%3E-for-RedisKey"],[3216,"impl-From%3Ci16%3E-for-RedisKey"],[3217,"impl-From%3Cf32%3E-for-RedisKey"],[3218,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisKey"],[3219,"impl-From%3Ci8%3E-for-RedisKey"],[3220,"impl-From%3Cu64%3E-for-RedisKey"],[3221,"impl-From%3CBytes%3E-for-RedisKey"],[3222,"impl-From%3C%26%5Bu8%5D%3E-for-RedisKey"],[3223,"impl-From%3Cusize%3E-for-RedisKey"],[3224,"impl-From%3CString%3E-for-RedisKey"],[3225,"impl-From%3Ci32%3E-for-RedisKey"],[3226,"impl-From%3Cu32%3E-for-RedisKey"],[3227,"impl-From%3C%26str%3E-for-RedisKey"],[3228,"impl-From%3Cu16%3E-for-RedisKey"],[3229,"impl-From%3Cu128%3E-for-RedisKey"],[3230,"impl-From%3Ci128%3E-for-RedisKey"],[3231,"impl-From%3C%26String%3E-for-RedisKey"],[3232,"impl-From%3Cu8%3E-for-RedisKey"],[3233,"impl-From%3Cisize%3E-for-RedisKey"],[3234,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisKey"],[3235,"impl-From%3C%26StrInner%3CBytes%3E%3E-for-RedisKey"],[3236,"impl-From%3C%26RedisKey%3E-for-RedisKey"],[3237,"impl-From%3Ci64%3E-for-RedisKey"],[3238,"impl-From%3C%26RedisMap%3E-for-RedisMap"],[3240,"impl-From%3C()%3E-for-RedisMap"],[3242,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-RedisValue"],[3243,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-RedisValue"],[3244,"impl-From%3C%26str%3E-for-RedisValue"],[3245,"impl-From%3C%26String%3E-for-RedisValue"],[3246,"impl-From%3C%26%5Bu8%5D%3E-for-RedisValue"],[3248,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-RedisValue"],[3249,"impl-From%3C(A0,+A1)%3E-for-RedisValue"],[3250,"impl-From%3Cbool%3E-for-RedisValue"],[3251,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-RedisValue"],[3252,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-RedisValue"],[3253,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisValue"],[3254,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-RedisValue"],[3255,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-RedisValue"],[3256,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-RedisValue"],[3257,"impl-From%3Cf64%3E-for-RedisValue"],[3258,"impl-From%3C(A0,+A1,+A2)%3E-for-RedisValue"],[3259,"impl-From%3Cf32%3E-for-RedisValue"],[3260,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisValue"],[3261,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-RedisValue"],[3262,"impl-From%3Cu8%3E-for-RedisValue"],[3263,"impl-From%3Cu16%3E-for-RedisValue"],[3264,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-RedisValue"],[3265,"impl-From%3C()%3E-for-RedisValue"],[3266,"impl-From%3CRedisMap%3E-for-RedisValue"],[3267,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-RedisValue"],[3268,"impl-From%3Ci64%3E-for-RedisValue"],[3269,"impl-From%3CRedisKey%3E-for-RedisValue"],[3270,"impl-From%3Cu32%3E-for-RedisValue"],[3271,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-RedisValue"],[3272,"impl-From%3Ci8%3E-for-RedisValue"],[3273,"impl-From%3CBytes%3E-for-RedisValue"],[3274,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-RedisValue"],[3275,"impl-From%3CString%3E-for-RedisValue"],[3276,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-RedisValue"],[3277,"impl-From%3Ci16%3E-for-RedisValue"],[3278,"impl-From%3Ci32%3E-for-RedisValue"],[3312,"impl-From%3CGeoValue%3E-for-MultipleGeoValues"],[3313,"impl-From%3CVec%3CGeoValue%3E%3E-for-MultipleGeoValues"],[3314,"impl-From%3CVecDeque%3CGeoValue%3E%3E-for-MultipleGeoValues"],[3335,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-MultipleKeys"],[3336,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-MultipleKeys"],[3337,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-MultipleKeys"],[3338,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-MultipleKeys"],[3339,"impl-From%3COption%3CRedisKey%3E%3E-for-MultipleKeys"],[3340,"impl-From%3C()%3E-for-MultipleKeys"],[3341,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-MultipleKeys"],[3342,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-MultipleKeys"],[3343,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-MultipleKeys"],[3344,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-MultipleKeys"],[3345,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-MultipleKeys"],[3346,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleKeys"],[3347,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-MultipleKeys"],[3348,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-MultipleKeys"],[3349,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-MultipleKeys"],[3350,"impl-From%3CT%3E-for-MultipleKeys"],[3351,"impl-From%3CVec%3CT%3E%3E-for-MultipleKeys"],[3352,"impl-From%3C%26%5BK;+N%5D%3E-for-MultipleKeys"],[3353,"impl-From%3C(A0,+A1,+A2)%3E-for-MultipleKeys"],[3355,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-MultipleKeys"],[3356,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-MultipleKeys"],[3357,"impl-From%3C(A0,+A1)%3E-for-MultipleKeys"],[3386,"impl-From%3Ci64%3E-for-ZRangeBound"],[3388,"impl-From%3C%26String%3E-for-ZRangeBound"],[3389,"impl-From%3CString%3E-for-ZRangeBound"],[3390,"impl-From%3C%26str%3E-for-ZRangeBound"],[3392,"impl-From%3C%26String%3E-for-ZRange"],[3393,"impl-From%3C%26str%3E-for-ZRange"],[3394,"impl-From%3Ci64%3E-for-ZRange"],[3395,"impl-From%3CString%3E-for-ZRange"],[3397,"impl-From%3C%26ZRange%3E-for-ZRange"],[3401,"impl-From%3CVec%3CT%3E%3E-for-MultipleIDs"],[3402,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleIDs"],[3404,"impl-From%3CT%3E-for-MultipleIDs"],[3408,"impl-From%3C%26String%3E-for-XID"],[3409,"impl-From%3C%26str%3E-for-XID"],[3411,"impl-From%3CString%3E-for-XID"],[3412,"impl-From%3CStrInner%3CBytes%3E%3E-for-XID"],[3413,"impl-From%3C(u64,+S,+E,+u64)%3E-for-XPendingArgs"],[3415,"impl-From%3C()%3E-for-XPendingArgs"],[3416,"impl-From%3C(S,+E,+u64)%3E-for-XPendingArgs"],[3417,"impl-From%3C(S,+E,+u64,+C)%3E-for-XPendingArgs"],[3418,"impl-From%3C(u64,+S,+E,+u64,+C)%3E-for-XPendingArgs"],[3424,"impl-From%3CVec%3CS%3E%3E-for-GetLabels"],[3425,"impl-From%3C%5BS;+N%5D%3E-for-GetLabels"],[4174,"impl-TryFrom%3CVecDeque%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[4175,"impl-TryFrom%3CVec%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[4176,"impl-TryFrom%3C(f64,+T)%3E-for-MultipleZaddValues"],[4183,"impl-TryFrom%3CString%3E-for-Server"],[4184,"impl-TryFrom%3C%26str%3E-for-Server"],[4194,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisMap"],[4195,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisMap"],[4196,"impl-TryFrom%3C%26%5B(K,+V);+N%5D%3E-for-RedisMap"],[4197,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-RedisMap"],[4198,"impl-TryFrom%3C%5B(K,+V);+N%5D%3E-for-RedisMap"],[4199,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-RedisMap"],[4200,"impl-TryFrom%3C(K,+V)%3E-for-RedisMap"],[4203,"impl-TryFrom%3C%5BT;+N%5D%3E-for-RedisValue"],[4204,"impl-TryFrom%3CVecDeque%3CT%3E%3E-for-RedisValue"],[4205,"impl-TryFrom%3CBytesFrame%3E-for-RedisValue"],[4206,"impl-TryFrom%3Ci128%3E-for-RedisValue"],[4207,"impl-TryFrom%3Cusize%3E-for-RedisValue"],[4208,"impl-TryFrom%3COption%3CT%3E%3E-for-RedisValue"],[4209,"impl-TryFrom%3C%26%5BT;+N%5D%3E-for-RedisValue"],[4210,"impl-TryFrom%3Cu64%3E-for-RedisValue"],[4211,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisValue"],[4212,"impl-TryFrom%3CVec%3CT%3E%3E-for-RedisValue"],[4213,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisValue"],[4215,"impl-TryFrom%3Cu128%3E-for-RedisValue"],[4222,"impl-TryFrom%3C%26str%3E-for-Toggle"],[4223,"impl-TryFrom%3CString%3E-for-Toggle"],[4224,"impl-TryFrom%3C%26String%3E-for-Toggle"],[4274,"impl-TryFrom%3CString%3E-for-FnPolicy"],[4275,"impl-TryFrom%3C%26StrInner%3CBytes%3E%3E-for-FnPolicy"],[4276,"impl-TryFrom%3C%26str%3E-for-FnPolicy"],[4277,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-FnPolicy"],[4279,"impl-TryFrom%3C%26String%3E-for-FnPolicy"],[4317,"impl-TryFrom%3C(K,+V)%3E-for-MultipleOrderedPairs"],[4318,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[4319,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[4320,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-MultipleOrderedPairs"],[4325,"impl-TryFrom%3C(K,+T,+S,+Option%3Ci64%3E)%3E-for-XCap"],[4326,"impl-TryFrom%3C(K,+T,+S)%3E-for-XCap"],[4327,"impl-TryFrom%3C(K,+S)%3E-for-XCap"],[4333,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-Timestamp"],[4335,"impl-TryFrom%3C%26str%3E-for-Timestamp"],[4336,"impl-TryFrom%3CString%3E-for-Timestamp"]],"c":"OjAAAAEAAAAAAAEAEAAAAOIA4wA=","e":"OzAAAAEAAP0L8wABAAEACgAAAAwABAAdAA8ALwAOAEAABwBLABsAaAAIAH4AAgCCAAQAnwABAKwAAgCxAAgAvgAYANkABwD5AAMA/gAJAAkBBgARAQAAEwEBAB4BDAA0AQAAtwMAAIcEHQCrBAcAtQQCALoEEADQBAMA4AQCAOsEEAD+BAEAAQUCAAYFBQANBQAAEQUcAC8FAQA0BQYAPAUBAEAFAABCBQAARAUCAEkFAABOBQAAUgUAAFcFAQBaBQAAXAUAAGQFAQBwBQIAdQUBAHkFBwCFBQEAiAUAAIwFAACOBQIAkwUBAJwFAACeBQMApQUEAKwFAQCvBQAAuAUBALwFAADBBQAAwwUAAMUFAgDJBQAAywUDANUFAADZBQAA2wUAAN0FAQDgBQIA5AUBAOkFAADsBQAA8wUAAPUFAAD3BQIA+wUEAAQGCgAZBgIAHwYBACIGAgAnBgAAKwYAAC4GAwAzBgIAPQYBAEAGAABCBgAARAYBAEcGAgBXBgEAWwYAAGEGAQBlBgAAdgYBAHsGAAB+BgAAgwYBAIgGAACKBgEAjgYBAJEGBgCZBgEAnAYAAJ4GCACoBgEArgYAALEGAQC1BgUAvgYBAMcGAgDPBgAA0gYMAOAGAADiBgAA6wYAAPQGBQD8BgAAAQf9AAAIAQADCAAACghjAW8JAABzCQEAdwkHAIAJBwCNCQAAkAkCAJQJAwCaCQQAoAkhAMsJAQHPCoEAUgsAAFQLZwC+CwEAxgsCAMwLAQDRC38AUwwAAFUMAQBZDAIAXQwAAGMMAwBoDAEAawwBAG4MAABwDAAAcgwDAHcMAQB/DA4AjwwYAKkMAACrDAQAsQweANUMAADsDAAA8QwCAAgNEgAcDQIAOw0AAD0NAgBBDQMARg0AAEkNAgBNDQAATw0AAFENAQBUDQIAWA0DAF4NAABhDQEAZQ0AAGcNAABqDQAAbA0AAHENCQCDDQAAiQ0HAJINAACUDQAAlw0JAKUNAACnDQUArg0IALgNAAC+DQIAwg2DAEgOBADaDgAA3w4AAOcOAADrDgAA7g4AAPEOAAD1DgQA/A4FAAMPAwAJDwUAEQ8BABQPAQAXDwEAHQ8AACIPBQArDwIALw8BADQPAAA2DwAAOw8BAEQPAwBKDwAATA8OAFwPBwBmDwUAbw8DAHYPAQB6DwAAfQ8AAIMPAACGDwQAjA8GAJQPAACeDwIAog8AAKQPBwCvDwAAsQ8DALYPAAC4DwIAvg92ADcQCABCEDcBexF+APwRAAAEEgMACRJ+AIwSBQCTEgUAmxJDAOYSAwA="}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[113487]} \ No newline at end of file +//{"start":39,"fragment_lengths":[113544]} \ No newline at end of file diff --git a/docs/glommio/search.desc/fred/fred-desc-0-.js b/docs/glommio/search.desc/fred/fred-desc-0-.js index 42844a37..40797d0e 100644 --- a/docs/glommio/search.desc/fred/fred-desc-0-.js +++ b/docs/glommio/search.desc/fred/fred-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("fred", 0, "Fred\nRedis client implementations.\nShorthand to create a CustomCommand.\nError structs returned by Redis commands.\nTraits that implement portions of the Redis interface.\nA helper macro to wrap a string value in quotes via the …\nAn interface for mocking Redis commands.\nAn interface to run the MONITOR command.\nConvenience module to import a RedisClient, all possible …\nThe structs and enums used by the Redis client.\nVarious client utility functions.\nSend a series of commands in a pipeline.\nA cheaply cloneable Redis client struct.\nA cheaply cloneable round-robin client pool.\nA struct for interacting with cluster replica nodes.\nA struct for interacting directly with Sentinel nodes.\nA subscriber client that will manage subscription state to …\nA cheaply cloneable transaction block.\nA client interface used to customize command configuration …\nRead the set of active connections across all clients in …\nSend the pipeline and respond with an array of all …\nRead the underlying RedisClient that interacts with …\nRead the individual clients in the pool.\nCreate a new RedisClient from the config provided to this …\nCreate a new SubscriberClient from the config provided to …\nRead the server ID against which this transaction will …\nConnect each client to the server.\nConnect each client to the server, returning the task …\nExecutes all previously queued commands in a transaction.\nForce a reconnection to the server(s) for each client.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new pool from an existing set of clients.\nRead the hash slot against which this transaction will …\nIncrementally iterate over pages of the hash map stored at …\nAn ID identifying the underlying transaction state.\nInitialize a new routing and connection task for each …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSend the pipeline and respond with only the result of the …\nRead the client that ran the last command.\nRead the number of commands queued to run.\nSpawn a task that will automatically re-subscribe to any …\nCreate a new pool without connecting to the server.\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nRead the client that should run the next command.\nRead the next connected client that should run the next …\nRead a mapping of replica server IDs to primary server IDs.\nRead the options that will be applied to commands.\nSend a series of commands in a pipeline.\nSend a series of commands in a pipeline.\nSet whether the client will use next_connected or next …\nClose the connection to the Redis server for each client. …\nCreate a client that interacts with the replica nodes …\nCreate a client that interacts with replica nodes.\nClear the internal command buffer and watched keys.\nRe-subscribe to any tracked channels and patterns.\nIncrementally iterate over a set of keys matching the …\nRun the SCAN command on each primary/main node in a …\nOverride the DNS resolution logic for all clients in the …\nRead the size of the pool.\nSplit a clustered Redis client into a set of centralized …\nIncrementally iterate over pages of the set stored at key, …\nSync the cached replica routing table with the server(s).\nCreate a new RedisClient, reusing the existing …\nRead the set of channels that this client will manage.\nRead the set of channel patterns that this client will …\nRead the set of shard channels that this client will …\nSend the pipeline and respond with each individual result.\nUnsubscribe from all tracked channels and patterns, and …\nUpdate the internal PerformanceConfig on each client in …\nWait for all the clients to connect to the server.\nSend the WATCH command with the provided keys before …\nRead the number of keys to WATCH before the starting the …\nShorthand to route subsequent commands to the provided …\nIncrementally iterate over pages of the sorted set stored …\nAn authentication error.\nAn error indicating that the caller should apply …\nAn error indicating the request was canceled.\nAn error used to indicate that the cluster’s state has …\nA fatal client configuration error. These errors will …\nAn IO error with the underlying connection.\nAn invalid argument or set of arguments to a command.\nAn invalid command, such as trying to perform a set …\nAn error indicating a value was not found, often used when …\nA parser error.\nA protocol error such as an invalid or unexpected frame …\nAn error from Redis.\nAn enum representing the type of error from Redis.\nAn error associated with a replica node.\nAn error communicating with redis sentinel.\nA timeout error.\nA TLS error.\nAn unknown error.\nAn invalid URL error.\nChange the kind of the error.\nRead details about the error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWhether the error is a Canceled error.\nWhether the error is a Cluster error.\nWhether the error is a NotFound error.\nWhether the error is a Replica error.\nRead the type of error without any associated data.\nCreate a new Redis error with the provided details.\nCreate a new empty Canceled error.\nFunctions that implement the ACL interface.\nAn array of frames.\nFunctions for authenticating clients.\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nA boolean type.\nOne chunk of a streaming blob.\nFunctions that implement the client interface.\nFunctions that implement the cluster interface.\nFunctions that implement the config interface.\nA signed 64-bit floating point number.\nContains the error value\nAn interface that exposes various client and connection …\nFunctions that implement the function interface.\nFunctions that implement the geo interface.\nFunctions that implement the hashes interface.\nFunctions that provide a connection heartbeat interface.\nA special frame type used when first connecting to the …\nFunctions that implement the HyperLogLog interface.\nFunctions that implement the generic keys interface.\nFunctions that implement the lists interface.\nFunctions that implement the lua interface.\nAn unordered map of key-value pairs.\nFunctions that implement the memory interface.\nFunctions that implement the internal metrics interface.\nA null type.\nA signed 64-bit integer.\nContains the success value\nFunctions that implement the pubsub interface.\nOut-of-band data.\nA RediSearch interface.\nThe client commands in the RedisJSON interface.\nType alias for Result<T, RedisError>.\nA RESP3 frame that uses Bytes and Str as the underlying …\nFunctions that implement the sentinel interface.\nFunctions that implement the server interface.\nAn unordered collection of other frames with a uniqueness …\nFunctions that implement the sets interface.\nA small string representing an error.\nA small string.\nFunctions that implement the slowlog interface.\nFunctions that implement the sorted sets interface.\nFunctions that implement the streams interface.\nA Redis Timeseries interface.\nA high level interface that supports client side caching …\nFunctions that implement the transactions interface.\nA string to be displayed without any escaping or filtering.\nThe command shows the available ACL categories if called …\nThe command shows the available ACL categories if called …\nDelete all the specified ACL users and terminate all the …\nDelete all the specified ACL users and terminate all the …\nGenerate a password with length bits, returning the …\nGenerate a password with length bits, returning the …\nThe command returns all the rules defined for an existing …\nThe command returns all the rules defined for an existing …\nThe command shows the currently active ACL rules in the …\nThe command shows the currently active ACL rules in the …\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nRead count recent ACL security events.\nRead count recent ACL security events.\nClear the ACL security events logs.\nClear the ACL security events logs.\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nCreate an ACL user with the specified rules or modify the …\nCreate an ACL user with the specified rules or modify the …\nThe command shows a list of all the usernames of the …\nThe command shows a list of all the usernames of the …\nReturn the username the current connection is …\nReturn the username the current connection is …\nRead the set of active connections managed by the client.\nRead the set of active connections managed by the client.\nAppend value to key if it’s a string.\nAppend value to key if it’s a string.\nRequest for authentication in a password-protected Redis …\nInstruct Redis to start an Append Only File rewrite …\nInstruct Redis to start an Append Only File rewrite …\nSave the DB in background.\nSave the DB in background.\nThe blocking equivalent of Self::lmove.\nThe blocking equivalent of Self::lmove.\nThe blocking variant of Self::lmpop.\nThe blocking variant of Self::lmpop.\nBLPOP is a blocking list pop primitive. It is the blocking …\nBLPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nThe blocking equivalent of Self::rpoplpush.\nThe blocking equivalent of Self::rpoplpush.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmin.\nThe blocking variant of Self::zpopmin.\nRead the cached cluster state used for routing commands to …\nRead the cached cluster state used for routing commands to …\nCheck if the current Sentinel configuration is able to …\nCheck if the current Sentinel configuration is able to …\nThis command controls the tracking of the keys in the next …\nThis command controls the tracking of the keys in the next …\nRead the config used to initialize the client.\nRead the config used to initialize the client.\nThe CLIENT GETNAME returns the name of the current …\nThe CLIENT GETNAME returns the name of the current …\nThis command returns the client ID we are redirecting our …\nThis command returns the client ID we are redirecting our …\nReturn the ID of the current connection.\nReturn the ID of the current connection.\nThe command returns information and statistics about the …\nThe command returns information and statistics about the …\nClose a given connection or set of connections.\nClose a given connection or set of connections.\nThe CLIENT LIST command returns information and statistics …\nThe CLIENT LIST command returns information and statistics …\nCLIENT PAUSE is a connections control command able to …\nCLIENT PAUSE is a connections control command able to …\nRead the reconnect policy used to initialize the client.\nRead the reconnect policy used to initialize the client.\nThe CLIENT REPLY command controls whether the server will …\nThe CLIENT REPLY command controls whether the server will …\nAssign a name to the current connection.\nAssign a name to the current connection.\nThis command enables the tracking feature of the Redis …\nThis command enables the tracking feature of the Redis …\nThe command returns information about the current client …\nThe command returns information about the current client …\nThis command can unblock, from a different connection, a …\nThis command can unblock, from a different connection, a …\nCLIENT UNPAUSE is used to resume command processing for …\nCLIENT UNPAUSE is used to resume command processing for …\nThis command is useful in order to modify a node’s view …\nThis command is useful in order to modify a node’s view …\nAdvances the cluster config epoch.\nAdvances the cluster config epoch.\nListen for notifications whenever the cluster state …\nThe command returns the number of failure reports for the …\nThe command returns the number of failure reports for the …\nReturns the number of keys in the specified Redis Cluster …\nReturns the number of keys in the specified Redis Cluster …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThis command, that can only be sent to a Redis Cluster …\nThis command, that can only be sent to a Redis Cluster …\nDeletes all slots from a node.\nDeletes all slots from a node.\nThe command is used in order to remove a node, specified …\nThe command is used in order to remove a node, specified …\nThe command returns an array of keys names stored in the …\nThe command returns an array of keys names stored in the …\nCLUSTER INFO provides INFO style information about Redis …\nCLUSTER INFO provides INFO style information about Redis …\nReturns an integer identifying the hash slot the specified …\nReturns an integer identifying the hash slot the specified …\nCLUSTER MEET is used in order to connect different Redis …\nCLUSTER MEET is used in order to connect different Redis …\nReturns the node’s id.\nReturns the node’s id.\nRead the current cluster node configuration.\nRead the current cluster node configuration.\nThe command provides a list of replica nodes replicating …\nThe command provides a list of replica nodes replicating …\nThe command reconfigures a node as a replica of the …\nThe command reconfigures a node as a replica of the …\nReset a Redis Cluster node, in a more or less drastic way …\nReset a Redis Cluster node, in a more or less drastic way …\nForces a node to save the nodes.conf configuration on disk.\nForces a node to save the nodes.conf configuration on disk.\nThis command sets a specific config epoch in a fresh node.\nThis command sets a specific config epoch in a fresh node.\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SLOTS returns details about which cluster slots …\nCLUSTER SLOTS returns details about which cluster slots …\nRead the number of buffered commands that have not yet …\nRead the number of buffered commands that have not yet …\nThe CONFIG GET command is used to read the configuration …\nThe CONFIG GET command is used to read the configuration …\nGet the current value of a global Sentinel configuration …\nGet the current value of a global Sentinel configuration …\nResets the statistics reported by Redis using the INFO …\nResets the statistics reported by Redis using the INFO …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG SET command is used in order to reconfigure the …\nThe CONFIG SET command is used in order to reconfigure the …\nSet the value of a global Sentinel configuration parameter.\nSet the value of a global Sentinel configuration parameter.\nConnect to the server.\nConnect to the server.\nRead the connection config used to initialize the client.\nRead the connection config used to initialize the client.\nRead the connection IDs for the active connections to each …\nRead the connection IDs for the active connections to each …\nThis command copies the value stored at the source key to …\nThis command copies the value stored at the source key to …\nRun a custom command that is not yet supported via another …\nRun a custom command that is not yet supported via another …\nRun a custom command similar to custom, but return the …\nRun a custom command similar to custom, but return the …\nReturn the number of keys in the selected database.\nReturn the number of keys in the selected database.\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by val. If the key …\nDecrements the number stored at key by val. If the key …\nRemoves the specified keys. A key is ignored if it does …\nRemoves the specified keys. A key is ignored if it does …\nSerialize the value stored at key in a Redis-specific …\nSerialize the value stored at key in a Redis-specific …\nReturn a future that will ping the server on an interval.\nListen for protocol and connection errors. This stream can …\nEvaluate a Lua script on the server.\nEvaluate a Lua script on the server.\nEvaluates a script cached on the server side by its SHA1 …\nEvaluates a script cached on the server side by its SHA1 …\nReturns number of keys that exist from the keys arguments.\nReturns number of keys that exist from the keys arguments.\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on a key based on a UNIX timestamp.\nSet a timeout on a key based on a UNIX timestamp.\nForce a failover as if the master was not reachable, and …\nForce a failover as if the master was not reachable, and …\nThis command will start a coordinated failover between the …\nThis command will start a coordinated failover between the …\nInvoke a function.\nInvoke a function.\nThis is a read-only variant of the FCALL command that …\nThis is a read-only variant of the FCALL command that …\nDelete the keys in all databases.\nDelete the keys in all databases.\nDelete the keys on all nodes in the cluster. This is a …\nDelete the keys on all nodes in the cluster. This is a …\nForce Sentinel to rewrite its configuration on disk, …\nForce Sentinel to rewrite its configuration on disk, …\nForce a reconnection to the server(s).\nForce a reconnection to the server(s).\nRun a search query on an index, and perform aggregate …\nRun a search query on an index, and perform aggregate …\nAdd an alias to an index.\nAdd an alias to an index.\nRemove an alias from an index.\nRemove an alias from an index.\nAdd an alias to an index. If the alias is already …\nAdd an alias to an index. If the alias is already …\nAdd a new attribute to the index.\nAdd a new attribute to the index.\nRetrieve configuration options.\nRetrieve configuration options.\nSet the value of a RediSearch configuration parameter.\nSet the value of a RediSearch configuration parameter.\nCreate an index with the given specification.\nCreate an index with the given specification.\nDelete a cursor.\nDelete a cursor.\nRead next results from an existing cursor.\nRead next results from an existing cursor.\nAdd terms to a dictionary.\nAdd terms to a dictionary.\nRemove terms from a dictionary.\nRemove terms from a dictionary.\nDump all terms in the given dictionary.\nDump all terms in the given dictionary.\nDelete an index.\nDelete an index.\nReturn the execution plan for a complex query.\nReturn the execution plan for a complex query.\nReturn information and statistics on the index.\nReturn information and statistics on the index.\nReturns a list of all existing indexes.\nReturns a list of all existing indexes.\nSearch the index with a textual query, returning either …\nSearch the index with a textual query, returning either …\nPerform spelling correction on a query, returning …\nPerform spelling correction on a query, returning …\nAdd a suggestion string to an auto-complete suggestion …\nAdd a suggestion string to an auto-complete suggestion …\nDelete a string from a suggestion index.\nDelete a string from a suggestion index.\nGet completion suggestions for a prefix.\nGet completion suggestions for a prefix.\nGet the size of an auto-complete suggestion dictionary.\nGet the size of an auto-complete suggestion dictionary.\nDump the contents of a synonym group.\nDump the contents of a synonym group.\nUpdate a synonym group.\nUpdate a synonym group.\nReturn a distinct set of values indexed in a Tag field.\nReturn a distinct set of values indexed in a Tag field.\nDelete a library and all its functions.\nDelete a library and all its functions.\nDelete a library and all its functions from each cluster …\nDelete a library and all its functions from each cluster …\nReturn the serialized payload of loaded libraries.\nReturn the serialized payload of loaded libraries.\nDeletes all the libraries.\nDeletes all the libraries.\nDeletes all the libraries on all cluster nodes …\nDeletes all the libraries on all cluster nodes …\nKill a function that is currently executing.\nKill a function that is currently executing.\nReturn information about the functions and libraries.\nReturn information about the functions and libraries.\nLoad a library to Redis.\nLoad a library to Redis.\nLoad a library to Redis on all cluster nodes concurrently.\nLoad a library to Redis on all cluster nodes concurrently.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload on all …\nRestore libraries from the serialized payload on all …\nReturn information about the function that’s currently …\nReturn information about the function that’s currently …\nAdds the specified geospatial items (longitude, latitude, …\nAdds the specified geospatial items (longitude, latitude, …\nReturn the distance between two members in the geospatial …\nReturn the distance between two members in the geospatial …\nReturn valid Geohash strings representing the position of …\nReturn valid Geohash strings representing the position of …\nReturn the positions (longitude,latitude) of all the …\nReturn the positions (longitude,latitude) of all the …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is exactly like GEORADIUS with the sole …\nThis command is exactly like GEORADIUS with the sole …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is like GEOSEARCH, but stores the result in …\nThis command is like GEOSEARCH, but stores the result in …\nRead a value from the server.\nRead a value from the server.\nReturn the ip and port number of the master with that name.\nReturn the ip and port number of the master with that name.\nGet the value of key and delete the key. This command is …\nGet the value of key and delete the key. This command is …\nReturns the substring of the string value stored at key …\nReturns the substring of the string value stored at key …\nAtomically sets key to value and returns the old value …\nAtomically sets key to value and returns the old value …\nWhether the client has a reconnection policy.\nWhether the client has a reconnection policy.\nRemoves the specified fields from the hash stored at key.\nRemoves the specified fields from the hash stored at key.\nSwitch to a different protocol, optionally authenticating …\nReturns if field is an existing field in the hash stored …\nReturns if field is an existing field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns all fields and values of the hash stored at key.\nReturns all fields and values of the hash stored at key.\nIncrements the number stored at field in the hash stored …\nIncrements the number stored at field in the hash stored …\nIncrement the specified field of a hash stored at key, and …\nIncrement the specified field of a hash stored at key, and …\nReturns all field names in the hash stored at key.\nReturns all field names in the hash stored at key.\nReturns the number of fields contained in the hash stored …\nReturns the number of fields contained in the hash stored …\nReturns the values associated with the specified fields in …\nReturns the values associated with the specified fields in …\nSets the specified fields to their respective values in …\nSets the specified fields to their respective values in …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nSets fields in the hash stored at key to their provided …\nSets fields in the hash stored at key to their provided …\nSets field in the hash stored at key to value, only if …\nSets field in the hash stored at key to value, only if …\nReturns the string length of the value associated with …\nReturns the string length of the value associated with …\nReturns all values in the hash stored at key.\nReturns all values in the hash stored at key.\nThe unique ID identifying this client and underlying …\nThe unique ID identifying this client and underlying …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by val. If the key …\nIncrements the number stored at key by val. If the key …\nIncrement the string representing a floating point number …\nIncrement the string representing a floating point number …\nRead info about the server.\nRead info about the server.\nReturn cached INFO output from masters and replicas.\nReturn cached INFO output from masters and replicas.\nInitialize a new routing and connection task and wait for …\nInitialize a new routing and connection task and wait for …\nSubscribe to invalidation messages from the server(s).\nSubscribe to invalidation messages from the server(s).\nWhether the client is connected to a cluster.\nWhether the client is connected to a cluster.\nWhether all underlying connections are healthy.\nWhether all underlying connections are healthy.\nWhether the client will automatically pipeline commands.\nWhether the client will automatically pipeline commands.\nAppend the json values into the array at path after the …\nAppend the json values into the array at path after the …\nSearch for the first occurrence of a JSON value in an …\nSearch for the first occurrence of a JSON value in an …\nInsert the json values into the array at path before the …\nInsert the json values into the array at path before the …\nReport the length of the JSON array at path in key.\nReport the length of the JSON array at path in key.\nRemove and return an element from the index in the array\nRemove and return an element from the index in the array\nTrim an array so that it contains only the specified …\nTrim an array so that it contains only the specified …\nClear container values (arrays/objects) and set numeric …\nClear container values (arrays/objects) and set numeric …\nReport a value’s memory usage in bytes\nReport a value’s memory usage in bytes\nDelete a value.\nDelete a value.\nReturn the value at path in JSON serialized form.\nReturn the value at path in JSON serialized form.\nMerge a given JSON value into matching paths.\nMerge a given JSON value into matching paths.\nReturn the values at path from multiple key arguments.\nReturn the values at path from multiple key arguments.\nSet or update one or more JSON values according to the …\nSet or update one or more JSON values according to the …\nIncrement the number value stored at path by number\nIncrement the number value stored at path by number\nReturn the keys in the object that’s referenced by path.\nReturn the keys in the object that’s referenced by path.\nReport the number of keys in the JSON object at path in …\nReport the number of keys in the JSON object at path in …\nReturn the JSON in key in Redis serialization protocol …\nReturn the JSON in key in Redis serialization protocol …\nSet the JSON value at path in key.\nSet the JSON value at path in key.\nAppend the json-string values to the string at path.\nAppend the json-string values to the string at path.\nReport the length of the JSON String at path in key.\nReport the length of the JSON String at path in key.\nToggle a Boolean value stored at path.\nToggle a Boolean value stored at path.\nReport the type of JSON value at path.\nReport the type of JSON value at path.\nListen for keyspace and keyevent notifications on the …\nReturn the UNIX TIME of the last DB save executed with …\nReturn the UNIX TIME of the last DB save executed with …\nRuns the longest common subsequence algorithm on two keys.\nRuns the longest common subsequence algorithm on two keys.\nReturns the element at index in the list stored at key.\nReturns the element at index in the list stored at key.\nInserts element in the list stored at key either before or …\nInserts element in the list stored at key either before or …\nReturns the length of the list stored at key.\nReturns the length of the list stored at key.\nAtomically returns and removes the first/last element …\nAtomically returns and removes the first/last element …\nPops one or more elements from the first non-empty list …\nPops one or more elements from the first non-empty list …\nRemoves and returns the first elements of the list stored …\nRemoves and returns the first elements of the list stored …\nThe command returns the index of matching elements inside …\nThe command returns the index of matching elements inside …\nInsert all the specified values at the head of the list …\nInsert all the specified values at the head of the list …\nInserts specified values at the head of the list stored at …\nInserts specified values at the head of the list stored at …\nReturns the specified elements of the list stored at key.\nReturns the specified elements of the list stored at key.\nRemoves the first count occurrences of elements equal to …\nRemoves the first count occurrences of elements equal to …\nSets the list element at index to element.\nSets the list element at index to element.\nTrim an existing list so that it will contain only the …\nTrim an existing list so that it will contain only the …\nShow the state and info of the specified master.\nShow the state and info of the specified master.\nShow a list of monitored masters and their state.\nShow a list of monitored masters and their state.\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY USAGE command reports the number of bytes that …\nThe MEMORY USAGE command reports the number of bytes that …\nListen for messages on the publish-subscribe interface.\nReturns the values of all specified keys. For every key …\nReturns the values of all specified keys. For every key …\nStart Sentinel’s monitoring.\nStart Sentinel’s monitoring.\nSets the given keys to their respective values.\nSets the given keys to their respective values.\nSets the given keys to their respective values. MSETNX …\nSets the given keys to their respective values. MSETNX …\nEnter a MULTI block, executing subsequent commands as a …\nEnter a MULTI block, executing subsequent commands as a …\nReturn the ID of the Sentinel instance.\nReturn the ID of the Sentinel instance.\nRead the number of known primary cluster nodes, or 0 if …\nRead the number of known primary cluster nodes, or 0 if …\nSpawn one task that listens for all connection management …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function whenever the …\nThis command returns information about pending scripts.\nThis command returns information about pending scripts.\nRead the PerformanceConfig associated with this client.\nRead the PerformanceConfig associated with this client.\nRemove the existing timeout on a key, turning the key from …\nRemove the existing timeout on a key, turning the key from …\nThis command works exactly like EXPIRE but the time to …\nThis command works exactly like EXPIRE but the time to …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nAdds all the element arguments to the HyperLogLog data …\nAdds all the element arguments to the HyperLogLog data …\nWhen called with a single key, returns the approximated …\nWhen called with a single key, returns the approximated …\nMerge multiple HyperLogLog values into an unique value …\nMerge multiple HyperLogLog values into an unique value …\nPing the Redis server.\nPing the Redis server.\nRead the RESP version used by the client when …\nRead the RESP version used by the client when …\nSubscribes the client to the given patterns.\nSubscribes the client to the given patterns.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nPublish a message on the PubSub interface, returning the …\nPublish a message on the PubSub interface, returning the …\nLists the currently active channels.\nLists the currently active channels.\nReturns the number of unique patterns that are subscribed …\nReturns the number of unique patterns that are subscribed …\nReturns the number of subscribers (exclusive of clients …\nReturns the number of subscribers (exclusive of clients …\nLists the currently active shard channels.\nLists the currently active shard channels.\nReturns the number of subscribers for the specified shard …\nReturns the number of subscribers for the specified shard …\nUnsubscribes the client from the given patterns, or from …\nUnsubscribes the client from the given patterns, or from …\nClose the connection to the Redis server. The returned …\nClose the connection to the Redis server. The returned …\nReturn a random key from the currently selected database.\nReturn a random key from the currently selected database.\nRead latency metrics across all commands.\nRead latency metrics across all commands.\nRead network latency metrics across all commands.\nRead network latency metrics across all commands.\nRead the number of request redeliveries.\nRead the number of request redeliveries.\nRead request payload size metrics across all commands.\nRead request payload size metrics across all commands.\nRead response payload size metrics across all commands.\nRead response payload size metrics across all commands.\nListen for reconnection notifications.\nStop Sentinel’s monitoring.\nStop Sentinel’s monitoring.\nRenames source key to destination.\nRenames source key to destination.\nRenames source key to destination if destination does not …\nRenames source key to destination if destination does not …\nShow a list of replicas for this master, and their state.\nShow a list of replicas for this master, and their state.\nThis command will reset all the masters with matching name.\nThis command will reset all the masters with matching name.\nCreate a key associated with a value that is obtained by …\nCreate a key associated with a value that is obtained by …\nRemoves and returns the last elements of the list stored …\nRemoves and returns the last elements of the list stored …\nAtomically returns and removes the last element (tail) of …\nAtomically returns and removes the last element (tail) of …\nInsert all the specified values at the tail of the list …\nInsert all the specified values at the tail of the list …\nInserts specified values at the tail of the list stored at …\nInserts specified values at the tail of the list stored at …\nAdd the specified members to the set stored at key.\nAdd the specified members to the set stored at key.\nReturns the set cardinality (number of elements) of the …\nReturns the set cardinality (number of elements) of the …\nSet the debug mode for subsequent scripts executed with …\nSet the debug mode for subsequent scripts executed with …\nReturns information about the existence of the scripts in …\nReturns information about the existence of the scripts in …\nFlush the Lua scripts cache.\nFlush the Lua scripts cache.\nA clustered variant of script_flush that flushes the …\nA clustered variant of script_flush that flushes the …\nKills the currently executing Lua script, assuming no …\nKills the currently executing Lua script, assuming no …\nA clustered variant of the script_kill command that issues …\nA clustered variant of the script_kill command that issues …\nLoad a script into the scripts cache, without executing …\nLoad a script into the scripts cache, without executing …\nA clustered variant of script_load that loads the script …\nA clustered variant of script_load that loads the script …\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SDIFF, but instead of returning …\nThis command is equal to SDIFF, but instead of returning …\nSelect the database this client should use.\nSelect the database this client should use.\nRead the set of known sentinel nodes.\nRead the set of known sentinel nodes.\nRead the primary Redis server identifier returned from the …\nRead the primary Redis server identifier returned from the …\nShow a list of sentinel instances for this master, and …\nShow a list of sentinel instances for this master, and …\nRead the server version, if known.\nRead the server version, if known.\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet Sentinel’s monitoring configuration.\nSet Sentinel’s monitoring configuration.\nOverride the DNS resolution logic for the client.\nOverride the DNS resolution logic for the client.\nOverwrites part of the string stored at key, starting at …\nOverwrites part of the string stored at key, starting at …\nShut down the server and quit the client.\nShut down the server and quit the client.\nThis command simulates different Sentinel crash scenarios.\nThis command simulates different Sentinel crash scenarios.\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SINTER, but instead of returning …\nThis command is equal to SINTER, but instead of returning …\nReturns if member is a member of the set stored at key.\nReturns if member is a member of the set stored at key.\nThis command is used to read the slow queries log.\nThis command is used to read the slow queries log.\nThis command is used to read length of the slow queries …\nThis command is used to read length of the slow queries …\nThis command is used to reset the slow queries log.\nThis command is used to reset the slow queries log.\nReturns all the members of the set value stored at key.\nReturns all the members of the set value stored at key.\nReturns whether each member is a member of the set stored …\nReturns whether each member is a member of the set stored …\nMove member from the set at source to the set at …\nMove member from the set at source to the set at …\nReturns or stores the elements contained in the list, set …\nReturns or stores the elements contained in the list, set …\nRead-only variant of the SORT command. It is exactly like …\nRead-only variant of the SORT command. It is exactly like …\nRemoves and returns one or more random members from the …\nRemoves and returns one or more random members from the …\nPosts a message to the given shard channel.\nPosts a message to the given shard channel.\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nRemove the specified members from the set stored at key.\nRemove the specified members from the set stored at key.\nSubscribes the client to the specified shard channels.\nSubscribes the client to the specified shard channels.\nSend the CLIENT TRACKING command to all connected servers, …\nSend the CLIENT TRACKING command to all connected servers, …\nRead the state of the underlying connection(s).\nRead the state of the underlying connection(s).\nDisable client tracking on all connections.\nDisable client tracking on all connections.\nReturns the length of the string value stored at key. An …\nReturns the length of the string value stored at key. An …\nSubscribe to a channel on the publish-subscribe interface.\nSubscribe to a channel on the publish-subscribe interface.\nReturns the members of the set resulting from the union of …\nReturns the members of the set resulting from the union of …\nThis command is equal to SUNION, but instead of returning …\nThis command is equal to SUNION, but instead of returning …\nUnsubscribes the client from the given shard channels, or …\nUnsubscribes the client from the given shard channels, or …\nUpdate the cached cluster state and add or remove any …\nUpdate the cached cluster state and add or remove any …\nRead and consume latency metrics, resetting their values …\nRead and consume latency metrics, resetting their values …\nRead and consume network latency metrics, resetting their …\nRead and consume network latency metrics, resetting their …\nRead and reset the number of request redeliveries.\nRead and reset the number of request redeliveries.\nRead and consume request payload size metrics, resetting …\nRead and consume request payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nAppend a sample to a time series.\nAppend a sample to a time series.\nUpdate the retention, chunk size, duplicate policy, and …\nUpdate the retention, chunk size, duplicate policy, and …\nCreate a new time series.\nCreate a new time series.\nCreate a compaction rule.\nCreate a compaction rule.\nDecrease the value of the sample with the maximum existing …\nDecrease the value of the sample with the maximum existing …\nDelete all samples between two timestamps for a given time …\nDelete all samples between two timestamps for a given time …\nDelete a compaction rule.\nDelete a compaction rule.\nGet the sample with the highest timestamp from a given …\nGet the sample with the highest timestamp from a given …\nIncrease the value of the sample with the maximum existing …\nIncrease the value of the sample with the maximum existing …\nReturn information and statistics for a time series.\nReturn information and statistics for a time series.\nAppend new samples to one or more time series.\nAppend new samples to one or more time series.\nGet the sample with the highest timestamp from each time …\nGet the sample with the highest timestamp from each time …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nGet all time series keys matching a filter list.\nGet all time series keys matching a filter list.\nQuery a range in forward direction.\nQuery a range in forward direction.\nQuery a range in reverse direction.\nQuery a range in reverse direction.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nA convenience function to unblock any blocked connection …\nA convenience function to unblock any blocked connection …\nUnlinks the specified keys. A key is ignored if it does …\nUnlinks the specified keys. A key is ignored if it does …\nReceive a message when the client initiates a reconnection …\nUnsubscribe from a channel on the PubSub interface.\nUnsubscribe from a channel on the PubSub interface.\nFlushes all the previously watched keys for a transaction.\nFlushes all the previously watched keys for a transaction.\nUpdate the internal PerformanceConfig in place with new …\nUpdate the internal PerformanceConfig in place with new …\nWhether the client uses the sentinel interface.\nWhether the client uses the sentinel interface.\nThis command blocks the current client until all the …\nThis command blocks the current client until all the …\nWait for the result of the next connection attempt.\nWait for the result of the next connection attempt.\nMarks the given keys to be watched for conditional …\nMarks the given keys to be watched for conditional …\nCustomize various configuration options on commands.\nCustomize various configuration options on commands.\nRemove one or more messages from the Pending Entries List …\nRemove one or more messages from the Pending Entries List …\nAppends the specified stream entry to the stream at the …\nAppends the specified stream entry to the stream at the …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nIn the context of a stream consumer group, this command …\nIn the context of a stream consumer group, this command …\nA variation of xclaim with a less verbose return type.\nA variation of xclaim with a less verbose return type.\nRemoves the specified entries from a stream, and returns …\nRemoves the specified entries from a stream, and returns …\nThis command creates a new consumer group uniquely …\nThis command creates a new consumer group uniquely …\nCreate a consumer named consumername in the consumer group …\nCreate a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nCompletely destroy a consumer group.\nCompletely destroy a consumer group.\nSet the last delivered ID for a consumer group.\nSet the last delivered ID for a consumer group.\nThis command returns the list of consumers that belong to …\nThis command returns the list of consumers that belong to …\nThis command returns the list of all consumers groups of …\nThis command returns the list of all consumers groups of …\nThis command returns information about the stream stored …\nThis command returns information about the stream stored …\nReturns the number of entries inside a stream.\nReturns the number of entries inside a stream.\nInspect the list of pending messages in a consumer group.\nInspect the list of pending messages in a consumer group.\nThe command returns the stream entries matching a given …\nThe command returns the stream entries matching a given …\nReturn the stream entries matching the provided range of …\nReturn the stream entries matching the provided range of …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nTrims the stream by evicting older entries (entries with …\nTrims the stream by evicting older entries (entries with …\nAdds all the specified members with the specified scores …\nAdds all the specified members with the specified scores …\nReturns the sorted set cardinality (number of elements) of …\nReturns the sorted set cardinality (number of elements) of …\nReturns the number of elements in the sorted set at key …\nReturns the number of elements in the sorted set at key …\nThis command is similar to ZDIFFSTORE, but instead of …\nThis command is similar to ZDIFFSTORE, but instead of …\nComputes the difference between the first and all …\nComputes the difference between the first and all …\nIncrements the score of member in the sorted set stored at …\nIncrements the score of member in the sorted set stored at …\nThis command is similar to ZINTERSTORE, but instead of …\nThis command is similar to ZINTERSTORE, but instead of …\nComputes the intersection of the sorted sets given by the …\nComputes the intersection of the sorted sets given by the …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nPops one or more elements, that are member-score pairs, …\nPops one or more elements, that are member-score pairs, …\nReturns the scores associated with the specified members …\nReturns the scores associated with the specified members …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the lowest …\nRemoves and returns up to count members with the lowest …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nThis command is like ZRANGE, but stores the result in the …\nThis command is like ZRANGE, but stores the result in the …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nRemoves the specified members from the sorted set stored …\nRemoves the specified members from the sorted set stored …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nReturns the score of member in the sorted set at key.\nReturns the score of member in the sorted set at key.\nThis command is similar to ZUNIONSTORE, but instead of …\nThis command is similar to ZUNIONSTORE, but instead of …\nComputes the union of the sorted sets given by the …\nComputes the union of the sorted sets given by the …\nA mocking layer that buffers the commands internally and …\nAn implementation of a mocking layer that returns the …\nA wrapper type for the parts of an internal Redis command.\nAn interface for intercepting and processing Redis …\nA struct that implements some of the basic mapping …\nThe ordered list of arguments to the command.\nClear the inner map.\nClear the inner buffer.\nThe first word in the command string. For example:\nPerform a DEL operation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nPerform a GET operation.\nRead a copy of the inner map.\nRead a copy of the internal command buffer without …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRead the length of the internal buffer.\nCreate a new empty SimpleMap.\nCreate a new empty Buffer.\nPop a command from the back of the internal buffer.\nPop a command from the front of the internal buffer.\nIntercept and process a Redis command, returning any …\nIntercept and process an entire transaction. The provided …\nIntercept and process an entire transaction. The provided …\nPush a new command onto the back of the internal buffer.\nPush a new command onto the front of the internal buffer.\nPerform a SET operation.\nThe optional subcommand string (or second word) in the …\nTake the inner map.\nDrain and return the internal command buffer.\nA command parsed from a MONITOR stream.\nArguments passed to the command.\nThe host and port of the client that ran the command, or …\nThe command run by the server.\nThe database against which the command was run.\nReturns the argument unchanged.\nCalls U::from(self).\nRun the MONITOR command against the provided server.\nWhen the command was run on the server.\nA node was added to the cluster.\nAn aggregation operation used in FT.AGGREGATE.\nAggregate options for the zinterstore (and related) …\nAn aggregation policy to use with certain timeseries …\nThe ANY flag used on certain GEO commands.\nAn array of frames.\nAn ordered list of values.\nAn ordered list of values.\nThe auto-generated key symbol “*”.\nConfiguration options for backpressure features in the …\nBackpressure policies to apply when the max number of …\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nWait to send the command until the blocked command …\nDescribes how the client should respond when a command is …\nA boolean type.\nA boolean value.\nA boolean value.\nA BUCKETTIMESTAMP argument in commands such as TS.MRANGE.\nA client and pool builder interface.\nThe BUSY prefix.\nA byte array value.\nA byte array value.\nOne chunk of a streaming blob.\nFilters provided to the CLIENT KILL command.\nThe type of clients to close.\nFilters for the CLIENT PAUSE command.\nArguments for the CLIENT REPLY command.\nThe state of the underlying connection to the Redis server.\nArguments to the CLIENT UNBLOCK command.\nA policy that determines how clustered clients initially …\nThe CLUSTERDOWN prefix.\nOptions for the CLUSTER FAILOVER command.\nA cluster hashing policy.\nA parsed response from the CLUSTER INFO command.\nFlags for the CLUSTER RESET command.\nThe cached view of the cluster used by the client to route …\nFlags for the CLUSTER SETSLOT command.\nThe state of the cluster from the CLUSTER INFO command.\nAn enum describing the possible ways in which a Redis …\nAlways use the endpoint(s) provided in the client’s …\nThe result from any of the connect functions showing the …\nConfiguration options related to the creation or …\nWait a constant amount of time between reconnect attempts, …\nA trait that can be used to override the credentials used …\nProvide a custom hash slot value.\nProvide a custom mapping from IP address to hostname to be …\nA case-sensitive prefix on an error message.\nUnix time (milliseconds since epoch).\nConfiguration for custom redis commands, primarily used …\nThe default amount of jitter when waiting to reconnect.\nThe parsed result of the MEMORY STATS command for a …\nReplace any IP addresses in the CLUSTER SLOTS response …\nA signed 64-bit floating point number.\nA double floating point number.\nA double floating point number.\nWait for all in-flight commands to finish before sending …\nThe duplicate policy used with certain timeseries commands.\nExpiration in seconds.\nExpiration time, in seconds.\nEquivalent to -.\nEncoding arguments for certain timeseries commands.\nReturn an error to the caller.\nExpiration options for the set command.\nOptions for certain expiration commands (PEXPIRE, etc).\nBackoff reconnection attempts exponentially, multiplying …\nHash the first string or bytes value in the arguments. …\nHash the first argument regardless of type.\nThe policy type for the FUNCTION RESTORE command.\nA trait used to convert various forms of RedisValue into …\nA trait used to convert RedisKey values to various types.\nArguments to the FT.AGGREGATE command.\nArguments to FT.ALTER.\nArguments for FT.CREATE.\nArguments to FT.SEARCH.\nAn individual function within a Library.\nPossible flags associated with a Function.\nA struct describing the longitude and latitude coordinates …\nA typed struct representing the full output of the …\nUnits for the GEO DIST command.\nA struct describing the value inside a GEO data structure.\nArguments equivalent to …\nA timestamp query used in commands such as TS.MRANGE.\nA struct representing GROUPBY label REDUCE reducer in …\nThe result of a HSCAN operation.\nA special frame type used when first connecting to the …\nA trait used for mapping IP addresses to hostnames when …\nIndex ranges (https://redis.io/commands/zrange#index-ranges…\nIndex arguments for FT.CREATE.\nShortcut for the + character.\nShortcut for the +inf range bound.\nOptions for the info command.\nAn integer value.\nAn integer value.\nInterrupt the blocked command by automatically sending …\nA client tracking invalidation message from the provided …\nDo not reset the TTL.\nAn event on the publish-subscribe interface describing a …\nThe direction to move elements in a *LMOVE command.\nEquivalent to +\nLexicographical ranges (…\nA helper struct for interacting with libraries and …\nA tuple of (offset, count) values for commands that allow …\nAn argument type equivalent to “[LIMIT count]”.\nBackoff reconnection attempts linearly, adding delay each …\nLocation flag for the LINSERT command.\nArguments to LOAD in FT.AGGREGATE.\nThe LOADING prefix.\nAn ID specified by the user such as “12345-0”.\nAn unordered map of key-value pairs.\nA map of key/value pairs, primarily used in RESP3 mode.\nA map of key/value pairs, primarily used in RESP3 mode.\nThe MASTERDOWN prefix.\nThe highest ID in a stream (“$”).\nThe parsed result of the MEMORY STATS command.\nA publish-subscribe message.\nA message from a subscribe command.\nThe kind of pubsub message.\nThe MISCONF prefix.\nA convenience struct for commands that take one or more …\nA convenience struct for functions that take one or more …\nOne or more IDs for elements in a stream.\nConvenience struct for commands that take 1 or more keys.\nOne or more ordered key-value pairs, typically used as an …\nConvenience interface for commands that take 1 or more …\nConvenience interface for commands that take 1 or more …\nConvenience struct for ZINTERSTORE and ZUNIONSTORE when …\nConvenience struct for the ZADD command to accept 1 or …\nShortcut for the -inf range bound.\nShortcut for the - character.\nFor XREADGROUP, only return new IDs (“>”).\nThe NOREPLICAS prefix.\nNo value.\nDo not modify or replace hostnames or IP addresses in the …\nThe server’s current time, equivalent to “*”.\nA null type.\nA nil value.\nA nil value.\nA signed 64-bit integer.\nHash the value with the provided offset in the arguments …\nOptions to configure or overwrite for individual commands.\nOrdering options for the ZADD (and related) commands.\nA message from a pattern psubscribe command.\nExpiration in milliseconds.\nExpiration time, in milliseconds.\nThe type of results from the scan operation.\nConfiguration options that can affect the performance of …\nOut-of-band data.\nA special value used to indicate a MULTI block command was …\nA special value used to indicate a MULTI block command was …\nUse a random node in the cluster.\nA struct representing …\nThe READONLY prefix, which can happen if a primary node is …\nHash slots were rebalanced across the cluster and/or local …\nSpecial errors that can trigger reconnection logic, which …\nThe type of reconnection policy to use. This will apply to …\nConfiguration options for a RedisClient.\nA key in Redis.\nA map of (RedisKey, RedisValue) pairs.\nA value used in a Redis command.\nThe kind of value from Redis.\nA REDUCER argument in commands such as TS.MRANGE.\nGROUPBY reducer functions.\nA node was removed from the cluster.\nConfiguration options for replica node connections.\nAn interface used to filter the list of available replica …\nA trait that can be used to override DNS resolution logic.\nShorthand for the result of commands such as MGET, MRANGE, …\nA RESP3 frame that uses Bytes and Str as the underlying …\nThe RESP3 equivalent of Resp2TimeSeriesValues.\nThe RESP version used in the HELLO request.\nA message from a sharded ssubscribe command.\nThe result of a SSCAN operation.\nThe result of a SCAN operation.\nThe types of values supported by the type command.\nAn interface for interacting with the results of a scan …\nScore ranges (https://redis.io/commands/zrange#score-ranges…\nAn interface for caching and running lua scripts.\nFlags for the SCRIPT DEBUG command.\nA search field with an optional property.\nArguments for FILTER in FT.SEARCH.\nArguments for GEOFILTER in FT.SEARCH.\nArguments used in HIGHLIGHT values.\nArguments for PARAMS in FT.AGGREGATE.\nREDUCE arguments in FT.AGGREGATE.\nArguments for SCHEMA in FT.CREATE.\nOne of the available schema types used with FT.CREATE or …\nArguments for SORTBY in FT.SEARCH.\nArguments used in SUMMARIZE values.\nConfiguration options for sentinel clients.\nArguments for the SENTINEL SIMULATE-FAILURE command.\nState necessary to identify or connect to a server.\nConnection configuration for the Redis server.\nAn unordered collection of other frames with a uniqueness …\nOptions for the set command.\nArguments passed to the SHUTDOWN command.\nA small string representing an error.\nA small string.\nSleep for some amount of time before sending the next …\nA slot range and associated cluster node information from …\nThe output of an entry in the slow queries log.\nSome value of type T.\nThe sort order for redis commands that take or return a …\nArguments to TERMS in FT.SPELLCHECK,\nStats describing a distribution of samples.\nA string value.\nA string value.\nAn argument representing a string or number.\nTCP configuration options.\nA timestamp used in most timeseries commands.\nTLS configuration for a client.\nAn enum for interacting with various TLS libraries and …\nAn optional enum used to describe how the client should …\nAn ON|OFF flag used with client tracking commands.\nConfiguration options for tracing.\nConfiguration options used to detect potentially …\nTry connecting to nodes specified in both the client’s …\nA string to be displayed without any escaping or filtering.\nSemVer version as defined by https://semver.org.\nArguments for WITHCURSOR in FT.AGGREGATE.\nStream cap arguments for XADD, XTRIM, etc.\nThe MAXLEN or MINID argument for a stream cap.\nRepresentation for the “=” or “~” operator in XADD…\nStream ID arguments for XADD, XREAD, etc.\nA struct representing the trailing optional arguments to …\nA generic helper type describing the top level response …\nA generic helper type describing the ID and associated map …\nMIN|MAX arguments for BZMPOP, etc.\nA wrapper struct for a range bound in a sorted set command.\nAn index, score, lexicographical, or +|-|+inf|-inf range …\nThe type of range interval bound.\nThe result of a ZSCAN operation.\nOptions for the ZRANGE (and related) commands.\nAttempt to add attributes to the frame, extending the …\nReturn the length of the inner array if the value is an …\nAttempt to convert the value to a bool.\nRead the key as a byte slice.\nRead the inner value as an array of bytes, if possible.\nParse and return the key as a Str without copying the …\nRead the inner value as a Str.\nRead and return the inner value as a f64, if possible.\nParse the value as the response from FUNCTION LIST, …\nConvert the value into a GeoPosition, if possible.\nRead and return the inner value as a i64, if possible.\nRead the key as a str slice if it can be parsed as a UTF8 …\nRead the inner value as a string slice.\nRead the key as a lossy UTF8 string with …\nRead the inner value as a string, using …\nRead and return the inner String if the value is a string …\nRead and return the inner value as a u64, if possible.\nRead and return the inner value as a usize, if possible.\nRead the number of reconnection attempts.\nAutomatically send CLIENT SETNAME on each connection …\nWhether the client should automatically pipeline commands …\nConfiguration options for backpressure features in the …\nThe default behavior of the client when a command is sent …\nWhether the command should block the connection while …\nThe minimum size, in bytes, of frames that should be …\nThe default capacity used when creating broadcast channels …\nCreate a new client.\nCreate a new client pool.\nCreate a new sentinel client.\nCreate a new subscriber client.\nWhether to send CLIENT CACHING yes|no before the command.\nWhether the value can be hashed.\nThe channel on which the message was sent.\nThe amount of time to wait after a MOVED error is received …\nHash the key to find the associated cluster hash slot.\nThe cluster hashing policy to use, if applicable.\nThe cluster hashing policy to use, if any.\nThe cluster node that should receive the command.\nRead the host:port of the cluster node that owns the key …\nThe command name, sent directly to the server.\nCompare the major, minor, patch, and pre-release value of …\nThe number of times a command can fail with a replica …\nThe task queue onto which connection reader tasks will be …\nThe timeout to apply when attempting to create a new TCP …\nThe TLS connector from either native-tls or rustls.\nAttempt to convert the key to any type that implements …\nAttempt to convert this value to any value that implements …\nA lightweight function to create a Redis client from the …\nAn optional credential provider callback interface.\nRead the cursor returned from the last scan operation.\nAn optional database number that the client will …\nCreate a new builder instance with default config values …\nCreate a centralized config with default settings for a …\nCreate a new builder instance with default config values …\nCreate a clustered config with the same defaults as …\nAn optional timeout to apply to all commands.\nCreate a default TLS connector from the native-tls module.\nCreate a default TLS connector with the rustls module with …\nCreate a new Sleep policy with the legacy default values.\nSet the tracing::Level of spans under partial-tracing …\nWhether to disable the automatic backpressure features …\nDisable the CLUSTER INFO health check when initializing …\nWhether to enable tracing for this client.\nThe end of the hash slot range.\nSend EVALSHA to the server with the provided arguments.\nSend EVALSHA to the server with the provided arguments. …\nSet the non-null values from other onto self.\nWhether the client should return an error if it cannot …\nWhether the command should fail quickly if the connection …\nSend the fcall command via the provided client.\nSend the fcall_ro command via the provided client.\nRead the username and password that should be used in the …\nReturns whether the replica node mapping can be used when …\nReturns whether the replica node mapping can be used when …\nAn optional interface for filtering available replica …\nFind the key to hash with the provided arguments.\nRead the flags associated with the function.\nFlatten adjacent nested arrays to the provided depth.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new routing table from the result of the …\nCreate a new Library with the provided code, loading it on …\nCreate a new builder instance from the provided client …\nCreate a new Script from a lua hash.\nCreate a new Script from a lua script.\nCreate a new Library with the associated name, inspecting …\nParse the value with context from the calling command.\nCreate a new RedisKey from static bytes without copying.\nCreate a new RedisValue::Bytes from a static byte slice …\nAn optimized way to convert from &'static str that avoids …\nCreate a new RedisKey from a &'static str without copying.\nCreate a new RedisValue::String from a static str without …\nParse the string representation of the flag.\nParse a URL string into a RedisConfig.\nCreate a centralized RedisConfig struct from a URL.\nCreate a clustered RedisConfig struct from a URL.\nCreate a sentinel RedisConfig struct from a URL.\nSet the tracing::Level of spans under full-tracing feature.\nRead the functions contained within this library.\nRead the client config.\nRead the connection config.\nRead the performance config.\nRead the reconnection policy.\nRead the sentinel client config.\nFind the primary server that owns the provided hash slot.\nWhether the scan call will continue returning results. If …\nHash the provided arguments.\nCalculate the cluster hash slot for the provided key.\nThe hostname or IP address for the server.\nThe hostname for the sentinel node.\nThe hostname modification or mapping policy to use when …\nRead the server hosts or sentinel hosts if using the …\nThe internal ID assigned by the server.\nWhether the client should ignore errors from replicas that …\nRead the inner Bytes struct.\nTake the inner HashMap.\nThe timeout to apply when sending internal commands such …\nThe frequency at which the client checks for unresponsive …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert this value to an array if it’s an array or map.\nRead the inner bytes making up the key.\nConvert the value into a Bytes view.\nRead and return the inner data as a Str from the bytes …\nParse the value as the response to any of the relevant GEO …\nAttempt to convert the value into an integer, returning …\nConvert the value to JSON.\nAttempt to convert this value to a Redis map if it’s an …\nConvert the value to an array of bytes, if possible.\nConvert the array value to a set, if possible.\nConvert the key to a UTF8 string, if possible.\nRead and return the inner String if the value is a string …\nA utility function to convert the response from XAUTOCLAIM …\nA utility function to convert the response from XREAD or …\nA utility function to convert the response from XCLAIM, …\nConvert a RedisValue to Vec<(RedisValue, f64)>, if …\nWhether the value is an array or map.\nWhether the value is an array.\nWhether the value is a boolean value or can be parsed as a …\nCheck if the value is an array of bytes.\nWhether the config is for a centralized server.\nWhether the config uses a clustered deployment.\nWhether the inner value is a double or can be parsed as a …\nCheck if the value is an integer.\nWhether the value is a RedisMap.\nWhether the value is a RedisMap or an array with an even …\nCheck if the value is null.\nWhether the value is a simple string OK value.\nCheck if the value is a QUEUED response.\nWhether the config is for a centralized server behind a …\nCheck if the value is a string.\nWhether the config uses a Unix socket.\nSet the TCP keepalive values.\nRead the type of the value without any associated data.\nThe type of message subscription.\nWhether the client should lazily connect to replica nodes.\nRead the number of hash slot ranges in the cluster.\nRead the number of (key, value) pairs in the map.\nSet the SO_LINGER value.\nCall SCRIPT LOAD on all the associated servers. This must …\nRead the lua script contents.\nMap the provided IP address to a hostname that should be …\nSet the max number of write attempts for a command.\nThe maximum number of times the client will attempt to …\nLimit the size of the internal in-memory command queue.\nThe maximum number of frames that will be fed to a socket …\nThe maximum number of in-flight commands (per connection) …\nThe maximum number of times the client will attempt to …\nSet the max number of cluster redirections to follow for a …\nIf provided, the amount of time a frame can wait without a …\nAn optional mocking layer to intercept and process …\nRead the name of the function.\nRead the name of the library.\nCreate Version with an empty pre-release and build …\nCreate a new Server from parts.\nCreate a new empty routing table.\nCreate a new empty map.\nCreate a new custom command.\nCreate a new Function.\nCreate a new centralized config with the provided host and …\nCreate a new clustered config with the provided set of …\nCreate a new reconnect policy with a constant backoff.\nCreate a new reconnect policy with an exponential backoff.\nCreate a new reconnect policy with a linear backoff.\nCreate a new RedisValue with the OK status.\nCreate a new sentinel config with the provided set of …\nCreate a new custom command specified by a &'static str.\nCreate a new Server from parts with a TLS server name.\nMove on to the next page of results from the SCAN …\nCalculate the next delay, incrementing attempts in the …\nWhether to skip backpressure checks for a command.\nSet the TCP_NODELAY value.\nCreate Version by parsing from string representation.\nAn optional password for the client to use when …\nAn optional password for the client to use when …\nThe backpressure policy to apply when the max number of …\nThe port for the server.\nThe port on which the sentinel node is listening.\nPrint the contents of the routing table as a …\nThe primary server owner.\nWhether the client should use the associated primary node …\nRead a random primary node from the cluster cache.\nRead a random primary node hash slot range from the …\nErrors that should trigger reconnection logic.\nAn unexpected NOAUTH error is treated the same as a …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfiguration options for replica nodes.\nRead the replicas associated with the provided primary …\nReplica node owners.\nResolve a hostname.\nReturn a reference to the last page of results.\nThe task queue onto which routing tasks will be spawned.\nThe server that sent the message.\nConnection configuration for the server(s).\nSet the ClusterDiscoveryPolicy, if possible.\nOverwrite the client config on the builder.\nOverwrite the connection config on the builder.\nSet the amount of jitter to add to each reconnect delay.\nOverwrite the performance config on the builder.\nOverwrite the reconnection policy on the builder.\nOverwrite the sentinel config on the builder.\nRead the SHA-1 hash for the script.\nRead the hash slot ranges in the cluster.\nThe start of the hash slot range.\nReplace this key with an empty byte array, returning the …\nReplace the value an empty map, returning the original …\nReplace this value with RedisValue::Null, returning the …\nTake ownership over the results of the SCAN operation. …\nTCP connection options.\nSet the timeout duration for a command.\nTLS configuration options.\nTLS configuration fields. If None the connection will not …\nThe server name used during the TLS handshake.\nCopy the frame contents into a new OwnedFrame.\nConvert to the string representation of the flag.\nTracing configuration options.\nWhether to enable tracing for this client.\nSet the IP_TTL value.\nRead a set of unique hash slots that each map to a …\nRead the set of unique primary nodes in the cluster.\nUnresponsive connection configuration options.\nAn optional ACL username for the client to use when …\nAn optional ACL username for the client to use when …\nWhether the client uses a native-tls connector.\nWhether the client uses a rustls connector.\nWhether the client uses TLS.\nThe message contents.\nThe protocol version to use when communicating with the …\nModify the client config in place, creating a new one with …\nModify the connection config in place, creating a new one …\nModify the performance config in place, creating a new one …\nModify the sentinel config in place, creating a new one …\nAn empty array is equivalent to GROUPBY 0\nDisable the backpressure scaling logic used to calculate …\nThe minimum amount of time to wait when applying …\nThe known cluster node Server identifiers.\nAn array of Server identifiers for each known sentinel …\nAn optional password for the client to use when …\nThe cluster discovery policy to use when connecting or …\nThe Server identifier.\nThe service name for primary/main instances.\nAn optional ACL username for the client to use when …\nA convenience constant for None values used as generic …\nConvert an f64 to a redis string, supporting “+inf” …\nGroup the provided arguments by their cluster hash slot.\nMap a key to the corresponding cluster key slot.\nConvert a redis string to an f64, supporting “+inf” …\nCalculate the SHA1 hash output as a hex string. This is …\nCreate a Bytes from static bytes without copying.\nCreate a Str from a static str slice without copying.") \ No newline at end of file +searchState.loadedDescShard("fred", 0, "Fred\nRedis client implementations.\nShorthand to create a CustomCommand.\nError structs returned by Redis commands.\nTraits that implement portions of the Redis interface.\nA helper macro to wrap a string value in quotes via the …\nAn interface for mocking Redis commands.\nAn interface to run the MONITOR command.\nConvenience module to import a RedisClient, all possible …\nThe structs and enums used by the Redis client.\nVarious client utility functions.\nSend a series of commands in a pipeline.\nA cheaply cloneable Redis client struct.\nA cheaply cloneable round-robin client pool.\nA struct for interacting with cluster replica nodes.\nA struct for interacting directly with Sentinel nodes.\nA subscriber client that will manage subscription state to …\nA cheaply cloneable transaction block.\nA client interface used to customize command configuration …\nRead the set of active connections across all clients in …\nSend the pipeline and respond with an array of all …\nRead the underlying RedisClient that interacts with …\nRead the individual clients in the pool.\nCreate a new RedisClient from the config provided to this …\nCreate a new SubscriberClient from the config provided to …\nRead the server ID against which this transaction will …\nConnect each client to the server.\nConnect each client to the server, returning the task …\nExecutes all previously queued commands in a transaction.\nForce a reconnection to the server(s) for each client.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new pool from an existing set of clients.\nRead the hash slot against which this transaction will …\nIncrementally iterate over pages of the hash map stored at …\nAn ID identifying the underlying transaction state.\nInitialize a new routing and connection task for each …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSend the pipeline and respond with only the result of the …\nRead the client that ran the last command.\nRead the number of commands queued to run.\nSpawn a task that will automatically re-subscribe to any …\nCreate a new pool without connecting to the server.\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nRead the client that should run the next command.\nRead the next connected client that should run the next …\nRead a mapping of replica server IDs to primary server IDs.\nRead the options that will be applied to commands.\nSend a series of commands in a pipeline.\nSend a series of commands in a pipeline.\nWhether to pipeline commands in the transaction.\nSet whether the client will use next_connected or next …\nClose the connection to the Redis server for each client. …\nCreate a client that interacts with the replica nodes …\nCreate a client that interacts with replica nodes.\nClear the internal command buffer and watched keys.\nRe-subscribe to any tracked channels and patterns.\nIncrementally iterate over a set of keys matching the …\nRun the SCAN command on each primary/main node in a …\nOverride the DNS resolution logic for all clients in the …\nRead the size of the pool.\nSplit a clustered Redis client into a set of centralized …\nIncrementally iterate over pages of the set stored at key, …\nSync the cached replica routing table with the server(s).\nCreate a new RedisClient, reusing the existing …\nRead the set of channels that this client will manage.\nRead the set of channel patterns that this client will …\nRead the set of shard channels that this client will …\nSend the pipeline and respond with each individual result.\nUnsubscribe from all tracked channels and patterns, and …\nUpdate the internal PerformanceConfig on each client in …\nWait for all the clients to connect to the server.\nSend the WATCH command with the provided keys before …\nRead the number of keys to WATCH before the starting the …\nShorthand to route subsequent commands to the provided …\nIncrementally iterate over pages of the sorted set stored …\nAn authentication error.\nAn error indicating that the caller should apply …\nAn error indicating the request was canceled.\nAn error used to indicate that the cluster’s state has …\nA fatal client configuration error. These errors will …\nAn IO error with the underlying connection.\nAn invalid argument or set of arguments to a command.\nAn invalid command, such as trying to perform a set …\nAn error indicating a value was not found, often used when …\nA parser error.\nA protocol error such as an invalid or unexpected frame …\nAn error from Redis.\nAn enum representing the type of error from Redis.\nAn error associated with a replica node.\nAn error communicating with redis sentinel.\nA timeout error.\nA TLS error.\nAn unknown error.\nAn invalid URL error.\nChange the kind of the error.\nRead details about the error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWhether the error is a Canceled error.\nWhether the error is a Cluster error.\nWhether the error is a NotFound error.\nWhether the error is a Replica error.\nRead the type of error without any associated data.\nCreate a new Redis error with the provided details.\nCreate a new empty Canceled error.\nFunctions that implement the ACL interface.\nAn array of frames.\nFunctions for authenticating clients.\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nA boolean type.\nOne chunk of a streaming blob.\nFunctions that implement the client interface.\nFunctions that implement the cluster interface.\nFunctions that implement the config interface.\nA signed 64-bit floating point number.\nContains the error value\nAn interface that exposes various client and connection …\nFunctions that implement the function interface.\nFunctions that implement the geo interface.\nFunctions that implement the hashes interface.\nFunctions that provide a connection heartbeat interface.\nA special frame type used when first connecting to the …\nFunctions that implement the HyperLogLog interface.\nFunctions that implement the generic keys interface.\nFunctions that implement the lists interface.\nFunctions that implement the lua interface.\nAn unordered map of key-value pairs.\nFunctions that implement the memory interface.\nFunctions that implement the internal metrics interface.\nA null type.\nA signed 64-bit integer.\nContains the success value\nFunctions that implement the pubsub interface.\nOut-of-band data.\nA RediSearch interface.\nThe client commands in the RedisJSON interface.\nType alias for Result<T, RedisError>.\nA RESP3 frame that uses Bytes and Str as the underlying …\nFunctions that implement the sentinel interface.\nFunctions that implement the server interface.\nAn unordered collection of other frames with a uniqueness …\nFunctions that implement the sets interface.\nA small string representing an error.\nA small string.\nFunctions that implement the slowlog interface.\nFunctions that implement the sorted sets interface.\nFunctions that implement the streams interface.\nA Redis Timeseries interface.\nA high level interface that supports client side caching …\nFunctions that implement the transactions interface.\nA string to be displayed without any escaping or filtering.\nThe command shows the available ACL categories if called …\nThe command shows the available ACL categories if called …\nDelete all the specified ACL users and terminate all the …\nDelete all the specified ACL users and terminate all the …\nGenerate a password with length bits, returning the …\nGenerate a password with length bits, returning the …\nThe command returns all the rules defined for an existing …\nThe command returns all the rules defined for an existing …\nThe command shows the currently active ACL rules in the …\nThe command shows the currently active ACL rules in the …\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nRead count recent ACL security events.\nRead count recent ACL security events.\nClear the ACL security events logs.\nClear the ACL security events logs.\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nCreate an ACL user with the specified rules or modify the …\nCreate an ACL user with the specified rules or modify the …\nThe command shows a list of all the usernames of the …\nThe command shows a list of all the usernames of the …\nReturn the username the current connection is …\nReturn the username the current connection is …\nRead the set of active connections managed by the client.\nRead the set of active connections managed by the client.\nAppend value to key if it’s a string.\nAppend value to key if it’s a string.\nRequest for authentication in a password-protected Redis …\nInstruct Redis to start an Append Only File rewrite …\nInstruct Redis to start an Append Only File rewrite …\nSave the DB in background.\nSave the DB in background.\nThe blocking equivalent of Self::lmove.\nThe blocking equivalent of Self::lmove.\nThe blocking variant of Self::lmpop.\nThe blocking variant of Self::lmpop.\nBLPOP is a blocking list pop primitive. It is the blocking …\nBLPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nThe blocking equivalent of Self::rpoplpush.\nThe blocking equivalent of Self::rpoplpush.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmin.\nThe blocking variant of Self::zpopmin.\nRead the cached cluster state used for routing commands to …\nRead the cached cluster state used for routing commands to …\nCheck if the current Sentinel configuration is able to …\nCheck if the current Sentinel configuration is able to …\nThis command controls the tracking of the keys in the next …\nThis command controls the tracking of the keys in the next …\nRead the config used to initialize the client.\nRead the config used to initialize the client.\nThe CLIENT GETNAME returns the name of the current …\nThe CLIENT GETNAME returns the name of the current …\nThis command returns the client ID we are redirecting our …\nThis command returns the client ID we are redirecting our …\nReturn the ID of the current connection.\nReturn the ID of the current connection.\nThe command returns information and statistics about the …\nThe command returns information and statistics about the …\nClose a given connection or set of connections.\nClose a given connection or set of connections.\nThe CLIENT LIST command returns information and statistics …\nThe CLIENT LIST command returns information and statistics …\nCLIENT PAUSE is a connections control command able to …\nCLIENT PAUSE is a connections control command able to …\nRead the reconnect policy used to initialize the client.\nRead the reconnect policy used to initialize the client.\nThe CLIENT REPLY command controls whether the server will …\nThe CLIENT REPLY command controls whether the server will …\nAssign a name to the current connection.\nAssign a name to the current connection.\nThis command enables the tracking feature of the Redis …\nThis command enables the tracking feature of the Redis …\nThe command returns information about the current client …\nThe command returns information about the current client …\nThis command can unblock, from a different connection, a …\nThis command can unblock, from a different connection, a …\nCLIENT UNPAUSE is used to resume command processing for …\nCLIENT UNPAUSE is used to resume command processing for …\nThis command is useful in order to modify a node’s view …\nThis command is useful in order to modify a node’s view …\nAdvances the cluster config epoch.\nAdvances the cluster config epoch.\nListen for notifications whenever the cluster state …\nThe command returns the number of failure reports for the …\nThe command returns the number of failure reports for the …\nReturns the number of keys in the specified Redis Cluster …\nReturns the number of keys in the specified Redis Cluster …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThis command, that can only be sent to a Redis Cluster …\nThis command, that can only be sent to a Redis Cluster …\nDeletes all slots from a node.\nDeletes all slots from a node.\nThe command is used in order to remove a node, specified …\nThe command is used in order to remove a node, specified …\nThe command returns an array of keys names stored in the …\nThe command returns an array of keys names stored in the …\nCLUSTER INFO provides INFO style information about Redis …\nCLUSTER INFO provides INFO style information about Redis …\nReturns an integer identifying the hash slot the specified …\nReturns an integer identifying the hash slot the specified …\nCLUSTER MEET is used in order to connect different Redis …\nCLUSTER MEET is used in order to connect different Redis …\nReturns the node’s id.\nReturns the node’s id.\nRead the current cluster node configuration.\nRead the current cluster node configuration.\nThe command provides a list of replica nodes replicating …\nThe command provides a list of replica nodes replicating …\nThe command reconfigures a node as a replica of the …\nThe command reconfigures a node as a replica of the …\nReset a Redis Cluster node, in a more or less drastic way …\nReset a Redis Cluster node, in a more or less drastic way …\nForces a node to save the nodes.conf configuration on disk.\nForces a node to save the nodes.conf configuration on disk.\nThis command sets a specific config epoch in a fresh node.\nThis command sets a specific config epoch in a fresh node.\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SLOTS returns details about which cluster slots …\nCLUSTER SLOTS returns details about which cluster slots …\nRead the number of buffered commands that have not yet …\nRead the number of buffered commands that have not yet …\nThe CONFIG GET command is used to read the configuration …\nThe CONFIG GET command is used to read the configuration …\nGet the current value of a global Sentinel configuration …\nGet the current value of a global Sentinel configuration …\nResets the statistics reported by Redis using the INFO …\nResets the statistics reported by Redis using the INFO …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG SET command is used in order to reconfigure the …\nThe CONFIG SET command is used in order to reconfigure the …\nSet the value of a global Sentinel configuration parameter.\nSet the value of a global Sentinel configuration parameter.\nConnect to the server.\nConnect to the server.\nRead the connection config used to initialize the client.\nRead the connection config used to initialize the client.\nRead the connection IDs for the active connections to each …\nRead the connection IDs for the active connections to each …\nThis command copies the value stored at the source key to …\nThis command copies the value stored at the source key to …\nRun a custom command that is not yet supported via another …\nRun a custom command that is not yet supported via another …\nRun a custom command similar to custom, but return the …\nRun a custom command similar to custom, but return the …\nReturn the number of keys in the selected database.\nReturn the number of keys in the selected database.\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by val. If the key …\nDecrements the number stored at key by val. If the key …\nRemoves the specified keys. A key is ignored if it does …\nRemoves the specified keys. A key is ignored if it does …\nSerialize the value stored at key in a Redis-specific …\nSerialize the value stored at key in a Redis-specific …\nReturn a future that will ping the server on an interval.\nListen for protocol and connection errors. This stream can …\nEvaluate a Lua script on the server.\nEvaluate a Lua script on the server.\nEvaluates a script cached on the server side by its SHA1 …\nEvaluates a script cached on the server side by its SHA1 …\nReturns number of keys that exist from the keys arguments.\nReturns number of keys that exist from the keys arguments.\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on a key based on a UNIX timestamp.\nSet a timeout on a key based on a UNIX timestamp.\nForce a failover as if the master was not reachable, and …\nForce a failover as if the master was not reachable, and …\nThis command will start a coordinated failover between the …\nThis command will start a coordinated failover between the …\nInvoke a function.\nInvoke a function.\nThis is a read-only variant of the FCALL command that …\nThis is a read-only variant of the FCALL command that …\nDelete the keys in all databases.\nDelete the keys in all databases.\nDelete the keys on all nodes in the cluster. This is a …\nDelete the keys on all nodes in the cluster. This is a …\nForce Sentinel to rewrite its configuration on disk, …\nForce Sentinel to rewrite its configuration on disk, …\nForce a reconnection to the server(s).\nForce a reconnection to the server(s).\nRun a search query on an index, and perform aggregate …\nRun a search query on an index, and perform aggregate …\nAdd an alias to an index.\nAdd an alias to an index.\nRemove an alias from an index.\nRemove an alias from an index.\nAdd an alias to an index. If the alias is already …\nAdd an alias to an index. If the alias is already …\nAdd a new attribute to the index.\nAdd a new attribute to the index.\nRetrieve configuration options.\nRetrieve configuration options.\nSet the value of a RediSearch configuration parameter.\nSet the value of a RediSearch configuration parameter.\nCreate an index with the given specification.\nCreate an index with the given specification.\nDelete a cursor.\nDelete a cursor.\nRead next results from an existing cursor.\nRead next results from an existing cursor.\nAdd terms to a dictionary.\nAdd terms to a dictionary.\nRemove terms from a dictionary.\nRemove terms from a dictionary.\nDump all terms in the given dictionary.\nDump all terms in the given dictionary.\nDelete an index.\nDelete an index.\nReturn the execution plan for a complex query.\nReturn the execution plan for a complex query.\nReturn information and statistics on the index.\nReturn information and statistics on the index.\nReturns a list of all existing indexes.\nReturns a list of all existing indexes.\nSearch the index with a textual query, returning either …\nSearch the index with a textual query, returning either …\nPerform spelling correction on a query, returning …\nPerform spelling correction on a query, returning …\nAdd a suggestion string to an auto-complete suggestion …\nAdd a suggestion string to an auto-complete suggestion …\nDelete a string from a suggestion index.\nDelete a string from a suggestion index.\nGet completion suggestions for a prefix.\nGet completion suggestions for a prefix.\nGet the size of an auto-complete suggestion dictionary.\nGet the size of an auto-complete suggestion dictionary.\nDump the contents of a synonym group.\nDump the contents of a synonym group.\nUpdate a synonym group.\nUpdate a synonym group.\nReturn a distinct set of values indexed in a Tag field.\nReturn a distinct set of values indexed in a Tag field.\nDelete a library and all its functions.\nDelete a library and all its functions.\nDelete a library and all its functions from each cluster …\nDelete a library and all its functions from each cluster …\nReturn the serialized payload of loaded libraries.\nReturn the serialized payload of loaded libraries.\nDeletes all the libraries.\nDeletes all the libraries.\nDeletes all the libraries on all cluster nodes …\nDeletes all the libraries on all cluster nodes …\nKill a function that is currently executing.\nKill a function that is currently executing.\nReturn information about the functions and libraries.\nReturn information about the functions and libraries.\nLoad a library to Redis.\nLoad a library to Redis.\nLoad a library to Redis on all cluster nodes concurrently.\nLoad a library to Redis on all cluster nodes concurrently.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload on all …\nRestore libraries from the serialized payload on all …\nReturn information about the function that’s currently …\nReturn information about the function that’s currently …\nAdds the specified geospatial items (longitude, latitude, …\nAdds the specified geospatial items (longitude, latitude, …\nReturn the distance between two members in the geospatial …\nReturn the distance between two members in the geospatial …\nReturn valid Geohash strings representing the position of …\nReturn valid Geohash strings representing the position of …\nReturn the positions (longitude,latitude) of all the …\nReturn the positions (longitude,latitude) of all the …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is exactly like GEORADIUS with the sole …\nThis command is exactly like GEORADIUS with the sole …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is like GEOSEARCH, but stores the result in …\nThis command is like GEOSEARCH, but stores the result in …\nRead a value from the server.\nRead a value from the server.\nReturn the ip and port number of the master with that name.\nReturn the ip and port number of the master with that name.\nGet the value of key and delete the key. This command is …\nGet the value of key and delete the key. This command is …\nReturns the substring of the string value stored at key …\nReturns the substring of the string value stored at key …\nAtomically sets key to value and returns the old value …\nAtomically sets key to value and returns the old value …\nWhether the client has a reconnection policy.\nWhether the client has a reconnection policy.\nRemoves the specified fields from the hash stored at key.\nRemoves the specified fields from the hash stored at key.\nSwitch to a different protocol, optionally authenticating …\nReturns if field is an existing field in the hash stored …\nReturns if field is an existing field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns all fields and values of the hash stored at key.\nReturns all fields and values of the hash stored at key.\nIncrements the number stored at field in the hash stored …\nIncrements the number stored at field in the hash stored …\nIncrement the specified field of a hash stored at key, and …\nIncrement the specified field of a hash stored at key, and …\nReturns all field names in the hash stored at key.\nReturns all field names in the hash stored at key.\nReturns the number of fields contained in the hash stored …\nReturns the number of fields contained in the hash stored …\nReturns the values associated with the specified fields in …\nReturns the values associated with the specified fields in …\nSets the specified fields to their respective values in …\nSets the specified fields to their respective values in …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nSets fields in the hash stored at key to their provided …\nSets fields in the hash stored at key to their provided …\nSets field in the hash stored at key to value, only if …\nSets field in the hash stored at key to value, only if …\nReturns the string length of the value associated with …\nReturns the string length of the value associated with …\nReturns all values in the hash stored at key.\nReturns all values in the hash stored at key.\nThe unique ID identifying this client and underlying …\nThe unique ID identifying this client and underlying …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by val. If the key …\nIncrements the number stored at key by val. If the key …\nIncrement the string representing a floating point number …\nIncrement the string representing a floating point number …\nRead info about the server.\nRead info about the server.\nReturn cached INFO output from masters and replicas.\nReturn cached INFO output from masters and replicas.\nInitialize a new routing and connection task and wait for …\nInitialize a new routing and connection task and wait for …\nSubscribe to invalidation messages from the server(s).\nSubscribe to invalidation messages from the server(s).\nWhether the client is connected to a cluster.\nWhether the client is connected to a cluster.\nWhether all underlying connections are healthy.\nWhether all underlying connections are healthy.\nWhether the client will automatically pipeline commands.\nWhether the client will automatically pipeline commands.\nAppend the json values into the array at path after the …\nAppend the json values into the array at path after the …\nSearch for the first occurrence of a JSON value in an …\nSearch for the first occurrence of a JSON value in an …\nInsert the json values into the array at path before the …\nInsert the json values into the array at path before the …\nReport the length of the JSON array at path in key.\nReport the length of the JSON array at path in key.\nRemove and return an element from the index in the array\nRemove and return an element from the index in the array\nTrim an array so that it contains only the specified …\nTrim an array so that it contains only the specified …\nClear container values (arrays/objects) and set numeric …\nClear container values (arrays/objects) and set numeric …\nReport a value’s memory usage in bytes\nReport a value’s memory usage in bytes\nDelete a value.\nDelete a value.\nReturn the value at path in JSON serialized form.\nReturn the value at path in JSON serialized form.\nMerge a given JSON value into matching paths.\nMerge a given JSON value into matching paths.\nReturn the values at path from multiple key arguments.\nReturn the values at path from multiple key arguments.\nSet or update one or more JSON values according to the …\nSet or update one or more JSON values according to the …\nIncrement the number value stored at path by number\nIncrement the number value stored at path by number\nReturn the keys in the object that’s referenced by path.\nReturn the keys in the object that’s referenced by path.\nReport the number of keys in the JSON object at path in …\nReport the number of keys in the JSON object at path in …\nReturn the JSON in key in Redis serialization protocol …\nReturn the JSON in key in Redis serialization protocol …\nSet the JSON value at path in key.\nSet the JSON value at path in key.\nAppend the json-string values to the string at path.\nAppend the json-string values to the string at path.\nReport the length of the JSON String at path in key.\nReport the length of the JSON String at path in key.\nToggle a Boolean value stored at path.\nToggle a Boolean value stored at path.\nReport the type of JSON value at path.\nReport the type of JSON value at path.\nListen for keyspace and keyevent notifications on the …\nReturn the UNIX TIME of the last DB save executed with …\nReturn the UNIX TIME of the last DB save executed with …\nRuns the longest common subsequence algorithm on two keys.\nRuns the longest common subsequence algorithm on two keys.\nReturns the element at index in the list stored at key.\nReturns the element at index in the list stored at key.\nInserts element in the list stored at key either before or …\nInserts element in the list stored at key either before or …\nReturns the length of the list stored at key.\nReturns the length of the list stored at key.\nAtomically returns and removes the first/last element …\nAtomically returns and removes the first/last element …\nPops one or more elements from the first non-empty list …\nPops one or more elements from the first non-empty list …\nRemoves and returns the first elements of the list stored …\nRemoves and returns the first elements of the list stored …\nThe command returns the index of matching elements inside …\nThe command returns the index of matching elements inside …\nInsert all the specified values at the head of the list …\nInsert all the specified values at the head of the list …\nInserts specified values at the head of the list stored at …\nInserts specified values at the head of the list stored at …\nReturns the specified elements of the list stored at key.\nReturns the specified elements of the list stored at key.\nRemoves the first count occurrences of elements equal to …\nRemoves the first count occurrences of elements equal to …\nSets the list element at index to element.\nSets the list element at index to element.\nTrim an existing list so that it will contain only the …\nTrim an existing list so that it will contain only the …\nShow the state and info of the specified master.\nShow the state and info of the specified master.\nShow a list of monitored masters and their state.\nShow a list of monitored masters and their state.\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY USAGE command reports the number of bytes that …\nThe MEMORY USAGE command reports the number of bytes that …\nListen for messages on the publish-subscribe interface.\nReturns the values of all specified keys. For every key …\nReturns the values of all specified keys. For every key …\nStart Sentinel’s monitoring.\nStart Sentinel’s monitoring.\nSets the given keys to their respective values.\nSets the given keys to their respective values.\nSets the given keys to their respective values. MSETNX …\nSets the given keys to their respective values. MSETNX …\nEnter a MULTI block, executing subsequent commands as a …\nEnter a MULTI block, executing subsequent commands as a …\nReturn the ID of the Sentinel instance.\nReturn the ID of the Sentinel instance.\nRead the number of known primary cluster nodes, or 0 if …\nRead the number of known primary cluster nodes, or 0 if …\nSpawn one task that listens for all connection management …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function whenever the …\nThis command returns information about pending scripts.\nThis command returns information about pending scripts.\nRead the PerformanceConfig associated with this client.\nRead the PerformanceConfig associated with this client.\nRemove the existing timeout on a key, turning the key from …\nRemove the existing timeout on a key, turning the key from …\nThis command works exactly like EXPIRE but the time to …\nThis command works exactly like EXPIRE but the time to …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nAdds all the element arguments to the HyperLogLog data …\nAdds all the element arguments to the HyperLogLog data …\nWhen called with a single key, returns the approximated …\nWhen called with a single key, returns the approximated …\nMerge multiple HyperLogLog values into an unique value …\nMerge multiple HyperLogLog values into an unique value …\nPing the Redis server.\nPing the Redis server.\nRead the RESP version used by the client when …\nRead the RESP version used by the client when …\nSubscribes the client to the given patterns.\nSubscribes the client to the given patterns.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nPublish a message on the PubSub interface, returning the …\nPublish a message on the PubSub interface, returning the …\nLists the currently active channels.\nLists the currently active channels.\nReturns the number of unique patterns that are subscribed …\nReturns the number of unique patterns that are subscribed …\nReturns the number of subscribers (exclusive of clients …\nReturns the number of subscribers (exclusive of clients …\nLists the currently active shard channels.\nLists the currently active shard channels.\nReturns the number of subscribers for the specified shard …\nReturns the number of subscribers for the specified shard …\nUnsubscribes the client from the given patterns, or from …\nUnsubscribes the client from the given patterns, or from …\nClose the connection to the Redis server. The returned …\nClose the connection to the Redis server. The returned …\nReturn a random key from the currently selected database.\nReturn a random key from the currently selected database.\nRead latency metrics across all commands.\nRead latency metrics across all commands.\nRead network latency metrics across all commands.\nRead network latency metrics across all commands.\nRead the number of request redeliveries.\nRead the number of request redeliveries.\nRead request payload size metrics across all commands.\nRead request payload size metrics across all commands.\nRead response payload size metrics across all commands.\nRead response payload size metrics across all commands.\nListen for reconnection notifications.\nStop Sentinel’s monitoring.\nStop Sentinel’s monitoring.\nRenames source key to destination.\nRenames source key to destination.\nRenames source key to destination if destination does not …\nRenames source key to destination if destination does not …\nShow a list of replicas for this master, and their state.\nShow a list of replicas for this master, and their state.\nThis command will reset all the masters with matching name.\nThis command will reset all the masters with matching name.\nCreate a key associated with a value that is obtained by …\nCreate a key associated with a value that is obtained by …\nRemoves and returns the last elements of the list stored …\nRemoves and returns the last elements of the list stored …\nAtomically returns and removes the last element (tail) of …\nAtomically returns and removes the last element (tail) of …\nInsert all the specified values at the tail of the list …\nInsert all the specified values at the tail of the list …\nInserts specified values at the tail of the list stored at …\nInserts specified values at the tail of the list stored at …\nAdd the specified members to the set stored at key.\nAdd the specified members to the set stored at key.\nReturns the set cardinality (number of elements) of the …\nReturns the set cardinality (number of elements) of the …\nSet the debug mode for subsequent scripts executed with …\nSet the debug mode for subsequent scripts executed with …\nReturns information about the existence of the scripts in …\nReturns information about the existence of the scripts in …\nFlush the Lua scripts cache.\nFlush the Lua scripts cache.\nA clustered variant of script_flush that flushes the …\nA clustered variant of script_flush that flushes the …\nKills the currently executing Lua script, assuming no …\nKills the currently executing Lua script, assuming no …\nA clustered variant of the script_kill command that issues …\nA clustered variant of the script_kill command that issues …\nLoad a script into the scripts cache, without executing …\nLoad a script into the scripts cache, without executing …\nA clustered variant of script_load that loads the script …\nA clustered variant of script_load that loads the script …\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SDIFF, but instead of returning …\nThis command is equal to SDIFF, but instead of returning …\nSelect the database this client should use.\nSelect the database this client should use.\nRead the set of known sentinel nodes.\nRead the set of known sentinel nodes.\nRead the primary Redis server identifier returned from the …\nRead the primary Redis server identifier returned from the …\nShow a list of sentinel instances for this master, and …\nShow a list of sentinel instances for this master, and …\nRead the server version, if known.\nRead the server version, if known.\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet Sentinel’s monitoring configuration.\nSet Sentinel’s monitoring configuration.\nOverride the DNS resolution logic for the client.\nOverride the DNS resolution logic for the client.\nOverwrites part of the string stored at key, starting at …\nOverwrites part of the string stored at key, starting at …\nShut down the server and quit the client.\nShut down the server and quit the client.\nThis command simulates different Sentinel crash scenarios.\nThis command simulates different Sentinel crash scenarios.\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SINTER, but instead of returning …\nThis command is equal to SINTER, but instead of returning …\nReturns if member is a member of the set stored at key.\nReturns if member is a member of the set stored at key.\nThis command is used to read the slow queries log.\nThis command is used to read the slow queries log.\nThis command is used to read length of the slow queries …\nThis command is used to read length of the slow queries …\nThis command is used to reset the slow queries log.\nThis command is used to reset the slow queries log.\nReturns all the members of the set value stored at key.\nReturns all the members of the set value stored at key.\nReturns whether each member is a member of the set stored …\nReturns whether each member is a member of the set stored …\nMove member from the set at source to the set at …\nMove member from the set at source to the set at …\nReturns or stores the elements contained in the list, set …\nReturns or stores the elements contained in the list, set …\nRead-only variant of the SORT command. It is exactly like …\nRead-only variant of the SORT command. It is exactly like …\nRemoves and returns one or more random members from the …\nRemoves and returns one or more random members from the …\nPosts a message to the given shard channel.\nPosts a message to the given shard channel.\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nRemove the specified members from the set stored at key.\nRemove the specified members from the set stored at key.\nSubscribes the client to the specified shard channels.\nSubscribes the client to the specified shard channels.\nSend the CLIENT TRACKING command to all connected servers, …\nSend the CLIENT TRACKING command to all connected servers, …\nRead the state of the underlying connection(s).\nRead the state of the underlying connection(s).\nDisable client tracking on all connections.\nDisable client tracking on all connections.\nReturns the length of the string value stored at key. An …\nReturns the length of the string value stored at key. An …\nSubscribe to a channel on the publish-subscribe interface.\nSubscribe to a channel on the publish-subscribe interface.\nReturns the members of the set resulting from the union of …\nReturns the members of the set resulting from the union of …\nThis command is equal to SUNION, but instead of returning …\nThis command is equal to SUNION, but instead of returning …\nUnsubscribes the client from the given shard channels, or …\nUnsubscribes the client from the given shard channels, or …\nUpdate the cached cluster state and add or remove any …\nUpdate the cached cluster state and add or remove any …\nRead and consume latency metrics, resetting their values …\nRead and consume latency metrics, resetting their values …\nRead and consume network latency metrics, resetting their …\nRead and consume network latency metrics, resetting their …\nRead and reset the number of request redeliveries.\nRead and reset the number of request redeliveries.\nRead and consume request payload size metrics, resetting …\nRead and consume request payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nAppend a sample to a time series.\nAppend a sample to a time series.\nUpdate the retention, chunk size, duplicate policy, and …\nUpdate the retention, chunk size, duplicate policy, and …\nCreate a new time series.\nCreate a new time series.\nCreate a compaction rule.\nCreate a compaction rule.\nDecrease the value of the sample with the maximum existing …\nDecrease the value of the sample with the maximum existing …\nDelete all samples between two timestamps for a given time …\nDelete all samples between two timestamps for a given time …\nDelete a compaction rule.\nDelete a compaction rule.\nGet the sample with the highest timestamp from a given …\nGet the sample with the highest timestamp from a given …\nIncrease the value of the sample with the maximum existing …\nIncrease the value of the sample with the maximum existing …\nReturn information and statistics for a time series.\nReturn information and statistics for a time series.\nAppend new samples to one or more time series.\nAppend new samples to one or more time series.\nGet the sample with the highest timestamp from each time …\nGet the sample with the highest timestamp from each time …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nGet all time series keys matching a filter list.\nGet all time series keys matching a filter list.\nQuery a range in forward direction.\nQuery a range in forward direction.\nQuery a range in reverse direction.\nQuery a range in reverse direction.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nA convenience function to unblock any blocked connection …\nA convenience function to unblock any blocked connection …\nUnlinks the specified keys. A key is ignored if it does …\nUnlinks the specified keys. A key is ignored if it does …\nReceive a message when the client initiates a reconnection …\nUnsubscribe from a channel on the PubSub interface.\nUnsubscribe from a channel on the PubSub interface.\nFlushes all the previously watched keys for a transaction.\nFlushes all the previously watched keys for a transaction.\nUpdate the internal PerformanceConfig in place with new …\nUpdate the internal PerformanceConfig in place with new …\nWhether the client uses the sentinel interface.\nWhether the client uses the sentinel interface.\nThis command blocks the current client until all the …\nThis command blocks the current client until all the …\nWait for the result of the next connection attempt.\nWait for the result of the next connection attempt.\nMarks the given keys to be watched for conditional …\nMarks the given keys to be watched for conditional …\nCustomize various configuration options on commands.\nCustomize various configuration options on commands.\nRemove one or more messages from the Pending Entries List …\nRemove one or more messages from the Pending Entries List …\nAppends the specified stream entry to the stream at the …\nAppends the specified stream entry to the stream at the …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nIn the context of a stream consumer group, this command …\nIn the context of a stream consumer group, this command …\nA variation of xclaim with a less verbose return type.\nA variation of xclaim with a less verbose return type.\nRemoves the specified entries from a stream, and returns …\nRemoves the specified entries from a stream, and returns …\nThis command creates a new consumer group uniquely …\nThis command creates a new consumer group uniquely …\nCreate a consumer named consumername in the consumer group …\nCreate a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nCompletely destroy a consumer group.\nCompletely destroy a consumer group.\nSet the last delivered ID for a consumer group.\nSet the last delivered ID for a consumer group.\nThis command returns the list of consumers that belong to …\nThis command returns the list of consumers that belong to …\nThis command returns the list of all consumers groups of …\nThis command returns the list of all consumers groups of …\nThis command returns information about the stream stored …\nThis command returns information about the stream stored …\nReturns the number of entries inside a stream.\nReturns the number of entries inside a stream.\nInspect the list of pending messages in a consumer group.\nInspect the list of pending messages in a consumer group.\nThe command returns the stream entries matching a given …\nThe command returns the stream entries matching a given …\nReturn the stream entries matching the provided range of …\nReturn the stream entries matching the provided range of …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nTrims the stream by evicting older entries (entries with …\nTrims the stream by evicting older entries (entries with …\nAdds all the specified members with the specified scores …\nAdds all the specified members with the specified scores …\nReturns the sorted set cardinality (number of elements) of …\nReturns the sorted set cardinality (number of elements) of …\nReturns the number of elements in the sorted set at key …\nReturns the number of elements in the sorted set at key …\nThis command is similar to ZDIFFSTORE, but instead of …\nThis command is similar to ZDIFFSTORE, but instead of …\nComputes the difference between the first and all …\nComputes the difference between the first and all …\nIncrements the score of member in the sorted set stored at …\nIncrements the score of member in the sorted set stored at …\nThis command is similar to ZINTERSTORE, but instead of …\nThis command is similar to ZINTERSTORE, but instead of …\nComputes the intersection of the sorted sets given by the …\nComputes the intersection of the sorted sets given by the …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nPops one or more elements, that are member-score pairs, …\nPops one or more elements, that are member-score pairs, …\nReturns the scores associated with the specified members …\nReturns the scores associated with the specified members …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the lowest …\nRemoves and returns up to count members with the lowest …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nThis command is like ZRANGE, but stores the result in the …\nThis command is like ZRANGE, but stores the result in the …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nRemoves the specified members from the sorted set stored …\nRemoves the specified members from the sorted set stored …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nReturns the score of member in the sorted set at key.\nReturns the score of member in the sorted set at key.\nThis command is similar to ZUNIONSTORE, but instead of …\nThis command is similar to ZUNIONSTORE, but instead of …\nComputes the union of the sorted sets given by the …\nComputes the union of the sorted sets given by the …\nA mocking layer that buffers the commands internally and …\nAn implementation of a mocking layer that returns the …\nA wrapper type for the parts of an internal Redis command.\nAn interface for intercepting and processing Redis …\nA struct that implements some of the basic mapping …\nThe ordered list of arguments to the command.\nClear the inner map.\nClear the inner buffer.\nThe first word in the command string. For example:\nPerform a DEL operation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nPerform a GET operation.\nRead a copy of the inner map.\nRead a copy of the internal command buffer without …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRead the length of the internal buffer.\nCreate a new empty SimpleMap.\nCreate a new empty Buffer.\nPop a command from the back of the internal buffer.\nPop a command from the front of the internal buffer.\nIntercept and process a Redis command, returning any …\nIntercept and process an entire transaction. The provided …\nIntercept and process an entire transaction. The provided …\nPush a new command onto the back of the internal buffer.\nPush a new command onto the front of the internal buffer.\nPerform a SET operation.\nThe optional subcommand string (or second word) in the …\nTake the inner map.\nDrain and return the internal command buffer.\nA command parsed from a MONITOR stream.\nArguments passed to the command.\nThe host and port of the client that ran the command, or …\nThe command run by the server.\nThe database against which the command was run.\nReturns the argument unchanged.\nCalls U::from(self).\nRun the MONITOR command against the provided server.\nWhen the command was run on the server.\nA node was added to the cluster.\nAn aggregation operation used in FT.AGGREGATE.\nAggregate options for the zinterstore (and related) …\nAn aggregation policy to use with certain timeseries …\nThe ANY flag used on certain GEO commands.\nAn array of frames.\nAn ordered list of values.\nAn ordered list of values.\nThe auto-generated key symbol “*”.\nConfiguration options for backpressure features in the …\nBackpressure policies to apply when the max number of …\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nWait to send the command until the blocked command …\nDescribes how the client should respond when a command is …\nA boolean type.\nA boolean value.\nA boolean value.\nA BUCKETTIMESTAMP argument in commands such as TS.MRANGE.\nA client and pool builder interface.\nThe BUSY prefix.\nA byte array value.\nA byte array value.\nOne chunk of a streaming blob.\nFilters provided to the CLIENT KILL command.\nThe type of clients to close.\nFilters for the CLIENT PAUSE command.\nArguments for the CLIENT REPLY command.\nThe state of the underlying connection to the Redis server.\nArguments to the CLIENT UNBLOCK command.\nA policy that determines how clustered clients initially …\nThe CLUSTERDOWN prefix.\nOptions for the CLUSTER FAILOVER command.\nA cluster hashing policy.\nA parsed response from the CLUSTER INFO command.\nFlags for the CLUSTER RESET command.\nThe cached view of the cluster used by the client to route …\nFlags for the CLUSTER SETSLOT command.\nThe state of the cluster from the CLUSTER INFO command.\nAn enum describing the possible ways in which a Redis …\nAlways use the endpoint(s) provided in the client’s …\nThe result from any of the connect functions showing the …\nConfiguration options related to the creation or …\nWait a constant amount of time between reconnect attempts, …\nA trait that can be used to override the credentials used …\nProvide a custom hash slot value.\nProvide a custom mapping from IP address to hostname to be …\nA case-sensitive prefix on an error message.\nUnix time (milliseconds since epoch).\nConfiguration for custom redis commands, primarily used …\nThe default amount of jitter when waiting to reconnect.\nThe parsed result of the MEMORY STATS command for a …\nReplace any IP addresses in the CLUSTER SLOTS response …\nA signed 64-bit floating point number.\nA double floating point number.\nA double floating point number.\nWait for all in-flight commands to finish before sending …\nThe duplicate policy used with certain timeseries commands.\nExpiration in seconds.\nExpiration time, in seconds.\nEquivalent to -.\nEncoding arguments for certain timeseries commands.\nReturn an error to the caller.\nExpiration options for the set command.\nOptions for certain expiration commands (PEXPIRE, etc).\nBackoff reconnection attempts exponentially, multiplying …\nHash the first string or bytes value in the arguments. …\nHash the first argument regardless of type.\nThe policy type for the FUNCTION RESTORE command.\nA trait used to convert various forms of RedisValue into …\nA trait used to convert RedisKey values to various types.\nArguments to the FT.AGGREGATE command.\nArguments to FT.ALTER.\nArguments for FT.CREATE.\nArguments to FT.SEARCH.\nAn individual function within a Library.\nPossible flags associated with a Function.\nA struct describing the longitude and latitude coordinates …\nA typed struct representing the full output of the …\nUnits for the GEO DIST command.\nA struct describing the value inside a GEO data structure.\nArguments equivalent to …\nA timestamp query used in commands such as TS.MRANGE.\nA struct representing GROUPBY label REDUCE reducer in …\nThe result of a HSCAN operation.\nA special frame type used when first connecting to the …\nA trait used for mapping IP addresses to hostnames when …\nIndex ranges (https://redis.io/commands/zrange#index-ranges…\nIndex arguments for FT.CREATE.\nShortcut for the + character.\nShortcut for the +inf range bound.\nOptions for the info command.\nAn integer value.\nAn integer value.\nInterrupt the blocked command by automatically sending …\nA client tracking invalidation message from the provided …\nDo not reset the TTL.\nAn event on the publish-subscribe interface describing a …\nThe direction to move elements in a *LMOVE command.\nEquivalent to +\nLexicographical ranges (…\nA helper struct for interacting with libraries and …\nA tuple of (offset, count) values for commands that allow …\nAn argument type equivalent to “[LIMIT count]”.\nBackoff reconnection attempts linearly, adding delay each …\nLocation flag for the LINSERT command.\nArguments to LOAD in FT.AGGREGATE.\nThe LOADING prefix.\nAn ID specified by the user such as “12345-0”.\nAn unordered map of key-value pairs.\nA map of key/value pairs, primarily used in RESP3 mode.\nA map of key/value pairs, primarily used in RESP3 mode.\nThe MASTERDOWN prefix.\nThe highest ID in a stream (“$”).\nThe parsed result of the MEMORY STATS command.\nA publish-subscribe message.\nA message from a subscribe command.\nThe kind of pubsub message.\nThe MISCONF prefix.\nA convenience struct for commands that take one or more …\nA convenience struct for functions that take one or more …\nOne or more IDs for elements in a stream.\nConvenience struct for commands that take 1 or more keys.\nOne or more ordered key-value pairs, typically used as an …\nConvenience interface for commands that take 1 or more …\nConvenience interface for commands that take 1 or more …\nConvenience struct for ZINTERSTORE and ZUNIONSTORE when …\nConvenience struct for the ZADD command to accept 1 or …\nShortcut for the -inf range bound.\nShortcut for the - character.\nFor XREADGROUP, only return new IDs (“>”).\nThe NOREPLICAS prefix.\nNo value.\nDo not modify or replace hostnames or IP addresses in the …\nThe server’s current time, equivalent to “*”.\nA null type.\nA nil value.\nA nil value.\nA signed 64-bit integer.\nHash the value with the provided offset in the arguments …\nOptions to configure or overwrite for individual commands.\nOrdering options for the ZADD (and related) commands.\nA message from a pattern psubscribe command.\nExpiration in milliseconds.\nExpiration time, in milliseconds.\nThe type of results from the scan operation.\nConfiguration options that can affect the performance of …\nOut-of-band data.\nA special value used to indicate a MULTI block command was …\nA special value used to indicate a MULTI block command was …\nUse a random node in the cluster.\nA struct representing …\nThe READONLY prefix, which can happen if a primary node is …\nHash slots were rebalanced across the cluster and/or local …\nSpecial errors that can trigger reconnection logic, which …\nThe type of reconnection policy to use. This will apply to …\nConfiguration options for a RedisClient.\nA key in Redis.\nA map of (RedisKey, RedisValue) pairs.\nA value used in a Redis command.\nThe kind of value from Redis.\nA REDUCER argument in commands such as TS.MRANGE.\nGROUPBY reducer functions.\nA node was removed from the cluster.\nConfiguration options for replica node connections.\nAn interface used to filter the list of available replica …\nA trait that can be used to override DNS resolution logic.\nShorthand for the result of commands such as MGET, MRANGE, …\nA RESP3 frame that uses Bytes and Str as the underlying …\nThe RESP3 equivalent of Resp2TimeSeriesValues.\nThe RESP version used in the HELLO request.\nA message from a sharded ssubscribe command.\nThe result of a SSCAN operation.\nThe result of a SCAN operation.\nThe types of values supported by the type command.\nAn interface for interacting with the results of a scan …\nScore ranges (https://redis.io/commands/zrange#score-ranges…\nAn interface for caching and running lua scripts.\nFlags for the SCRIPT DEBUG command.\nA search field with an optional property.\nArguments for FILTER in FT.SEARCH.\nArguments for GEOFILTER in FT.SEARCH.\nArguments used in HIGHLIGHT values.\nArguments for PARAMS in FT.AGGREGATE.\nREDUCE arguments in FT.AGGREGATE.\nArguments for SCHEMA in FT.CREATE.\nOne of the available schema types used with FT.CREATE or …\nArguments for SORTBY in FT.SEARCH.\nArguments used in SUMMARIZE values.\nConfiguration options for sentinel clients.\nArguments for the SENTINEL SIMULATE-FAILURE command.\nState necessary to identify or connect to a server.\nConnection configuration for the Redis server.\nAn unordered collection of other frames with a uniqueness …\nOptions for the set command.\nArguments passed to the SHUTDOWN command.\nA small string representing an error.\nA small string.\nSleep for some amount of time before sending the next …\nA slot range and associated cluster node information from …\nThe output of an entry in the slow queries log.\nSome value of type T.\nThe sort order for redis commands that take or return a …\nArguments to TERMS in FT.SPELLCHECK,\nStats describing a distribution of samples.\nA string value.\nA string value.\nAn argument representing a string or number.\nTCP configuration options.\nA timestamp used in most timeseries commands.\nTLS configuration for a client.\nAn enum for interacting with various TLS libraries and …\nAn optional enum used to describe how the client should …\nAn ON|OFF flag used with client tracking commands.\nConfiguration options for tracing.\nConfiguration options used to detect potentially …\nTry connecting to nodes specified in both the client’s …\nA string to be displayed without any escaping or filtering.\nSemVer version as defined by https://semver.org.\nArguments for WITHCURSOR in FT.AGGREGATE.\nStream cap arguments for XADD, XTRIM, etc.\nThe MAXLEN or MINID argument for a stream cap.\nRepresentation for the “=” or “~” operator in XADD…\nStream ID arguments for XADD, XREAD, etc.\nA struct representing the trailing optional arguments to …\nA generic helper type describing the top level response …\nA generic helper type describing the ID and associated map …\nMIN|MAX arguments for BZMPOP, etc.\nA wrapper struct for a range bound in a sorted set command.\nAn index, score, lexicographical, or +|-|+inf|-inf range …\nThe type of range interval bound.\nThe result of a ZSCAN operation.\nOptions for the ZRANGE (and related) commands.\nAttempt to add attributes to the frame, extending the …\nReturn the length of the inner array if the value is an …\nAttempt to convert the value to a bool.\nRead the key as a byte slice.\nRead the inner value as an array of bytes, if possible.\nParse and return the key as a Str without copying the …\nRead the inner value as a Str.\nRead and return the inner value as a f64, if possible.\nParse the value as the response from FUNCTION LIST, …\nConvert the value into a GeoPosition, if possible.\nRead and return the inner value as a i64, if possible.\nRead the key as a str slice if it can be parsed as a UTF8 …\nRead the inner value as a string slice.\nRead the key as a lossy UTF8 string with …\nRead the inner value as a string, using …\nRead and return the inner String if the value is a string …\nRead and return the inner value as a u64, if possible.\nRead and return the inner value as a usize, if possible.\nRead the number of reconnection attempts.\nAutomatically send CLIENT SETNAME on each connection …\nWhether the client should automatically pipeline commands …\nConfiguration options for backpressure features in the …\nThe default behavior of the client when a command is sent …\nWhether the command should block the connection while …\nThe minimum size, in bytes, of frames that should be …\nThe default capacity used when creating broadcast channels …\nCreate a new client.\nCreate a new client pool.\nCreate a new sentinel client.\nCreate a new subscriber client.\nWhether to send CLIENT CACHING yes|no before the command.\nWhether the value can be hashed.\nThe channel on which the message was sent.\nThe amount of time to wait after a MOVED error is received …\nHash the key to find the associated cluster hash slot.\nThe cluster hashing policy to use, if applicable.\nThe cluster hashing policy to use, if any.\nThe cluster node that should receive the command.\nRead the host:port of the cluster node that owns the key …\nThe command name, sent directly to the server.\nCompare the major, minor, patch, and pre-release value of …\nThe number of times a command can fail with a replica …\nThe task queue onto which connection reader tasks will be …\nThe timeout to apply when attempting to create a new TCP …\nThe TLS connector from either native-tls or rustls.\nAttempt to convert the key to any type that implements …\nAttempt to convert this value to any value that implements …\nA lightweight function to create a Redis client from the …\nAn optional credential provider callback interface.\nRead the cursor returned from the last scan operation.\nAn optional database number that the client will …\nCreate a new builder instance with default config values …\nCreate a centralized config with default settings for a …\nCreate a new builder instance with default config values …\nCreate a clustered config with the same defaults as …\nAn optional timeout to apply to all commands.\nCreate a default TLS connector from the native-tls module.\nCreate a default TLS connector with the rustls module with …\nCreate a new Sleep policy with the legacy default values.\nSet the tracing::Level of spans under partial-tracing …\nWhether to disable the automatic backpressure features …\nDisable the CLUSTER INFO health check when initializing …\nWhether to enable tracing for this client.\nThe end of the hash slot range.\nSend EVALSHA to the server with the provided arguments.\nSend EVALSHA to the server with the provided arguments. …\nSet the non-null values from other onto self.\nWhether the client should return an error if it cannot …\nWhether the command should fail quickly if the connection …\nSend the fcall command via the provided client.\nSend the fcall_ro command via the provided client.\nRead the username and password that should be used in the …\nReturns whether the replica node mapping can be used when …\nReturns whether the replica node mapping can be used when …\nAn optional interface for filtering available replica …\nFind the key to hash with the provided arguments.\nRead the flags associated with the function.\nFlatten adjacent nested arrays to the provided depth.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new routing table from the result of the …\nCreate a new Library with the provided code, loading it on …\nCreate a new builder instance from the provided client …\nCreate a new Script from a lua hash.\nCreate a new Script from a lua script.\nCreate a new Library with the associated name, inspecting …\nParse the value with context from the calling command.\nCreate a new RedisKey from static bytes without copying.\nCreate a new RedisValue::Bytes from a static byte slice …\nAn optimized way to convert from &'static str that avoids …\nCreate a new RedisKey from a &'static str without copying.\nCreate a new RedisValue::String from a static str without …\nParse the string representation of the flag.\nParse a URL string into a RedisConfig.\nCreate a centralized RedisConfig struct from a URL.\nCreate a clustered RedisConfig struct from a URL.\nCreate a sentinel RedisConfig struct from a URL.\nSet the tracing::Level of spans under full-tracing feature.\nRead the functions contained within this library.\nRead the client config.\nRead the connection config.\nRead the performance config.\nRead the reconnection policy.\nRead the sentinel client config.\nFind the primary server that owns the provided hash slot.\nWhether the scan call will continue returning results. If …\nHash the provided arguments.\nCalculate the cluster hash slot for the provided key.\nThe hostname or IP address for the server.\nThe hostname for the sentinel node.\nThe hostname modification or mapping policy to use when …\nRead the server hosts or sentinel hosts if using the …\nThe internal ID assigned by the server.\nWhether the client should ignore errors from replicas that …\nRead the inner Bytes struct.\nTake the inner HashMap.\nThe timeout to apply when sending internal commands such …\nThe frequency at which the client checks for unresponsive …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert this value to an array if it’s an array or map.\nRead the inner bytes making up the key.\nConvert the value into a Bytes view.\nRead and return the inner data as a Str from the bytes …\nParse the value as the response to any of the relevant GEO …\nAttempt to convert the value into an integer, returning …\nConvert the value to JSON.\nAttempt to convert this value to a Redis map if it’s an …\nConvert the value to an array of bytes, if possible.\nConvert the array value to a set, if possible.\nConvert the key to a UTF8 string, if possible.\nRead and return the inner String if the value is a string …\nA utility function to convert the response from XAUTOCLAIM …\nA utility function to convert the response from XREAD or …\nA utility function to convert the response from XCLAIM, …\nConvert a RedisValue to Vec<(RedisValue, f64)>, if …\nWhether the value is an array or map.\nWhether the value is an array.\nWhether the value is a boolean value or can be parsed as a …\nCheck if the value is an array of bytes.\nWhether the config is for a centralized server.\nWhether the config uses a clustered deployment.\nWhether the inner value is a double or can be parsed as a …\nCheck if the value is an integer.\nWhether the value is a RedisMap.\nWhether the value is a RedisMap or an array with an even …\nCheck if the value is null.\nWhether the value is a simple string OK value.\nCheck if the value is a QUEUED response.\nWhether the config is for a centralized server behind a …\nCheck if the value is a string.\nWhether the config uses a Unix socket.\nSet the TCP keepalive values.\nRead the type of the value without any associated data.\nThe type of message subscription.\nWhether the client should lazily connect to replica nodes.\nRead the number of hash slot ranges in the cluster.\nRead the number of (key, value) pairs in the map.\nSet the SO_LINGER value.\nCall SCRIPT LOAD on all the associated servers. This must …\nRead the lua script contents.\nMap the provided IP address to a hostname that should be …\nSet the max number of write attempts for a command.\nThe maximum number of times the client will attempt to …\nLimit the size of the internal in-memory command queue.\nThe maximum number of frames that will be fed to a socket …\nThe maximum number of in-flight commands (per connection) …\nThe maximum number of times the client will attempt to …\nSet the max number of cluster redirections to follow for a …\nIf provided, the amount of time a frame can wait without a …\nAn optional mocking layer to intercept and process …\nRead the name of the function.\nRead the name of the library.\nCreate Version with an empty pre-release and build …\nCreate a new Server from parts.\nCreate a new empty routing table.\nCreate a new empty map.\nCreate a new custom command.\nCreate a new Function.\nCreate a new centralized config with the provided host and …\nCreate a new clustered config with the provided set of …\nCreate a new reconnect policy with a constant backoff.\nCreate a new reconnect policy with an exponential backoff.\nCreate a new reconnect policy with a linear backoff.\nCreate a new RedisValue with the OK status.\nCreate a new sentinel config with the provided set of …\nCreate a new custom command specified by a &'static str.\nCreate a new Server from parts with a TLS server name.\nMove on to the next page of results from the SCAN …\nCalculate the next delay, incrementing attempts in the …\nWhether to skip backpressure checks for a command.\nSet the TCP_NODELAY value.\nCreate Version by parsing from string representation.\nAn optional password for the client to use when …\nAn optional password for the client to use when …\nThe backpressure policy to apply when the max number of …\nThe port for the server.\nThe port on which the sentinel node is listening.\nPrint the contents of the routing table as a …\nThe primary server owner.\nWhether the client should use the associated primary node …\nRead a random primary node from the cluster cache.\nRead a random primary node hash slot range from the …\nErrors that should trigger reconnection logic.\nAn unexpected NOAUTH error is treated the same as a …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfiguration options for replica nodes.\nRead the replicas associated with the provided primary …\nReplica node owners.\nResolve a hostname.\nReturn a reference to the last page of results.\nThe task queue onto which routing tasks will be spawned.\nThe server that sent the message.\nConnection configuration for the server(s).\nSet the ClusterDiscoveryPolicy, if possible.\nOverwrite the client config on the builder.\nOverwrite the connection config on the builder.\nSet the amount of jitter to add to each reconnect delay.\nOverwrite the performance config on the builder.\nOverwrite the reconnection policy on the builder.\nOverwrite the sentinel config on the builder.\nRead the SHA-1 hash for the script.\nRead the hash slot ranges in the cluster.\nThe start of the hash slot range.\nReplace this key with an empty byte array, returning the …\nReplace the value an empty map, returning the original …\nReplace this value with RedisValue::Null, returning the …\nTake ownership over the results of the SCAN operation. …\nTCP connection options.\nSet the timeout duration for a command.\nTLS configuration options.\nTLS configuration fields. If None the connection will not …\nThe server name used during the TLS handshake.\nCopy the frame contents into a new OwnedFrame.\nConvert to the string representation of the flag.\nTracing configuration options.\nWhether to enable tracing for this client.\nSet the IP_TTL value.\nRead a set of unique hash slots that each map to a …\nRead the set of unique primary nodes in the cluster.\nUnresponsive connection configuration options.\nAn optional ACL username for the client to use when …\nAn optional ACL username for the client to use when …\nWhether the client uses a native-tls connector.\nWhether the client uses a rustls connector.\nWhether the client uses TLS.\nThe message contents.\nThe protocol version to use when communicating with the …\nModify the client config in place, creating a new one with …\nModify the connection config in place, creating a new one …\nModify the performance config in place, creating a new one …\nModify the sentinel config in place, creating a new one …\nAn empty array is equivalent to GROUPBY 0\nDisable the backpressure scaling logic used to calculate …\nThe minimum amount of time to wait when applying …\nThe known cluster node Server identifiers.\nAn array of Server identifiers for each known sentinel …\nAn optional password for the client to use when …\nThe cluster discovery policy to use when connecting or …\nThe Server identifier.\nThe service name for primary/main instances.\nAn optional ACL username for the client to use when …\nA convenience constant for None values used as generic …\nConvert an f64 to a redis string, supporting “+inf” …\nGroup the provided arguments by their cluster hash slot.\nMap a key to the corresponding cluster key slot.\nConvert a redis string to an f64, supporting “+inf” …\nCalculate the SHA1 hash output as a hex string. This is …\nCreate a Bytes from static bytes without copying.\nCreate a Str from a static str slice without copying.") \ No newline at end of file diff --git a/docs/glommio/src-files.js b/docs/glommio/src-files.js index c6bdd697..16d0fa6b 100644 --- a/docs/glommio/src-files.js +++ b/docs/glommio/src-files.js @@ -1,3 +1,3 @@ -var srcIndex = new Map(JSON.parse('[["fred",["",[["clients",[],["mod.rs","options.rs","pipeline.rs","pool.rs","pubsub.rs","redis.rs","replica.rs","sentinel.rs","transaction.rs"]],["commands",[["impls",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs"]],["interfaces",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","metrics.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs","transactions.rs"]]],["mod.rs"]],["glommio",[],["broadcast.rs","interfaces.rs","io_compat.rs","mod.rs","mpsc.rs","sync.rs"]],["modules",[],["backchannel.rs","inner.rs","metrics.rs","mocks.rs","mod.rs","response.rs"]],["monitor",[],["mod.rs","parser.rs","utils.rs"]],["protocol",[],["cluster.rs","codec.rs","command.rs","connection.rs","debug.rs","hashers.rs","mod.rs","responders.rs","tls.rs","types.rs","utils.rs"]],["router",[],["centralized.rs","clustered.rs","commands.rs","mod.rs","reader.rs","replicas.rs","responses.rs","sentinel.rs","transactions.rs","types.rs","utils.rs"]],["trace",[],["disabled.rs","enabled.rs","mod.rs"]],["types",[],["args.rs","builder.rs","client.rs","cluster.rs","config.rs","from_tuple.rs","geo.rs","lists.rs","misc.rs","mod.rs","multiple.rs","redisearch.rs","scan.rs","scripts.rs","sorted_sets.rs","streams.rs","timeseries.rs"]]],["error.rs","interfaces.rs","lib.rs","macros.rs","utils.rs"]]]]')); +var srcIndex = new Map(JSON.parse('[["fred",["",[["clients",[],["mod.rs","options.rs","pipeline.rs","pool.rs","pubsub.rs","redis.rs","replica.rs","sentinel.rs","transaction.rs"]],["commands",[["impls",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs"]],["interfaces",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","metrics.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs","transactions.rs"]]],["mod.rs"]],["glommio",[],["broadcast.rs","interfaces.rs","io_compat.rs","mod.rs","mpsc.rs","sync.rs"]],["modules",[],["backchannel.rs","inner.rs","metrics.rs","mocks.rs","mod.rs","response.rs"]],["monitor",[],["mod.rs","parser.rs","utils.rs"]],["protocol",[],["cluster.rs","codec.rs","command.rs","connection.rs","debug.rs","hashers.rs","mod.rs","responders.rs","tls.rs","types.rs","utils.rs"]],["router",[],["centralized.rs","clustered.rs","commands.rs","mod.rs","replicas.rs","responses.rs","sentinel.rs","transactions.rs","types.rs","utils.rs"]],["trace",[],["disabled.rs","enabled.rs","mod.rs"]],["types",[],["args.rs","builder.rs","client.rs","cluster.rs","config.rs","from_tuple.rs","geo.rs","lists.rs","misc.rs","mod.rs","multiple.rs","redisearch.rs","scan.rs","scripts.rs","sorted_sets.rs","streams.rs","timeseries.rs"]]],["error.rs","interfaces.rs","lib.rs","macros.rs","utils.rs"]]]]')); createSrcSidebar(); -//{"start":36,"fragment_lengths":[1750]} \ No newline at end of file +//{"start":36,"fragment_lengths":[1738]} \ No newline at end of file diff --git a/docs/glommio/src/fred/clients/transaction.rs.html b/docs/glommio/src/fred/clients/transaction.rs.html index f7f08185..f5a92574 100644 --- a/docs/glommio/src/fred/clients/transaction.rs.html +++ b/docs/glommio/src/fred/clients/transaction.rs.html @@ -345,6 +345,23 @@ 345 346 347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces,
    @@ -357,38 +374,43 @@
         responders::ResponseKind,
         utils as protocol_utils,
       },
    -  runtime::{oneshot_channel, Mutex, RefCount},
    +  runtime::{oneshot_channel, AtomicBool, Mutex, RefCount},
       types::{FromRedis, MultipleKeys, Options, RedisKey, Server},
       utils,
     };
     use std::{collections::VecDeque, fmt};
     
    +struct State {
    +  id:        u64,
    +  commands:  Mutex<VecDeque<RedisCommand>>,
    +  watched:   Mutex<VecDeque<RedisKey>>,
    +  hash_slot: Mutex<Option<u16>>,
    +  pipelined: AtomicBool,
    +}
    +
     /// A cheaply cloneable transaction block.
     #[derive(Clone)]
    -#[cfg(feature = "transactions")]
     #[cfg_attr(docsrs, doc(cfg(feature = "transactions")))]
     pub struct Transaction {
    -  id:        u64,
    -  inner:     RefCount<RedisClientInner>,
    -  commands:  RefCount<Mutex<VecDeque<RedisCommand>>>,
    -  watched:   RefCount<Mutex<VecDeque<RedisKey>>>,
    -  hash_slot: RefCount<Mutex<Option<u16>>>,
    +  inner: RefCount<RedisClientInner>,
    +  state: RefCount<State>,
     }
     
     impl fmt::Debug for Transaction {
       fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         f.debug_struct("Transaction")
           .field("client", &self.inner.id)
    -      .field("id", &self.id)
    -      .field("length", &self.commands.lock().len())
    -      .field("hash_slot", &self.hash_slot.lock())
    +      .field("id", &self.state.id)
    +      .field("length", &self.state.commands.lock().len())
    +      .field("hash_slot", &self.state.hash_slot.lock())
    +      .field("pipelined", &utils::read_bool_atomic(&self.state.pipelined))
           .finish()
       }
     }
     
     impl PartialEq for Transaction {
       fn eq(&self, other: &Self) -> bool {
    -    self.id == other.id
    +    self.state.id == other.state.id
       }
     }
     
    @@ -420,7 +442,7 @@
           let _ = tx.send(Ok(protocol_utils::queued_frame()));
         }
     
    -    self.commands.lock().push_back(command);
    +    self.state.commands.lock().push_back(command);
         Ok(())
       }
     }
    @@ -485,11 +507,14 @@
       /// Create a new transaction.
       pub(crate) fn from_inner(inner: &RefCount<RedisClientInner>) -> Self {
         Transaction {
    -      inner:     inner.clone(),
    -      commands:  RefCount::new(Mutex::new(VecDeque::new())),
    -      watched:   RefCount::new(Mutex::new(VecDeque::new())),
    -      hash_slot: RefCount::new(Mutex::new(None)),
    -      id:        utils::random_u64(u64::MAX),
    +      inner: inner.clone(),
    +      state: RefCount::new(State {
    +        commands:  Mutex::new(VecDeque::new()),
    +        watched:   Mutex::new(VecDeque::new()),
    +        hash_slot: Mutex::new(None),
    +        pipelined: AtomicBool::new(false),
    +        id:        utils::random_u64(u64::MAX),
    +      }),
         }
       }
     
    @@ -500,7 +525,7 @@
         }
     
         if let Some(slot) = command.cluster_hash() {
    -      if let Some(old_slot) = utils::read_mutex(&self.hash_slot) {
    +      if let Some(old_slot) = utils::read_mutex(&self.state.hash_slot) {
             let (old_server, server) = self.inner.with_cluster_state(|state| {
               debug!(
                 "{}: Checking transaction hash slots: {}, {}",
    @@ -517,7 +542,7 @@
               ));
             }
           } else {
    -        utils::set_mutex(&self.hash_slot, Some(slot));
    +        utils::set_mutex(&self.state.hash_slot, Some(slot));
           }
         }
     
    @@ -537,24 +562,35 @@
     
       /// An ID identifying the underlying transaction state.
       pub fn id(&self) -> u64 {
    -    self.id
    +    self.state.id
       }
     
       /// Clear the internal command buffer and watched keys.
       pub fn reset(&self) {
    -    self.commands.lock().clear();
    -    self.watched.lock().clear();
    -    self.hash_slot.lock().take();
    +    self.state.commands.lock().clear();
    +    self.state.watched.lock().clear();
    +    self.state.hash_slot.lock().take();
       }
     
       /// Read the number of commands queued to run.
       pub fn len(&self) -> usize {
    -    self.commands.lock().len()
    +    self.state.commands.lock().len()
    +  }
    +
    +  /// Whether to pipeline commands in the transaction.
    +  ///
    +  /// Note: pipelined transactions should only be used with Redis version >=2.6.5.
    +  pub fn pipeline(&self, val: bool) {
    +    utils::set_bool_atomic(&self.state.pipelined, val);
       }
     
       /// Read the number of keys to `WATCH` before the starting the transaction.
    +  #[deprecated(
    +    since = "9.2.0",
    +    note = "Please use `WATCH` with clients from an `ExclusivePool` instead."
    +  )]
       pub fn watched_len(&self) -> usize {
    -    self.watched.lock().len()
    +    self.state.watched.lock().len()
       }
     
       /// Executes all previously queued commands in a transaction.
    @@ -586,35 +622,48 @@
       {
         let commands = {
           self
    -        .commands
    +        .state
    +        .commands
             .lock()
             .iter()
             .map(|cmd| cmd.duplicate(ResponseKind::Skip))
             .collect()
         };
    -    let watched = { self.watched.lock().iter().cloned().collect() };
    -    let hash_slot = utils::read_mutex(&self.hash_slot);
    -    exec(&self.inner, commands, watched, hash_slot, abort_on_error, self.id)
    -      .await?
    -      .convert()
    +    let pipelined = utils::read_bool_atomic(&self.state.pipelined);
    +    let hash_slot = utils::read_mutex(&self.state.hash_slot);
    +
    +    exec(
    +      &self.inner,
    +      commands,
    +      hash_slot,
    +      abort_on_error,
    +      pipelined,
    +      self.state.id,
    +    )
    +    .await?
    +    .convert()
       }
     
       /// Send the `WATCH` command with the provided keys before starting the transaction.
    +  #[deprecated(
    +    since = "9.2.0",
    +    note = "Please use `WATCH` with clients from an `ExclusivePool` instead."
    +  )]
       pub fn watch_before<K>(&self, keys: K)
       where
         K: Into<MultipleKeys>,
       {
    -    self.watched.lock().extend(keys.into().inner());
    +    self.state.watched.lock().extend(keys.into().inner());
       }
     
       /// Read the hash slot against which this transaction will run, if known.  
       pub fn hash_slot(&self) -> Option<u16> {
    -    utils::read_mutex(&self.hash_slot)
    +    utils::read_mutex(&self.state.hash_slot)
       }
     
       /// Read the server ID against which this transaction will run, if known.
       pub fn cluster_node(&self) -> Option<Server> {
    -    utils::read_mutex(&self.hash_slot).and_then(|slot| {
    +    utils::read_mutex(&self.state.hash_slot).and_then(|slot| {
           self
             .inner
             .with_cluster_state(|state| Ok(state.get_server(slot).cloned()))
    @@ -627,9 +676,9 @@
     async fn exec(
       inner: &RefCount<RedisClientInner>,
       commands: VecDeque<RedisCommand>,
    -  watched: VecDeque<RedisKey>,
       hash_slot: Option<u16>,
       abort_on_error: bool,
    +  pipelined: bool,
       id: u64,
     ) -> Result<RedisValue, RedisError> {
       if commands.is_empty() {
    @@ -657,33 +706,18 @@
           command
         })
         .collect();
    -  // collapse the watched keys into one command
    -  let watched = if watched.is_empty() {
    -    None
    -  } else {
    -    let args: Vec<RedisValue> = watched.into_iter().map(|k| k.into()).collect();
    -    let mut watch_cmd = RedisCommand::new(RedisCommandKind::Watch, args);
    -    watch_cmd.can_pipeline = false;
    -    watch_cmd.skip_backpressure = true;
    -    watch_cmd.transaction_id = Some(id);
    -    if let Some(hash_slot) = hash_slot.as_ref() {
    -      watch_cmd.hasher = ClusterHash::Custom(*hash_slot);
    -    }
    -    Some(watch_cmd)
    -  };
     
       _trace!(
         inner,
    -    "Sending transaction {} with {} commands ({} watched) to router.",
    +    "Sending transaction {} with {} commands to router.",
         id,
         commands.len(),
    -    watched.as_ref().map(|c| c.args().len()).unwrap_or(0)
       );
       let command = RouterCommand::Transaction {
         id,
         tx,
         commands,
    -    watched,
    +    pipelined,
         abort_on_error,
       };
       let timeout_dur = trx_options.timeout.unwrap_or_else(|| inner.default_command_timeout());
    diff --git a/docs/glommio/src/fred/modules/mocks.rs.html b/docs/glommio/src/fred/modules/mocks.rs.html
    index 1a425093..e89ac0c8 100644
    --- a/docs/glommio/src/fred/modules/mocks.rs.html
    +++ b/docs/glommio/src/fred/modules/mocks.rs.html
    @@ -406,6 +406,22 @@
     406
     407
     408
    +409
    +410
    +411
    +412
    +413
    +414
    +415
    +416
    +417
    +418
    +419
    +420
    +421
    +422
    +423
    +424
     
    //! An interface for mocking Redis commands.
     //!
     //! There are several patterns for utilizing a mocking layer in tests. In some cases a simple "echo" interface is
    @@ -736,10 +752,10 @@
         interfaces::{ClientLike, KeysInterface},
         mocks::{Buffer, Echo, Mocks, SimpleMap},
         prelude::Expiration,
    +    runtime::JoinHandle,
         types::{RedisConfig, RedisValue, SetOptions},
       };
       use std::sync::Arc;
    -  use tokio::task::JoinHandle;
     
       async fn create_mock_client(mocks: Arc<dyn Mocks>) -> (RedisClient, JoinHandle<Result<(), RedisError>>) {
         let config = RedisConfig {
    @@ -813,5 +829,21 @@
         ];
         assert_eq!(buffer.take(), expected);
       }
    +
    +  #[tokio::test]
    +  async fn should_mock_pipelines() {
    +    let (client, _) = create_mock_client(Arc::new(Echo)).await;
    +
    +    let pipeline = client.pipeline();
    +    pipeline.get::<(), _>("foo").await.unwrap();
    +    pipeline.get::<(), _>("bar").await.unwrap();
    +
    +    let all: Vec<Vec<String>> = pipeline.all().await.unwrap();
    +    assert_eq!(all, vec![vec!["foo"], vec!["bar"]]);
    +    let try_all = pipeline.try_all::<Vec<String>>().await;
    +    assert_eq!(try_all, vec![Ok(vec!["foo".to_string()]), Ok(vec!["bar".to_string()])]);
    +    let last: Vec<String> = pipeline.last().await.unwrap();
    +    assert_eq!(last, vec!["bar"]);
    +  }
     }
     

    \ No newline at end of file diff --git a/docs/glommio/src/fred/protocol/command.rs.html b/docs/glommio/src/fred/protocol/command.rs.html index 63a8be40..c1a2be12 100644 --- a/docs/glommio/src/fred/protocol/command.rs.html +++ b/docs/glommio/src/fred/protocol/command.rs.html @@ -2283,6 +2283,14 @@ 2283 2284 2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -4108,6 +4116,14 @@
         }
       }
     
    +  pub fn in_pipelined_transaction(&self) -> bool {
    +    self.transaction_id.is_some() && self.response.is_buffer()
    +  }
    +
    +  pub fn in_non_pipelined_transaction(&self) -> bool {
    +    self.transaction_id.is_some() && !self.response.is_buffer()
    +  }
    +
       pub fn decr_check_redirections(&mut self) -> Result<(), RedisError> {
         if self.redirections_remaining == 0 {
           Err(RedisError::new(RedisErrorKind::Unknown, "Too many redirections."))
    @@ -4376,8 +4392,8 @@
       Transaction {
         id:             u64,
         commands:       Vec<RedisCommand>,
    -    watched:        Option<RedisCommand>,
         abort_on_error: bool,
    +    pipelined:      bool,
         tx:             ResponseSender,
       },
       /// Retry a command after a `MOVED` error.
    diff --git a/docs/glommio/src/fred/protocol/responders.rs.html b/docs/glommio/src/fred/protocol/responders.rs.html
    index 0bc0f252..b4ae4b3d 100644
    --- a/docs/glommio/src/fred/protocol/responders.rs.html
    +++ b/docs/glommio/src/fred/protocol/responders.rs.html
    @@ -612,6 +612,11 @@
     612
     613
     614
    +615
    +616
    +617
    +618
    +619
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -782,6 +787,11 @@
           ResponseKind::ValueScan(_) | ResponseKind::KeyScan(_) => 1,
         }
       }
    +
    +  /// Whether the responder is a `ResponseKind::Buffer`.
    +  pub fn is_buffer(&self) -> bool {
    +    matches!(self, ResponseKind::Buffer { .. })
    +  }
     }
     
     #[cfg(feature = "metrics")]
    diff --git a/docs/glommio/src/fred/router/centralized.rs.html b/docs/glommio/src/fred/router/centralized.rs.html
    index 02460a03..0d0e7803 100644
    --- a/docs/glommio/src/fred/router/centralized.rs.html
    +++ b/docs/glommio/src/fred/router/centralized.rs.html
    @@ -221,6 +221,8 @@
     221
     222
     223
    +224
    +225
     

    use crate::{
       error::RedisErrorKind,
       modules::inner::RedisClientInner,
    @@ -363,7 +365,10 @@
       }
       responses::check_and_set_unblocked_flag(inner, &command).await;
     
    -  if command.transaction_id.is_some() {
    +  // non-pipelined transactions use ResponseKind::Skip, pipelined ones use a buffer. non-pipelined transactions
    +  // need to retry commands in a special way so this logic forwards the result via the latest command's router
    +  // response channel and exits early. pipelined transactions use the normal buffered response process below.
    +  if command.in_non_pipelined_transaction() {
         if let Some(error) = protocol_utils::frame_to_error(&frame) {
           #[allow(unused_mut)]
           if let Some(mut tx) = command.take_router_tx() {
    @@ -379,8 +384,7 @@
         }
       }
     
    -  // TODO clean this up
    -  _trace!(inner, "Handling centralized response kind: {:?}", command.response);
    +  _trace!(inner, "Handling centralized response kind: {:?}", command.response);
       match command.take_response() {
         ResponseKind::Skip | ResponseKind::Respond(None) => {
           command.respond_to_router(inner, RouterResponse::Continue);
    diff --git a/docs/glommio/src/fred/router/clustered.rs.html b/docs/glommio/src/fred/router/clustered.rs.html
    index 68c7ce96..601790d4 100644
    --- a/docs/glommio/src/fred/router/clustered.rs.html
    +++ b/docs/glommio/src/fred/router/clustered.rs.html
    @@ -755,6 +755,15 @@
     755
     756
     757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces,
    @@ -1059,9 +1068,33 @@
       spawn(reader_ft)
     }
     
    +/// Parse a cluster redirection frame from the provided server, returning the new destination node info.
    +pub fn parse_cluster_error_frame(
    +  inner: &RefCount<RedisClientInner>,
    +  frame: &Resp3Frame,
    +  server: &Server,
    +) -> Result<(ClusterErrorKind, u16, Server), RedisError> {
    +  let (kind, slot, server_str) = match frame.as_str() {
    +    Some(data) => protocol_utils::parse_cluster_error(data)?,
    +    None => return Err(RedisError::new(RedisErrorKind::Protocol, "Invalid cluster error.")),
    +  };
    +  let server = match Server::from_parts(&server_str, &server.host) {
    +    Some(server) => server,
    +    None => {
    +      _warn!(inner, "Invalid server field in cluster error: {}", server_str);
    +      return Err(RedisError::new(
    +        RedisErrorKind::Protocol,
    +        "Invalid cluster redirection error.",
    +      ));
    +    },
    +  };
    +
    +  Ok((kind, slot, server))
    +}
    +
     /// Send a MOVED or ASK command to the router, using the router channel if possible and falling back on the
     /// command queue if appropriate.
    -// Cluster errors within a transaction can only be handled via the blocking router channel.
    +// Cluster errors within a non-pipelined transaction can only be handled via the blocking router channel.
     fn process_cluster_error(
       inner: &RefCount<RedisClientInner>,
       server: &Server,
    @@ -1071,30 +1104,11 @@
       // commands are not redirected to replica nodes
       command.use_replica = false;
     
    -  let (kind, slot, server_str) = match frame.as_str() {
    -    Some(data) => match protocol_utils::parse_cluster_error(data) {
    -      Ok(result) => result,
    -      Err(e) => {
    -        command.respond_to_router(inner, RouterResponse::Continue);
    -        command.respond_to_caller(Err(e));
    -        return;
    -      },
    -    },
    -    None => {
    -      command.respond_to_router(inner, RouterResponse::Continue);
    -      command.respond_to_caller(Err(RedisError::new(RedisErrorKind::Protocol, "Invalid cluster error.")));
    -      return;
    -    },
    -  };
    -  let server = match Server::from_parts(&server_str, &server.host) {
    -    Some(server) => server,
    -    None => {
    -      _warn!(inner, "Invalid server field in cluster error: {}", server_str);
    +  let (kind, slot, server) = match parse_cluster_error_frame(inner, &frame, server) {
    +    Ok(results) => results,
    +    Err(e) => {
           command.respond_to_router(inner, RouterResponse::Continue);
    -      command.respond_to_caller(Err(RedisError::new(
    -        RedisErrorKind::Cluster,
    -        "Invalid cluster redirection error.",
    -      )));
    +      command.respond_to_caller(Err(e));
           return;
         },
       };
    @@ -1198,7 +1212,8 @@
       }
       responses::check_and_set_unblocked_flag(inner, &command).await;
     
    -  if frame.is_redirection() {
    +  // pipelined transactions defer cluster redirections until after `EXECABORT` is received
    +  if frame.is_redirection() && !command.in_pipelined_transaction() {
         _debug!(
           inner,
           "Recv MOVED or ASK error for `{}` from {}: {:?}",
    @@ -1210,7 +1225,10 @@
         return Ok(());
       }
     
    -  if command.transaction_id.is_some() {
    +  // non-pipelined transactions use ResponseKind::Skip, pipelined ones use a buffer. non-pipelined transactions
    +  // need to retry commands in a special way so this logic forwards the result via the latest command's router
    +  // response channel and exits early. pipelined transactions use the normal buffered response process below.
    +  if command.in_non_pipelined_transaction() {
         if let Some(error) = protocol_utils::frame_to_error(&frame) {
           #[allow(unused_mut)]
           if let Some(mut tx) = command.take_router_tx() {
    diff --git a/docs/glommio/src/fred/router/commands.rs.html b/docs/glommio/src/fred/router/commands.rs.html
    index df589199..11ddfab8 100644
    --- a/docs/glommio/src/fred/router/commands.rs.html
    +++ b/docs/glommio/src/fred/router/commands.rs.html
    @@ -731,6 +731,46 @@
     731
     732
     733
    +734
    +735
    +736
    +737
    +738
    +739
    +740
    +741
    +742
    +743
    +744
    +745
    +746
    +747
    +748
    +749
    +750
    +751
    +752
    +753
    +754
    +755
    +756
    +757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
    +767
    +768
    +769
    +770
    +771
    +772
    +773
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       modules::inner::{CommandReceiver, RedisClientInner},
    @@ -1267,11 +1307,17 @@
         #[cfg(feature = "transactions")]
         RouterCommand::Transaction {
           commands,
    -      watched,
    +      pipelined,
           id,
           tx,
           abort_on_error,
    -    } => transactions::run(inner, router, commands, watched, id, abort_on_error, tx).await,
    +    } => {
    +      if pipelined {
    +        transactions::exec::pipelined(inner, router, commands, id, tx).await
    +      } else {
    +        transactions::exec::non_pipelined(inner, router, commands, id, abort_on_error, tx).await
    +      }
    +    },
         RouterCommand::Pipeline { commands } => process_pipeline(inner, router, commands).await,
         RouterCommand::Command(command) => process_normal_command(inner, router, command).await,
         RouterCommand::Connections { tx } => process_connections(inner, router, tx),
    @@ -1374,7 +1420,11 @@
     #[allow(unused_mut)]
     mod mocking {
       use super::*;
    -  use crate::{modules::mocks::Mocks, protocol::utils as protocol_utils};
    +  use crate::{
    +    modules::mocks::Mocks,
    +    protocol::{responders::ResponseKind, utils as protocol_utils},
    +  };
    +  use redis_protocol::resp3::types::BytesFrame;
       use std::sync::Arc;
     
       /// Process any kind of router command.
    @@ -1395,12 +1445,42 @@
               },
             }
           },
    -      RouterCommand::Pipeline { commands } => {
    +      RouterCommand::Pipeline { mut commands } => {
    +        let mut results = Vec::with_capacity(commands.len());
    +        let response = commands.last_mut().map(|c| c.take_response());
    +        let uses_all_results = matches!(response, Some(ResponseKind::Buffer { .. }));
    +        let tx = response.and_then(|mut k| k.take_response_tx());
    +
             for mut command in commands.into_iter() {
    -          let mocked = command.to_mocked();
    -          let result = mocks.process_command(mocked).map(protocol_utils::mocked_value_to_frame);
    +          let result = mocks
    +            .process_command(command.to_mocked())
    +            .map(protocol_utils::mocked_value_to_frame);
    +
    +          results.push(result);
    +        }
    +        if let Some(mut tx) = tx {
    +          let mut frames = Vec::with_capacity(results.len());
    +
    +          for frame in results.into_iter() {
    +            match frame {
    +              Ok(frame) => frames.push(frame),
    +              Err(err) => {
    +                frames.push(Resp3Frame::SimpleError {
    +                  data:       err.details().into(),
    +                  attributes: None,
    +                });
    +              },
    +            }
    +          }
     
    -          command.respond_to_caller(result);
    +          if uses_all_results {
    +            let _ = tx.send(Ok(BytesFrame::Array {
    +              data:       frames,
    +              attributes: None,
    +            }));
    +          } else {
    +            let _ = tx.send(Ok(frames.pop().unwrap_or(BytesFrame::Null)));
    +          }
             }
     
             Ok(())
    diff --git a/docs/glommio/src/fred/router/mod.rs.html b/docs/glommio/src/fred/router/mod.rs.html
    index 025d743c..12686192 100644
    --- a/docs/glommio/src/fred/router/mod.rs.html
    +++ b/docs/glommio/src/fred/router/mod.rs.html
    @@ -967,7 +967,6 @@
     967
     968
     969
    -970
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       modules::inner::RedisClientInner,
    @@ -999,7 +998,6 @@
     pub mod centralized;
     pub mod clustered;
     pub mod commands;
    -pub mod reader;
     pub mod replicas;
     pub mod responses;
     pub mod sentinel;
    diff --git a/docs/glommio/src/fred/router/reader.rs.html b/docs/glommio/src/fred/router/reader.rs.html
    deleted file mode 100644
    index b7f0e738..00000000
    --- a/docs/glommio/src/fred/router/reader.rs.html
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -reader.rs - source
    1
    -
    
    -
    \ No newline at end of file diff --git a/docs/glommio/src/fred/router/transactions.rs.html b/docs/glommio/src/fred/router/transactions.rs.html index 8fce1217..775f1adf 100644 --- a/docs/glommio/src/fred/router/transactions.rs.html +++ b/docs/glommio/src/fred/router/transactions.rs.html @@ -338,6 +338,185 @@ 338 339 340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519

    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -345,12 +524,15 @@
       protocol::{
         command::{ClusterErrorKind, RedisCommand, RedisCommandKind, ResponseSender, RouterReceiver, RouterResponse},
         responders::ResponseKind,
    +    utils::pretty_error,
       },
    -  router::{utils, Router, Written},
    -  runtime::RefCount,
    +  router::{clustered::parse_cluster_error_frame, utils, Router, Written},
    +  runtime::{oneshot_channel, AtomicUsize, Mutex, RefCount},
       types::{ClusterHash, Server},
       utils as client_utils,
     };
    +use redis_protocol::resp3::types::{FrameKind, Resp3Frame as _Resp3Frame};
    +use std::iter::repeat;
     
     /// An internal enum describing the result of an attempt to send a transaction command.
     #[derive(Debug)]
    @@ -379,7 +561,7 @@
       server: &Server,
       command: RedisCommand,
       abort_on_error: bool,
    -  rx: RouterReceiver,
    +  rx: Option<RouterReceiver>,
     ) -> Result<TransactionResponse, RedisError> {
       _trace!(
         inner,
    @@ -402,30 +584,34 @@
         return Ok(TransactionResponse::Retry(e));
       }
     
    -  match client_utils::timeout(rx, timeout_dur).await? {
    -    RouterResponse::Continue => Ok(TransactionResponse::Continue),
    -    RouterResponse::Ask((slot, server, _)) => {
    -      Ok(TransactionResponse::Redirection((ClusterErrorKind::Ask, slot, server)))
    -    },
    -    RouterResponse::Moved((slot, server, _)) => Ok(TransactionResponse::Redirection((
    -      ClusterErrorKind::Moved,
    -      slot,
    -      server,
    -    ))),
    -    RouterResponse::ConnectionClosed((err, _)) => Ok(TransactionResponse::Retry(err)),
    -    RouterResponse::TransactionError((err, _)) => {
    -      if abort_on_error {
    -        Err(err)
    -      } else {
    -        Ok(TransactionResponse::Continue)
    -      }
    -    },
    -    RouterResponse::TransactionResult(frame) => Ok(TransactionResponse::Finished(frame)),
    +  if let Some(rx) = rx {
    +    match client_utils::timeout(rx, timeout_dur).await? {
    +      RouterResponse::Continue => Ok(TransactionResponse::Continue),
    +      RouterResponse::Ask((slot, server, _)) => {
    +        Ok(TransactionResponse::Redirection((ClusterErrorKind::Ask, slot, server)))
    +      },
    +      RouterResponse::Moved((slot, server, _)) => Ok(TransactionResponse::Redirection((
    +        ClusterErrorKind::Moved,
    +        slot,
    +        server,
    +      ))),
    +      RouterResponse::ConnectionClosed((err, _)) => Ok(TransactionResponse::Retry(err)),
    +      RouterResponse::TransactionError((err, _)) => {
    +        if abort_on_error {
    +          Err(err)
    +        } else {
    +          Ok(TransactionResponse::Continue)
    +        }
    +      },
    +      RouterResponse::TransactionResult(frame) => Ok(TransactionResponse::Finished(frame)),
    +    }
    +  } else {
    +    Ok(TransactionResponse::Continue)
       }
     }
     
     /// Send EXEC to the provided server.
    -async fn send_exec(
    +async fn send_non_pipelined_exec(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
       server: &Server,
    @@ -437,11 +623,11 @@
       command.transaction_id = Some(id);
       let rx = command.create_router_channel();
     
    -  write_command(inner, router, server, command, true, rx).await
    +  write_command(inner, router, server, command, true, Some(rx)).await
     }
     
     /// Send DISCARD to the provided server.
    -async fn send_discard(
    +async fn send_non_pipelined_discard(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
       server: &Server,
    @@ -453,7 +639,7 @@
       command.transaction_id = Some(id);
       let rx = command.create_router_channel();
     
    -  write_command(inner, router, server, command, true, rx).await
    +  write_command(inner, router, server, command, true, Some(rx)).await
     }
     
     fn update_hash_slot(commands: &mut [RedisCommand], slot: u16) {
    @@ -462,79 +648,178 @@
       }
     }
     
    -/// Run the transaction, following cluster redirects and reconnecting as needed.
    -// this would be a lot cleaner with GATs if we could abstract the inner loops with async closures
    -#[allow(unused_mut)]
    -pub async fn run(
    +/// Find the server that should receive the transaction, creating connections if needed.
    +async fn find_or_create_connection(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
    -  mut commands: Vec<RedisCommand>,
    -  watched: Option<RedisCommand>,
    +  command: &RedisCommand,
    +) -> Result<Option<Server>, RedisError> {
    +  if let Some(server) = command.cluster_node.as_ref() {
    +    Ok(Some(server.clone()))
    +  } else {
    +    match router.find_connection(command) {
    +      Some(server) => Ok(Some(server.clone())),
    +      None => {
    +        if inner.config.server.is_clustered() {
    +          // optimistically sync the cluster, then fall back to a full reconnect
    +          if router.sync_cluster().await.is_err() {
    +            utils::delay_cluster_sync(inner).await?;
    +            utils::reconnect_with_policy(inner, router).await?
    +          }
    +        } else {
    +          utils::reconnect_with_policy(inner, router).await?
    +        };
    +
    +        Ok(None)
    +      },
    +    }
    +  }
    +}
    +
    +fn build_pipeline(
    +  commands: &[RedisCommand],
    +  response: ResponseKind,
       id: u64,
    -  abort_on_error: bool,
    -  mut tx: ResponseSender,
    -) -> Result<(), RedisError> {
    -  if commands.is_empty() {
    -    let _ = tx.send(Ok(Resp3Frame::Null));
    -    return Ok(());
    +) -> Result<Vec<RedisCommand>, RedisError> {
    +  let mut pipeline = Vec::with_capacity(commands.len() + 1);
    +  let mut exec = RedisCommand::new(RedisCommandKind::Exec, vec![]);
    +  exec.can_pipeline = true;
    +  exec.skip_backpressure = true;
    +  exec.fail_fast = true;
    +  exec.transaction_id = Some(id);
    +  exec.response = response
    +    .duplicate()
    +    .ok_or_else(|| RedisError::new(RedisErrorKind::Unknown, "Invalid pipelined transaction response."))?;
    +  exec.response.set_expected_index(commands.len());
    +
    +  for (idx, command) in commands.iter().enumerate() {
    +    let mut response = response
    +      .duplicate()
    +      .ok_or_else(|| RedisError::new(RedisErrorKind::Unknown, "Invalid pipelined transaction response."))?;
    +    response.set_expected_index(idx);
    +    let mut command = command.duplicate(response);
    +    command.fail_fast = true;
    +    command.skip_backpressure = true;
    +    command.can_pipeline = true;
    +
    +    pipeline.push(command);
       }
    -  // each of the commands should have the same options
    -  let max_attempts = if commands[0].attempts_remaining == 0 {
    -    inner.max_command_attempts()
    -  } else {
    -    commands[0].attempts_remaining
    -  };
    -  let max_redirections = if commands[0].redirections_remaining == 0 {
    -    inner.connection.max_redirections
    -  } else {
    -    commands[0].redirections_remaining
    -  };
    +  pipeline.push(exec);
    +  Ok(pipeline)
    +}
     
    -  let mut attempted = 0;
    -  let mut redirections = 0;
    -  'outer: loop {
    -    _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +pub mod exec {
    +  use super::*;
    +  // TODO find a better way to combine these functions
     
    -    let server = if let Some(server) = commands[0].cluster_node.as_ref() {
    -      server.clone()
    +  /// Run the transaction, following cluster redirects and reconnecting as needed.
    +  #[allow(unused_mut)]
    +  pub async fn non_pipelined(
    +    inner: &RefCount<RedisClientInner>,
    +    router: &mut Router,
    +    mut commands: Vec<RedisCommand>,
    +    id: u64,
    +    abort_on_error: bool,
    +    mut tx: ResponseSender,
    +  ) -> Result<(), RedisError> {
    +    if commands.is_empty() {
    +      let _ = tx.send(Ok(Resp3Frame::Null));
    +      return Ok(());
    +    }
    +    // each of the commands should have the same options
    +    let max_attempts = if commands[0].attempts_remaining == 0 {
    +      inner.max_command_attempts()
         } else {
    -      match router.find_connection(&commands[0]) {
    -        Some(server) => server.clone(),
    -        None => {
    -          if inner.config.server.is_clustered() {
    -            // optimistically sync the cluster, then fall back to a full reconnect
    -            if router.sync_cluster().await.is_err() {
    -              utils::delay_cluster_sync(inner).await?;
    -              utils::reconnect_with_policy(inner, router).await?
    -            }
    -          } else {
    -            utils::reconnect_with_policy(inner, router).await?
    -          };
    +      commands[0].attempts_remaining
    +    };
    +    let max_redirections = if commands[0].redirections_remaining == 0 {
    +      inner.connection.max_redirections
    +    } else {
    +      commands[0].redirections_remaining
    +    };
     
    -          continue;
    -        },
    +    let mut attempted = 0;
    +    let mut redirections = 0;
    +    'outer: loop {
    +      _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +      let server = match find_or_create_connection(inner, router, &commands[0]).await? {
    +        Some(server) => server,
    +        None => continue,
    +      };
    +
    +      let mut idx = 0;
    +      if attempted > 0 {
    +        inner.counters.incr_redelivery_count();
           }
    -    };
    -    let mut idx = 0;
    -
    -    // send the WATCH command before any of the trx commands
    -    if let Some(watch) = watched.as_ref() {
    -      let watch = watch.duplicate(ResponseKind::Skip);
    -      let rx = watch.create_router_channel();
    -
    -      _debug!(
    -        inner,
    -        "Sending WATCH for {} keys in trx {} to {}",
    -        watch.args().len(),
    -        id,
    -        server
    -      );
    -      match write_command(inner, router, &server, watch, false, rx).await {
    -        Ok(TransactionResponse::Continue) => {
    -          _debug!(inner, "Successfully sent WATCH command before transaction {}.", id);
    +      // send each of the commands. the first one is always MULTI
    +      'inner: while idx < commands.len() {
    +        let command = commands[idx].duplicate(ResponseKind::Skip);
    +        let rx = command.create_router_channel();
    +
    +        // wait on each response before sending the next command in order to handle errors or follow cluster
    +        // redirections as quickly as possible.
    +        match write_command(inner, router, &server, command, abort_on_error, Some(rx)).await {
    +          Ok(TransactionResponse::Continue) => {
    +            idx += 1;
    +            continue 'inner;
    +          },
    +          Ok(TransactionResponse::Retry(error)) => {
    +            _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +            }
    +
    +            attempted += 1;
    +            if attempted >= max_attempts {
    +              let _ = tx.send(Err(error));
    +              return Ok(());
    +            } else {
    +              utils::reconnect_with_policy(inner, router).await?;
    +            }
    +
    +            continue 'outer;
    +          },
    +          Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    +            redirections += 1;
    +            if redirections > max_redirections {
    +              let _ = tx.send(Err(RedisError::new(
    +                RedisErrorKind::Cluster,
    +                "Too many cluster redirections.",
    +              )));
    +              return Ok(());
    +            }
    +
    +            update_hash_slot(&mut commands, slot);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +            }
    +            utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    +
    +            continue 'outer;
    +          },
    +          Ok(TransactionResponse::Finished(frame)) => {
    +            let _ = tx.send(Ok(frame));
    +            return Ok(());
    +          },
    +          Err(error) => {
    +            // fatal errors that end the transaction
    +            let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +            let _ = tx.send(Err(error));
    +            return Ok(());
    +          },
    +        }
    +      }
    +
    +      match send_non_pipelined_exec(inner, router, &server, id).await {
    +        Ok(TransactionResponse::Finished(frame)) => {
    +          let _ = tx.send(Ok(frame));
    +          return Ok(());
             },
             Ok(TransactionResponse::Retry(error)) => {
    -          _debug!(inner, "Retrying trx {} after WATCH error: {:?}.", id, error);
    +          _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    +          if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +          }
     
               attempted += 1;
               if attempted >= max_attempts {
    @@ -546,56 +831,131 @@
     
               continue 'outer;
             },
    -        Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    -          redirections += 1;
    -          if redirections > max_redirections {
    -            let _ = tx.send(Err(RedisError::new(
    -              RedisErrorKind::Cluster,
    -              "Too many cluster redirections.",
    -            )));
    -            return Ok(());
    -          }
    -
    -          _debug!(inner, "Recv {} redirection to {} for WATCH in trx {}", kind, server, id);
    -          update_hash_slot(&mut commands, slot);
    -          utils::delay_cluster_sync(inner).await?;
    -          utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    -          continue 'outer;
    +        Ok(TransactionResponse::Redirection((kind, slot, dest))) => {
    +          // doesn't make sense on EXEC, but return it as an error so it isn't lost
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +          let _ = tx.send(Err(RedisError::new(
    +            RedisErrorKind::Cluster,
    +            format!("{} {} {}", kind, slot, dest),
    +          )));
    +          return Ok(());
             },
    -        Ok(TransactionResponse::Finished(frame)) => {
    -          _warn!(inner, "Unexpected trx finished frame after WATCH.");
    -          let _ = tx.send(Ok(frame));
    +        Ok(TransactionResponse::Continue) => {
    +          _warn!(inner, "Invalid final response to transaction {}", id);
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +          let _ = tx.send(Err(RedisError::new_canceled()));
               return Ok(());
             },
             Err(error) => {
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
               let _ = tx.send(Err(error));
               return Ok(());
             },
           };
         }
    +  }
     
    -    if attempted > 0 {
    -      inner.counters.incr_redelivery_count();
    +  #[allow(unused_mut)]
    +  pub async fn pipelined(
    +    inner: &RefCount<RedisClientInner>,
    +    router: &mut Router,
    +    mut commands: Vec<RedisCommand>,
    +    id: u64,
    +    mut tx: ResponseSender,
    +  ) -> Result<(), RedisError> {
    +    if commands.is_empty() {
    +      let _ = tx.send(Ok(Resp3Frame::Null));
    +      return Ok(());
         }
    -    // send each of the commands. the first one is always MULTI
    -    'inner: while idx < commands.len() {
    -      let command = commands[idx].duplicate(ResponseKind::Skip);
    -      let rx = command.create_router_channel();
    +    // each of the commands should have the same options
    +    let max_attempts = if commands[0].attempts_remaining == 0 {
    +      inner.max_command_attempts()
    +    } else {
    +      commands[0].attempts_remaining
    +    };
    +    let max_redirections = if commands[0].redirections_remaining == 0 {
    +      inner.connection.max_redirections
    +    } else {
    +      commands[0].redirections_remaining
    +    };
     
    -      match write_command(inner, router, &server, command, abort_on_error, rx).await {
    -        Ok(TransactionResponse::Continue) => {
    -          idx += 1;
    -          continue 'inner;
    -        },
    -        Ok(TransactionResponse::Retry(error)) => {
    -          _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    -          if let Err(e) = send_discard(inner, router, &server, id).await {
    -            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -          }
    +    let mut attempted = 0;
    +    let mut redirections = 0;
    +    'outer: loop {
    +      _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +      let server = match find_or_create_connection(inner, router, &commands[0]).await? {
    +        Some(server) => server,
    +        None => continue,
    +      };
    +
    +      if attempted > 0 {
    +        inner.counters.incr_redelivery_count();
    +      }
    +      let (exec_tx, exec_rx) = oneshot_channel();
    +      let buf: Vec<_> = repeat(Resp3Frame::Null).take(commands.len() + 1).collect();
    +      // pipelined transactions buffer their results until a response to EXEC is received
    +      let response = ResponseKind::Buffer {
    +        error_early: false,
    +        expected:    commands.len() + 1,
    +        received:    RefCount::new(AtomicUsize::new(0)),
    +        tx:          RefCount::new(Mutex::new(Some(exec_tx))),
    +        frames:      RefCount::new(Mutex::new(buf)),
    +        index:       0,
    +      };
     
    +      // write each command in the pipeline
    +      let pipeline = build_pipeline(&commands, response, id)?;
    +      for command in pipeline.into_iter() {
    +        match write_command(inner, router, &server, command, false, None).await? {
    +          TransactionResponse::Continue => continue,
    +          TransactionResponse::Retry(error) => {
    +            _debug!(inner, "Retrying pipelined trx {} after error: {:?}", id, error);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending pipelined discard: {:?}", e);
    +            }
    +
    +            attempted += 1;
    +            if attempted >= max_attempts {
    +              let _ = tx.send(Err(error));
    +              return Ok(());
    +            } else {
    +              utils::reconnect_with_policy(inner, router).await?;
    +            }
    +            continue 'outer;
    +          },
    +          _ => {
    +            _error!(inner, "Unexpected pipelined write response.");
    +            let _ = tx.send(Err(RedisError::new(
    +              RedisErrorKind::Protocol,
    +              "Unexpected pipeline write response.",
    +            )));
    +            return Ok(());
    +          },
    +        }
    +      }
    +
    +      // wait on the response and deconstruct the output frames
    +      let mut response = match exec_rx.await.map_err(RedisError::from) {
    +        Ok(Ok(frame)) => match frame {
    +          Resp3Frame::Array { data, .. } => data,
    +          _ => {
    +            _error!(inner, "Unexpected pipelined exec response.");
    +            let _ = tx.send(Err(RedisError::new(
    +              RedisErrorKind::Protocol,
    +              "Unexpected pipeline exec response.",
    +            )));
    +            return Ok(());
    +          },
    +        },
    +        Ok(Err(err)) | Err(err) => {
    +          _debug!(
    +            inner,
    +            "Reconnecting and retrying pipelined transaction after error: {:?}",
    +            err
    +          );
               attempted += 1;
               if attempted >= max_attempts {
    -            let _ = tx.send(Err(error));
    +            let _ = tx.send(Err(err));
                 return Ok(());
               } else {
                 utils::reconnect_with_policy(inner, router).await?;
    @@ -603,79 +963,77 @@
     
               continue 'outer;
             },
    -        Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    -          redirections += 1;
    -          if redirections > max_redirections {
    -            let _ = tx.send(Err(RedisError::new(
    -              RedisErrorKind::Cluster,
    -              "Too many cluster redirections.",
    -            )));
    -            return Ok(());
    -          }
    +      };
    +      if response.is_empty() {
    +        let _ = tx.send(Err(RedisError::new(
    +          RedisErrorKind::Protocol,
    +          "Unexpected empty pipeline exec response.",
    +        )));
    +        return Ok(());
    +      }
     
    -          update_hash_slot(&mut commands, slot);
    -          if let Err(e) = send_discard(inner, router, &server, id).await {
    -            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -          }
    -          utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    +      // check the last result for EXECABORT
    +      let execabort = response
    +        .last()
    +        .and_then(|f| f.as_str())
    +        .map(|s| s.starts_with("EXECABORT"))
    +        .unwrap_or(false);
     
    -          continue 'outer;
    -        },
    -        Ok(TransactionResponse::Finished(frame)) => {
    -          let _ = tx.send(Ok(frame));
    -          return Ok(());
    -        },
    -        Err(error) => {
    -          // fatal errors that end the transaction
    -          let _ = send_discard(inner, router, &server, id).await;
    -          let _ = tx.send(Err(error));
    -          return Ok(());
    -        },
    -      }
    -    }
    +      if execabort {
    +        // find the first error, if it's a redirection then follow it and retry, otherwise return to the caller
    +        let first_error = response.iter().enumerate().find_map(|(idx, frame)| {
    +          if matches!(frame.kind(), FrameKind::SimpleError | FrameKind::BlobError) {
    +            Some(idx)
    +          } else {
    +            None
    +          }
    +        });
     
    -    match send_exec(inner, router, &server, id).await {
    -      Ok(TransactionResponse::Finished(frame)) => {
    -        let _ = tx.send(Ok(frame));
    -        return Ok(());
    -      },
    -      Ok(TransactionResponse::Retry(error)) => {
    -        _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    -        if let Err(e) = send_discard(inner, router, &server, id).await {
    -          _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -        }
    +        if let Some(idx) = first_error {
    +          let first_error_frame = response[idx].take();
    +          // check if error is a cluster redirection, otherwise return the error to the caller
    +          if first_error_frame.is_redirection() {
    +            redirections += 1;
    +            if redirections > max_redirections {
    +              let _ = tx.send(Err(RedisError::new(
    +                RedisErrorKind::Cluster,
    +                "Too many cluster redirections.",
    +              )));
    +              return Ok(());
    +            }
    +
    +            let (kind, slot, dest) = parse_cluster_error_frame(inner, &first_error_frame, &server)?;
    +            update_hash_slot(&mut commands, slot);
    +            utils::cluster_redirect_with_policy(inner, router, kind, slot, &dest).await?;
    +            continue 'outer;
    +          } else {
    +            // these errors are typically from the server, not from the connection layer
    +            let error = first_error_frame.as_str().map(pretty_error).unwrap_or_else(|| {
    +              RedisError::new(
    +                RedisErrorKind::Protocol,
    +                "Unexpected response to pipelined transaction.",
    +              )
    +            });
     
    -        attempted += 1;
    -        if attempted >= max_attempts {
    +            let _ = tx.send(Err(error));
    +            return Ok(());
    +          }
    +        } else {
    +          // return the EXECABORT error to the caller if there's no other error
    +          let error = response
    +            .pop()
    +            .and_then(|f| f.as_str().map(pretty_error))
    +            .unwrap_or_else(|| RedisError::new(RedisErrorKind::Protocol, "Invalid pipelined transaction response."));
               let _ = tx.send(Err(error));
               return Ok(());
    -        } else {
    -          utils::reconnect_with_policy(inner, router).await?;
             }
    -
    -        continue 'outer;
    -      },
    -      Ok(TransactionResponse::Redirection((kind, slot, dest))) => {
    -        // doesn't make sense on EXEC, but return it as an error so it isn't lost
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(RedisError::new(
    -          RedisErrorKind::Cluster,
    -          format!("{} {} {}", kind, slot, dest),
    -        )));
    -        return Ok(());
    -      },
    -      Ok(TransactionResponse::Continue) => {
    -        _warn!(inner, "Invalid final response to transaction {}", id);
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(RedisError::new_canceled()));
    -        return Ok(());
    -      },
    -      Err(error) => {
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(error));
    +      } else {
    +        // return the last frame to the caller
    +        let last = response.pop().unwrap_or(Resp3Frame::Null);
    +        let _ = tx.send(Ok(last));
             return Ok(());
    -      },
    -    };
    +      }
    +    }
       }
     }
     
    \ No newline at end of file diff --git a/docs/glommio/src/fred/types/config.rs.html b/docs/glommio/src/fred/types/config.rs.html index 8706a027..ef114159 100644 --- a/docs/glommio/src/fred/types/config.rs.html +++ b/docs/glommio/src/fred/types/config.rs.html @@ -1804,6 +1804,8 @@ 1804 1805 1806 +1807 +1808

    pub use crate::protocol::types::Server;
     use crate::{
       error::{RedisError, RedisErrorKind},
    @@ -1817,6 +1819,8 @@
     
     #[cfg(feature = "mocks")]
     use crate::mocks::Mocks;
    +#[cfg(feature = "credential-provider")]
    +use async_trait::async_trait;
     #[cfg(feature = "unix-sockets")]
     use std::path::PathBuf;
     #[cfg(any(feature = "mocks", feature = "credential-provider"))]
    diff --git a/docs/tokio/fred/clients/struct.Transaction.html b/docs/tokio/fred/clients/struct.Transaction.html
    index 05a8762b..9435a695 100644
    --- a/docs/tokio/fred/clients/struct.Transaction.html
    +++ b/docs/tokio/fred/clients/struct.Transaction.html
    @@ -1,9 +1,11 @@
    -Transaction in fred::clients - Rust

    Struct fred::clients::Transaction

    source ·
    pub struct Transaction { /* private fields */ }
    Available on crate feature transactions only.
    Expand description

    A cheaply cloneable transaction block.

    -

    Implementations§

    source§

    impl Transaction

    source

    pub fn id(&self) -> u64

    An ID identifying the underlying transaction state.

    -
    source

    pub fn reset(&self)

    Clear the internal command buffer and watched keys.

    -
    source

    pub fn len(&self) -> usize

    Read the number of commands queued to run.

    -
    source

    pub fn watched_len(&self) -> usize

    Read the number of keys to WATCH before the starting the transaction.

    -
    source

    pub async fn exec<R>(&self, abort_on_error: bool) -> Result<R, RedisError>
    where +Transaction in fred::clients - Rust

    Struct fred::clients::Transaction

    source ·
    pub struct Transaction { /* private fields */ }
    Available on crate feature transactions only.
    Expand description

    A cheaply cloneable transaction block.

    +

    Implementations§

    source§

    impl Transaction

    source

    pub fn id(&self) -> u64

    An ID identifying the underlying transaction state.

    +
    source

    pub fn reset(&self)

    Clear the internal command buffer and watched keys.

    +
    source

    pub fn len(&self) -> usize

    Read the number of commands queued to run.

    +
    source

    pub fn pipeline(&self, val: bool)

    Whether to pipeline commands in the transaction.

    +

    Note: pipelined transactions should only be used with Redis version >=2.6.5.

    +
    source

    pub fn watched_len(&self) -> usize

    👎Deprecated since 9.2.0: Please use WATCH with clients from an ExclusivePool instead.

    Read the number of keys to WATCH before the starting the transaction.

    +
    source

    pub async fn exec<R>(&self, abort_on_error: bool) -> Result<R, RedisError>
    where R: FromRedis,

    Executes all previously queued commands in a transaction.

    If abort_on_error is true the client will automatically send DISCARD if an error is received from any of the commands prior to EXEC. This does not apply to MOVED or ASK errors, which wll be followed @@ -22,11 +24,11 @@ assert_eq!((foo, bar), (1, 2)); Ok(()) }

    -

    source

    pub fn watch_before<K>(&self, keys: K)
    where - K: Into<MultipleKeys>,

    Send the WATCH command with the provided keys before starting the transaction.

    -
    source

    pub fn hash_slot(&self) -> Option<u16>

    Read the hash slot against which this transaction will run, if known.

    -
    source

    pub fn cluster_node(&self) -> Option<Server>

    Read the server ID against which this transaction will run, if known.

    -

    Trait Implementations§

    source§

    impl AclInterface for Transaction

    Available on crate feature i-acl only.
    source

    pub fn watch_before<K>(&self, keys: K)
    where + K: Into<MultipleKeys>,

    👎Deprecated since 9.2.0: Please use WATCH with clients from an ExclusivePool instead.

    Send the WATCH command with the provided keys before starting the transaction.

    +
    source

    pub fn hash_slot(&self) -> Option<u16>

    Read the hash slot against which this transaction will run, if known.

    +
    source

    pub fn cluster_node(&self) -> Option<Server>

    Read the server ID against which this transaction will run, if known.

    +

    Trait Implementations§

    source§

    impl AclInterface for Transaction

    Available on crate feature i-acl only.
    source§

    fn acl_setuser<S, V>( &self, username: S, rules: V, @@ -62,7 +64,7 @@ &self, count: Option<u32>, ) -> impl Future<Output = RedisResult<R>> + Send
    where - R: FromRedis,

    Read count recent ACL security events. Read more
    source§

    fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>> + Send

    Clear the ACL security events logs. Read more
    source§

    impl AuthInterface for Transaction

    source§

    fn auth<S>( + R: FromRedis,

    Read count recent ACL security events. Read more
    source§

    fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>> + Send

    Clear the ACL security events logs. Read more
    source§

    impl AuthInterface for Transaction

    source§

    fn auth<S>( &self, username: Option<String>, password: S, @@ -72,7 +74,7 @@ version: RespVersion, auth: Option<(Str, Str)>, setname: Option<Str>, -) -> impl Future<Output = RedisResult<()>> + Send

    Switch to a different protocol, optionally authenticating in the process. Read more
    source§

    impl ClientInterface for Transaction

    Available on crate feature i-client only.
    source§

    fn client_id<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where +) -> impl Future<Output = RedisResult<()>> + Send

    Switch to a different protocol, optionally authenticating in the process. Read more
    source§

    impl ClientInterface for Transaction

    Available on crate feature i-client only.
    source§

    fn client_id<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Return the ID of the current connection. Read more
    source§

    fn connection_ids(&self) -> impl Future<Output = HashMap<Server, i64>> + Send

    Read the connection IDs for the active connections to each server. Read more
    source§

    fn client_info<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    The command returns information and statistics about the current client connection in a mostly human readable format. Read more
    source§

    fn client_kill<R>( @@ -131,7 +133,7 @@ enabled: bool, ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Available on crate feature i-tracking only.
    This command controls the tracking of the keys in the next command executed by the connection, when tracking is -enabled in OPTIN or OPTOUT mode. Read more
    source§

    impl ClientLike for Transaction

    source§

    fn id(&self) -> &str

    The unique ID identifying this client and underlying connections.
    source§

    fn client_config(&self) -> RedisConfig

    Read the config used to initialize the client.
    source§

    fn client_reconnect_policy(&self) -> Option<ReconnectPolicy>

    Read the reconnect policy used to initialize the client.
    source§

    fn connection_config(&self) -> &ConnectionConfig

    Read the connection config used to initialize the client.
    source§

    fn protocol_version(&self) -> RespVersion

    Read the RESP version used by the client when communicating with the server.
    source§

    fn has_reconnect_policy(&self) -> bool

    Whether the client has a reconnection policy.
    source§

    fn is_pipelined(&self) -> bool

    Whether the client will automatically pipeline commands.
    source§

    fn is_clustered(&self) -> bool

    Whether the client is connected to a cluster.
    source§

    fn uses_sentinels(&self) -> bool

    Whether the client uses the sentinel interface.
    source§

    fn update_perf_config(&self, config: PerformanceConfig)

    Update the internal PerformanceConfig in place with new values.
    source§

    fn perf_config(&self) -> PerformanceConfig

    Read the PerformanceConfig associated with this client.
    source§

    fn state(&self) -> ClientState

    Read the state of the underlying connection(s). Read more
    source§

    fn is_connected(&self) -> bool

    Whether all underlying connections are healthy.
    source§

    fn active_connections( +enabled in OPTIN or OPTOUT mode. Read more

    source§

    impl ClientLike for Transaction

    source§

    fn id(&self) -> &str

    The unique ID identifying this client and underlying connections.
    source§

    fn client_config(&self) -> RedisConfig

    Read the config used to initialize the client.
    source§

    fn client_reconnect_policy(&self) -> Option<ReconnectPolicy>

    Read the reconnect policy used to initialize the client.
    source§

    fn connection_config(&self) -> &ConnectionConfig

    Read the connection config used to initialize the client.
    source§

    fn protocol_version(&self) -> RespVersion

    Read the RESP version used by the client when communicating with the server.
    source§

    fn has_reconnect_policy(&self) -> bool

    Whether the client has a reconnection policy.
    source§

    fn is_pipelined(&self) -> bool

    Whether the client will automatically pipeline commands.
    source§

    fn is_clustered(&self) -> bool

    Whether the client is connected to a cluster.
    source§

    fn uses_sentinels(&self) -> bool

    Whether the client uses the sentinel interface.
    source§

    fn update_perf_config(&self, config: PerformanceConfig)

    Update the internal PerformanceConfig in place with new values.
    source§

    fn perf_config(&self) -> PerformanceConfig

    Read the PerformanceConfig associated with this client.
    source§

    fn state(&self) -> ClientState

    Read the state of the underlying connection(s). Read more
    source§

    fn is_connected(&self) -> bool

    Whether all underlying connections are healthy.
    source§

    fn active_connections( &self, ) -> impl Future<Output = Result<Vec<Server>, RedisError>> + Send

    Read the set of active connections managed by the client.
    source§

    fn server_version(&self) -> Option<Version>

    Read the server version, if known.
    source§

    fn set_resolver(&self, resolver: Arc<dyn Resolve>) -> impl Future + Send

    Available on crate feature dns only.
    Override the DNS resolution logic for the client.
    source§

    fn connect(&self) -> ConnectHandle

    Connect to the server. Read more
    source§

    fn force_reconnection(&self) -> impl Future<Output = RedisResult<()>> + Send

    Force a reconnection to the server(s). Read more
    source§

    fn wait_for_connect(&self) -> impl Future<Output = RedisResult<()>> + Send

    Wait for the result of the next connection attempt. Read more
    source§

    fn init(&self) -> impl Future<Output = RedisResult<ConnectHandle>> + Send

    Initialize a new routing and connection task and wait for it to connect successfully. Read more
    source§

    fn quit(&self) -> impl Future<Output = RedisResult<()>> + Send

    Close the connection to the Redis server. The returned future resolves when the command has been written to the socket, not when the connection has been fully closed. Some time after this future resolves the future @@ -163,7 +165,7 @@ ) -> impl Future<Output = RedisResult<Resp3Frame>> + Send

    Run a custom command similar to custom, but return the response frame directly without any -parsing. Read more
    source§

    fn with_options(&self, options: &Options) -> WithOptions<Self>

    Customize various configuration options on commands.
    source§

    impl Clone for Transaction

    source§

    fn clone(&self) -> Transaction

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl ConfigInterface for Transaction

    Available on crate feature i-config only.
    source§

    fn config_resetstat(&self) -> impl Future<Output = RedisResult<()>> + Send

    Resets the statistics reported by Redis using the INFO command. Read more
    source§

    fn config_rewrite(&self) -> impl Future<Output = RedisResult<()>> + Send

    The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal +parsing. Read more
    source§

    fn with_options(&self, options: &Options) -> WithOptions<Self>

    Customize various configuration options on commands.
    source§

    impl Clone for Transaction

    source§

    fn clone(&self) -> Transaction

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl ConfigInterface for Transaction

    Available on crate feature i-config only.
    source§

    fn config_resetstat(&self) -> impl Future<Output = RedisResult<()>> + Send

    Resets the statistics reported by Redis using the INFO command. Read more
    source§

    fn config_rewrite(&self) -> impl Future<Output = RedisResult<()>> + Send

    The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal changes needed to make it reflect the configuration currently used by the server, which may be different compared to the original one because of the use of the CONFIG SET command. Read more
    source§

    fn config_get<R, S>( &self, @@ -177,7 +179,7 @@ ) -> impl Future<Output = RedisResult<()>> + Send
    where P: Into<Str> + Send, V: TryInto<RedisValue> + Send, - V::Error: Into<RedisError> + Send,

    The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis. Read more
    source§

    impl Debug for Transaction

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FunctionInterface for Transaction

    Available on crate feature i-scripts only.
    source§

    fn fcall<R, F, K, V>( + V::Error: Into<RedisError> + Send,

    The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis. Read more
    source§

    impl Debug for Transaction

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FunctionInterface for Transaction

    Available on crate feature i-scripts only.
    source§

    fn fcall<R, F, K, V>( &self, func: F, keys: K, @@ -250,7 +252,7 @@ P: TryInto<FnPolicy> + Send, P::Error: Into<RedisError> + Send,

    Restore libraries from the serialized payload on all cluster nodes concurrently. Read more
    source§

    fn function_stats<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Return information about the function that’s currently running and information about the available execution -engines. Read more
    source§

    impl GeoInterface for Transaction

    Available on crate feature i-geo only.
    source§

    fn geoadd<R, K, V>( +engines. Read more

    source§

    impl GeoInterface for Transaction

    Available on crate feature i-geo only.
    source§

    fn geoadd<R, K, V>( &self, key: K, options: Option<SetOptions>, @@ -355,7 +357,7 @@ R: FromRedis, D: Into<RedisKey> + Send, S: Into<RedisKey> + Send,

    This command is like GEOSEARCH, but stores the result in destination key. Returns the number of members added to -the destination key. Read more
    source§

    impl HashesInterface for Transaction

    Available on crate feature i-hashes only.
    source§

    fn hgetall<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>> + Send
    where +the destination key. Read more

    source§

    impl HashesInterface for Transaction

    Available on crate feature i-hashes only.
    source§

    fn hgetall<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, K: Into<RedisKey> + Send,

    Returns all fields and values of the hash stored at key. Read more
    source§

    fn hdel<R, K, F>( &self, @@ -447,7 +449,7 @@ K: Into<RedisKey> + Send, F: Into<RedisKey> + Send,

    Returns the string length of the value associated with field in the hash stored at key. Read more
    source§

    fn hvals<R, K>(&self, key: K) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, - K: Into<RedisKey> + Send,

    Returns all values in the hash stored at key. Read more
    source§

    impl HyperloglogInterface for Transaction

    Available on crate feature i-hyperloglog only.
    source§

    fn pfadd<R, K, V>( + K: Into<RedisKey> + Send,

    Returns all values in the hash stored at key. Read more
    source§

    impl HyperloglogInterface for Transaction

    Available on crate feature i-hyperloglog only.
    source§

    fn pfadd<R, K, V>( &self, key: K, elements: V, @@ -467,7 +469,7 @@ R: FromRedis, D: Into<RedisKey> + Send, S: Into<MultipleKeys> + Send,

    Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the -observed sets of the source HyperLogLog structures. Read more
    source§

    impl KeysInterface for Transaction

    Available on crate feature i-keys only.
    source§

    fn watch<K>(&self, keys: K) -> impl Future<Output = RedisResult<()>> + Send
    where +observed sets of the source HyperLogLog structures. Read more

    source§

    impl KeysInterface for Transaction

    Available on crate feature i-keys only.
    source§

    fn watch<K>(&self, keys: K) -> impl Future<Output = RedisResult<()>> + Send
    where K: Into<MultipleKeys> + Send,

    Marks the given keys to be watched for conditional execution of a transaction. Read more
    source§

    fn unwatch(&self) -> impl Future<Output = RedisResult<()>> + Send

    Flushes all the previously watched keys for a transaction. Read more
    source§

    fn randomkey<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Return a random key from the currently selected database. Read more
    source§

    fn copy<R, S, D>( &self, @@ -644,7 +646,7 @@ ) -> impl Future<Output = Result<R, RedisError>> + Send
    where R: FromRedis, K1: Into<RedisKey> + Send, - K2: Into<RedisKey> + Send,

    Runs the longest common subsequence algorithm on two keys. Read more
    source§

    impl ListInterface for Transaction

    Available on crate feature i-lists only.
    source§

    fn blmpop<R, K>( + K2: Into<RedisKey> + Send,

    Runs the longest common subsequence algorithm on two keys. Read more
    source§

    impl ListInterface for Transaction

    Available on crate feature i-lists only.
    source§

    fn blmpop<R, K>( &self, timeout: f64, keys: K, @@ -843,7 +845,7 @@ R: FromRedis, K: Into<RedisKey> + Send, S: Into<MultipleStrings> + Send,

    Read-only variant of the SORT command. It is exactly like the original SORT but refuses the STORE option and can -safely be used in read-only replicas. Read more
    source§

    impl MemoryInterface for Transaction

    Available on crate feature i-memory only.
    source§

    fn memory_doctor<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where +safely be used in read-only replicas. Read more

    source§

    impl MemoryInterface for Transaction

    Available on crate feature i-memory only.
    source§

    fn memory_doctor<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    The MEMORY DOCTOR command reports about different memory-related issues that the Redis server experiences, and advises about possible remedies. Read more
    source§

    fn memory_malloc_stats<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    The MEMORY MALLOC-STATS command provides an internal statistics report from the memory allocator. Read more
    source§

    fn memory_purge(&self) -> impl Future<Output = RedisResult<()>> + Send

    The MEMORY PURGE command attempts to purge dirty pages so these can be reclaimed by the allocator. Read more
    source§

    fn memory_stats<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where @@ -853,8 +855,8 @@ samples: Option<u32>, ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, - K: Into<RedisKey> + Send,

    The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM. Read more
    source§

    impl PartialEq for Transaction

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl PubsubInterface for Transaction

    Available on crate feature i-pubsub only.
    The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM. Read more
    source§

    impl PartialEq for Transaction

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl PubsubInterface for Transaction

    Available on crate feature i-pubsub only.
    source§

    fn subscribe<S>( &self, channels: S, ) -> impl Future<Output = RedisResult<()>> + Send
    where @@ -915,7 +917,7 @@ channels: S, ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, - S: Into<MultipleStrings> + Send,

    Returns the number of subscribers for the specified shard channels. Read more
    source§

    impl RediSearchInterface for Transaction

    Available on crate feature i-redisearch only.
    source§

    fn ft_list<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where + S: Into<MultipleStrings> + Send,

    Returns the number of subscribers for the specified shard channels. Read more
    source§

    impl RediSearchInterface for Transaction

    Available on crate feature i-redisearch only.
    source§

    fn ft_list<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Returns a list of all existing indexes. Read more
    source§

    fn ft_aggregate<R, I, Q>( &self, index: I, @@ -1089,7 +1091,7 @@ ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, I: Into<Str> + Send, - F: Into<Str> + Send,

    Return a distinct set of values indexed in a Tag field. Read more
    source§

    impl RedisJsonInterface for Transaction

    Available on crate feature i-redis-json only.
    source§

    fn json_arrappend<R, K, P, V>( + F: Into<Str> + Send,

    Return a distinct set of values indexed in a Tag field. Read more
    source§

    impl RedisJsonInterface for Transaction

    Available on crate feature i-redis-json only.
    source§

    fn json_arrappend<R, K, P, V>( &self, key: K, path: P, @@ -1270,7 +1272,7 @@ ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, K: Into<RedisKey> + Send, - P: Into<Str> + Send,

    Report the type of JSON value at path. Read more
    source§

    impl ServerInterface for Transaction

    Available on crate feature i-server only.
    source§

    fn bgrewriteaof<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where + P: Into<Str> + Send,

    Report the type of JSON value at path. Read more
    source§

    impl ServerInterface for Transaction

    Available on crate feature i-server only.
    source§

    fn bgrewriteaof<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Instruct Redis to start an Append Only File rewrite process. Read more
    source§

    fn bgsave<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Save the DB in background. Read more
    source§

    fn dbsize<R>(&self) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis,

    Return the number of keys in the selected database. Read more
    source§

    fn select(&self, db: u8) -> impl Future<Output = RedisResult<()>> + Send

    Select the database this client should use. Read more
    source§

    fn failover( @@ -1288,7 +1290,7 @@ ) -> impl Future<Output = Result<R, RedisError>> + Send
    where R: FromRedis,

    This command blocks the current client until all the previous write commands are successfully transferred and acknowledged by at least the specified number of replicas. If the timeout, specified in milliseconds, is -reached, the command returns even if the specified number of replicas were not yet reached. Read more
    source§

    fn sentinel_primary(&self) -> Option<Server>

    Read the primary Redis server identifier returned from the sentinel nodes.
    source§

    fn sentinel_nodes(&self) -> Option<Vec<Server>>

    Read the set of known sentinel nodes.
    source§

    impl SetsInterface for Transaction

    Available on crate feature i-sets only.
    source§

    fn sadd<R, K, V>( +reached, the command returns even if the specified number of replicas were not yet reached. Read more

    source§

    fn sentinel_primary(&self) -> Option<Server>

    Read the primary Redis server identifier returned from the sentinel nodes.
    source§

    fn sentinel_nodes(&self) -> Option<Vec<Server>>

    Read the set of known sentinel nodes.
    source§

    impl SetsInterface for Transaction

    Available on crate feature i-sets only.
    source§

    fn sadd<R, K, V>( &self, key: K, members: V, @@ -1373,7 +1375,7 @@ ) -> impl Future<Output = RedisResult<R>> + Send
    where R: FromRedis, D: Into<RedisKey> + Send, - K: Into<MultipleKeys> + Send,

    This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination. Read more
    source§

    impl SortedSetsInterface for Transaction

    Available on crate feature i-sorted-sets only.
    This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination. Read more
    source§

    impl SortedSetsInterface for Transaction

    Available on crate feature i-sorted-sets only.
    source§

    fn bzmpop<R, K>( &self, timeout: f64, keys: K, @@ -1682,7 +1684,7 @@ R: FromRedis, K: Into<RedisKey> + Send, V: TryInto<MultipleValues> + Send, - V::Error: Into<RedisError> + Send,

    Returns the scores associated with the specified members in the sorted set stored at key. Read more
    source§

    impl StreamsInterface for Transaction

    Available on crate feature i-streams only.
    Returns the scores associated with the specified members in the sorted set stored at key. Read more
    source§

    impl StreamsInterface for Transaction

    Available on crate feature i-streams only.
    source§

    fn xinfo_consumers<R, K, S>( &self, key: K, groupname: S, @@ -1975,7 +1977,7 @@ R: FromRedis, K: Into<RedisKey> + Send, G: Into<Str> + Send, - A: Into<XPendingArgs> + Send,

    Inspect the list of pending messages in a consumer group. Read more
    source§

    impl TimeSeriesInterface for Transaction

    Available on crate feature i-time-series only.
    source§

    fn ts_add<R, K, T, L>( + A: Into<XPendingArgs> + Send,

    Inspect the list of pending messages in a consumer group. Read more
    source§

    impl TimeSeriesInterface for Transaction

    Available on crate feature i-time-series only.
    source§

    fn ts_add<R, K, T, L>( &self, key: K, timestamp: T, @@ -2172,7 +2174,7 @@ F::Error: Into<RedisError> + Send, T: TryInto<GetTimestamp> + Send, T::Error: Into<RedisError> + Send, - I: IntoIterator<Item = i64> + Send,

    Query a range in reverse direction. Read more
    source§

    impl Eq for Transaction

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + I: IntoIterator<Item = i64> + Send,

    Query a range in reverse direction. Read more
    source§

    impl Eq for Transaction

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/interfaces/trait.AclInterface.html b/docs/tokio/fred/interfaces/trait.AclInterface.html index 3f27d0f1..b17197e7 100644 --- a/docs/tokio/fred/interfaces/trait.AclInterface.html +++ b/docs/tokio/fred/interfaces/trait.AclInterface.html @@ -105,4 +105,4 @@

    https://redis.io/commands/acl-log

    source

    fn acl_log_reset(&self) -> impl Future<Output = RedisResult<()>> + Send

    Clear the ACL security events logs.

    https://redis.io/commands/acl-log

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.AuthInterface.html b/docs/tokio/fred/interfaces/trait.AuthInterface.html index c13a7176..6c3fa42f 100644 --- a/docs/tokio/fred/interfaces/trait.AuthInterface.html +++ b/docs/tokio/fred/interfaces/trait.AuthInterface.html @@ -31,4 +31,4 @@ ) -> impl Future<Output = RedisResult<()>> + Send

    Switch to a different protocol, optionally authenticating in the process.

    If running against clustered servers this function will issue the HELLO command to each server concurrently.

    https://redis.io/commands/hello

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl AuthInterface for RedisClient

    source§

    impl AuthInterface for SentinelClient

    source§

    impl AuthInterface for SubscriberClient

    source§

    impl AuthInterface for Transaction

    source§

    impl<C: AuthInterface> AuthInterface for Pipeline<C>

    Available on crate feature i-server only.
    source§

    impl<C: AuthInterface> AuthInterface for WithOptions<C>

    Available on crate feature i-server only.
    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl AuthInterface for RedisClient

    source§

    impl AuthInterface for SentinelClient

    source§

    impl AuthInterface for SubscriberClient

    source§

    impl AuthInterface for Transaction

    source§

    impl<C: AuthInterface> AuthInterface for Pipeline<C>

    Available on crate feature i-server only.
    source§

    impl<C: AuthInterface> AuthInterface for WithOptions<C>

    Available on crate feature i-server only.
    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.ClientInterface.html b/docs/tokio/fred/interfaces/trait.ClientInterface.html index f1f91535..6684e1c4 100644 --- a/docs/tokio/fred/interfaces/trait.ClientInterface.html +++ b/docs/tokio/fred/interfaces/trait.ClientInterface.html @@ -175,4 +175,4 @@

    This function is designed to work against a specific server. See with_options for a variation that works with all deployment types.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.ClientLike.html b/docs/tokio/fred/interfaces/trait.ClientLike.html index a5f3083f..289c70b0 100644 --- a/docs/tokio/fred/interfaces/trait.ClientLike.html +++ b/docs/tokio/fred/interfaces/trait.ClientLike.html @@ -162,4 +162,4 @@ parsing.

    Note: RESP2 frames from the server are automatically converted to the RESP3 format when parsed by the client.

    source

    fn with_options(&self, options: &Options) -> WithOptions<Self>

    Customize various configuration options on commands.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.ConfigInterface.html b/docs/tokio/fred/interfaces/trait.ConfigInterface.html index dd5d44be..32e650db 100644 --- a/docs/tokio/fred/interfaces/trait.ConfigInterface.html +++ b/docs/tokio/fred/interfaces/trait.ConfigInterface.html @@ -39,4 +39,4 @@ V: TryInto<RedisValue> + Send, V::Error: Into<RedisError> + Send,

    The CONFIG SET command is used in order to reconfigure the server at run time without the need to restart Redis.

    https://redis.io/commands/config-set

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.FunctionInterface.html b/docs/tokio/fred/interfaces/trait.FunctionInterface.html index 915d8c67..6fc70a68 100644 --- a/docs/tokio/fred/interfaces/trait.FunctionInterface.html +++ b/docs/tokio/fred/interfaces/trait.FunctionInterface.html @@ -193,4 +193,4 @@ engines.

    Note: This command runs on a backchannel connection to the server.

    https://redis.io/commands/function-stats/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.GeoInterface.html b/docs/tokio/fred/interfaces/trait.GeoInterface.html index 0b4c3a66..bd34aec7 100644 --- a/docs/tokio/fred/interfaces/trait.GeoInterface.html +++ b/docs/tokio/fred/interfaces/trait.GeoInterface.html @@ -229,4 +229,4 @@ S: Into<RedisKey> + Send,

    This command is like GEOSEARCH, but stores the result in destination key. Returns the number of members added to the destination key.

    https://redis.io/commands/geosearchstore

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.HashesInterface.html b/docs/tokio/fred/interfaces/trait.HashesInterface.html index c46da92e..e6afdf10 100644 --- a/docs/tokio/fred/interfaces/trait.HashesInterface.html +++ b/docs/tokio/fred/interfaces/trait.HashesInterface.html @@ -233,4 +233,4 @@ R: FromRedis, K: Into<RedisKey> + Send,

    Returns all values in the hash stored at key.

    https://redis.io/commands/hvals

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.HyperloglogInterface.html b/docs/tokio/fred/interfaces/trait.HyperloglogInterface.html index 6d79b5b6..07052187 100644 --- a/docs/tokio/fred/interfaces/trait.HyperloglogInterface.html +++ b/docs/tokio/fred/interfaces/trait.HyperloglogInterface.html @@ -52,4 +52,4 @@ S: Into<MultipleKeys> + Send,

    Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed sets of the source HyperLogLog structures.

    https://redis.io/commands/pfmerge

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.KeysInterface.html b/docs/tokio/fred/interfaces/trait.KeysInterface.html index 699d1513..f47c4075 100644 --- a/docs/tokio/fred/interfaces/trait.KeysInterface.html +++ b/docs/tokio/fred/interfaces/trait.KeysInterface.html @@ -480,4 +480,4 @@ K1: Into<RedisKey> + Send, K2: Into<RedisKey> + Send,

    Runs the longest common subsequence algorithm on two keys.

    https://redis.io/commands/lcs/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.ListInterface.html b/docs/tokio/fred/interfaces/trait.ListInterface.html index 099efd1d..36839d15 100644 --- a/docs/tokio/fred/interfaces/trait.ListInterface.html +++ b/docs/tokio/fred/interfaces/trait.ListInterface.html @@ -463,4 +463,4 @@ S: Into<MultipleStrings> + Send,

    Read-only variant of the SORT command. It is exactly like the original SORT but refuses the STORE option and can safely be used in read-only replicas.

    https://redis.io/commands/sort_ro/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.MemoryInterface.html b/docs/tokio/fred/interfaces/trait.MemoryInterface.html index b6ed88a8..3672d897 100644 --- a/docs/tokio/fred/interfaces/trait.MemoryInterface.html +++ b/docs/tokio/fred/interfaces/trait.MemoryInterface.html @@ -37,4 +37,4 @@ R: FromRedis, K: Into<RedisKey> + Send,

    The MEMORY USAGE command reports the number of bytes that a key and its value require to be stored in RAM.

    https://redis.io/commands/memory-usage

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.PubsubInterface.html b/docs/tokio/fred/interfaces/trait.PubsubInterface.html index 864b1c4e..9a2782b0 100644 --- a/docs/tokio/fred/interfaces/trait.PubsubInterface.html +++ b/docs/tokio/fred/interfaces/trait.PubsubInterface.html @@ -167,4 +167,4 @@ R: FromRedis, S: Into<MultipleStrings> + Send,

    Returns the number of subscribers for the specified shard channels.

    https://redis.io/commands/pubsub-shardnumsub/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.RediSearchInterface.html b/docs/tokio/fred/interfaces/trait.RediSearchInterface.html index 0cf4e817..651048e9 100644 --- a/docs/tokio/fred/interfaces/trait.RediSearchInterface.html +++ b/docs/tokio/fred/interfaces/trait.RediSearchInterface.html @@ -433,4 +433,4 @@ I: Into<Str> + Send, F: Into<Str> + Send,

    Return a distinct set of values indexed in a Tag field.

    https://redis.io/docs/latest/commands/ft.tagvals/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.RedisJsonInterface.html b/docs/tokio/fred/interfaces/trait.RedisJsonInterface.html index 27f84265..ffb55d87 100644 --- a/docs/tokio/fred/interfaces/trait.RedisJsonInterface.html +++ b/docs/tokio/fred/interfaces/trait.RedisJsonInterface.html @@ -459,4 +459,4 @@

    §String K: Into<RedisKey> + Send, P: Into<Str> + Send,

    Report the type of JSON value at path.

    https://redis.io/commands/json.type/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.ServerInterface.html b/docs/tokio/fred/interfaces/trait.ServerInterface.html index 45badf56..c72d8d7f 100644 --- a/docs/tokio/fred/interfaces/trait.ServerInterface.html +++ b/docs/tokio/fred/interfaces/trait.ServerInterface.html @@ -59,4 +59,4 @@

    https://redis.io/commands/wait/

    source

    fn sentinel_primary(&self) -> Option<Server>

    Read the primary Redis server identifier returned from the sentinel nodes.

    source

    fn sentinel_nodes(&self) -> Option<Vec<Server>>

    Read the set of known sentinel nodes.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.SetsInterface.html b/docs/tokio/fred/interfaces/trait.SetsInterface.html index 5432014b..e2e9a527 100644 --- a/docs/tokio/fred/interfaces/trait.SetsInterface.html +++ b/docs/tokio/fred/interfaces/trait.SetsInterface.html @@ -230,4 +230,4 @@ D: Into<RedisKey> + Send, K: Into<MultipleKeys> + Send,

    This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination.

    https://redis.io/commands/sunionstore

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.SortedSetsInterface.html b/docs/tokio/fred/interfaces/trait.SortedSetsInterface.html index 9ff2d91d..a0cb2ac6 100644 --- a/docs/tokio/fred/interfaces/trait.SortedSetsInterface.html +++ b/docs/tokio/fred/interfaces/trait.SortedSetsInterface.html @@ -704,4 +704,4 @@ V: TryInto<MultipleValues> + Send, V::Error: Into<RedisError> + Send,

    Returns the scores associated with the specified members in the sorted set stored at key.

    https://redis.io/commands/zmscore

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.StreamsInterface.html b/docs/tokio/fred/interfaces/trait.StreamsInterface.html index 89d5c187..8fc32284 100644 --- a/docs/tokio/fred/interfaces/trait.StreamsInterface.html +++ b/docs/tokio/fred/interfaces/trait.StreamsInterface.html @@ -700,4 +700,4 @@ G: Into<Str> + Send, A: Into<XPendingArgs> + Send,

    Inspect the list of pending messages in a consumer group.

    https://redis.io/commands/xpending

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/interfaces/trait.TimeSeriesInterface.html b/docs/tokio/fred/interfaces/trait.TimeSeriesInterface.html index 201f672b..30df507c 100644 --- a/docs/tokio/fred/interfaces/trait.TimeSeriesInterface.html +++ b/docs/tokio/fred/interfaces/trait.TimeSeriesInterface.html @@ -450,4 +450,4 @@ T::Error: Into<RedisError> + Send, I: IntoIterator<Item = i64> + Send,

    Query a range in reverse direction.

    https://redis.io/commands/ts.revrange/

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/fred/mocks/index.html b/docs/tokio/fred/mocks/index.html index 3c7750e1..35b604cf 100644 --- a/docs/tokio/fred/mocks/index.html +++ b/docs/tokio/fred/mocks/index.html @@ -1,4 +1,4 @@ -fred::mocks - Rust

    Module fred::mocks

    source ·
    Available on crate feature mocks only.
    Expand description

    An interface for mocking Redis commands.

    +fred::mocks - Rust

    Module fred::mocks

    source ·
    Available on crate feature mocks only.
    Expand description

    An interface for mocking Redis commands.

    There are several patterns for utilizing a mocking layer in tests. In some cases a simple “echo” interface is enough, or in others callers may need to buffer a series of commands before performing any assertions, etc. More complicated test scenarios may require storing and operating on real values.

    diff --git a/docs/tokio/fred/types/constant.DEFAULT_JITTER_MS.html b/docs/tokio/fred/types/constant.DEFAULT_JITTER_MS.html index e3c6735d..3cb9e9d0 100644 --- a/docs/tokio/fred/types/constant.DEFAULT_JITTER_MS.html +++ b/docs/tokio/fred/types/constant.DEFAULT_JITTER_MS.html @@ -1,2 +1,2 @@ -DEFAULT_JITTER_MS in fred::types - Rust

    Constant fred::types::DEFAULT_JITTER_MS

    source ·
    pub const DEFAULT_JITTER_MS: u32 = 100;
    Expand description

    The default amount of jitter when waiting to reconnect.

    +DEFAULT_JITTER_MS in fred::types - Rust

    Constant fred::types::DEFAULT_JITTER_MS

    source ·
    pub const DEFAULT_JITTER_MS: u32 = 100;
    Expand description

    The default amount of jitter when waiting to reconnect.

    \ No newline at end of file diff --git a/docs/tokio/fred/types/enum.BackpressurePolicy.html b/docs/tokio/fred/types/enum.BackpressurePolicy.html index db370765..4fe18575 100644 --- a/docs/tokio/fred/types/enum.BackpressurePolicy.html +++ b/docs/tokio/fred/types/enum.BackpressurePolicy.html @@ -1,4 +1,4 @@ -BackpressurePolicy in fred::types - Rust

    Enum fred::types::BackpressurePolicy

    source ·
    pub enum BackpressurePolicy {
    +BackpressurePolicy in fred::types - Rust

    Enum fred::types::BackpressurePolicy

    source ·
    pub enum BackpressurePolicy {
         Sleep {
             disable_backpressure_scaling: bool,
             min_sleep_duration: Duration,
    @@ -15,9 +15,9 @@
     disable_auto_backpressure is true.

    Default: 10 ms

    §

    Drain

    Wait for all in-flight commands to finish before sending the next command.

    -

    Implementations§

    source§

    impl BackpressurePolicy

    source

    pub fn default_sleep() -> Self

    Create a new Sleep policy with the legacy default values.

    -

    Trait Implementations§

    source§

    impl Clone for BackpressurePolicy

    source§

    fn clone(&self) -> BackpressurePolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BackpressurePolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BackpressurePolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for BackpressurePolicy

    source§

    fn eq(&self, other: &BackpressurePolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for BackpressurePolicy

    source§

    impl StructuralPartialEq for BackpressurePolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Implementations§

    source§

    impl BackpressurePolicy

    source

    pub fn default_sleep() -> Self

    Create a new Sleep policy with the legacy default values.

    +

    Trait Implementations§

    source§

    impl Clone for BackpressurePolicy

    source§

    fn clone(&self) -> BackpressurePolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BackpressurePolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BackpressurePolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for BackpressurePolicy

    source§

    fn eq(&self, other: &BackpressurePolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for BackpressurePolicy

    source§

    impl StructuralPartialEq for BackpressurePolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/enum.Blocking.html b/docs/tokio/fred/types/enum.Blocking.html index a3e72531..a408f70c 100644 --- a/docs/tokio/fred/types/enum.Blocking.html +++ b/docs/tokio/fred/types/enum.Blocking.html @@ -1,4 +1,4 @@ -Blocking in fred::types - Rust

    Enum fred::types::Blocking

    source ·
    pub enum Blocking {
    +Blocking in fred::types - Rust

    Enum fred::types::Blocking

    source ·
    pub enum Blocking {
         Block,
         Error,
         Interrupt,
    @@ -7,8 +7,8 @@
     

    Variants§

    §

    Block

    Wait to send the command until the blocked command finishes. (Default)

    §

    Error

    Return an error to the caller.

    §

    Interrupt

    Interrupt the blocked command by automatically sending CLIENT UNBLOCK for the blocked connection.

    -

    Trait Implementations§

    source§

    impl Clone for Blocking

    source§

    fn clone(&self) -> Blocking

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Blocking

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Blocking

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for Blocking

    source§

    fn eq(&self, other: &Blocking) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for Blocking

    source§

    impl StructuralPartialEq for Blocking

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for Blocking

    source§

    fn clone(&self) -> Blocking

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Blocking

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Blocking

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for Blocking

    source§

    fn eq(&self, other: &Blocking) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for Blocking

    source§

    impl StructuralPartialEq for Blocking

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/enum.ClusterDiscoveryPolicy.html b/docs/tokio/fred/types/enum.ClusterDiscoveryPolicy.html index c52cb9ac..942b4d79 100644 --- a/docs/tokio/fred/types/enum.ClusterDiscoveryPolicy.html +++ b/docs/tokio/fred/types/enum.ClusterDiscoveryPolicy.html @@ -1,4 +1,4 @@ -ClusterDiscoveryPolicy in fred::types - Rust

    Enum fred::types::ClusterDiscoveryPolicy

    source ·
    pub enum ClusterDiscoveryPolicy {
    +ClusterDiscoveryPolicy in fred::types - Rust

    Enum fred::types::ClusterDiscoveryPolicy

    source ·
    pub enum ClusterDiscoveryPolicy {
         ConfigEndpoint,
         UseCache,
     }
    Expand description

    A policy that determines how clustered clients initially connect to and discover other cluster nodes.

    @@ -8,8 +8,8 @@

    Default.

    §

    UseCache

    Try connecting to nodes specified in both the client’s ServerConfig and the most recently cached routing table.

    -

    Trait Implementations§

    source§

    impl Clone for ClusterDiscoveryPolicy

    source§

    fn clone(&self) -> ClusterDiscoveryPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ClusterDiscoveryPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ClusterDiscoveryPolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ClusterDiscoveryPolicy

    source§

    fn eq(&self, other: &ClusterDiscoveryPolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for ClusterDiscoveryPolicy

    source§

    impl StructuralPartialEq for ClusterDiscoveryPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for ClusterDiscoveryPolicy

    source§

    fn clone(&self) -> ClusterDiscoveryPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ClusterDiscoveryPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ClusterDiscoveryPolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ClusterDiscoveryPolicy

    source§

    fn eq(&self, other: &ClusterDiscoveryPolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ClusterDiscoveryPolicy

    source§

    impl StructuralPartialEq for ClusterDiscoveryPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/enum.ReconnectError.html b/docs/tokio/fred/types/enum.ReconnectError.html index 578fb1d2..4dcee544 100644 --- a/docs/tokio/fred/types/enum.ReconnectError.html +++ b/docs/tokio/fred/types/enum.ReconnectError.html @@ -1,4 +1,4 @@ -ReconnectError in fred::types - Rust

    Enum fred::types::ReconnectError

    source ·
    pub enum ReconnectError {
    +ReconnectError in fred::types - Rust

    Enum fred::types::ReconnectError

    source ·
    pub enum ReconnectError {
         ClusterDown,
         Loading,
         MasterDown,
    @@ -19,8 +19,8 @@
     
    §

    NoReplicas

    The NOREPLICAS prefix.

    §

    Custom(&'static str)

    A case-sensitive prefix on an error message.

    See the source for examples.

    -

    Trait Implementations§

    source§

    impl Clone for ReconnectError

    source§

    fn clone(&self) -> ReconnectError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReconnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for ReconnectError

    source§

    fn eq(&self, other: &ReconnectError) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for ReconnectError

    source§

    impl StructuralPartialEq for ReconnectError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for ReconnectError

    source§

    fn clone(&self) -> ReconnectError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReconnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for ReconnectError

    source§

    fn eq(&self, other: &ReconnectError) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ReconnectError

    source§

    impl StructuralPartialEq for ReconnectError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/enum.ReconnectPolicy.html b/docs/tokio/fred/types/enum.ReconnectPolicy.html index 9d10f8c0..cb5c10b9 100644 --- a/docs/tokio/fred/types/enum.ReconnectPolicy.html +++ b/docs/tokio/fred/types/enum.ReconnectPolicy.html @@ -1,4 +1,4 @@ -ReconnectPolicy in fred::types - Rust

    Enum fred::types::ReconnectPolicy

    source ·
    pub enum ReconnectPolicy {
    +ReconnectPolicy in fred::types - Rust

    Enum fred::types::ReconnectPolicy

    source ·
    pub enum ReconnectPolicy {
         Constant {
             attempts: u32,
             max_attempts: u32,
    @@ -25,24 +25,24 @@
     

    Variants§

    §

    Constant

    Wait a constant amount of time between reconnect attempts, in ms.

    Fields

    §attempts: u32
    §max_attempts: u32
    §delay: u32
    §jitter: u32
    §

    Linear

    Backoff reconnection attempts linearly, adding delay each time.

    Fields

    §attempts: u32
    §max_attempts: u32
    §max_delay: u32
    §delay: u32
    §jitter: u32
    §

    Exponential

    Backoff reconnection attempts exponentially, multiplying the last delay by mult each time.

    -

    Fields

    §attempts: u32
    §max_attempts: u32
    §min_delay: u32
    §max_delay: u32
    §mult: u32
    §jitter: u32

    Implementations§

    source§

    impl ReconnectPolicy

    source

    pub fn new_constant(max_attempts: u32, delay: u32) -> ReconnectPolicy

    Create a new reconnect policy with a constant backoff.

    -
    source

    pub fn new_linear( +

    Fields

    §attempts: u32
    §max_attempts: u32
    §min_delay: u32
    §max_delay: u32
    §mult: u32
    §jitter: u32

    Implementations§

    source§

    impl ReconnectPolicy

    source

    pub fn new_constant(max_attempts: u32, delay: u32) -> ReconnectPolicy

    Create a new reconnect policy with a constant backoff.

    +
    source

    pub fn new_linear( max_attempts: u32, max_delay: u32, delay: u32, ) -> ReconnectPolicy

    Create a new reconnect policy with a linear backoff.

    -
    source

    pub fn new_exponential( +

    source

    pub fn new_exponential( max_attempts: u32, min_delay: u32, max_delay: u32, mult: u32, ) -> ReconnectPolicy

    Create a new reconnect policy with an exponential backoff.

    -
    source

    pub fn set_jitter(&mut self, jitter_ms: u32)

    Set the amount of jitter to add to each reconnect delay.

    +
    source

    pub fn set_jitter(&mut self, jitter_ms: u32)

    Set the amount of jitter to add to each reconnect delay.

    Default: 50 ms

    -
    source

    pub fn attempts(&self) -> u32

    Read the number of reconnection attempts.

    -
    source

    pub fn next_delay(&mut self) -> Option<u64>

    Calculate the next delay, incrementing attempts in the process.

    -

    Trait Implementations§

    source§

    impl Clone for ReconnectPolicy

    source§

    fn clone(&self) -> ReconnectPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReconnectPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ReconnectPolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ReconnectPolicy

    source§

    fn eq(&self, other: &ReconnectPolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for ReconnectPolicy

    source§

    impl StructuralPartialEq for ReconnectPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    source

    pub fn attempts(&self) -> u32

    Read the number of reconnection attempts.

    +
    source

    pub fn next_delay(&mut self) -> Option<u64>

    Calculate the next delay, incrementing attempts in the process.

    +

    Trait Implementations§

    source§

    impl Clone for ReconnectPolicy

    source§

    fn clone(&self) -> ReconnectPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ReconnectPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ReconnectPolicy

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ReconnectPolicy

    source§

    fn eq(&self, other: &ReconnectPolicy) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ReconnectPolicy

    source§

    impl StructuralPartialEq for ReconnectPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/enum.ServerConfig.html b/docs/tokio/fred/types/enum.ServerConfig.html index 5ac0649f..f3ed6d7a 100644 --- a/docs/tokio/fred/types/enum.ServerConfig.html +++ b/docs/tokio/fred/types/enum.ServerConfig.html @@ -1,4 +1,4 @@ -ServerConfig in fred::types - Rust

    Enum fred::types::ServerConfig

    source ·
    pub enum ServerConfig {
    +ServerConfig in fred::types - Rust

    Enum fred::types::ServerConfig

    source ·
    pub enum ServerConfig {
         Centralized {
             server: Server,
         },
    @@ -27,31 +27,31 @@
     
    §service_name: String

    The service name for primary/main instances.

    §username: Option<String>
    Available on crate feature sentinel-auth only.

    An optional ACL username for the client to use when authenticating.

    §password: Option<String>
    Available on crate feature sentinel-auth only.

    An optional password for the client to use when authenticating.

    -

    Implementations§

    source§

    impl ServerConfig

    source

    pub fn new_centralized<S>(host: S, port: u16) -> ServerConfig
    where +

    Implementations§

    source§

    impl ServerConfig

    source

    pub fn new_centralized<S>(host: S, port: u16) -> ServerConfig
    where S: Into<String>,

    Create a new centralized config with the provided host and port.

    -
    source

    pub fn new_clustered<S>(hosts: Vec<(S, u16)>) -> ServerConfig
    where +

    source

    pub fn new_clustered<S>(hosts: Vec<(S, u16)>) -> ServerConfig
    where S: Into<String>,

    Create a new clustered config with the provided set of hosts and ports.

    Only one valid host in the cluster needs to be provided here. The client will use CLUSTER NODES to discover the other nodes.

    -
    source

    pub fn new_sentinel<H, N>(hosts: Vec<(H, u16)>, service_name: N) -> ServerConfig
    where +

    source

    pub fn new_sentinel<H, N>(hosts: Vec<(H, u16)>, service_name: N) -> ServerConfig
    where H: Into<String>, N: Into<String>,

    Create a new sentinel config with the provided set of hosts and the name of the service.

    This library will connect using the details from the Redis documentation.

    -
    source

    pub fn new_unix_socket<P>(path: P) -> ServerConfig
    where +

    source

    pub fn new_unix_socket<P>(path: P) -> ServerConfig
    where P: Into<PathBuf>,

    Available on crate feature unix-sockets only.

    Create a new server config for a connected Unix socket.

    -
    source

    pub fn default_centralized() -> ServerConfig

    Create a centralized config with default settings for a local deployment.

    -
    source

    pub fn default_clustered() -> ServerConfig

    Create a clustered config with the same defaults as specified in the create-cluster script provided by Redis.

    -
    source

    pub fn is_clustered(&self) -> bool

    Whether the config uses a clustered deployment.

    -
    source

    pub fn is_sentinel(&self) -> bool

    Whether the config is for a centralized server behind a sentinel node(s).

    -
    source

    pub fn is_centralized(&self) -> bool

    Whether the config is for a centralized server.

    -
    source

    pub fn is_unix_socket(&self) -> bool

    Whether the config uses a Unix socket.

    -
    source

    pub fn hosts(&self) -> Vec<Server>

    Read the server hosts or sentinel hosts if using the sentinel interface.

    -
    source

    pub fn set_cluster_discovery_policy( +

    source

    pub fn default_centralized() -> ServerConfig

    Create a centralized config with default settings for a local deployment.

    +
    source

    pub fn default_clustered() -> ServerConfig

    Create a clustered config with the same defaults as specified in the create-cluster script provided by Redis.

    +
    source

    pub fn is_clustered(&self) -> bool

    Whether the config uses a clustered deployment.

    +
    source

    pub fn is_sentinel(&self) -> bool

    Whether the config is for a centralized server behind a sentinel node(s).

    +
    source

    pub fn is_centralized(&self) -> bool

    Whether the config is for a centralized server.

    +
    source

    pub fn is_unix_socket(&self) -> bool

    Whether the config uses a Unix socket.

    +
    source

    pub fn hosts(&self) -> Vec<Server>

    Read the server hosts or sentinel hosts if using the sentinel interface.

    +
    source

    pub fn set_cluster_discovery_policy( &mut self, new_policy: ClusterDiscoveryPolicy, ) -> Result<(), RedisError>

    Set the ClusterDiscoveryPolicy, if possible.

    -

    Trait Implementations§

    source§

    impl Clone for ServerConfig

    source§

    fn clone(&self) -> ServerConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ServerConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ServerConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ServerConfig

    source§

    fn eq(&self, other: &ServerConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for ServerConfig

    source§

    impl StructuralPartialEq for ServerConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for ServerConfig

    source§

    fn clone(&self) -> ServerConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ServerConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ServerConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ServerConfig

    source§

    fn eq(&self, other: &ServerConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ServerConfig

    source§

    impl StructuralPartialEq for ServerConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.BackpressureConfig.html b/docs/tokio/fred/types/struct.BackpressureConfig.html index 2f9cf572..98b33b84 100644 --- a/docs/tokio/fred/types/struct.BackpressureConfig.html +++ b/docs/tokio/fred/types/struct.BackpressureConfig.html @@ -1,4 +1,4 @@ -BackpressureConfig in fred::types - Rust

    Struct fred::types::BackpressureConfig

    source ·
    pub struct BackpressureConfig {
    +BackpressureConfig in fred::types - Rust

    Struct fred::types::BackpressureConfig

    source ·
    pub struct BackpressureConfig {
         pub disable_auto_backpressure: bool,
         pub max_in_flight_commands: u64,
         pub policy: BackpressurePolicy,
    @@ -11,8 +11,8 @@
     

    Default: 10_000

    §policy: BackpressurePolicy

    The backpressure policy to apply when the max number of in-flight commands is reached.

    Default: Drain.

    -

    Trait Implementations§

    source§

    impl Clone for BackpressureConfig

    source§

    fn clone(&self) -> BackpressureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BackpressureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BackpressureConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for BackpressureConfig

    source§

    fn eq(&self, other: &BackpressureConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for BackpressureConfig

    source§

    impl StructuralPartialEq for BackpressureConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for BackpressureConfig

    source§

    fn clone(&self) -> BackpressureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BackpressureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BackpressureConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for BackpressureConfig

    source§

    fn eq(&self, other: &BackpressureConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for BackpressureConfig

    source§

    impl StructuralPartialEq for BackpressureConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.ConnectionConfig.html b/docs/tokio/fred/types/struct.ConnectionConfig.html index 58e2f85f..13d003d6 100644 --- a/docs/tokio/fred/types/struct.ConnectionConfig.html +++ b/docs/tokio/fred/types/struct.ConnectionConfig.html @@ -1,4 +1,4 @@ -ConnectionConfig in fred::types - Rust

    Struct fred::types::ConnectionConfig

    source ·
    pub struct ConnectionConfig {
    Show 13 fields +ConnectionConfig in fred::types - Rust

    Struct fred::types::ConnectionConfig

    source ·
    pub struct ConnectionConfig {
    Show 13 fields pub connection_timeout: Duration, pub internal_command_timeout: Duration, pub cluster_cache_update_delay: Duration, @@ -42,8 +42,8 @@

    Default: None

    §tcp: TcpConfig

    TCP connection options.

    §reconnect_errors: Vec<ReconnectError>
    Available on crate feature custom-reconnect-errors only.

    Errors that should trigger reconnection logic.

    -

    Trait Implementations§

    source§

    impl Clone for ConnectionConfig

    source§

    fn clone(&self) -> ConnectionConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ConnectionConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ConnectionConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ConnectionConfig

    source§

    fn eq(&self, other: &ConnectionConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for ConnectionConfig

    source§

    impl StructuralPartialEq for ConnectionConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for ConnectionConfig

    source§

    fn clone(&self) -> ConnectionConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ConnectionConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ConnectionConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for ConnectionConfig

    source§

    fn eq(&self, other: &ConnectionConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for ConnectionConfig

    source§

    impl StructuralPartialEq for ConnectionConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.Options.html b/docs/tokio/fred/types/struct.Options.html index f41e7a78..32461401 100644 --- a/docs/tokio/fred/types/struct.Options.html +++ b/docs/tokio/fred/types/struct.Options.html @@ -1,4 +1,4 @@ -Options in fred::types - Rust

    Struct fred::types::Options

    source ·
    pub struct Options {
    +Options in fred::types - Rust

    Struct fred::types::Options

    source ·
    pub struct Options {
         pub max_attempts: Option<u32>,
         pub max_redirections: Option<u32>,
         pub timeout: Option<Duration>,
    @@ -43,9 +43,9 @@
     storage layer rather than wait for a reconnection delay.

    Default: false

    §caching: Option<bool>
    Available on crate feature i-tracking only.

    Whether to send CLIENT CACHING yes|no before the command.

    -

    Implementations§

    source§

    impl Options

    source

    pub fn extend(&mut self, other: &Self) -> &mut Self

    Set the non-null values from other onto self.

    -

    Trait Implementations§

    source§

    impl Clone for Options

    source§

    fn clone(&self) -> Options

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Options

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Options

    source§

    fn default() -> Options

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for Options

    source§

    fn eq(&self, other: &Options) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for Options

    source§

    impl StructuralPartialEq for Options

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Implementations§

    source§

    impl Options

    source

    pub fn extend(&mut self, other: &Self) -> &mut Self

    Set the non-null values from other onto self.

    +

    Trait Implementations§

    source§

    impl Clone for Options

    source§

    fn clone(&self) -> Options

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Options

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Options

    source§

    fn default() -> Options

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for Options

    source§

    fn eq(&self, other: &Options) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for Options

    source§

    impl StructuralPartialEq for Options

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.PerformanceConfig.html b/docs/tokio/fred/types/struct.PerformanceConfig.html index 861e35da..38992e99 100644 --- a/docs/tokio/fred/types/struct.PerformanceConfig.html +++ b/docs/tokio/fred/types/struct.PerformanceConfig.html @@ -1,4 +1,4 @@ -PerformanceConfig in fred::types - Rust

    Struct fred::types::PerformanceConfig

    source ·
    pub struct PerformanceConfig {
    +PerformanceConfig in fred::types - Rust

    Struct fred::types::PerformanceConfig

    source ·
    pub struct PerformanceConfig {
         pub auto_pipeline: bool,
         pub backpressure: BackpressureConfig,
         pub default_command_timeout: Duration,
    @@ -23,8 +23,8 @@
     
    §blocking_encode_threshold: usize
    Available on crate feature blocking-encoding only.

    The minimum size, in bytes, of frames that should be encoded or decoded with a blocking task.

    See block_in_place for more information.

    Default: 50_000_000

    -

    Trait Implementations§

    source§

    impl Clone for PerformanceConfig

    source§

    fn clone(&self) -> PerformanceConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PerformanceConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PerformanceConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for PerformanceConfig

    source§

    fn eq(&self, other: &PerformanceConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for PerformanceConfig

    source§

    impl StructuralPartialEq for PerformanceConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for PerformanceConfig

    source§

    fn clone(&self) -> PerformanceConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PerformanceConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PerformanceConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for PerformanceConfig

    source§

    fn eq(&self, other: &PerformanceConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for PerformanceConfig

    source§

    impl StructuralPartialEq for PerformanceConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.RedisConfig.html b/docs/tokio/fred/types/struct.RedisConfig.html index 39596cf7..291d1ad7 100644 --- a/docs/tokio/fred/types/struct.RedisConfig.html +++ b/docs/tokio/fred/types/struct.RedisConfig.html @@ -1,4 +1,4 @@ -RedisConfig in fred::types - Rust

    Struct fred::types::RedisConfig

    source ·
    pub struct RedisConfig {
    +RedisConfig in fred::types - Rust

    Struct fred::types::RedisConfig

    source ·
    pub struct RedisConfig {
         pub fail_fast: bool,
         pub blocking: Blocking,
         pub username: Option<String>,
    @@ -53,10 +53,10 @@
     

    Default: None

    When used with the sentinel-auth feature this interface will take precedence over all username and password fields for both sentinel nodes and Redis servers.

    -

    Implementations§

    source§

    impl RedisConfig

    source

    pub fn uses_tls(&self) -> bool

    Whether the client uses TLS.

    -
    source

    pub fn uses_native_tls(&self) -> bool

    Whether the client uses a native-tls connector.

    -
    source

    pub fn uses_rustls(&self) -> bool

    Whether the client uses a rustls connector.

    -
    source

    pub fn from_url(url: &str) -> Result<RedisConfig, RedisError>

    Parse a URL string into a RedisConfig.

    +

    Implementations§

    source§

    impl RedisConfig

    source

    pub fn uses_tls(&self) -> bool

    Whether the client uses TLS.

    +
    source

    pub fn uses_native_tls(&self) -> bool

    Whether the client uses a native-tls connector.

    +
    source

    pub fn uses_rustls(&self) -> bool

    Whether the client uses a rustls connector.

    +
    source

    pub fn from_url(url: &str) -> Result<RedisConfig, RedisError>

    Parse a URL string into a RedisConfig.

    §URL Syntax

    Centralized

    redis|rediss :// [[username:]password@] host [:port][/database]
    @@ -103,7 +103,7 @@ 
    §Q

    See the from_url_centralized, from_url_clustered, from_url_sentinel, and from_url_unix for more information. Or see the RedisConfig unit tests for examples.

    -
    source

    pub fn from_url_centralized(url: &str) -> Result<RedisConfig, RedisError>

    Create a centralized RedisConfig struct from a URL.

    +
    source

    pub fn from_url_centralized(url: &str) -> Result<RedisConfig, RedisError>

    Create a centralized RedisConfig struct from a URL.

    redis://username:password@foo.com:6379/1
     rediss://username:password@foo.com:6379/1
     redis://foo.com:6379/1
    @@ -118,7 +118,7 @@ 
    §Q
  • The port field is optional in this context. If it is not specified then 6379 will be used.
  • Any node or sentinel query parameters will be ignored.
  • -
    source

    pub fn from_url_clustered(url: &str) -> Result<RedisConfig, RedisError>

    Create a clustered RedisConfig struct from a URL.

    +
    source

    pub fn from_url_clustered(url: &str) -> Result<RedisConfig, RedisError>

    Create a clustered RedisConfig struct from a URL.

    redis-cluster://username:password@foo.com:30001?node=bar.com:30002&node=baz.com:30003
     rediss-cluster://username:password@foo.com:30001?node=bar.com:30002&node=baz.com:30003
     rediss://foo.com:30001?node=bar.com:30002&node=baz.com:30003
    @@ -135,7 +135,7 @@ 
    §Q
  • Any node query parameters will be used to find other known cluster nodes.
  • Any sentinel query parameters will be ignored.
  • -
    source

    pub fn from_url_sentinel(url: &str) -> Result<RedisConfig, RedisError>

    Create a sentinel RedisConfig struct from a URL.

    +
    source

    pub fn from_url_sentinel(url: &str) -> Result<RedisConfig, RedisError>

    Create a sentinel RedisConfig struct from a URL.

    redis-sentinel://username:password@foo.com:6379/1?sentinelServiceName=fakename&node=foo.com:30001&node=bar.com:30002
     rediss-sentinel://username:password@foo.com:6379/0?sentinelServiceName=fakename&node=foo.com:30001&node=bar.com:30002
     redis://foo.com:6379?sentinelServiceName=fakename
    @@ -161,7 +161,7 @@ 
    §Q

    The above example will use ("username1", "password1") when authenticating to the backing Redis servers, and ("username2", "password2") when initially connecting to the sentinel nodes. Additionally, all 3 addresses (foo.com:26379, bar.com:26379, baz.com:26380) specify known sentinel nodes.

    -
    source

    pub fn from_url_unix(url: &str) -> Result<RedisConfig, RedisError>

    Available on crate feature unix-sockets only.

    Create a RedisConfig from a URL that connects via a Unix domain socket.

    +
    source

    pub fn from_url_unix(url: &str) -> Result<RedisConfig, RedisError>

    Available on crate feature unix-sockets only.

    Create a RedisConfig from a URL that connects via a Unix domain socket.

    redis+unix:///path/to/redis.sock
     redis+unix://username:password@nonemptyhost/path/to/redis.sock
     
    @@ -175,8 +175,8 @@
    §Q validation process. This function will ignore the value, but some non-empty string must be provided. -

    Trait Implementations§

    source§

    impl Clone for RedisConfig

    source§

    fn clone(&self) -> RedisConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RedisConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RedisConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for RedisConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for RedisConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for RedisConfig

    source§

    fn clone(&self) -> RedisConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RedisConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RedisConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for RedisConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for RedisConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.SentinelConfig.html b/docs/tokio/fred/types/struct.SentinelConfig.html index 91f65a1b..4a06dbd4 100644 --- a/docs/tokio/fred/types/struct.SentinelConfig.html +++ b/docs/tokio/fred/types/struct.SentinelConfig.html @@ -1,4 +1,4 @@ -SentinelConfig in fred::types - Rust

    Struct fred::types::SentinelConfig

    source ·
    pub struct SentinelConfig {
    +SentinelConfig in fred::types - Rust

    Struct fred::types::SentinelConfig

    source ·
    pub struct SentinelConfig {
         pub host: String,
         pub port: u16,
         pub username: Option<String>,
    @@ -20,7 +20,7 @@
     

    Default: None

    §tracing: TracingConfig
    Available on crate feature partial-tracing only.

    Whether to enable tracing for this client.

    Default: false

    -

    Trait Implementations§

    source§

    impl Clone for SentinelConfig

    source§

    fn clone(&self) -> SentinelConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SentinelConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SentinelConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for SentinelConfig

    source§

    fn clone(&self) -> SentinelConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SentinelConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SentinelConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.TcpConfig.html b/docs/tokio/fred/types/struct.TcpConfig.html index 62d23345..2e925984 100644 --- a/docs/tokio/fred/types/struct.TcpConfig.html +++ b/docs/tokio/fred/types/struct.TcpConfig.html @@ -1,4 +1,4 @@ -TcpConfig in fred::types - Rust

    Struct fred::types::TcpConfig

    source ·
    pub struct TcpConfig {
    +TcpConfig in fred::types - Rust

    Struct fred::types::TcpConfig

    source ·
    pub struct TcpConfig {
         pub nodelay: Option<bool>,
         pub linger: Option<Duration>,
         pub ttl: Option<u32>,
    @@ -8,8 +8,8 @@
     
    §linger: Option<Duration>

    Set the SO_LINGER value.

    §ttl: Option<u32>

    Set the IP_TTL value.

    §keepalive: Option<TcpKeepalive>

    Trait Implementations§

    source§

    impl Clone for TcpConfig

    source§

    fn clone(&self) -> TcpConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TcpConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TcpConfig

    source§

    fn default() -> TcpConfig

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TcpConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for TcpConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for TcpConfig

    source§

    fn clone(&self) -> TcpConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TcpConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TcpConfig

    source§

    fn default() -> TcpConfig

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TcpConfig

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for TcpConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.TracingConfig.html b/docs/tokio/fred/types/struct.TracingConfig.html index e7e635ca..9e2616f5 100644 --- a/docs/tokio/fred/types/struct.TracingConfig.html +++ b/docs/tokio/fred/types/struct.TracingConfig.html @@ -1,4 +1,4 @@ -TracingConfig in fred::types - Rust

    Struct fred::types::TracingConfig

    source ·
    pub struct TracingConfig {
    +TracingConfig in fred::types - Rust

    Struct fred::types::TracingConfig

    source ·
    pub struct TracingConfig {
         pub enabled: bool,
         pub default_tracing_level: Level,
         pub full_tracing_level: Level,
    @@ -9,7 +9,7 @@
     

    Default: INFO

    §full_tracing_level: Level
    Available on crate feature full-tracing only.

    Set the tracing::Level of spans under full-tracing feature.

    Default: DEBUG

    -

    Implementations§

    source§

    impl TracingConfig

    source

    pub fn new(enabled: bool) -> Self

    Trait Implementations§

    source§

    impl Clone for TracingConfig

    source§

    fn clone(&self) -> TracingConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TracingConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TracingConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Implementations§

    source§

    impl TracingConfig

    source

    pub fn new(enabled: bool) -> Self

    Trait Implementations§

    source§

    impl Clone for TracingConfig

    source§

    fn clone(&self) -> TracingConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TracingConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TracingConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/struct.UnresponsiveConfig.html b/docs/tokio/fred/types/struct.UnresponsiveConfig.html index 3a5a0251..7c66808d 100644 --- a/docs/tokio/fred/types/struct.UnresponsiveConfig.html +++ b/docs/tokio/fred/types/struct.UnresponsiveConfig.html @@ -1,4 +1,4 @@ -UnresponsiveConfig in fred::types - Rust

    Struct fred::types::UnresponsiveConfig

    source ·
    pub struct UnresponsiveConfig {
    +UnresponsiveConfig in fred::types - Rust

    Struct fred::types::UnresponsiveConfig

    source ·
    pub struct UnresponsiveConfig {
         pub max_timeout: Option<Duration>,
         pub interval: Duration,
     }
    Expand description

    Configuration options used to detect potentially unresponsive connections.

    @@ -15,8 +15,8 @@
    §interval: Duration

    The frequency at which the client checks for unresponsive connections.

    This value should usually be less than half of max_timeout and always more than 1 ms.

    Default: 2 sec

    -

    Trait Implementations§

    source§

    impl Clone for UnresponsiveConfig

    source§

    fn clone(&self) -> UnresponsiveConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnresponsiveConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for UnresponsiveConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for UnresponsiveConfig

    source§

    fn eq(&self, other: &UnresponsiveConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for UnresponsiveConfig

    source§

    impl StructuralPartialEq for UnresponsiveConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for UnresponsiveConfig

    source§

    fn clone(&self) -> UnresponsiveConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UnresponsiveConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for UnresponsiveConfig

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for UnresponsiveConfig

    source§

    fn eq(&self, other: &UnresponsiveConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
    source§

    impl Eq for UnresponsiveConfig

    source§

    impl StructuralPartialEq for UnresponsiveConfig

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where diff --git a/docs/tokio/fred/types/trait.CredentialProvider.html b/docs/tokio/fred/types/trait.CredentialProvider.html index dad7fc06..3521096b 100644 --- a/docs/tokio/fred/types/trait.CredentialProvider.html +++ b/docs/tokio/fred/types/trait.CredentialProvider.html @@ -1,4 +1,4 @@ -CredentialProvider in fred::types - Rust

    Trait fred::types::CredentialProvider

    source ·
    pub trait CredentialProvider:
    +CredentialProvider in fred::types - Rust

    Trait fred::types::CredentialProvider

    source ·
    pub trait CredentialProvider:
         Debug
         + Send
         + Sync
    @@ -15,12 +15,12 @@
         // Provided method
         fn refresh_interval(&self) -> Option<Duration> { ... }
     }
    Available on crate feature credential-provider only.
    Expand description

    A trait that can be used to override the credentials used in each AUTH or HELLO command.

    -

    Required Methods§

    source

    fn fetch<'life0, 'life1, 'async_trait>( +

    Required Methods§

    source

    fn fetch<'life0, 'life1, 'async_trait>( &'life0 self, server: Option<&'life1 Server>, ) -> Pin<Box<dyn Future<Output = Result<(Option<String>, Option<String>), RedisError>> + Send + 'async_trait>>
    where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

    Read the username and password that should be used in the next AUTH or HELLO command.

    -

    Provided Methods§

    source

    fn refresh_interval(&self) -> Option<Duration>

    Configure the client to call fetch and send AUTH or HELLO on some interval.

    +

    Provided Methods§

    source

    fn refresh_interval(&self) -> Option<Duration>

    Configure the client to call fetch and send AUTH or HELLO on some interval.

    Implementors§

    \ No newline at end of file diff --git a/docs/tokio/search-index.js b/docs/tokio/search-index.js index f092e43e..42cdcfd3 100644 --- a/docs/tokio/search-index.js +++ b/docs/tokio/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["fred",{"t":"DDCQCCQCCDCDDDDDCCFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPFGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKPKPPPPPKKKKPPKKKKKPKKKKPKKPPPKPKKIGKKPKPPKKKKKKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFKFONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNONNNNNNNNNNNNNNNNNNNFONNONNNOONNNNNHONNNNNNEEEEEEEEEEEEEEEEEEEEEEEPPPGGGPPPPPPPIPPPPPPPPPPPFGPPPPPPGPPPPGFPPPPPPPPGGGGGGPPGPGGFGFGGGPPPPIPPFPPPPPPPPPKPPPPPPPFSFPPPPPPPPPPPGPPPGPPPPPPGGPPPPPPPPPPGPKKFFFFFGPPFFPGFGGPFPFPPPPPKPPPPPGPPGPPPPFPPPFPPGPPPPPPPFIPIPPGGPPPPPPPPPPPPPPPPPFFPGPPPPPPPPPPPPFFFFFIIFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFGPPPRFPPPPPPPPPPPPPFPPGGFFFGGGGPPPFKPKIGIGPPPFPFGKPFGFFFFFFFGFFPPFGFPGPPGGPPPPPFFPPPPGGPPFPPPPPPPPPPPPGPPPPPPPPPFPPGFGGPGFPPPFPPPPPPPPFFPPFGGGFIIPPPGFGGFPGNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNOOOONNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNNONOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOONOOOOOOOOONNNNNNNNNOOOONNOOOMNNNNOMNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOONNMOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNNNNNOONONNNNNNOMNNNNNNNNNNNNNNNONOOOONOOOOOOONNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNOOOOONNOOOOOOOONNNNNNNNNNOOONOONOOMOOOOOOOOOOOOOOOOOONNOOONNNNNNNNNNNNNNNNNNNNNNMNNNNNOOOOOOOOOOOOOOOOOONNNNNNNNNOOOOOOOOOOOOOOONOOOONNOOOONNONOOMMNNNNOOOOOOOOOOONNNNNNNNOOONOOOOOOOOONNNNNMNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOSHHHHHHH","n":["bytes","bytes_utils","clients","cmd","error","interfaces","json_quote","mocks","monitor","native_tls","prelude","rustls","rustls_native_certs","serde_json","socket2","tracing","types","util","ExclusivePool","Pipeline","RedisClient","RedisPool","Replicas","SentinelClient","SubscriberClient","Transaction","WithOptions","acquire","active_connections","all","borrow","","","","","","","","","borrow_mut","","","","","","","","","client","clients","","clone","","","","","","","","clone_into","","","","","","","","","clone_new","","clone_to_uninit","","","","","","","","","cluster_node","connect","","connect_pool","","default","deref","enable_heartbeat","eq","exec","fmt","","","","","","","","","","force_reconnection","","from","","","","","","","","","from_clients","hash_slot","hscan","id","init","","into","","","","","","","","","last","","len","load","","manage_subscriptions","new","","","","","next","next_connected","nodes","options","pipeline","","prefer_connected","psubscribe","punsubscribe","quit","","replicas","","reset","resubscribe_all","scan","scan_cluster","set_resolver","","size","","split_cluster","sscan","ssubscribe","subscribe","sunsubscribe","sync","to_client","to_owned","","","","","","","","","to_string","tracked_channels","tracked_patterns","tracked_shard_channels","try_all","try_from","","","","","","","","","try_into","","","","","","","","","type_id","","","","","","","","","unsubscribe","unsubscribe_all","update_perf_config","","vzip","","","","","","","","","wait_for_connect","","watch_before","watched_len","with_cluster_node","zscan","Auth","Backpressure","Canceled","Cluster","Config","IO","InvalidArgument","InvalidCommand","NotFound","Parse","Protocol","RedisError","RedisErrorKind","Replica","Sentinel","Timeout","Tls","Unknown","Url","borrow","","borrow_mut","","change_kind","clone","","clone_into","","clone_to_uninit","","details","eq","","fmt","","","from","","","into","","is_canceled","is_cluster","is_not_found","is_replica","kind","new","new_canceled","source","to_owned","","to_str","to_string","try_from","","try_into","","type_id","","vzip","","AclInterface","Array","AuthInterface","BigNumber","BlobError","BlobString","Boolean","ChunkedString","ClientInterface","ClientLike","ClusterInterface","ConfigInterface","Double","Err","EventInterface","FunctionInterface","GeoInterface","HashesInterface","HeartbeatInterface","Hello","HyperloglogInterface","KeysInterface","ListInterface","LuaInterface","Map","MemoryInterface","MetricsInterface","Null","Number","Ok","PubsubInterface","Push","RediSearchInterface","RedisJsonInterface","RedisResult","Resp3Frame","SentinelInterface","ServerInterface","Set","SetsInterface","SimpleError","SimpleString","SlowlogInterface","SortedSetsInterface","StreamsInterface","TimeSeriesInterface","TrackingInterface","TransactionInterface","VerbatimString","acl_cat","","acl_deluser","","acl_genpass","","acl_getuser","","acl_list","","acl_load","","acl_log_count","","acl_log_reset","","acl_save","","acl_setuser","","acl_users","","acl_whoami","","active_connections","","append","","auth","bgrewriteaof","","bgsave","","blmove","","blmpop","","blpop","","brpop","","brpoplpush","","bzmpop","","bzpopmax","","bzpopmin","","cached_cluster_state","","ckquorum","","client_caching","","client_config","","client_getname","","client_getredir","","client_id","","client_info","","client_kill","","client_list","","client_pause","","client_reconnect_policy","","client_reply","","client_setname","","client_tracking","","client_trackinginfo","","client_unblock","","client_unpause","","cluster_add_slots","","cluster_bumpepoch","","cluster_change_rx","cluster_count_failure_reports","","cluster_count_keys_in_slot","","cluster_del_slots","","cluster_failover","","cluster_flushslots","","cluster_forget","","cluster_get_keys_in_slot","","cluster_info","","cluster_keyslot","","cluster_meet","","cluster_myid","","cluster_nodes","","cluster_replicas","","cluster_replicate","","cluster_reset","","cluster_saveconfig","","cluster_set_config_epoch","","cluster_setslot","","cluster_slots","","command_queue_len","","config_get","","","","config_resetstat","","config_rewrite","","config_set","","","","connect","","connection_config","","connection_ids","","copy","","custom","","custom_raw","","dbsize","","decr","","decr_by","","del","","dump","","enable_heartbeat","error_rx","eval","","evalsha","","exists","","expire","","expire_at","","failover","","","","fcall","","fcall_ro","","flushall","","flushall_cluster","","flushconfig","","force_reconnection","","ft_aggregate","","ft_aliasadd","","ft_aliasdel","","ft_aliasupdate","","ft_alter","","ft_config_get","","ft_config_set","","ft_create","","ft_cursor_del","","ft_cursor_read","","ft_dictadd","","ft_dictdel","","ft_dictdump","","ft_dropindex","","ft_explain","","ft_info","","ft_list","","ft_search","","ft_spellcheck","","ft_sugadd","","ft_sugdel","","ft_sugget","","ft_suglen","","ft_syndump","","ft_synupdate","","ft_tagvals","","function_delete","","function_delete_cluster","","function_dump","","function_flush","","function_flush_cluster","","function_kill","","function_list","","function_load","","function_load_cluster","","function_restore","","function_restore_cluster","","function_stats","","geoadd","","geodist","","geohash","","geopos","","georadius","","georadiusbymember","","geosearch","","geosearchstore","","get","","get_master_addr_by_name","","getdel","","getrange","","getset","","has_reconnect_policy","","hdel","","hello","hexists","","hget","","hgetall","","hincrby","","hincrbyfloat","","hkeys","","hlen","","hmget","","hmset","","hrandfield","","hset","","hsetnx","","hstrlen","","hvals","","id","","incr","","incr_by","","incr_by_float","","info","","info_cache","","init","","invalidation_rx","","is_clustered","","is_connected","","is_pipelined","","json_arrappend","","json_arrindex","","json_arrinsert","","json_arrlen","","json_arrpop","","json_arrtrim","","json_clear","","json_debug_memory","","json_del","","json_get","","json_merge","","json_mget","","json_mset","","json_numincrby","","json_objkeys","","json_objlen","","json_resp","","json_set","","json_strappend","","json_strlen","","json_toggle","","json_type","","keyspace_event_rx","lastsave","","lcs","","lindex","","linsert","","llen","","lmove","","lmpop","","lpop","","lpos","","lpush","","lpushx","","lrange","","lrem","","lset","","ltrim","","master","","masters","","memory_doctor","","memory_malloc_stats","","memory_purge","","memory_stats","","memory_usage","","message_rx","mget","","monitor","","mset","","msetnx","","multi","","myid","","num_primary_cluster_nodes","","on_any","on_cluster_change","on_error","on_invalidation","","on_keyspace_event","on_message","on_reconnect","on_unresponsive","pending_scripts","","perf_config","","persist","","pexpire","","pexpire_at","","pfadd","","pfcount","","pfmerge","","ping","","protocol_version","","psubscribe","","pttl","","publish","","pubsub_channels","","pubsub_numpat","","pubsub_numsub","","pubsub_shardchannels","","pubsub_shardnumsub","","punsubscribe","","quit","","randomkey","","read_latency_metrics","","read_network_latency_metrics","","read_redelivery_count","","read_req_size_metrics","","read_res_size_metrics","","reconnect_rx","remove","","rename","","renamenx","","replicas","","reset","","restore","","rpop","","rpoplpush","","rpush","","rpushx","","sadd","","scard","","script_debug","","script_exists","","script_flush","","script_flush_cluster","","script_kill","","script_kill_cluster","","script_load","","script_load_cluster","","sdiff","","sdiffstore","","select","","sentinel_nodes","","sentinel_primary","","sentinels","","server_version","","set","","","","set_resolver","","setrange","","shutdown","","simulate_failure","","sinter","","sinterstore","","sismember","","slowlog_get","","slowlog_length","","slowlog_reset","","smembers","","smismember","","smove","","sort","","sort_ro","","spawn_event_listener","spop","","spublish","","srandmember","","srem","","ssubscribe","","start_tracking","","state","","stop_tracking","","strlen","","subscribe","","sunion","","sunionstore","","sunsubscribe","","sync_cluster","","take_latency_metrics","","take_network_latency_metrics","","take_redelivery_count","","take_req_size_metrics","","take_res_size_metrics","","ts_add","","ts_alter","","ts_create","","ts_createrule","","ts_decrby","","ts_del","","ts_deleterule","","ts_get","","ts_incrby","","ts_info","","ts_madd","","ts_mget","","ts_mrange","","ts_mrevrange","","ts_queryindex","","ts_range","","ts_revrange","","ttl","","unblock_self","","unlink","","unresponsive_rx","unsubscribe","","unwatch","","update_perf_config","","uses_sentinels","","wait","","wait_for_connect","","watch","","with_options","","xack","","xadd","","xautoclaim","","xautoclaim_values","","xclaim","","xclaim_values","","xdel","","xgroup_create","","xgroup_createconsumer","","xgroup_delconsumer","","xgroup_destroy","","xgroup_setid","","xinfo_consumers","","xinfo_groups","","xinfo_stream","","xlen","","xpending","","xrange","","xrange_values","","xread","","xread_map","","xreadgroup","","xreadgroup_map","","xrevrange","","xrevrange_values","","xtrim","","zadd","","zcard","","zcount","","zdiff","","zdiffstore","","zincrby","","zinter","","zinterstore","","zlexcount","","zmpop","","zmscore","","zpopmax","","zpopmin","","zrandmember","","zrange","","zrangebylex","","zrangebyscore","","zrangestore","","zrank","","zrem","","zremrangebylex","","zremrangebyrank","","zremrangebyscore","","zrevrange","","zrevrangebylex","","zrevrangebyscore","","zrevrank","","zscore","","zunion","","zunionstore","","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","Buffer","Echo","MockCommand","Mocks","SimpleMap","args","borrow","","","","borrow_mut","","","","clear","","clone","clone_into","clone_to_uninit","cmd","del","eq","fmt","","","","from","","","","get","inner","","into","","","","len","new","","pop_back","pop_front","process_command","","","","process_transaction","","push_back","push_front","set","subcommand","take","","to_owned","try_from","","","","try_into","","","","type_id","","","","vzip","","","","Command","args","borrow","borrow_mut","client","clone","clone_into","clone_to_uninit","command","db","eq","fmt","","from","into","run","timestamp","to_owned","to_string","try_from","try_into","type_id","vzip","Blocking","Builder","ConnectionConfig","Expiration","FromRedis","Options","PerformanceConfig","ReconnectPolicy","RedisClient","RedisConfig","RedisError","RedisErrorKind","RedisKey","RedisPool","RedisValue","RedisValueKind","Server","ServerConfig","SetOptions","TcpConfig","TlsConfig","TlsConnector","TracingConfig","Add","Addr","After","AggregateOperation","AggregateOptions","Aggregator","All","","","AllowCrossSlotKeys","AllowOOM","AllowStale","AlmostExact","Any","Append","Apply","Array","","","","Asc","Auto","Avg","","","BackpressureConfig","BackpressurePolicy","Before","BigNumber","BlobError","BlobString","Block","","Blocking","Boolean","","","","BucketTimestamp","Builder","Busy","ByLex","ByScore","Bytes","","","Centralized","ChunkedString","ClientKillFilter","ClientKillType","ClientPauseKind","ClientReplyFlag","ClientState","ClientUnblockFlag","Clients","Cluster","ClusterDiscoveryPolicy","ClusterDown","ClusterFailoverFlag","ClusterHash","ClusterInfo","ClusterResetFlag","ClusterRouting","ClusterSetSlotState","ClusterState","ClusterStateChange","Clustered","CommandStats","Compressed","ConfigEndpoint","ConnectHandle","Connected","Connecting","ConnectionConfig","Constant","Count","","","CountDistinct","CountDistinctIsh","Cpu","CrashAfterElection","CrashAfterPromotion","CredentialProvider","Custom","","","","","","","CustomCommand","DEFAULT_JITTER_MS","DatabaseMemoryStats","Default","DefaultHost","Desc","Disconnected","Disconnecting","Double","","","","","Drain","DuplicatePolicy","EX","EXAT","Earliest","Encoding","End","Error","","Exact","Exclude","Exclusive","Expiration","ExpireOptions","Exponential","Fail","Feet","Filter","First","","FirstKey","FirstValue","","Flush","FnPolicy","Force","FromRedis","FromRedisKey","FtAggregateOptions","FtAlterOptions","FtCreateOptions","FtSearchOptions","Function","FunctionFlag","GT","Geo","GeoPosition","GeoRadiusInfo","GeoShape","GeoUnit","GeoValue","GetLabels","GetTimestamp","GreaterThan","GroupBy","","HScanResult","Hard","Hash","","Hello","Help","HostMapping","ID","Importing","Include","Inclusive","Index","IndexKind","InfiniteLex","InfiniteScore","InfoKind","Integer","","","Interrupt","Invalidation","JSON","KEEPTTL","Keyspace","KeyspaceEvent","Kilometers","LAddr","LMoveDirection","LT","Last","","Latest","Left","LessThan","Lex","Library","Limit","","LimitCount","Linear","List","ListLocation","Load","Loading","Manual","Map","","","","Master","MasterDown","Max","","","","","","","MaxLen","Memory","MemoryStats","Message","","MessageKind","Meters","Mid","Migrating","Miles","Min","","","","","","MinID","Misconf","MultipleGeoValues","MultipleHashSlots","MultipleIDs","MultipleKeys","MultipleOrderedPairs","MultipleStrings","MultipleValues","MultipleWeights","MultipleZaddValues","NX","","Native","NegInfiniteScore","NegInfinityLex","NewInGroup","No","NoCluster","NoReplicas","NoSave","NoWrites","Node","None","","Normal","Now","Null","","","","Number","","Numeric","Off","","Offset","Ok","On","","Options","Ordering","PMessage","PX","PXAT","Page","PerformanceConfig","Persistence","Pubsub","Push","Quantile","Queued","","","RESP2","RESP3","Random","RandomSample","Range","","RangeAggregation","ReadOnly","Rebalance","ReconnectError","ReconnectPolicy","RedisConfig","RedisKey","RedisMap","RedisValue","RedisValueKind","Reducer","ReducerFunc","Remove","Replace","Replica","ReplicaConfig","ReplicaFilter","Replication","Resolve","Resp2TimeSeriesValues","Resp3Frame","Resp3TimeSeriesValues","RespVersion","Right","Rustls","SMessage","SScanResult","Save","ScanResult","ScanType","Scanner","Score","Script","ScriptDebugFlag","SearchField","SearchFilter","SearchGeoFilter","SearchHighlight","SearchParameter","SearchReducer","SearchSchema","SearchSchemaKind","SearchSortBy","SearchSummarize","SelectedLabels","Sentinel","SentinelConfig","SentinelFailureKind","Server","","ServerConfig","Set","","SetOptions","ShutdownFlags","SimpleError","SimpleString","Skip","SkipMe","Sleep","SlotRange","SlowlogEntry","Soft","Some","","SortBy","SortOrder","SpellcheckTerms","Stable","Start","Stats","","StdDev","StdP","","StdS","","Stream","String","","","","","StringOrNumber","Sum","","","","","Sync","TWA","Tag","Takeover","TcpConfig","Text","Timeout","Timestamp","TlsConfig","TlsConnector","TlsHostMapping","ToList","Toggle","TracingConfig","Type","Uncompressed","Unix","UnresponsiveConfig","UseCache","User","VarP","","VarS","","Vector","VerbatimString","Version","WithCursor","WithLabels","Write","XCap","XCapKind","XCapTrim","XID","XPendingArgs","XReadResponse","XReadValue","XX","","Yes","ZCmp","ZRange","ZRangeBound","ZRangeKind","ZScanResult","ZSet","ZSort","add_attributes","aggregation","alias","align","allocator_active","allocator_allocated","allocator_fragmentation_bytes","allocator_fragmentation_ratio","allocator_resident","allocator_rss_bytes","allocator_rss_ratio","aof_buffer","args","","array_len","as_bool","","as_bytes","","","as_bytes_str","","as_f64","as_functions","as_geo_position","as_i64","as_str","","","as_str_lossy","","as_string","as_u64","as_usize","attempts","attribute","","","","attributes","attributes_mut","auto_client_setname","auto_pipeline","avg","backpressure","blocking","","blocking_encode_threshold","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","broadcast_channel_capacity","bucket_duration","bucket_timestamp","build","","build_exclusive_pool","build_pool","build_sentinel_client","build_subscriber_client","caching","can_hash","channel","clients_normal","clients_slaves","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","cluster_cache_update_delay","cluster_current_epoch","cluster_hash","","","cluster_known_nodes","cluster_my_epoch","cluster_node","cluster_owner","cluster_size","cluster_slots_assigned","cluster_slots_fail","cluster_slots_ok","cluster_slots_pfail","cluster_state","cluster_stats_messages_received","cluster_stats_messages_sent","cmd","cmp","","","","","","","","cmp_precedence","connection_error_count","connection_timeout","connector","consumer","convert","","coordinates","count","","create_client","","","","","credential_provider","cursor","","","","","","database","dataset_bytes","dataset_percentage","db","","default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","default_centralized","","default_clustered","","default_command_timeout","default_native_tls","default_rustls","default_sleep","default_tracing_level","deref","deref_mut","dialect","","disable_auto_backpressure","disable_cluster_health_check","distance","duration","empty","enabled","encode_len","end","","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","evalsha","evalsha_with_reload","expander","explainscore","extend","fail_fast","","fcall","fcall_ro","fetch","field_name","fields","","filter","","","","filters","find_key","flags","flatten_array_values","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fragmentation","fragmentation_bytes","frags","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_buffer","from_cluster_slots","from_code","from_config","from_hash","from_iter","","","","","","","from_key","","","from_lua","from_name","from_redis_value","from_static","","from_static_str","","","from_str","","from_url","from_url_centralized","from_url_clustered","from_url_sentinel","from_url_unix","from_value","","","","","","","","full_tracing_level","func","functions","geofilters","get_config","get_connection_config","get_performance_config","get_policy","get_sentinel_config","get_server","groupby","has_more","","","","","hash","","","","","","","","","","","","hash_key","highlight","host","","hostnames","hosts","id","","identifier","idle","ignore_reconnection_errors","infields","inkeys","inner","","","","","","","","","inorder","internal_command_timeout","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_array","into_bytes","","into_bytes_str","into_geo_radius_result","into_integer","into_json","into_map","into_owned_bytes","into_set","into_string","","into_values","into_xautoclaim_values","into_xread_response","into_xread_value","into_zset_result","ip","is_aggregate_type","is_array","is_boolean","is_bytes","is_centralized","is_clustered","is_double","is_end_stream_frame","is_integer","is_map","is_maybe_map","is_normal_pubsub_message","is_null","is_ok","is_pattern_pubsub_message","is_queued","is_sentinel","is_shard_pubsub_message","is_string","is_unix_socket","keepalive","key","keys","keys_bytes_per_key","keys_count","kind","","","","","language","","language_field","latitude","lazy_connections","len","","","","","","","","","","","limit","linger","load","","longitude","lua","lua_caches","major","map","max","","max_attempts","max_command_attempts","max_command_buffer_len","max_feed_count","max_idle","max_in_flight_commands","max_redirections","","max_timeout","maxtextfields","member","","min","","minor","mocks","name","","","","","new","","","","","","","","","","new_centralized","new_clustered","new_constant","new_empty","new_end_stream","new_exponential","new_linear","new_ok","new_sentinel","new_static","new_unix_socket","new_with_tls","next","","","","","next_delay","no_backpressure","nocontent","nodelay","nofields","nofreqs","nohl","nooffsets","nostopwords","on","operation","options","order","overhead_hashtable_expires","overhead_hashtable_main","overhead_hashtable_slot_to_keys","overhead_total","params","","parse","partial_cmp","","","","","","","","password","","patch","payload","payload_field","peak_allocated","peak_percentage","pipeline","policy","port","","position","","pre","prefixes","pretty","primary","primary_fallback","property","radius","random_node","random_slot","range","reconnect_errors","reconnect_on_auth_error","reduce","refresh_interval","","replica","replicas","","replication_backlog","resolve","results","","","","","return","rss_overhead_bytes","rss_overhead_ratio","samples","score","score_field","scorer","separator","server","","","set_cluster_discovery_policy","set_config","set_connection_config","set_jitter","set_performance_config","set_policy","set_sentinel_config","sha1","skipinitialscan","","slop","slots","sortby","start","","startup_allocated","stddev","stopwords","sum","summarize","tags","take","","","","take_attributes","take_results","","","","","tcp","temporary","timeout","","","timestamp","tls","","tls_server_name","to_byte","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_owned_frame","to_str","to_string","","","","","","","","total_allocated","tracing","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ttl","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","unique_hash_slots","unique_primary_nodes","units","unresponsive","username","","uses_native_tls","uses_rustls","uses_tls","value","","verbatim","","verbatim_string_format","version","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","with_config","with_connection_config","with_performance_config","with_sentinel_config","withcount","withpayloads","withscores","withsortkeys","expression","","fields","max","name","num","offset","properties","reducers","disable_backpressure_scaling","min_sleep_duration","attempts","","","delay","","jitter","","","max_attempts","","","max_delay","","min_delay","mult","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","arguments","casesensitive","name","noindex","","","","","","nostem","phonetic","separator","sortable","","","","unf","","","","weight","withsuffixtrie","","hosts","","password","path","policy","server","service_name","username","dictionary","","terms","","NONE","f64_to_redis_string","group_by_hash_slot","redis_keyslot","redis_string_to_f64","sha1_hash","static_bytes","static_str"],"q":[[0,"fred"],[18,"fred::clients"],[224,"fred::error"],[285,"fred::interfaces"],[1145,"fred::interfaces::Resp3Frame"],[1175,"fred::mocks"],[1246,"fred::monitor"],[1269,"fred::prelude"],[1292,"fred::types"],[4202,"fred::types::AggregateOperation"],[4211,"fred::types::BackpressurePolicy"],[4213,"fred::types::ReconnectPolicy"],[4228,"fred::types::Resp3Frame"],[4258,"fred::types::SearchSchemaKind"],[4281,"fred::types::ServerConfig"],[4289,"fred::types::SpellcheckTerms"],[4293,"fred::util"],[4301,"fred::clients::pool"],[4302,"fred::clients::redis"],[4303,"tokio::sync::mutex"],[4304,"fred::protocol::types"],[4305,"alloc::vec"],[4306,"core::result"],[4307,"core::future::future"],[4308,"core::marker"],[4309,"fred::clients::pipeline"],[4310,"fred::_tokio"],[4311,"fred::modules::response"],[4312,"fred::clients::replica"],[4313,"alloc::sync"],[4314,"fred::clients::options"],[4315,"core::clone"],[4316,"fred::clients::sentinel"],[4317,"fred::clients::pubsub"],[4318,"fred::clients::transaction"],[4319,"core::option"],[4320,"core::time"],[4321,"core::fmt"],[4322,"fred::types::scan"],[4323,"futures_core::stream"],[4324,"fred::types::args"],[4325,"core::convert"],[4326,"bytes_utils::string"],[4327,"arc_swap::access"],[4328,"tokio::runtime::task::join"],[4329,"fred::types::config"],[4330,"std::collections::hash::map"],[4331,"fred::types::multiple"],[4332,"alloc::string"],[4333,"alloc::collections::btree::set"],[4334,"core::any"],[4335,"serde_json::error"],[4336,"alloc::borrow"],[4337,"core::error"],[4338,"fred::commands::interfaces::acl"],[4339,"fred::commands::interfaces::keys"],[4340,"fred::commands::interfaces::server"],[4341,"fred::commands::interfaces::lists"],[4342,"fred::types::lists"],[4343,"fred::commands::interfaces::sorted_sets"],[4344,"fred::types::sorted_sets"],[4345,"fred::commands::interfaces::cluster"],[4346,"fred::commands::interfaces::sentinel"],[4347,"fred::commands::interfaces::client"],[4348,"fred::types::client"],[4349,"fred::types::misc"],[4350,"tokio::sync::broadcast"],[4351,"fred::types::cluster"],[4352,"fred::commands::interfaces::metrics"],[4353,"fred::commands::interfaces::config"],[4354,"fred::commands::interfaces::lua"],[4355,"fred::commands::interfaces::redisearch"],[4356,"fred::types::redisearch"],[4357,"bytes::bytes"],[4358,"fred::commands::interfaces::geo"],[4359,"fred::types::geo"],[4360,"fred::commands::interfaces::hashes"],[4361,"redis_protocol::resp3::types"],[4362,"fred::commands::interfaces::tracking"],[4363,"fred::commands::interfaces::redis_json"],[4364,"serde_json::value"],[4365,"fred::commands::interfaces::memory"],[4366,"core::net::ip_addr"],[4367,"fred::commands::interfaces::transactions"],[4368,"core::ops::function"],[4369,"fred::commands::interfaces::hyperloglog"],[4370,"fred::commands::interfaces::pubsub"],[4371,"fred::modules::metrics"],[4372,"fred::commands::interfaces::sets"],[4373,"semver"],[4374,"fred::commands::interfaces::slowlog"],[4375,"fred::commands::interfaces::timeseries"],[4376,"fred::types::timeseries"],[4377,"core::iter::traits::collect"],[4378,"fred::commands::interfaces::streams"],[4379,"fred::types::streams"],[4380,"core::hash"],[4381,"core::cmp"],[4382,"fred::modules::mocks"],[4383,"redis_protocol::error"],[4384,"fred::types::scripts"],[4385,"fred::types::builder"],[4386,"fred::protocol::hashers"],[4387,"fred::protocol::tls"],[4388,"fred::router::replicas"],[4389,"alloc::boxed"],[4390,"core::pin"],[4391,"alloc::collections::vec_deque"],[4392,"rustls::client::client_conn"],[4393,"native_tls"],[4394,"tokio_rustls"],[4395,"tokio_native_tls"],[4396,"std::collections::hash::set"],[4397,"std::path"],[4398,"semver::parse"],[4399,"alloc::collections::btree::map"],[4400,"fred::modules"],[4401,"fred::utils"],[4402,"redis_protocol::utils"]],"i":"```````````````````````````bjAj0Bj23fBnC`BbCb65784321017857843210657843210426578432100787845700657844321078657843210704078657843210670552784327715417227874024478784422212657843210422266578432106578432106578432102278657843210780044Gn0000000000``000000Ab10100101010010010010100000000011001010101`Ll`00000````0Cn`````1````1``110`1``````1`11``````1Hh00000000000000000000000Al0Hn0IbId000If000000000In00000Jb0Jf0Jh08800000000000000880000000000002222Kh33333333333333333333333333333333333333Ld0Lf04400000044;;;;33::;;;;88::::::::Ln3M`000<<<<<<66::Md000>>>>77>>Mf000000000000000000000000000000000000000000000000000111111111111111111111111Nh000000000000000??99??????Al0Of0Ib111111111111111111111111111122Hn0000033==33On0444444A@b0000000000000000000000000000000000000000000=Id033If0000000000000000000000000Jf000A@j000000000Kh77227777AA`033Jb022288222244<<999999AAf00000====AAh0;;00000000000000>>;;Ld000000000577<<<<7777<<88888888AAl000M`0000000000000001111;;;;;;99Al0??::00??00::222222ABh00000333333<<<<`3355333355??11??Hn066444466885555555555ABn00000000000000000000000000000000011Jh022<88224444Id0553355ADb000000000000000000000000000000000000000000000000000In00000000000000000000000000000000000000000000000000000000000BAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCb=<;:987654321500`````AFh0AFjAFdAFf32101033331332103210110321001000AFl3210011242144321432143214321`AFn0000000000000`0000000```````````````````````KjJjA@h```JnOlAJnALf00ALn`NfAKdLlHjAHfI`ObADhAJhACfAMb``A@h999AHnACb`;:98``AHlAFb0<;:AIj>``````Ol0`3````````10AC`AIh`ABl0`Fb=<;==4ABf0`AGfAGh:AJhALbACdAD````;4Ob99LlHjAHdAHfI`AI``ABb08`AMdAHnKdALnNbALl``FbAHhNnAKdACbACfAGf0AJhNf`Kn````````AAdALb``0````AEh`9`L`AL`FlLlABf`JjLbNbALlALj`00`HjAHfI`AHn``LlFl``11K`JjAI```L`BCdAJnAKd``LbAMd`OlAJhACfAMb10=HjAHdAHfI`Fl`AEl8ACb87AAn9ALbKn`1Kd````=``JjAC`AIj`AIh3ACfAMb108Ll``ACjJn```````NjAAd>`````Fl`5AClMn1AJd0000000AJfAJjI`;0;Dn1011111<0101111FbAKfAKhAKnMjLl0F`EnAAj1ElLj3AB`Oh74AElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAAjAElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdEn44AGdAB`1111FhI`A@lAJd04OhLlAGfAGhAGjAGlnAGn9AH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdF`AHjDnFhLj3312333333330AB`n4A@fALdALfAGbALh6AHbAHdDnOjAHf0?AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABl0AJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALd0ALfAGb0ALh0J`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAJd0AKjAB`OhLl000AAjAElKf0000FnDjGbGlAEn0000AEjAGf0000AGhAGj0AGl0000n000AGnA@lAH`JdAHbAHd000000000000000Dn000000000000000000000000Oj00AHfI`000000000000000000000000000000000000AGdJlJjJnK`Kb0A@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOd0NnAInNl000AJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGj0000000000000000000000AJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALj0000ALlAF`00000ALnADj0ADd000AM`ADf0ADh0000AEd00000AC`ACbACd0ACfACj00AD`0ACl0AMbACn0AMdLlJdALhAGdALdKfAEnAEjOjI`GjACjADnDn49;AJ`15AHd26AB`ALfEl0000An6:AHjOdAJbAJdAJfAIlAJjALhN`AGd0000JdACnAMjFnDjGbGlAB`LlAGfnDnI`A@fALdALfAGbALhAJ`JdN`:FdAGjAIjAH`AJfAJlAEdAHb88KfAEnAEjDnOjNlGjADjADdN`F`AIfAB`OhLlAAjAElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdI`Dn1111111101Gj2222AJf3333AIj04Ll555055051051AIdA@fA@`AJd049A@lMnAF`N`Ml0OdAHb;KfAEnAEjJdOjNlGjADjADdAKj=AIdALdMh>1AJdAB`B@hAAjAKfFhF`0EnAK`AIb34AIfMlAInAJ`:9=>?AKlLlDnOjI`3AMjFnDjGbGlF`MlFhMhN`AJfElFdnOhAB`1LlAGfAGhAGjAGl7AGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdLlALfAB`2nAHfABlALdAGbALhAJdElFd9Oh<>{{{d{Hn}}cIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Hn}}cIj}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Al}}{Cf{Ol}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{Ch}}}}}}Ah}}}}0{{{d{On}}}{{Kl{A@`}}}}0{{{d{Al}}}Cl}00000{{{d{A@b}}ce{A`{g}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ceg{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ceIl{A`{g}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}c{Cf{e}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}c{Cf{e}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}ceIlIl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}02222{{{d{A@b}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}c{Cf{e}}{Cf{g}}{Cf{i}}k}{{`{{Af{}{{l{{Cn{m}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Fj}}Ah}An}0{{{d{A@b}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}{A`{{Mb{ceg}}}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}022777777{{{d{A@b}}ceg{Cf{Nj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}c{Cf{e}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0996699{{{d{Kh}}}{{Kl{A@f}}}}{{{d{Id}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Hn}}ceClCl{Cf{Il}}Cl}{{`{{Af{}{{l{{Ad{gAb}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}cIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}cA@heg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ceIhIh}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}cIh{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{If}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ce{Cf{Il}}{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}000{{{d{If}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}cIle}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}00011{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{A@j}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}000{{{d{A@j}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}011{{{d{A@j}}c{Cf{Df}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Kh}}}{{Kl{A@l}}}}{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{Jf}}cA@nDdDf}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{Hl{Oj}}Ah}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{Hl{Oj}}Ah}An}0{{{d{AA`}}}Cb}099{{{d{Jb}}}Ef}0{{{d{Kh}}ceg}{{Ej{{Cn{Cd}}}}}{{AAb{Ab}{{l{{Cn{Cd}}}}}}Ah}{{AAb{n}{{l{{Cn{Cd}}}}}}Ah}{{AAb{{A`{Kj}}}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{{A`{Kj}}}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{Ab}{{l{{Cn{Cd}}}}}}Ah}}{{{d{On}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@`}{{l{{Cn{Cd}}}}}}Ah}}0{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@f}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@l}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{n}{{l{{Cn{Cd}}}}}}Ah}}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}En}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Hn}}cIl{Cf{AAd}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}000{{{d{AAf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}Oh}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}077{{{d{AAh}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{I`}}Ah}An}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{AAh}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Fj}}Ah}An}0220044{{{d{Al}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Ld}}}AAj}000{{{d{Ld}}}Ef}01111{{{d{Kh}}}{{Kl{n}}}}{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Hn}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0001111{{{d{Hn}}cIlI`ClCl{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}000{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{M`}}AAn}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{M`}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Fj}}Ah}An}0{{{d{M`}}Cl}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}000{{{d{M`}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}000{{{d{M`}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}000{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{Id}}Lh}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Id}}}{{Cf{{A`{n}}}}}}0{{{d{Id}}}{{Cf{n}}}}0{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Al}}}{{Cf{AB`}}}}0{{{d{Hn}}ce{Cf{ABb}}{Cf{Nj}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{Jf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{Oj}}Ah}An}0{{{d{Al}}{Bh{G`}}}{{`{AfAh}}}}0{{{d{Hn}}cDfe}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{Al}}{Cf{ABd}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Jf}}ABf}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0<<;;{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{ABh}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{ABh}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{ABh}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAl}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}c{Cf{Eb}}{Cf{ABj}}e{Cf{Ob}}Cl{Cf{Dn}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{d{If}}c{Cf{Eb}}{Cf{ABj}}e{Cf{Ob}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{Kl{c}}e}{{Ej{{Cn{Cd}}}}}{BlAh}{{AAb{c}{{l{{Cn{Cd}}}}}}Ah}}{{{d{AAl}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{AAh}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{I`}}Ah}An}01166{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{On}}cClClClCl}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{Al}}}ABl}0{{{d{On}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}044{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}066{{{d{Jb}}}{{`{{Af{}{{l{{Ad{CdAb}}}}}}Ah}}}}0{{{d{Ld}}}AAj}000{{{d{Ld}}}Ef}01111{{{d{ABn}}ceIj{Cf{Ed}}{Cf{AC`}}{Cf{Ed}}{Cf{ACb}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ACd}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}c{Cf{Ed}}{Cf{Ed}}{Cf{ACb}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}c{Cf{Ed}}{Cf{AC`}}{Cf{Ed}}{Cf{ACb}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}ce{Mb{ACfEd}}{Cf{Ed}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{ABn}}cIj{Cf{ACd}}{Cf{Ed}}Cl{Cf{Ed}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{ABn}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{ABn}}cCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}03300{{{d{ABn}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{ACh{}{{Dh{{Mb{cACdIj}}}}}}Ah}An}0{{{d{ABn}}Cl{Cf{c}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{ACj}}Ah}{{E`{Eb}}Ah}{{ACh{}{{Dh{e}}}}Ah}An}0{{{d{ABn}}ceClg{Cf{{Mb{IlIl}}}}{Cf{ACj}}{Cf{Ed}}{Cf{ACl}}k{Cf{ACn}}}{{`{{Af{}{{l{{Cn{m}}}}}}Ah}}}{{Hl{AD`}}Ah}{{Hl{AD`}}Ah}{{ACh{}{{Dh{Il}}}}Ah}{{E`{Eb}}Ah}{{ACh{}{{Dh{i}}}}Ah}An}000{{{d{ABn}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{ACh{}{{Dh{c}}}}Ah}An}0{{{d{ABn}}cegCli{Cf{{Mb{IlIl}}}}{Cf{Ed}}{Cf{ACl}}}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AD`}}Ah}{{Hl{AD`}}Ah}{{ACh{}{{Dh{Il}}}}Ah}An}000{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Jh}}{Cf{Kd}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{Kh}}}{{Kl{n}}}}{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{Hn}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Al}}En}Cd}0{{{d{Al}}}Cl}0{{{d{Id}}IlIl}{{`{{Af{}{{l{{Ad{cAb}}}}}}Ah}}}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Gj}}Ah}}0{{{d{Al}}{d{Fh}}}{{Bj{Al}}}}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}cClegi}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ADf}}Ah}{{E`{ADh}}Ah}{{Hl{ADj}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}Cl}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}Cl}{{`{{Af{}{{l{{Cn{{Mb{Gd{A`{{ADl{kmo}}}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}cegEdi{Cf{Ed}}{Cf{Ed}}{Cf{Ed}}ClCl}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}{Cf{Ed}}{Cf{Ed}}ClCl}{{`{{Af{}{{l{{Cn{{A`{{ADl{kmo}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{d{ADb}}cegCl}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}An}000{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}011{{{d{ADb}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{ADb}}cCl{Cf{Ed}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}011{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{AEd}}Ah}An}0{{{d{ADb}}ceg{Cf{Ed}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An}0{{{d{ADb}}ceg{Cf{Ed}}}{{`{{Af{}{{l{{Cn{{A`{{ADl{ikm}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}{Cf{Ed}}{Cf{Ed}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}{Cf{Ed}}{Cf{Ed}}ce}{{`{{Af{}{{l{{Cn{{AEf{gikm}}}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{ADd}}Ah}{ADnAE`AEb}An{ADnAE`AEb}An}0{{{d{ADb}}ce{Cf{Ed}}{Cf{Ed}}Clgi}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Gj}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}ce{Cf{Ed}}{Cf{Ed}}Clgi}{{`{{Af{}{{l{{Cn{{AEf{kmoAa}}}}}}}}Ah}}}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Gj}}Ah}{{E`{ADd}}Ah}{ADnAE`AEb}An{ADnAE`AEb}An}05544{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ADf}}Ah}An}0{{{d{In}}c{Cf{Nj}}{Cf{AEh}}ClCle}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AEj}}Ah}An}0{{{d{In}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}cIjIj}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}cCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{In}}cIje}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{In}}ce{Cf{AEl}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{AEn}}Ah}An}0{{{d{In}}ceg{Cf{AEl}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}{{E`{AEn}}Ah}An}0{{{d{In}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cJ`{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{In}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}000{{{d{In}}c{Cf{{Mb{IlCl}}}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}ceg{Cf{AFb}}Cl{Cf{ABj}}Cl}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}ceg{Cf{ABj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cegCl{Cf{ABj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cegi{Cf{AFb}}Cl{Cf{ABj}}}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}07799{{{d{In}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0::{{{d{In}}cIlIlCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}055442222==<<````````````````````````````````````{d{{d{c}}}{}}000{{{d{B`}}}{{d{B`c}}}{}}000{{{d{AFd}}}Cd}{{{d{AFf}}}Cd}{{{d{AFh}}}AFh}{{d{d{B`c}}}Cd{}}{dCd}`{{{d{AFd}}{A`{I`}}}{{Ad{I`Ab}}}}{{{d{AFh}}{d{AFh}}}Cl}{{{d{AFh}}{d{B`D`}}}Db}{{{d{AFj}}{d{B`D`}}}Db}{{{d{AFd}}{d{B`D`}}}Db}{{{d{AFf}}{d{B`D`}}}Db}{cc{}}0006{{{d{AFd}}}{{Ff{DnI`}}}}{{{d{AFf}}}{{A`{AFh}}}}{{}c{}}000{{{d{AFf}}}Ef}{{}AFd}{{}AFf}{{{d{AFf}}}{{Cf{AFh}}}}0{{{d{AFl}}AFh}{{Ad{I`Ab}}}}{{{d{AFj}}AFh}{{Ad{I`Ab}}}}{{{d{AFd}}AFh}{{Ad{I`Ab}}}}{{{d{AFf}}AFh}{{Ad{I`Ab}}}}{{{d{AFl}}{A`{AFh}}}{{Ad{I`Ab}}}}0{{{d{AFf}}AFh}Cd}0{{{d{AFd}}{A`{I`}}}{{Ad{I`Ab}}}}`=<{dc{}}{c{{Ad{e}}}{}{}}000{{}{{Ad{c}}}{}}000{dGh}000????``{d{{d{c}}}{}}{{{d{B`}}}{{d{B`c}}}{}}`{{{d{AFn}}}AFn}{{d{d{B`c}}}Cd{}}{dCd}``{{{d{AFn}}{d{AFn}}}Cl}{{{d{AFn}}{d{B`D`}}}Db}0{cc{}}{{}c{}}{El{{Ad{{`{{Dl{}{{Dh{AFn}}}}}}Ab}}}}`={dGd}=<;2```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{B`Ll}}}{{Ad{CdAG`}}}}`````````````{{{d{I`}}}{{Cf{Ef}}}}{{{d{Ll}}}{{Cf{Cl}}}}{{{d{I`}}}{{Cf{Cl}}}}{{{d{Ll}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{Dn}}}{{d{{Bd{Lh}}}}}}{{{d{I`}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{Dn}}}{{Cf{Eb}}}}{{{d{I`}}}{{Cf{Eb}}}}{{{d{I`}}}{{Cf{Ij}}}}{{{d{I`}}{d{H`}}}{{Ad{{A`{AGb}}Ab}}}}{{{d{I`}}}{{Ad{{Cf{Od}}Ab}}}}{{{d{I`}}}{{Cf{Il}}}}{{{d{Ll}}}{{Cf{{d{H`}}}}}}{{{d{Dn}}}{{Cf{{d{H`}}}}}}{{{d{I`}}}{{Cf{{Hd{H`}}}}}}{{{d{Dn}}}{{Hd{H`}}}}1{{{d{I`}}}{{Cf{Gd}}}}{{{d{I`}}}{{Cf{Ed}}}}{{{d{I`}}}{{Cf{Ef}}}}{{{d{Fb}}}Df}````{{{d{Ll}}}{{Cf{d}}}}{{{d{B`Ll}}}{{Cf{{d{B`}}}}}}```````{d{{d{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{B`}}}{{d{B`c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{AGd}}}{{Ad{fAb}}}}`{{{d{AGd}}Ef}{{Ad{bAb}}}}{{{d{AGd}}Ef}{{Ad{jAb}}}}{{{d{AGd}}}{{Ad{BnAb}}}}{{{d{AGd}}}{{Ad{C`Ab}}}}`{{{d{I`}}}Cl}```{{{d{AB`}}}AB`}{{{d{Oh}}}Oh}{{{d{Ll}}}Ll}{{{d{AGf}}}AGf}{{{d{AGh}}}AGh}{{{d{AGj}}}AGj}{{{d{AGl}}}AGl}{{{d{n}}}n}{{{d{AGn}}}AGn}{{{d{A@l}}}A@l}{{{d{AH`}}}AH`}{{{d{Jd}}}Jd}{{{d{AHb}}}AHb}{{{d{AHd}}}AHd}{{{d{Dn}}}Dn}{{{d{Oj}}}Oj}{{{d{AHf}}}AHf}{{{d{I`}}}I`}{{{d{AGd}}}AGd}{{{d{Jl}}}Jl}{{{d{Jj}}}Jj}{{{d{Jn}}}Jn}{{{d{K`}}}K`}{{{d{Kb}}}Kb}{{{d{A@`}}}A@`}{{{d{AHh}}}AHh}{{{d{AHj}}}AHj}{{{d{Kn}}}Kn}{{{d{L`}}}L`}{{{d{Lb}}}Lb}{{{d{AHl}}}AHl}{{{d{Fb}}}Fb}{{{d{AHn}}}AHn}{{{d{AI`}}}AI`}{{{d{AIb}}}AIb}{{{d{AId}}}AId}{{{d{AIf}}}AIf}{{{d{AIh}}}AIh}{{{d{F`}}}F`}{{{d{En}}}En}{{{d{El}}}El}{{{d{AIj}}}AIj}{{{d{AIl}}}AIl}{{{d{Fd}}}Fd}{{{d{Fh}}}Fh}{{{d{Od}}}Od}{{{d{Nn}}}Nn}{{{d{AIn}}}AIn}{{{d{Nl}}}Nl}{{{d{AJ`}}}AJ`}{{{d{Ih}}}Ih}{{{d{A@h}}}A@h}{{{d{ABd}}}ABd}{{{d{A@f}}}A@f}{{{d{Ol}}}Ol}{{{d{Lj}}}Lj}{{{d{Kj}}}Kj}{{{d{Nj}}}Nj}{{{d{AAd}}}AAd}{{{d{ABb}}}ABb}{{{d{ABl}}}ABl}{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{{d{AJf}}}AJf}{{{d{AAn}}}AAn}{{{d{ABf}}}ABf}{{{d{Ob}}}Ob}{{{d{Nf}}}Nf}{{{d{Kd}}}Kd}{{{d{Gj}}}Gj}{{{d{AJh}}}AJh}{{{d{AJj}}}AJj}{{{d{AJl}}}AJl}{{{d{AJn}}}AJn}{{{d{AK`}}}AK`}{{{d{AKb}}}AKb}{{{d{AKd}}}AKd}{{{d{Mh}}}Mh}{{{d{AKf}}}AKf}{{{d{AKh}}}AKh}{{{d{AKj}}}AKj}{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{N`}}}N`}{{{d{AL`}}}AL`}{{{d{Ml}}}Ml}{{{d{ALb}}}ALb}{{{d{Mn}}}Mn}{{{d{Mj}}}Mj}{{{d{Nb}}}Nb}{{{d{Fl}}}Fl}{{{d{ALd}}}ALd}{{{d{ALf}}}ALf}{{{d{AGb}}}AGb}{{{d{ALh}}}ALh}{{{d{J`}}}J`}{{{d{AEh}}}AEh}{{{d{AFb}}}AFb}{{{d{ALj}}}ALj}{{{d{ALl}}}ALl}{{{d{AF`}}}AF`}{{{d{ALn}}}ALn}{{{d{ADj}}}ADj}{{{d{ADd}}}ADd}{{{d{AM`}}}AM`}{{{d{ADf}}}ADf}{{{d{ADh}}}ADh}{{{d{AEd}}}AEd}{{{d{AC`}}}AC`}{{{d{ACb}}}ACb}{{{d{ACd}}}ACd}{{{d{ACf}}}ACf}{{{d{ACj}}}ACj}{{{d{AD`}}}AD`}{{{d{ACl}}}ACl}{{{d{AMb}}}AMb}{{{d{ACn}}}ACn}{{{d{AMd}}}AMd}{{d{d{B`c}}}Cd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dCd}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``{{{d{Dn}}}Dd}`````{{{d{Dn}}{d{c}}}{{Cf{n}}}Al}`````````{{{d{AB`}}{d{AB`}}}AMf}{{{d{n}}{d{n}}}AMf}{{{d{Dn}}{d{Dn}}}AMf}{{{d{A@f}}{d{A@f}}}AMf}{{{d{ALd}}{d{ALd}}}AMf}{{{d{ALf}}{d{ALf}}}AMf}{{{d{AGb}}{d{AGb}}}AMf}{{{d{ALh}}{d{ALh}}}AMf}7````{Dn{{Ad{cAb}}}ADn}{I`{{Ad{cAb}}}An}```{{{d{{AMj{}{{AMh{c}}}}}}}f{}}{{{d{Fn}}}f}{{{d{Dj}}}f}{{{d{Gb}}}f}{{{d{Gl}}}f}`{{{d{{AMj{}{{AMh{c}}}}}}}{{Cf{{Hd{H`}}}}}{}}{{{d{Fn}}}{{Cf{{Hd{H`}}}}}}{{{d{Dj}}}{{Cf{{Hd{H`}}}}}}{{{d{Gb}}}{{Cf{{Hd{H`}}}}}}{{{d{Gl}}}{{Cf{{Hd{H`}}}}}}``````{{}AGf}{{}AHb}{{}AGd}{{}AHh}{{}AHj}{{}Fb}{{}AHn}{{}AI`}{{}AIb}{{}AId}{{}AIf}{{}AIh}{{}F`}{{}En}{{}El}{{}AIj}{{}AIl}{{}Fd}{{}Fh}{{}AJ`}{{}AJb}{{}AJd}{{}Nf}{{}Mh}{{}AKj}{{}AKl}{{}N`}{{}Ml}{{}ALl}{{}ACd}{{}AGd}?0?`{{}{{Ad{AGlAb}}}}0{{}AI`}`{{{d{Oj}}}{{d{c}}}{}}{{{d{B`Oj}}}{{d{B`c}}}{}}````````{{{d{Ll}}}Ef}``{{{d{AB`}}{d{AB`}}}Cl}{{{d{Oh}}{d{Oh}}}Cl}{{{d{Ll}}{d{Ll}}}Cl}{{{d{AGf}}{d{AGf}}}Cl}{{{d{AGh}}{d{AGh}}}Cl}{{{d{AGj}}{d{AGj}}}Cl}{{{d{AGl}}{d{AGl}}}Cl}{{{d{n}}{d{n}}}Cl}{{{d{AGn}}{d{AGn}}}Cl}{{{d{A@l}}{d{A@l}}}Cl}{{{d{AH`}}{d{AH`}}}Cl}{{{d{AHb}}{d{AHb}}}Cl}{{{d{AHd}}{d{AHd}}}Cl}{{{d{Dn}}{d{Dn}}}Cl}{{{d{Oj}}{d{Oj}}}Cl}{{{d{AHf}}{d{AHf}}}Cl}{{{d{I`}}{d{I`}}}Cl}{{{d{Jl}}{d{Jl}}}Cl}{{{d{Jj}}{d{Jj}}}Cl}{{{d{Jn}}{d{Jn}}}Cl}{{{d{K`}}{d{K`}}}Cl}{{{d{Kb}}{d{Kb}}}Cl}{{{d{A@`}}{d{A@`}}}Cl}{{{d{AHh}}{d{AHh}}}Cl}{{{d{AHj}}{d{AHj}}}Cl}{{{d{Kn}}{d{Kn}}}Cl}{{{d{L`}}{d{L`}}}Cl}{{{d{Lb}}{d{Lb}}}Cl}{{{d{AHl}}{d{AHl}}}Cl}{{{d{Fb}}{d{Fb}}}Cl}{{{d{AHn}}{d{AHn}}}Cl}{{{d{AI`}}{d{AI`}}}Cl}{{{d{AIb}}{d{AIb}}}Cl}{{{d{AId}}{d{AId}}}Cl}{{{d{AIf}}{d{AIf}}}Cl}{{{d{AIh}}{d{AIh}}}Cl}{{{d{F`}}{d{F`}}}Cl}{{{d{En}}{d{En}}}Cl}{{{d{El}}{d{El}}}Cl}{{{d{AIj}}{d{AIj}}}Cl}{{{d{Fh}}{d{Fh}}}Cl}{{{d{Od}}{d{Od}}}Cl}{{{d{Nn}}{d{Nn}}}Cl}{{{d{AIn}}{d{AIn}}}Cl}{{{d{Nl}}{d{Nl}}}Cl}{{{d{AJ`}}{d{AJ`}}}Cl}{{{d{Ih}}{d{Ih}}}Cl}{{{d{A@h}}{d{A@h}}}Cl}{{{d{ABd}}{d{ABd}}}Cl}{{{d{A@f}}{d{A@f}}}Cl}{{{d{Ol}}{d{Ol}}}Cl}{{{d{Lj}}{d{Lj}}}Cl}{{{d{Kj}}{d{Kj}}}Cl}{{{d{Nj}}{d{Nj}}}Cl}{{{d{AAd}}{d{AAd}}}Cl}{{{d{ABb}}{d{ABb}}}Cl}{{{d{ABl}}{d{ABl}}}Cl}{{{d{AJb}}{d{AJb}}}Cl}{{{d{AJd}}{d{AJd}}}Cl}{{{d{AJf}}{d{AJf}}}Cl}{{{d{AAn}}{d{AAn}}}Cl}{{{d{ABf}}{d{ABf}}}Cl}{{{d{Ob}}{d{Ob}}}Cl}{{{d{Nf}}{d{Nf}}}Cl}{{{d{Kd}}{d{Kd}}}Cl}{{{d{Gj}}{d{Gj}}}Cl}{{{d{AJh}}{d{AJh}}}Cl}{{{d{AJj}}{d{AJj}}}Cl}{{{d{AJl}}{d{AJl}}}Cl}{{{d{AJn}}{d{AJn}}}Cl}{{{d{AK`}}{d{AK`}}}Cl}{{{d{AKb}}{d{AKb}}}Cl}{{{d{AKd}}{d{AKd}}}Cl}{{{d{AKj}}{d{AKj}}}Cl}{{{d{AKl}}{d{AKl}}}Cl}{{{d{AKn}}{d{AKn}}}Cl}{{{d{AL`}}{d{AL`}}}Cl}{{{d{Fl}}{d{Fl}}}Cl}{{{d{ALd}}{d{ALd}}}Cl}{{{d{ALf}}{d{ALf}}}Cl}{{{d{AGb}}{d{AGb}}}Cl}{{{d{ALh}}{d{ALh}}}Cl}{{{d{J`}}{d{J`}}}Cl}{{{d{AEh}}{d{AEh}}}Cl}{{{d{AFb}}{d{AFb}}}Cl}{{{d{ALl}}{d{ALl}}}Cl}{{{d{ALn}}{d{ALn}}}Cl}{{{d{ADj}}{d{ADj}}}Cl}{{{d{ADd}}{d{ADd}}}Cl}{{{d{AM`}}{d{AM`}}}Cl}{{{d{ADf}}{d{ADf}}}Cl}{{{d{ADh}}{d{ADh}}}Cl}{{{d{AEd}}{d{AEd}}}Cl}{{{d{AC`}}{d{AC`}}}Cl}{{{d{ACb}}{d{ACb}}}Cl}{{{d{ACd}}{d{ACd}}}Cl}{{{d{ACf}}{d{ACf}}}Cl}{{{d{ACj}}{d{ACj}}}Cl}{{{d{AD`}}{d{AD`}}}Cl}{{{d{ACl}}{d{ACl}}}Cl}{{{d{AMb}}{d{AMb}}}Cl}{{{d{ACn}}{d{ACn}}}Cl}{{{d{AMd}}{d{AMd}}}Cl}{{{d{ALd}}{d{c}}eg}{{Cn{i}}}{M`AhAMl}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}{{{d{ALd}}{d{f}}ce}{{Cn{g}}}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}``{{{d{B`Fh}}{d{Fh}}}{{d{B`Fh}}}}``{{{d{AGb}}{d{c}}eg}{{Cn{i}}}{MdAhAMl}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AMn}}{Cf{{d{n}}}}}{{ANb{{AN`{Af}}}}}}```{{{d{ANd}}{d{n}}{d{n}}}{{ANb{{AN`{Af}}}}}}0```{{{d{AGf}}{d{{Bd{I`}}}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{AGb}}}{{d{{Bd{ALf}}}}}}{{I`Ef}I`}{{{d{AB`}}{d{B`D`}}}{{Ad{CdANf}}}}0{{{d{Oh}}{d{B`D`}}}{{Ad{CdANf}}}}{{{d{Ll}}{d{B`D`}}}{{Ad{CdANf}}}}{{{d{AGf}}{d{B`D`}}}Db}{{{d{AGh}}{d{B`D`}}}Db}{{{d{AGj}}{d{B`D`}}}Db}{{{d{AGl}}{d{B`D`}}}Db}{{{d{n}}{d{B`D`}}}Db}0{{{d{AGn}}{d{B`D`}}}Db}{{{d{A@l}}{d{B`D`}}}Db}{{{d{AH`}}{d{B`D`}}}Db}{{{d{Jd}}{d{B`D`}}}Db}{{{d{AHb}}{d{B`D`}}}Db}{{{d{AHd}}{d{B`D`}}}Db}{{{d{Dn}}{d{B`D`}}}Db}{{{d{Oj}}{d{B`D`}}}Db}{{{d{AHf}}{d{B`D`}}}Db}0{{{d{I`}}{d{B`D`}}}Db}{{{d{AGd}}{d{B`D`}}}Db}{{{d{Jl}}{d{B`D`}}}Db}{{{d{Jj}}{d{B`D`}}}Db}{{{d{Jn}}{d{B`D`}}}Db}{{{d{K`}}{d{B`D`}}}Db}{{{d{Kb}}{d{B`D`}}}Db}{{{d{A@`}}{d{B`D`}}}Db}{{{d{AHh}}{d{B`D`}}}Db}{{{d{AHj}}{d{B`D`}}}Db}{{{d{Kn}}{d{B`D`}}}Db}{{{d{L`}}{d{B`D`}}}Db}{{{d{Lb}}{d{B`D`}}}Db}{{{d{AHl}}{d{B`D`}}}Db}{{{d{Fb}}{d{B`D`}}}Db}{{{d{AHn}}{d{B`D`}}}Db}{{{d{AI`}}{d{B`D`}}}Db}{{{d{AIb}}{d{B`D`}}}Db}{{{d{AId}}{d{B`D`}}}Db}{{{d{AIf}}{d{B`D`}}}Db}{{{d{AIh}}{d{B`D`}}}Db}{{{d{F`}}{d{B`D`}}}Db}{{{d{En}}{d{B`D`}}}Db}{{{d{El}}{d{B`D`}}}Db}{{{d{AIj}}{d{B`D`}}}Db}{{{d{AIl}}{d{B`D`}}}Db}{{{d{Fd}}{d{B`D`}}}Db}{{{d{Fh}}{d{B`D`}}}Db}{{{d{Od}}{d{B`D`}}}Db}{{{d{Nn}}{d{B`D`}}}Db}{{{d{AIn}}{d{B`D`}}}Db}{{{d{Nl}}{d{B`D`}}}Db}{{{d{AJ`}}{d{B`D`}}}Db}{{{d{Ih}}{d{B`D`}}}Db}{{{d{A@h}}{d{B`D`}}}Db}{{{d{ABd}}{d{B`D`}}}Db}{{{d{A@f}}{d{B`D`}}}Db}{{{d{Ol}}{d{B`D`}}}Db}{{{d{Lj}}{d{B`D`}}}Db}{{{d{Kj}}{d{B`D`}}}Db}{{{d{Nj}}{d{B`D`}}}Db}{{{d{AAd}}{d{B`D`}}}Db}{{{d{ABb}}{d{B`D`}}}Db}{{{d{ABl}}{d{B`D`}}}Db}0{{{d{AJb}}{d{B`D`}}}Db}{{{d{AJd}}{d{B`D`}}}Db}{{{d{AJf}}{d{B`D`}}}Db}{{{d{AAn}}{d{B`D`}}}Db}{{{d{ABf}}{d{B`D`}}}Db}{{{d{Ob}}{d{B`D`}}}Db}{{{d{Nf}}{d{B`D`}}}Db}{{{d{Kd}}{d{B`D`}}}Db}{{{d{Gj}}{d{B`D`}}}Db}{{{d{AJh}}{d{B`D`}}}Db}{{{d{AJj}}{d{B`D`}}}Db}{{{d{AJl}}{d{B`D`}}}Db}{{{d{AJn}}{d{B`D`}}}Db}{{{d{AK`}}{d{B`D`}}}Db}{{{d{AKb}}{d{B`D`}}}Db}{{{d{AKd}}{d{B`D`}}}Db}{{{d{Mh}}{d{B`D`}}}Db}{{{d{AKf}}{d{B`D`}}}Db}{{{d{AKh}}{d{B`D`}}}Db}{{{d{AKj}}{d{B`D`}}}Db}{{{d{AKl}}{d{B`D`}}}Db}{{{d{AKn}}{d{B`D`}}}Db}{{{d{N`}}{d{B`D`}}}Db}{{{d{AL`}}{d{B`D`}}}Db}{{{d{Ml}}{d{B`D`}}}Db}{{{d{ALb}}{d{B`D`}}}Db}{{{d{Mn}}{d{B`D`}}}Db}{{{d{Mj}}{d{B`D`}}}Db}{{{d{Nb}}{d{B`D`}}}Db}{{{d{Fl}}{d{B`D`}}}Db}{{{d{ALd}}{d{B`D`}}}Db}0{{{d{ALf}}{d{B`D`}}}Db}{{{d{AGb}}{d{B`D`}}}Db}0{{{d{ALh}}{d{B`D`}}}Db}0{{{d{J`}}{d{B`D`}}}Db}{{{d{AEh}}{d{B`D`}}}Db}{{{d{AFb}}{d{B`D`}}}Db}{{{d{ALj}}{d{B`D`}}}Db}{{{d{ALl}}{d{B`D`}}}Db}{{{d{AF`}}{d{B`D`}}}Db}{{{d{ALn}}{d{B`D`}}}Db}{{{d{ADj}}{d{B`D`}}}Db}{{{d{ADd}}{d{B`D`}}}Db}{{{d{AM`}}{d{B`D`}}}Db}{{{d{ADf}}{d{B`D`}}}Db}{{{d{ADh}}{d{B`D`}}}Db}{{{d{AEd}}{d{B`D`}}}Db}{{{d{AC`}}{d{B`D`}}}Db}{{{d{ACb}}{d{B`D`}}}Db}{{{d{ACd}}{d{B`D`}}}Db}{{{d{ACf}}{d{B`D`}}}Db}{{{d{ACj}}{d{B`D`}}}Db}{{{d{AD`}}{d{B`D`}}}Db}{{{d{ACl}}{d{B`D`}}}Db}{{{d{AMb}}{d{B`D`}}}Db}{{{d{ACn}}{d{B`D`}}}Db}{{{d{AMd}}{d{B`D`}}}Db}```{cc{}}00{IlLl}{ClLl}{IjLl}33{{{ANh{Dd}}}Kf}{{{A`{Dd}}}Kf}{DdKf}{{{d{{Bd{Dd}}}}}Kf}77777{IjAEn}{{{Cf{Ij}}}AEn}9{{{A`{Ij}}}AEn}{{{ANh{Ij}}}AEn};{{{d{{Bd{Lh}}}}}AGf}{{{d{H`}}}AGf}={{{Cf{Dd}}}AGf}{DdAGf}??{cAGj{{E`{AGl}}}}{cc{}}{ANjAGl}{ANlAGl}{ANnAGl}{AO`AGl}{{{Mb{{d{H`}}Dd}}}n}{{{d{n}}}n}{{{Mb{GdDd}}}n}777777{DfAHd}{AObAHd}{{{d{H`}}}AHd}{GdAHd}{EbAHd}{AOdAHd}={AOfAHd}{AOhAHd}{IlAHd}{AOjAHd}{LhAHd}{DdAHd}{IjAHd}{EdAHd}{EfAHd}{LhDn}{{{d{Dn}}}Dn}{NdDn}{DdDn}{{{AN`{{Bd{Lh}}}}}Dn}{ClDn}{DfDn}{{{d{{Bd{Lh}}}}}Dn}{IjDn}{AObDn}{GdDn}{AOjDn}{AOlDn}{cc{}}{IlDn}{{{d{Gd}}}Dn}{AOhDn}{AOfDn}{EbDn}{AOdDn}{EfDn}{{{d{Eb}}}Dn}{AOnDn}{EdDn}{{{d{H`}}}Dn}{CdOj}{{{d{Oj}}}Oj}=={AOhI`}{AOfI`}{{{Mb{cegikmoAaAcAeAgAi}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAg}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAk}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{IjI`}{{{Mb{cegikmoAaAcAe}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{EbI`}{{{Mb{cegikmoAaAc}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{CdI`}{{{Mb{cegikmoAaAcAeAgAiAkAmAo}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBa}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBaBc}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{cc{}}{{{Mb{cegikmoAa}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{ClI`}{{{d{{Bd{Lh}}}}}I`}{{{Mb{cegikmo}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{DnI`}{{{Mb{cegikm}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{OjI`}{{{d{H`}}}I`}{{{d{Gd}}}I`}{GdI`}{{{AN`{{Bd{Lh}}}}}I`}{{{Mb{cegik}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{NdI`}{AObI`}{{{Mb{cegi}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{IlI`}{{{Mb{ceg}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{LhI`}{DdI`}{{{Mb{ce}}}I`{{E`{I`}}}{{E`{I`}}}}{DfI`}{AOdI`}{{{Mb{cegikmoAaAcAeAgAiAkAm}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{cc{}}00000{ClKb}111111111111111111111{{{Mb{IjIj}}}Od}222{AInNl}{{{ANh{AIn}}}Nl}{{{A`{AIn}}}Nl}555555555555555555555{CdGj}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBa}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAc}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}8{{{Cf{Dn}}}Gj}{cGj{{E`{Dn}}}}{{{Mb{cegikmoAa}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmo}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{d{{B@`{c}}}}}Gj{{E`{Dn}}Bl}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAg}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAi}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{A`{c}}}Gj{{E`{Dn}}}}{{{Mb{cegikm}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{ANh{c}}}Gj{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAk}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegik}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegi}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{ceg}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAkAm}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAo}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{ce}}}Gj{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAe}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{cc{}}000000000000000000000000000{GdALj}{IlALj}2{{{d{Gd}}}ALj}{{{d{H`}}}ALj}4{{{d{AF`}}}AF`}5{{{d{Gd}}}AF`}{IlAF`}{{{d{H`}}}AF`}{GdAF`}9{CdADj}::{{{A`{c}}}ADd{{E`{ADh}}}}{{{ANh{c}}}ADd{{E`{ADh}}}}{cADd{{E`{ADh}}}}={{{Cf{Cd}}}ADf}>{EbADh}?{{{d{Gd}}}ADh}{{{d{H`}}}ADh}{GdADh}{CdAEd}{{{Mb{ceEd}}}AEd{{E`{ADh}}}{{E`{ADh}}}}{cc{}}{{{Mb{EdceEdg}}}AEd{{E`{ADh}}}{{E`{ADh}}}{{E`{Eb}}}}{{{Mb{EdceEd}}}AEd{{E`{ADh}}}{{E`{ADh}}}}{{{Mb{ceEdg}}}AEd{{E`{ADh}}}{{E`{ADh}}}{{E`{Eb}}}}33{IlACd}444{{{B@`{c}}}ACj{{E`{Eb}}}}{{{A`{c}}}ACj{{E`{Eb}}}}{IlAD`}7{{{Mb{ACfEd}}}ACl}888{{{Mb{cAMb}}}ACn{{E`{Eb}}}}9{{B@bcCf}{{Ad{LlAG`}}}{{ACh{}{{Dh{Ll}}}}}}{{I`c}{{Ad{JdAb}}}{{E`{Eb}}}}{{{d{f}}c}{{Ad{ALhAb}}}{{E`{Eb}}}}{ElAGd}{cALd{{E`{Eb}}}}{cKf{{ACh{}{{Dh{Dd}}}}}}{cAEn{{ACh{}{{Dh{Ij}}}}}}{eAEj{{E`{I`}}}{{ACh{}{{Dh{{Mb{Ijc}}}}}}}}{gOj{{E`{Dn}}}{{E`{I`}}}{{ACh{}{{Dh{{Mb{ce}}}}}}}}{eI`{{E`{I`}}}{{ACh{}{{Dh{c}}}}}}{eGj{{E`{Dn}}}{{ACh{}{{Dh{c}}}}}}{eACj{{E`{Eb}}}{{ACh{}{{Dh{c}}}}}}{Dn{{Ad{ADnAb}}}}{Dn{{Ad{DnAb}}}}{Dn{{Ad{I`Ab}}}}:<{{I`ClClCl}{{Ad{AJ`Ab}}}}{{{d{{Bd{Lh}}}}}Dn}{{{d{{Bd{Lh}}}}}I`}{{{d{H`}}}AHd}{{{d{H`}}}Dn}{{{d{H`}}}I`}{{{d{H`}}}{{Ad{AB`}}}}{{{d{H`}}}{{Cf{ALf}}}}{{{d{H`}}}{{Ad{ElAb}}}}0000{I`{{Ad{AnAb}}}}{I`{{Ad{DnAb}}}}{I`{{Ad{I`Ab}}}}{I`{{Ad{AHjAb}}}}{I`{{Ad{OdAb}}}}{I`{{Ad{AJbAb}}}}{I`{{Ad{AJdAb}}}}{I`{{Ad{AJfAb}}}}``{{{d{ALh}}}{{d{{Ff{EbAGb}}}}}}`{{{d{AGd}}}{{Cf{{d{El}}}}}}{{{d{AGd}}}{{d{F`}}}}{{{d{AGd}}}{{d{En}}}}{{{d{AGd}}}{{Cf{{d{Fb}}}}}}3{{{d{Jd}}Dd}{{Cf{{d{n}}}}}}`{{{d{{AMj{}{{AMh{c}}}}}}}Cl{}}{{{d{Fn}}}Cl}{{{d{Dj}}}Cl}{{{d{Gb}}}Cl}{{{d{Gl}}}Cl}{{{d{AB`}}{d{B`c}}}CdB@d}{{{d{Ll}}{d{B`c}}}CdB@d}{{{d{AGf}}{d{{Bd{I`}}}}}{{Cf{Dd}}}}{{{d{n}}{d{B`c}}}CdB@d}{{{d{Dn}}{d{B`c}}}CdB@d}{{{d{I`}}{d{B`c}}}CdB@d}{{{d{A@f}}{d{B`c}}}CdB@d}{{{d{ALd}}{d{B`c}}}CdB@d}{{{d{ALf}}{d{B`c}}}CdB@d}{{{d{AGb}}{d{B`c}}}CdB@d}{{{d{ALh}}{d{B`c}}}CdB@d}`{{{d{{Bd{Lh}}}}}Dd}````{{{d{AIj}}}{{A`{n}}}}```````{Kf{{A`{Dd}}}}{AEn{{A`{Ij}}}}{AEj{{A`{{Mb{IjI`}}}}}}{{{d{Dn}}}{{d{Nd}}}}{Oj{{Ff{DnI`}}}}{Nl{{A`{AIn}}}}{Gj{{A`{Dn}}}}{ADj{{A`{{Mb{DnI`}}}}}}{ADd{{A`{ADh}}}}```{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{I`{{A`{I`}}}}{DnNd}{I`{{Cf{Nd}}}}{I`{{Cf{Eb}}}}{{I`ClClCl}{{Ad{{A`{AJ`}}Ab}}}}{I`{{Ad{I`I`}}}}{I`{{Ad{A@dAb}}}}{I`{{Ad{OjAb}}}}{I`{{Cf{{A`{Lh}}}}}}{I`{{Ad{{B@f{I`}}Ab}}}}{Dn{{Cf{Gd}}}}{I`{{Cf{Gd}}}}{Gj{{A`{I`}}}}{I`{{Ad{{Mb{Gd{A`{{ADl{ceg}}}}}}Ab}}}An{ADnAE`AEb}An}{I`{{Ad{{AEf{cegi}}Ab}}}{ADnAE`AEb}An{ADnAE`AEb}An}{I`{{Ad{{A`{{ADl{ceg}}}}Ab}}}An{ADnAE`AEb}An}{I`{{Ad{{A`{{Mb{I`Ij}}}}Ab}}}}`{{{d{I`}}}Cl}000{{{d{AIj}}}Cl}01{{{d{Ll}}}Cl}222022021021`````{{{d{Ll}}}B@b}{{{d{I`}}}AHf}````````{{{d{Ll}}}Ef}{{{d{Kf}}}Ef}{{{d{AEn}}}Ef}{{{d{AEj}}}Ef}{{{d{Jd}}}Ef}{{{d{Oj}}}Ef}{{{d{Nl}}}Ef}{{{d{Gj}}}Ef}{{{d{ADj}}}Ef}{{{d{ADd}}}Ef}```{{{d{ALd}}{d{f}}}{{Cn{Cd}}}}``{{{d{ALd}}}{{Cf{{d{Eb}}}}}}``{{{d{B@h}}{d{A@n}}{d{H`}}}{{Cf{Gd}}}}``````````````````{{{d{AGb}}}{{d{Eb}}}}{{{d{ALh}}}{{d{Eb}}}}```{{EdEdEd}AB`}{{}AEn}{{}AEj}{{cDd}n{{E`{Eb}}}}{{}Jd}{{}Oj}{ClAIl}{{ceCl}Lj{{E`{Eb}}}{{E`{AGf}}}}{{}Gj}{{c{A`{ALf}}}AGb{{E`{Eb}}}}{{cDd}AIj{{E`{Gd}}}}{{{A`{{Mb{cDd}}}}}AIj{{E`{Gd}}}}{{DfDf}Fb}{{}Ll}0{{DfDfDfDf}Fb}{{DfDfDf}Fb}{{}I`}{{{A`{{Mb{cDd}}}}e}AIj{{E`{Gd}}}{{E`{Gd}}}}{{{d{H`}}cCl}Lj{{E`{AGf}}}}{cAIj{{E`{B@j}}}}{{cDd{Cf{Gd}}}n{{E`{Eb}}}}{{{AMj{}{{AMh{c}}}}}{{Ad{CdAb}}}{}}{Fn{{Ad{CdAb}}}}{Dj{{Ad{CdAb}}}}{Gb{{Ad{CdAb}}}}{Gl{{Ad{CdAb}}}}{{{d{B`Fb}}}{{Cf{Ed}}}}``````````````````{{{d{H`}}}{{Ad{AB`B@l}}}}{{{d{AB`}}{d{AB`}}}{{Cf{AMf}}}}{{{d{n}}{d{n}}}{{Cf{AMf}}}}{{{d{Dn}}{d{Dn}}}{{Cf{AMf}}}}{{{d{A@f}}{d{A@f}}}{{Cf{AMf}}}}{{{d{ALd}}{d{ALd}}}{{Cf{AMf}}}}{{{d{ALf}}{d{ALf}}}{{Cf{AMf}}}}{{{d{AGb}}{d{AGb}}}{{Cf{AMf}}}}{{{d{ALh}}{d{ALh}}}{{Cf{AMf}}}}```````````````{{{d{Jd}}}{{B@n{n{Mb{{A`{{Mb{DdDd}}}}{Gf{n}}}}}}}}````{{{d{Jd}}}{{Cf{{d{n}}}}}}{{{d{Jd}}}{{Cf{{d{AH`}}}}}}````{{{d{AMn}}}{{Cf{Cj}}}}0`{{{d{Jd}}{d{n}}}{{A`{n}}}}``{{{d{G`}}EbDd}{{ANb{{AN`{Af}}}}}}{{{d{{AMj{}{{AMh{c}}}}}}}{{d{{Cf{c}}}}}{}}{{{d{Fn}}}{{d{{Cf{c}}}}}{}}{{{d{Dj}}}{{d{{Cf{c}}}}}{}}{{{d{Gb}}}{{d{{Cf{c}}}}}{}}{{{d{Gl}}}{{d{{Cf{c}}}}}{}}```````````{{{d{B`AIj}}AIh}{{Ad{CdAb}}}}{{{d{B`AGd}}El}{{d{B`AGd}}}}{{{d{B`AGd}}F`}{{d{B`AGd}}}}{{{d{B`Fb}}Df}Cd}{{{d{B`AGd}}En}{{d{B`AGd}}}}{{{d{B`AGd}}Fb}{{d{B`AGd}}}}{{{d{B`AGd}}Fd}{{d{B`AGd}}}}{{{d{ALd}}}{{d{Eb}}}}```{{{d{Jd}}}{{d{{Bd{AH`}}}}}}`````````{{{d{B`Ll}}}Ll}{{{d{B`Dn}}}Nd}{{{d{B`Oj}}}Oj}{{{d{B`I`}}}I`}{{{d{B`Ll}}}Cf}{{{d{B`{AMj{}{{AMh{c}}}}}}}{{Cf{c}}}{}}{{{d{B`Fn}}}{{Cf{c}}}{}}{{{d{B`Dj}}}{{Cf{c}}}{}}{{{d{B`Gb}}}{{Cf{c}}}{}}{{{d{B`Gl}}}{{Cf{c}}}{}}`````````{{{d{Oh}}}Lh}{dc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ll}}}BA`}{{{d{ALf}}}{{d{H`}}}}{dGd}{{{d{Ll}}}{{Cf{Gd}}}}111111```{c{{Ad{e}}}{}{}}00{{{Mb{B@bc}}}{{Ad{Ll}}}{{E`{Nd}}}}11111111{{{A`{{Mb{Ijc}}}}}{{Ad{AEje}}}{{Hl{I`}}}{}}{{{Mb{Ijc}}}{{Ad{AEje}}}{{Hl{I`}}}{}}{{{ANh{{Mb{Ijc}}}}}{{Ad{AEje}}}{{Hl{I`}}}{}}44444{BAb{{Ad{AGlc}}}{}}5{Gd{{Ad{nc}}}{}}{{{d{H`}}}{{Ad{nc}}}{}}777777{I`{{Ad{AHdc}}}{}}8{I`{{Ad{Dnc}}}{}}9{{{B@`{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{B@n{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{Ff{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{Mb{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{ANh{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{d{{B@`{{Mb{ce}}}}}}}{{Ad{Ojg}}}{{Hl{Dn}}Bl}{{Hl{I`}}Bl}{}}{{{A`{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{c{{Ad{e}}}{}{}}{Ef{{Ad{I`c}}}{}}{Ed{{Ad{I`c}}}{}}{{{ANh{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}{AOl{{Ad{I`c}}}{}}{{{B@`{c}}}{{Ad{I`e}}}{{Hl{I`}}Bl}{}}{{{Ff{ce}}}{{Ad{I`g}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{Ll{{Ad{I`c}}}{}}{{{A`{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}8{AOn{{Ad{I`c}}}{}}{{{B@n{ce}}}{{Ad{I`g}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{d{{B@`{c}}}}}{{Ad{I`e}}}{{Hl{I`}}Bl}{}}{{{Cf{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}<<<<<{{{d{Gd}}}{{Ad{Kbc}}}{}}{Gd{{Ad{Kbc}}}{}}>{{{d{H`}}}{{Ad{Kbc}}}{}}???{I`{{Ad{AHjc}}}{}}{c{{Ad{e}}}{}{}}00000000000000000{I`{{Ad{Odc}}}{}}11{{{Mb{IjIjc}}}{{Ad{AIne}}}{{Hl{I`}}}{}}222222222222222{I`{{Ad{AJbc}}}{}}{I`{{Ad{AJdc}}}{}}44{I`{{Ad{AJfc}}}{}}555{{{d{Eb}}}{{Ad{Nfc}}}{}}{Eb{{Ad{Nfc}}}{}}{{{d{H`}}}{{Ad{Nfc}}}{}}{Gd{{Ad{Nfc}}}{}}9{{{d{Gd}}}{{Ad{Nfc}}}{}}::::::::::::::::::::::::::::::{Ij{{Ad{ALjc}}}{}};;{Ij{{Ad{AF`c}}}{}}<<{{{d{H`}}}{{Ad{ALnc}}}{}}{{{Ff{ce}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{A`{{Mb{ce}}}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{Mb{ce}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{ANh{{Mb{ce}}}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{c{{Ad{e}}}{}{}}00{{{d{H`}}}{{Ad{AM`c}}}{}}{{{Mb{ceg{Cf{Il}}}}}{{Ad{ADfi}}}{{Hl{AM`}}}{{Hl{ALn}}}{{E`{AHd}}}{}}2{{{Mb{ce}}}{{Ad{ADfg}}}{{Hl{AM`}}}{{E`{AHd}}}{}}{{{Mb{ceg}}}{{Ad{ADfi}}}{{Hl{AM`}}}{{Hl{ALn}}}{{E`{AHd}}}{}}4444{{{d{H`}}}{{Ad{ACdc}}}{}}{Gd{{Ad{ACdc}}}{}}6{Eb{{Ad{ACdc}}}{}}777{{{d{H`}}}{{Ad{AD`c}}}{}}8888{{{d{H`}}}{{Ad{AMdc}}}{}}{{}{{Ad{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{dGh}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Jd}}}{{A`{Dd}}}}{{{d{Jd}}}{{A`{n}}}}````{{{d{El}}}Cl}00````{{{d{Ll}}}{{Cf{{d{BAd}}}}}}`{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`El}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`F`}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`En}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`Fd}}}}}}````````````````````````````````````````````````````````````````````````````````````````````````{Ij{{Ad{I`Ab}}}}{e{{Ad{{B@n{Dd{ANh{Dn}}}}Ab}}}{{Hl{Dn}}}{{ACh{}{{Dh{c}}}}}}{{{d{{Bd{Lh}}}}}Dd}{{{d{H`}}}{{Ad{IjAb}}}}{{{d{H`}}}Gd}{{{d{{Bd{Lh}}}}}Nd}{{{d{H`}}}Eb}","D":"N@j","p":[[5,"ExclusivePool",18,4301],[1,"reference"],[5,"RedisClient",18,4302],[5,"OwnedMutexGuard",4303],[5,"RedisPool",18,4301],[17,"Output"],[5,"Server",1292,4304],[5,"Vec",4305],[5,"RedisError",224],[6,"Result",4306],[10,"Future",4307],[10,"Send",4308],[5,"Pipeline",18,4309],[10,"ClientLike",285,4310],[10,"FromRedis",1292,4311],[0,"mut"],[5,"Replicas",18,4312],[1,"slice"],[5,"Mutex",4303],[5,"Arc",4313],[5,"WithOptions",18,4314],[10,"Clone",4315],[5,"SentinelClient",18,4316],[5,"SubscriberClient",18,4317],[5,"Transaction",18,4318],[1,"unit"],[6,"Option",4319],[8,"ConnectHandle",1292],[5,"Duration",4320],[1,"bool"],[8,"RedisResult",285],[5,"Formatter",4321],[8,"Result",4321],[1,"u16"],[1,"u32"],[17,"Item"],[5,"HScanResult",1292,4322],[10,"Stream",4323],[5,"RedisKey",1292,4324],[10,"Into",4325],[8,"Str",4326],[1,"u64"],[1,"usize"],[5,"DynGuard",4327],[5,"JoinHandle",4328],[5,"RedisConfig",1292,4329],[5,"PerformanceConfig",1292,4329],[5,"ConnectionConfig",1292,4329],[6,"ReconnectPolicy",1292,4329],[5,"SentinelConfig",1292,4329],[5,"HashMap",4330],[5,"Options",1292,4329],[8,"MultipleStrings",1292,4331],[6,"ScanType",1292,4322],[5,"ScanResult",1292,4322],[10,"Resolve",1292,4304],[5,"SScanResult",1292,4322],[5,"String",4332],[5,"BTreeSet",4333],[5,"TypeId",4334],[5,"MultipleKeys",1292,4331],[5,"ZScanResult",1292,4322],[6,"RedisErrorKind",224],[1,"str"],[5,"Error",4335],[6,"Cow",4336],[10,"Error",4337],[10,"AclInterface",285,4338],[8,"MultipleValues",1292,4331],[10,"TryInto",4325],[10,"KeysInterface",285,4339],[6,"RedisValue",1292,4324],[10,"AuthInterface",285],[10,"ServerInterface",285,4340],[10,"ListInterface",285,4341],[6,"LMoveDirection",1292,4342],[1,"f64"],[1,"i64"],[10,"SortedSetsInterface",285,4343],[6,"ZCmp",1292,4344],[10,"ClusterInterface",285,4345],[5,"ClusterRouting",1292,4304],[10,"SentinelInterface",285,4346],[10,"ClientInterface",285,4347],[6,"ClientKillFilter",1292,4348],[6,"ClientKillType",1292,4348],[6,"ClientPauseKind",1292,4348],[6,"ClientReplyFlag",1292,4348],[6,"Toggle",1292,4348],[6,"ClientUnblockFlag",1292,4349],[5,"MultipleHashSlots",1292,4331],[10,"EventInterface",285],[6,"ClusterStateChange",1292,4349],[5,"Receiver",4350],[6,"ClusterFailoverFlag",1292,4351],[6,"ClusterResetFlag",1292,4351],[6,"ClusterSetSlotState",1292,4351],[10,"MetricsInterface",285,4352],[10,"ConfigInterface",285,4353],[1,"u8"],[5,"CustomCommand",1292,4349],[6,"Resp3Frame",1292],[10,"HeartbeatInterface",285],[10,"LuaInterface",285,4354],[1,"tuple"],[10,"FunctionInterface",285,4354],[10,"RediSearchInterface",285,4355],[5,"FtAggregateOptions",1292,4356],[5,"FtAlterOptions",1292,4356],[5,"FtCreateOptions",1292,4356],[5,"SearchSchema",1292,4356],[5,"FtSearchOptions",1292,4356],[6,"SpellcheckTerms",1292,4356],[5,"Bytes",4357],[6,"FnPolicy",1292,4349],[10,"GeoInterface",285,4358],[6,"SetOptions",1292,4349],[5,"MultipleGeoValues",1292,4359],[6,"GeoUnit",1292,4359],[8,"Any",1292],[6,"SortOrder",1292,4349],[5,"GeoPosition",1292,4359],[10,"HashesInterface",285,4360],[6,"RespVersion",1292,4361],[5,"RedisMap",1292,4324],[6,"InfoKind",1292,4349],[10,"TrackingInterface",285,4362],[5,"Invalidation",1292,4348],[10,"RedisJsonInterface",285,4363],[6,"Value",4364],[5,"KeyspaceEvent",1292,4349],[6,"ListLocation",1292,4342],[10,"MemoryInterface",285,4365],[5,"Message",1292,4304],[6,"IpAddr",4366],[10,"TransactionInterface",285,4367],[10,"Fn",4368],[6,"ExpireOptions",1292,4349],[10,"HyperloglogInterface",285,4369],[10,"PubsubInterface",285,4370],[5,"Stats",1292,4371],[10,"SetsInterface",285,4372],[6,"ScriptDebugFlag",1292,4349],[5,"Version",1292,4373],[6,"Expiration",1292,4349],[6,"ShutdownFlags",1292,4349],[6,"SentinelFailureKind",1292,4349],[10,"SlowlogInterface",285,4374],[8,"Limit",1292],[6,"ClientState",1292,4349],[10,"TimeSeriesInterface",285,4375],[6,"Encoding",1292,4376],[6,"DuplicatePolicy",1292,4376],[6,"Timestamp",1292,4376],[6,"Aggregator",1292,4376],[10,"IntoIterator",4377],[6,"GetLabels",1292,4376],[5,"RangeAggregation",1292,4376],[5,"GroupBy",1292,4376],[6,"GetTimestamp",1292,4376],[10,"StreamsInterface",285,4378],[5,"MultipleIDs",1292,4379],[5,"XCap",1292,4379],[6,"XID",1292,4379],[5,"MultipleOrderedPairs",1292,4379],[8,"XReadValue",1292,4379],[10,"FromRedisKey",1292,4311],[10,"Hash",4380],[10,"Eq",4381],[5,"XPendingArgs",1292,4379],[8,"XReadResponse",1292,4379],[6,"Ordering",1292,4344],[5,"MultipleZaddValues",1292,4344],[6,"AggregateOptions",1292,4349],[5,"MultipleWeights",1292,4344],[5,"ZRange",1292,4344],[6,"ZSort",1292,4344],[5,"SimpleMap",1175,4382],[5,"Buffer",1175,4382],[5,"MockCommand",1175,4382],[5,"Echo",1175,4382],[10,"Mocks",1175,4382],[5,"Command",1246],[5,"RedisProtocolError",4383],[5,"Function",1292,4384],[5,"Builder",1292,4385],[6,"ClusterHash",1292,4386],[6,"TlsHostMapping",1292,4387],[5,"TlsConfig",1292,4387],[6,"TlsConnector",1292,4387],[6,"MessageKind",1292,4304],[5,"SlotRange",1292,4304],[5,"ReplicaConfig",1292,4388],[6,"StringOrNumber",1292,4324],[6,"RedisValueKind",1292,4324],[6,"ClusterState",1292,4351],[5,"ClusterInfo",1292,4351],[6,"ReconnectError",1292,4329],[6,"Blocking",1292,4329],[6,"BackpressurePolicy",1292,4329],[5,"BackpressureConfig",1292,4329],[5,"TcpConfig",1292,4329],[5,"UnresponsiveConfig",1292,4329],[6,"ClusterDiscoveryPolicy",1292,4329],[6,"ServerConfig",1292,4329],[5,"TracingConfig",1292,4329],[5,"GeoValue",1292,4359],[5,"GeoRadiusInfo",1292,4359],[5,"DatabaseMemoryStats",1292,4349],[5,"MemoryStats",1292,4349],[5,"SlowlogEntry",1292,4349],[6,"ReducerFunc",1292,4356],[5,"SearchReducer",1292,4356],[5,"SearchField",1292,4356],[6,"Load",1292,4356],[5,"WithCursor",1292,4356],[5,"SearchParameter",1292,4356],[6,"AggregateOperation",1292,4356],[5,"SearchFilter",1292,4356],[5,"SearchGeoFilter",1292,4356],[5,"SearchSummarize",1292,4356],[5,"SearchHighlight",1292,4356],[5,"SearchSortBy",1292,4356],[6,"IndexKind",1292,4356],[6,"SearchSchemaKind",1292,4356],[5,"Script",1292,4384],[6,"FunctionFlag",1292,4384],[5,"Library",1292,4384],[6,"ZRangeBound",1292,4344],[6,"ZRangeKind",1292,4344],[6,"XCapTrim",1292,4379],[6,"XCapKind",1292,4379],[6,"Reducer",1292,4376],[6,"BucketTimestamp",1292,4376],[6,"Ordering",4381],[17,"Page"],[10,"Scanner",1292,4322],[10,"Sync",4308],[10,"CredentialProvider",1292,4329],[5,"Box",4389],[5,"Pin",4390],[10,"ReplicaFilter",1292,4388],[5,"Error",4321],[5,"VecDeque",4391],[5,"ClientConfig",4392],[5,"TlsConnector",4393],[5,"TlsConnector",4394],[5,"TlsConnector",4395],[1,"f32"],[1,"i8"],[1,"i16"],[1,"i32"],[1,"isize"],[1,"i128"],[1,"u128"],[1,"array"],[6,"FrameKind",4361],[10,"Hasher",4380],[5,"HashSet",4396],[10,"HostMapping",1292,4387],[5,"PathBuf",4397],[5,"Error",4398],[5,"BTreeMap",4399],[6,"OwnedFrame",4361],[5,"TlsConnectorBuilder",4393],[6,"VerbatimStringFormat",4361],[10,"FnOnce",4368],[15,"BlobString",1145],[15,"BlobError",1145],[15,"SimpleString",1145],[15,"SimpleError",1145],[15,"Boolean",1145],[15,"Number",1145],[15,"Double",1145],[15,"BigNumber",1145],[15,"VerbatimString",1145],[15,"Array",1145],[15,"Map",1145],[15,"Set",1145],[15,"Push",1145],[15,"Hello",1145],[8,"LimitCount",1292],[15,"Filter",4202],[15,"Apply",4202],[15,"GroupBy",4202],[15,"SortBy",4202],[15,"Limit",4202],[15,"Sleep",4211],[15,"Constant",4213],[15,"Linear",4213],[15,"Exponential",4213],[15,"Custom",4258],[15,"Tag",4258],[15,"Text",4258],[15,"Numeric",4258],[15,"Geo",4258],[15,"Vector",4258],[15,"GeoShape",4258],[15,"Clustered",4281],[15,"Sentinel",4281],[15,"Unix",4281],[15,"Centralized",4281],[15,"Include",4289],[15,"Exclude",4289]],"r":[[7,4400],[18,4301],[19,4309],[20,4302],[21,4301],[22,4312],[23,4316],[24,4317],[25,4318],[26,4314],[285,4338],[293,4347],[294,4310],[295,4345],[296,4353],[300,4354],[301,4358],[302,4360],[305,4369],[306,4339],[307,4341],[308,4354],[310,4365],[311,4352],[315,4370],[317,4355],[318,4363],[321,4346],[322,4340],[324,4372],[327,4374],[328,4343],[329,4378],[330,4375],[331,4362],[332,4367],[937,4310],[1175,4382],[1176,4382],[1177,4382],[1178,4382],[1179,4382],[1269,4329],[1270,4385],[1271,4329],[1272,4349],[1273,4311],[1274,4329],[1275,4329],[1276,4329],[1277,4302],[1278,4329],[1279,224],[1280,224],[1281,4324],[1282,4301],[1283,4324],[1284,4324],[1285,4304],[1286,4329],[1287,4349],[1288,4329],[1289,4387],[1290,4387],[1291,4329],[1295,4356],[1296,4349],[1297,4376],[1317,4329],[1318,4329],[1325,4329],[1330,4376],[1331,4385],[1340,4348],[1341,4348],[1342,4348],[1343,4348],[1344,4349],[1345,4349],[1348,4329],[1350,4351],[1351,4386],[1352,4351],[1353,4351],[1354,4304],[1355,4351],[1356,4351],[1357,4349],[1365,4329],[1375,4329],[1383,4349],[1384,4329],[1385,4349],[1397,4376],[1401,4376],[1408,4349],[1409,4349],[1420,4349],[1422,4311],[1423,4311],[1424,4356],[1425,4356],[1426,4356],[1427,4356],[1428,4384],[1429,4384],[1432,4359],[1433,4359],[1435,4359],[1436,4359],[1437,4376],[1438,4376],[1440,4376],[1442,4322],[1448,4387],[1454,4356],[1457,4349],[1462,4348],[1466,4349],[1469,4342],[1477,4384],[1483,4342],[1484,4356],[1502,4349],[1503,4304],[1505,4304],[1518,4359],[1519,4331],[1520,4379],[1521,4331],[1522,4379],[1523,4331],[1524,4331],[1525,4344],[1526,4344],[1556,4329],[1557,4344],[1562,4329],[1576,4376],[1579,4329],[1580,4329],[1581,4329],[1582,4324],[1583,4324],[1584,4324],[1585,4324],[1586,4376],[1587,4356],[1591,4388],[1592,4388],[1594,4304],[1595,4376],[1597,4376],[1598,4361],[1602,4322],[1604,4322],[1605,4322],[1606,4322],[1608,4384],[1609,4349],[1610,4356],[1611,4356],[1612,4356],[1613,4356],[1614,4356],[1615,4356],[1616,4356],[1617,4356],[1618,4356],[1619,4356],[1622,4329],[1623,4349],[1624,4304],[1626,4329],[1629,4349],[1630,4349],[1636,4304],[1637,4349],[1642,4349],[1643,4356],[1646,4371],[1659,4324],[1669,4329],[1672,4376],[1673,4387],[1674,4387],[1675,4387],[1677,4348],[1678,4329],[1682,4329],[1691,4373],[1692,4356],[1695,4379],[1696,4379],[1697,4379],[1698,4379],[1699,4379],[1700,4379],[1701,4379],[1705,4344],[1706,4344],[1707,4344],[1708,4344],[1709,4322],[1711,4344],[4294,4401],[4296,4402],[4297,4401],[4299,4401],[4300,4401]],"b":[[93,"impl-Debug-for-RedisClient"],[94,"impl-Display-for-RedisClient"],[257,"impl-Display-for-RedisError"],[258,"impl-Debug-for-RedisError"],[1257,"impl-Debug-for-Command"],[1258,"impl-Display-for-Command"],[2611,"impl-Debug-for-Version"],[2612,"impl-Display-for-Version"],[2619,"impl-Display-for-Server"],[2620,"impl-Debug-for-Server"],[2629,"impl-Debug-for-RedisValueKind"],[2630,"impl-Display-for-RedisValueKind"],[2674,"impl-Display-for-ClientState"],[2675,"impl-Debug-for-ClientState"],[2706,"impl-Display-for-Script"],[2707,"impl-Debug-for-Script"],[2709,"impl-Display-for-Function"],[2710,"impl-Debug-for-Function"],[2711,"impl-Debug-for-Library"],[2712,"impl-Display-for-Library"],[2742,"impl-From%3Ci64%3E-for-BytesFrame"],[2743,"impl-From%3Cbool%3E-for-BytesFrame"],[2744,"impl-From%3Cf64%3E-for-BytesFrame"],[2747,"impl-From%3CVecDeque%3Cu16%3E%3E-for-MultipleHashSlots"],[2748,"impl-From%3CVec%3Cu16%3E%3E-for-MultipleHashSlots"],[2749,"impl-From%3Cu16%3E-for-MultipleHashSlots"],[2750,"impl-From%3C%26%5Bu16%5D%3E-for-MultipleHashSlots"],[2756,"impl-From%3Cf64%3E-for-MultipleWeights"],[2757,"impl-From%3COption%3Cf64%3E%3E-for-MultipleWeights"],[2759,"impl-From%3CVec%3Cf64%3E%3E-for-MultipleWeights"],[2760,"impl-From%3CVecDeque%3Cf64%3E%3E-for-MultipleWeights"],[2762,"impl-From%3C%26%5Bu8%5D%3E-for-ClusterHash"],[2763,"impl-From%3C%26str%3E-for-ClusterHash"],[2765,"impl-From%3COption%3Cu16%3E%3E-for-ClusterHash"],[2766,"impl-From%3Cu16%3E-for-ClusterHash"],[2771,"impl-From%3CClientConfig%3E-for-TlsConnector"],[2772,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2773,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2774,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2775,"impl-From%3C(%26str,+u16)%3E-for-Server"],[2776,"impl-From%3C%26Server%3E-for-Server"],[2777,"impl-From%3C(String,+u16)%3E-for-Server"],[2784,"impl-From%3Cu32%3E-for-StringOrNumber"],[2785,"impl-From%3Cf32%3E-for-StringOrNumber"],[2786,"impl-From%3C%26str%3E-for-StringOrNumber"],[2787,"impl-From%3CString%3E-for-StringOrNumber"],[2788,"impl-From%3CStrInner%3CBytes%3E%3E-for-StringOrNumber"],[2789,"impl-From%3Ci8%3E-for-StringOrNumber"],[2791,"impl-From%3Ci16%3E-for-StringOrNumber"],[2792,"impl-From%3Ci32%3E-for-StringOrNumber"],[2793,"impl-From%3Ci64%3E-for-StringOrNumber"],[2794,"impl-From%3Cisize%3E-for-StringOrNumber"],[2795,"impl-From%3Cu8%3E-for-StringOrNumber"],[2796,"impl-From%3Cu16%3E-for-StringOrNumber"],[2797,"impl-From%3Cf64%3E-for-StringOrNumber"],[2798,"impl-From%3Cu64%3E-for-StringOrNumber"],[2799,"impl-From%3Cusize%3E-for-StringOrNumber"],[2800,"impl-From%3Cu8%3E-for-RedisKey"],[2801,"impl-From%3C%26RedisKey%3E-for-RedisKey"],[2802,"impl-From%3CBytes%3E-for-RedisKey"],[2803,"impl-From%3Cu16%3E-for-RedisKey"],[2804,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisKey"],[2805,"impl-From%3Cbool%3E-for-RedisKey"],[2806,"impl-From%3Cu32%3E-for-RedisKey"],[2807,"impl-From%3C%26%5Bu8%5D%3E-for-RedisKey"],[2808,"impl-From%3Cf64%3E-for-RedisKey"],[2809,"impl-From%3Cf32%3E-for-RedisKey"],[2810,"impl-From%3CString%3E-for-RedisKey"],[2811,"impl-From%3Cisize%3E-for-RedisKey"],[2812,"impl-From%3Ci128%3E-for-RedisKey"],[2814,"impl-From%3Ci64%3E-for-RedisKey"],[2815,"impl-From%3C%26String%3E-for-RedisKey"],[2816,"impl-From%3Ci32%3E-for-RedisKey"],[2817,"impl-From%3Ci16%3E-for-RedisKey"],[2818,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisKey"],[2819,"impl-From%3Ci8%3E-for-RedisKey"],[2820,"impl-From%3Cusize%3E-for-RedisKey"],[2821,"impl-From%3C%26StrInner%3CBytes%3E%3E-for-RedisKey"],[2822,"impl-From%3Cu128%3E-for-RedisKey"],[2823,"impl-From%3Cu64%3E-for-RedisKey"],[2824,"impl-From%3C%26str%3E-for-RedisKey"],[2825,"impl-From%3C()%3E-for-RedisMap"],[2826,"impl-From%3C%26RedisMap%3E-for-RedisMap"],[2829,"impl-From%3Ci32%3E-for-RedisValue"],[2830,"impl-From%3Ci16%3E-for-RedisValue"],[2831,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-RedisValue"],[2832,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-RedisValue"],[2833,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-RedisValue"],[2834,"impl-From%3Cf64%3E-for-RedisValue"],[2835,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-RedisValue"],[2836,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisValue"],[2837,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-RedisValue"],[2838,"impl-From%3C()%3E-for-RedisValue"],[2839,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-RedisValue"],[2840,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-RedisValue"],[2841,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-RedisValue"],[2843,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-RedisValue"],[2844,"impl-From%3Cbool%3E-for-RedisValue"],[2845,"impl-From%3C%26%5Bu8%5D%3E-for-RedisValue"],[2846,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-RedisValue"],[2847,"impl-From%3CRedisKey%3E-for-RedisValue"],[2848,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-RedisValue"],[2849,"impl-From%3CRedisMap%3E-for-RedisValue"],[2850,"impl-From%3C%26str%3E-for-RedisValue"],[2851,"impl-From%3C%26String%3E-for-RedisValue"],[2852,"impl-From%3CString%3E-for-RedisValue"],[2853,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisValue"],[2854,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-RedisValue"],[2855,"impl-From%3CBytes%3E-for-RedisValue"],[2856,"impl-From%3Cf32%3E-for-RedisValue"],[2857,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-RedisValue"],[2858,"impl-From%3Ci64%3E-for-RedisValue"],[2859,"impl-From%3C(A0,+A1,+A2)%3E-for-RedisValue"],[2860,"impl-From%3Cu8%3E-for-RedisValue"],[2861,"impl-From%3Cu16%3E-for-RedisValue"],[2862,"impl-From%3C(A0,+A1)%3E-for-RedisValue"],[2863,"impl-From%3Cu32%3E-for-RedisValue"],[2864,"impl-From%3Ci8%3E-for-RedisValue"],[2865,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-RedisValue"],[2898,"impl-From%3CGeoValue%3E-for-MultipleGeoValues"],[2899,"impl-From%3CVecDeque%3CGeoValue%3E%3E-for-MultipleGeoValues"],[2900,"impl-From%3CVec%3CGeoValue%3E%3E-for-MultipleGeoValues"],[2922,"impl-From%3C()%3E-for-MultipleKeys"],[2923,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-MultipleKeys"],[2924,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-MultipleKeys"],[2926,"impl-From%3COption%3CRedisKey%3E%3E-for-MultipleKeys"],[2927,"impl-From%3CT%3E-for-MultipleKeys"],[2928,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-MultipleKeys"],[2929,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-MultipleKeys"],[2930,"impl-From%3C%26%5BK;+N%5D%3E-for-MultipleKeys"],[2931,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-MultipleKeys"],[2932,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-MultipleKeys"],[2933,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-MultipleKeys"],[2934,"impl-From%3CVec%3CT%3E%3E-for-MultipleKeys"],[2935,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-MultipleKeys"],[2936,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleKeys"],[2937,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-MultipleKeys"],[2938,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-MultipleKeys"],[2939,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-MultipleKeys"],[2940,"impl-From%3C(A0,+A1,+A2)%3E-for-MultipleKeys"],[2941,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-MultipleKeys"],[2942,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-MultipleKeys"],[2943,"impl-From%3C(A0,+A1)%3E-for-MultipleKeys"],[2944,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-MultipleKeys"],[2973,"impl-From%3CString%3E-for-ZRangeBound"],[2974,"impl-From%3Ci64%3E-for-ZRangeBound"],[2976,"impl-From%3C%26String%3E-for-ZRangeBound"],[2977,"impl-From%3C%26str%3E-for-ZRangeBound"],[2979,"impl-From%3C%26ZRange%3E-for-ZRange"],[2981,"impl-From%3C%26String%3E-for-ZRange"],[2982,"impl-From%3Ci64%3E-for-ZRange"],[2983,"impl-From%3C%26str%3E-for-ZRange"],[2984,"impl-From%3CString%3E-for-ZRange"],[2989,"impl-From%3CVec%3CT%3E%3E-for-MultipleIDs"],[2990,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleIDs"],[2991,"impl-From%3CT%3E-for-MultipleIDs"],[2995,"impl-From%3CStrInner%3CBytes%3E%3E-for-XID"],[2997,"impl-From%3C%26String%3E-for-XID"],[2998,"impl-From%3C%26str%3E-for-XID"],[2999,"impl-From%3CString%3E-for-XID"],[3000,"impl-From%3C()%3E-for-XPendingArgs"],[3001,"impl-From%3C(S,+E,+u64)%3E-for-XPendingArgs"],[3003,"impl-From%3C(u64,+S,+E,+u64,+C)%3E-for-XPendingArgs"],[3004,"impl-From%3C(u64,+S,+E,+u64)%3E-for-XPendingArgs"],[3005,"impl-From%3C(S,+E,+u64,+C)%3E-for-XPendingArgs"],[3012,"impl-From%3C%5BS;+N%5D%3E-for-GetLabels"],[3013,"impl-From%3CVec%3CS%3E%3E-for-GetLabels"],[3624,"impl-TryFrom%3CVec%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[3625,"impl-TryFrom%3C(f64,+T)%3E-for-MultipleZaddValues"],[3626,"impl-TryFrom%3CVecDeque%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[3634,"impl-TryFrom%3CString%3E-for-Server"],[3635,"impl-TryFrom%3C%26str%3E-for-Server"],[3646,"impl-TryFrom%3C%5B(K,+V);+N%5D%3E-for-RedisMap"],[3647,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisMap"],[3648,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisMap"],[3649,"impl-TryFrom%3C(K,+V)%3E-for-RedisMap"],[3650,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-RedisMap"],[3651,"impl-TryFrom%3C%26%5B(K,+V);+N%5D%3E-for-RedisMap"],[3652,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-RedisMap"],[3654,"impl-TryFrom%3Cusize%3E-for-RedisValue"],[3655,"impl-TryFrom%3Cu64%3E-for-RedisValue"],[3656,"impl-TryFrom%3CVecDeque%3CT%3E%3E-for-RedisValue"],[3657,"impl-TryFrom%3Ci128%3E-for-RedisValue"],[3658,"impl-TryFrom%3C%5BT;+N%5D%3E-for-RedisValue"],[3659,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisValue"],[3660,"impl-TryFrom%3CBytesFrame%3E-for-RedisValue"],[3661,"impl-TryFrom%3CVec%3CT%3E%3E-for-RedisValue"],[3663,"impl-TryFrom%3Cu128%3E-for-RedisValue"],[3664,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisValue"],[3665,"impl-TryFrom%3C%26%5BT;+N%5D%3E-for-RedisValue"],[3666,"impl-TryFrom%3COption%3CT%3E%3E-for-RedisValue"],[3672,"impl-TryFrom%3C%26String%3E-for-Toggle"],[3673,"impl-TryFrom%3CString%3E-for-Toggle"],[3675,"impl-TryFrom%3C%26str%3E-for-Toggle"],[3725,"impl-TryFrom%3C%26StrInner%3CBytes%3E%3E-for-FnPolicy"],[3726,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-FnPolicy"],[3727,"impl-TryFrom%3C%26str%3E-for-FnPolicy"],[3728,"impl-TryFrom%3CString%3E-for-FnPolicy"],[3730,"impl-TryFrom%3C%26String%3E-for-FnPolicy"],[3768,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-MultipleOrderedPairs"],[3769,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[3770,"impl-TryFrom%3C(K,+V)%3E-for-MultipleOrderedPairs"],[3771,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[3776,"impl-TryFrom%3C(K,+T,+S,+Option%3Ci64%3E)%3E-for-XCap"],[3778,"impl-TryFrom%3C(K,+S)%3E-for-XCap"],[3779,"impl-TryFrom%3C(K,+T,+S)%3E-for-XCap"],[3784,"impl-TryFrom%3C%26str%3E-for-Timestamp"],[3785,"impl-TryFrom%3CString%3E-for-Timestamp"],[3787,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-Timestamp"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMgJ6AABAAEACgAAAAwABAAfABEANAAQAEcACABVAAMAWgAJAIEAAQCQAAEAoAACAKUACQCzABsA0gAIAPQAAwD5AAUAAAEEAAYBAAARAQwAqgMAAHoEHQCeBAcAqAQCAK0EBADDBAIAzgQQAOEEAQDkBAIA6QQCAPAEHAAOBQEAEwUGABsFAQAfBQAAIQUAACMFAgAoBQAALQUAADEFAAA2BQEAOQUAADsFAABDBQEATwUCAFQFAQBYBQcAZAUBAGcFAABrBQAAbQUCAHIFAQB7BQAAfQUDAIQFBACLBQEAjgUAAJcFAQCbBQAAoAUAAKIFAACkBQIAqAUAAKoFAwC0BQAAuAUAALoFAAC8BQEAvwUCAMMFAQDIBQAAywUAANIFAADUBQAA1gUCANoFBADjBQoA+AUCAP4FAQABBgIABgYAAAoGAAANBgMAEgYCABwGAQAfBgAAIQYAACMGAQAmBgIANgYBADoGAABABgEARAYAAFUGAQBaBgAAXQYAAGIGAQBnBgAAaQYBAG0GAQBwBgYAeAYBAHsGAAB9BggAhwYBAI0GAACQBgIAlQYFAJ4GAQCnBgIArwYAALIGDADABgAAwgYAAMsGAADUBgUA3AYAAOEG/QDgBwEA4wcAAOsHYwFQCQAAVAkBAFgJBwBhCQcAbQkAAHAJAgB0CQMAegkEAIAJIQCrCQMAsQkCALUJAAC3CWcAIQoBACkKAgAvCgEANAp/ALcKAgC8CgMAxQoBAMgKAQDLCgEAzgoBANIKAADUCgYA4QoFAOgKFQD/CgwADgsMABwLFgA5CwAATwsAAFMLAgBrCwIAbwsSAJ4LAQChCwEApAsAAKYLAwCrCwAArgsCALILAAC0CwAAtgsEALwLAgDBCwAAxQsCAMkLAADNCwAAzwsAANQLCQDmCwAA7QsHAPYLAAD4CwAA/wsAAAEMBQAIDAgAEgwAABgMAgAcDAQAIwwEALUMAAC6DAAAwgwAAMYMAADJDAAAzAwAANAMBADXDAUA3gwDAOQMBQDsDAEA7wwBAPIMAQD4DAAA/QwFAAYNAgAKDQEADw0AABENAAAWDQEAIA0DACYNAAAoDQ4AOA0HAEINBQBLDQMAUg0BAFYNAABZDQAAXw0AAGINCwBvDQAAeQ0CAH0NAAB/DQcAig0AAIwNAwCRDQAAkw0CAJkNdgASDggAHQ43AVYPfgDXDwAA3w8DAOQPfgBnEAUAbhAFAHYQQwDCEAMA"}]]')); +var searchIndex = new Map(JSON.parse('[["fred",{"t":"DDCQCCQCCDCDDDDDCCFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPFGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKPKPPPPPKKKKPPKKKKKPKKKKPKKPPPKPKKIGKKPKPPKKKKKKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFKFONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNONNNNNNNNNNNNNNNNNNNFONNONNNOONNNNNHONNNNNNEEEEEEEEEEEEEEEEEEEEEEEPPPGGGPPPPPPPIPPPPPPPPPPPFGPPPPPPGPPPPGFPPPPPPPPGGGGGGPPGPGGFGFGGGPPPPIPPFPPPPPPPPPKPPPPPPPFSFPPPPPPPPPPPGPPPGPPPPPPGGPPPPPPPPPPGPKKFFFFFGPPFFPGFGGPFPFPPPPPKPPPPPGPPGPPPPFPPPFPPGPPPPPPPFIPIPPGGPPPPPPPPPPPPPPPPPFFPGPPPPPPPPPPPPFFFFFIIFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFGPPPRFPPPPPPPPPPPPPFPPGGFFFGGGGPPPFKPKIGIGPPPFPFGKPFGFFFFFFFGFFPPFGFPGPPGGPPPPPFFPPPPGGPPFPPPPPPPPPPPPGPPPPPPPPPFPPGFGGPGFPPPFPPPPPPPPFFPPFGGGFIIPPPGFGGFPGNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNOOOONNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONONNNNONOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOONOOOOOOOOONNNNNNNNNOOOONNOOOMNNNNOMNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOONNMOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNNNNNOONONNNNNNOMNNNNNNNNNNNNNNNONOOOONOOOOOOONNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNOOOOONNOOOOOOOONNNNNNNNNNOOONOONOOMOOOOOOOOOOOOOOOOOONNOOONNNNNNNNNNNNNNNNNNNNNNMNNNNNOOOOOOOOOOOOOOOOOONNNNNNNNNOOOOOOOOOOOOOOONOOOONNOOOONNONOOMMNNNNOOOOOOOOOOONNNNNNNNOOONOOOOOOOOONNNNNMNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOSHHHHHHH","n":["bytes","bytes_utils","clients","cmd","error","interfaces","json_quote","mocks","monitor","native_tls","prelude","rustls","rustls_native_certs","serde_json","socket2","tracing","types","util","ExclusivePool","Pipeline","RedisClient","RedisPool","Replicas","SentinelClient","SubscriberClient","Transaction","WithOptions","acquire","active_connections","all","borrow","","","","","","","","","borrow_mut","","","","","","","","","client","clients","","clone","","","","","","","","clone_into","","","","","","","","","clone_new","","clone_to_uninit","","","","","","","","","cluster_node","connect","","connect_pool","","default","deref","enable_heartbeat","eq","exec","fmt","","","","","","","","","","force_reconnection","","from","","","","","","","","","from_clients","hash_slot","hscan","id","init","","into","","","","","","","","","last","","len","load","","manage_subscriptions","new","","","","","next","next_connected","nodes","options","pipeline","","","prefer_connected","psubscribe","punsubscribe","quit","","replicas","","reset","resubscribe_all","scan","scan_cluster","set_resolver","","size","","split_cluster","sscan","ssubscribe","subscribe","sunsubscribe","sync","to_client","to_owned","","","","","","","","","to_string","tracked_channels","tracked_patterns","tracked_shard_channels","try_all","try_from","","","","","","","","","try_into","","","","","","","","","type_id","","","","","","","","","unsubscribe","unsubscribe_all","update_perf_config","","vzip","","","","","","","","","wait_for_connect","","watch_before","watched_len","with_cluster_node","zscan","Auth","Backpressure","Canceled","Cluster","Config","IO","InvalidArgument","InvalidCommand","NotFound","Parse","Protocol","RedisError","RedisErrorKind","Replica","Sentinel","Timeout","Tls","Unknown","Url","borrow","","borrow_mut","","change_kind","clone","","clone_into","","clone_to_uninit","","details","eq","","fmt","","","from","","","into","","is_canceled","is_cluster","is_not_found","is_replica","kind","new","new_canceled","source","to_owned","","to_str","to_string","try_from","","try_into","","type_id","","vzip","","AclInterface","Array","AuthInterface","BigNumber","BlobError","BlobString","Boolean","ChunkedString","ClientInterface","ClientLike","ClusterInterface","ConfigInterface","Double","Err","EventInterface","FunctionInterface","GeoInterface","HashesInterface","HeartbeatInterface","Hello","HyperloglogInterface","KeysInterface","ListInterface","LuaInterface","Map","MemoryInterface","MetricsInterface","Null","Number","Ok","PubsubInterface","Push","RediSearchInterface","RedisJsonInterface","RedisResult","Resp3Frame","SentinelInterface","ServerInterface","Set","SetsInterface","SimpleError","SimpleString","SlowlogInterface","SortedSetsInterface","StreamsInterface","TimeSeriesInterface","TrackingInterface","TransactionInterface","VerbatimString","acl_cat","","acl_deluser","","acl_genpass","","acl_getuser","","acl_list","","acl_load","","acl_log_count","","acl_log_reset","","acl_save","","acl_setuser","","acl_users","","acl_whoami","","active_connections","","append","","auth","bgrewriteaof","","bgsave","","blmove","","blmpop","","blpop","","brpop","","brpoplpush","","bzmpop","","bzpopmax","","bzpopmin","","cached_cluster_state","","ckquorum","","client_caching","","client_config","","client_getname","","client_getredir","","client_id","","client_info","","client_kill","","client_list","","client_pause","","client_reconnect_policy","","client_reply","","client_setname","","client_tracking","","client_trackinginfo","","client_unblock","","client_unpause","","cluster_add_slots","","cluster_bumpepoch","","cluster_change_rx","cluster_count_failure_reports","","cluster_count_keys_in_slot","","cluster_del_slots","","cluster_failover","","cluster_flushslots","","cluster_forget","","cluster_get_keys_in_slot","","cluster_info","","cluster_keyslot","","cluster_meet","","cluster_myid","","cluster_nodes","","cluster_replicas","","cluster_replicate","","cluster_reset","","cluster_saveconfig","","cluster_set_config_epoch","","cluster_setslot","","cluster_slots","","command_queue_len","","config_get","","","","config_resetstat","","config_rewrite","","config_set","","","","connect","","connection_config","","connection_ids","","copy","","custom","","custom_raw","","dbsize","","decr","","decr_by","","del","","dump","","enable_heartbeat","error_rx","eval","","evalsha","","exists","","expire","","expire_at","","failover","","","","fcall","","fcall_ro","","flushall","","flushall_cluster","","flushconfig","","force_reconnection","","ft_aggregate","","ft_aliasadd","","ft_aliasdel","","ft_aliasupdate","","ft_alter","","ft_config_get","","ft_config_set","","ft_create","","ft_cursor_del","","ft_cursor_read","","ft_dictadd","","ft_dictdel","","ft_dictdump","","ft_dropindex","","ft_explain","","ft_info","","ft_list","","ft_search","","ft_spellcheck","","ft_sugadd","","ft_sugdel","","ft_sugget","","ft_suglen","","ft_syndump","","ft_synupdate","","ft_tagvals","","function_delete","","function_delete_cluster","","function_dump","","function_flush","","function_flush_cluster","","function_kill","","function_list","","function_load","","function_load_cluster","","function_restore","","function_restore_cluster","","function_stats","","geoadd","","geodist","","geohash","","geopos","","georadius","","georadiusbymember","","geosearch","","geosearchstore","","get","","get_master_addr_by_name","","getdel","","getrange","","getset","","has_reconnect_policy","","hdel","","hello","hexists","","hget","","hgetall","","hincrby","","hincrbyfloat","","hkeys","","hlen","","hmget","","hmset","","hrandfield","","hset","","hsetnx","","hstrlen","","hvals","","id","","incr","","incr_by","","incr_by_float","","info","","info_cache","","init","","invalidation_rx","","is_clustered","","is_connected","","is_pipelined","","json_arrappend","","json_arrindex","","json_arrinsert","","json_arrlen","","json_arrpop","","json_arrtrim","","json_clear","","json_debug_memory","","json_del","","json_get","","json_merge","","json_mget","","json_mset","","json_numincrby","","json_objkeys","","json_objlen","","json_resp","","json_set","","json_strappend","","json_strlen","","json_toggle","","json_type","","keyspace_event_rx","lastsave","","lcs","","lindex","","linsert","","llen","","lmove","","lmpop","","lpop","","lpos","","lpush","","lpushx","","lrange","","lrem","","lset","","ltrim","","master","","masters","","memory_doctor","","memory_malloc_stats","","memory_purge","","memory_stats","","memory_usage","","message_rx","mget","","monitor","","mset","","msetnx","","multi","","myid","","num_primary_cluster_nodes","","on_any","on_cluster_change","on_error","on_invalidation","","on_keyspace_event","on_message","on_reconnect","on_unresponsive","pending_scripts","","perf_config","","persist","","pexpire","","pexpire_at","","pfadd","","pfcount","","pfmerge","","ping","","protocol_version","","psubscribe","","pttl","","publish","","pubsub_channels","","pubsub_numpat","","pubsub_numsub","","pubsub_shardchannels","","pubsub_shardnumsub","","punsubscribe","","quit","","randomkey","","read_latency_metrics","","read_network_latency_metrics","","read_redelivery_count","","read_req_size_metrics","","read_res_size_metrics","","reconnect_rx","remove","","rename","","renamenx","","replicas","","reset","","restore","","rpop","","rpoplpush","","rpush","","rpushx","","sadd","","scard","","script_debug","","script_exists","","script_flush","","script_flush_cluster","","script_kill","","script_kill_cluster","","script_load","","script_load_cluster","","sdiff","","sdiffstore","","select","","sentinel_nodes","","sentinel_primary","","sentinels","","server_version","","set","","","","set_resolver","","setrange","","shutdown","","simulate_failure","","sinter","","sinterstore","","sismember","","slowlog_get","","slowlog_length","","slowlog_reset","","smembers","","smismember","","smove","","sort","","sort_ro","","spawn_event_listener","spop","","spublish","","srandmember","","srem","","ssubscribe","","start_tracking","","state","","stop_tracking","","strlen","","subscribe","","sunion","","sunionstore","","sunsubscribe","","sync_cluster","","take_latency_metrics","","take_network_latency_metrics","","take_redelivery_count","","take_req_size_metrics","","take_res_size_metrics","","ts_add","","ts_alter","","ts_create","","ts_createrule","","ts_decrby","","ts_del","","ts_deleterule","","ts_get","","ts_incrby","","ts_info","","ts_madd","","ts_mget","","ts_mrange","","ts_mrevrange","","ts_queryindex","","ts_range","","ts_revrange","","ttl","","unblock_self","","unlink","","unresponsive_rx","unsubscribe","","unwatch","","update_perf_config","","uses_sentinels","","wait","","wait_for_connect","","watch","","with_options","","xack","","xadd","","xautoclaim","","xautoclaim_values","","xclaim","","xclaim_values","","xdel","","xgroup_create","","xgroup_createconsumer","","xgroup_delconsumer","","xgroup_destroy","","xgroup_setid","","xinfo_consumers","","xinfo_groups","","xinfo_stream","","xlen","","xpending","","xrange","","xrange_values","","xread","","xread_map","","xreadgroup","","xreadgroup_map","","xrevrange","","xrevrange_values","","xtrim","","zadd","","zcard","","zcount","","zdiff","","zdiffstore","","zincrby","","zinter","","zinterstore","","zlexcount","","zmpop","","zmscore","","zpopmax","","zpopmin","","zrandmember","","zrange","","zrangebylex","","zrangebyscore","","zrangestore","","zrank","","zrem","","zremrangebylex","","zremrangebyrank","","zremrangebyscore","","zrevrange","","zrevrangebylex","","zrevrangebyscore","","zrevrank","","zscore","","zunion","","zunionstore","","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","Buffer","Echo","MockCommand","Mocks","SimpleMap","args","borrow","","","","borrow_mut","","","","clear","","clone","clone_into","clone_to_uninit","cmd","del","eq","fmt","","","","from","","","","get","inner","","into","","","","len","new","","pop_back","pop_front","process_command","","","","process_transaction","","push_back","push_front","set","subcommand","take","","to_owned","try_from","","","","try_into","","","","type_id","","","","vzip","","","","Command","args","borrow","borrow_mut","client","clone","clone_into","clone_to_uninit","command","db","eq","fmt","","from","into","run","timestamp","to_owned","to_string","try_from","try_into","type_id","vzip","Blocking","Builder","ConnectionConfig","Expiration","FromRedis","Options","PerformanceConfig","ReconnectPolicy","RedisClient","RedisConfig","RedisError","RedisErrorKind","RedisKey","RedisPool","RedisValue","RedisValueKind","Server","ServerConfig","SetOptions","TcpConfig","TlsConfig","TlsConnector","TracingConfig","Add","Addr","After","AggregateOperation","AggregateOptions","Aggregator","All","","","AllowCrossSlotKeys","AllowOOM","AllowStale","AlmostExact","Any","Append","Apply","Array","","","","Asc","Auto","Avg","","","BackpressureConfig","BackpressurePolicy","Before","BigNumber","BlobError","BlobString","Block","","Blocking","Boolean","","","","BucketTimestamp","Builder","Busy","ByLex","ByScore","Bytes","","","Centralized","ChunkedString","ClientKillFilter","ClientKillType","ClientPauseKind","ClientReplyFlag","ClientState","ClientUnblockFlag","Clients","Cluster","ClusterDiscoveryPolicy","ClusterDown","ClusterFailoverFlag","ClusterHash","ClusterInfo","ClusterResetFlag","ClusterRouting","ClusterSetSlotState","ClusterState","ClusterStateChange","Clustered","CommandStats","Compressed","ConfigEndpoint","ConnectHandle","Connected","Connecting","ConnectionConfig","Constant","Count","","","CountDistinct","CountDistinctIsh","Cpu","CrashAfterElection","CrashAfterPromotion","CredentialProvider","Custom","","","","","","","CustomCommand","DEFAULT_JITTER_MS","DatabaseMemoryStats","Default","DefaultHost","Desc","Disconnected","Disconnecting","Double","","","","","Drain","DuplicatePolicy","EX","EXAT","Earliest","Encoding","End","Error","","Exact","Exclude","Exclusive","Expiration","ExpireOptions","Exponential","Fail","Feet","Filter","First","","FirstKey","FirstValue","","Flush","FnPolicy","Force","FromRedis","FromRedisKey","FtAggregateOptions","FtAlterOptions","FtCreateOptions","FtSearchOptions","Function","FunctionFlag","GT","Geo","GeoPosition","GeoRadiusInfo","GeoShape","GeoUnit","GeoValue","GetLabels","GetTimestamp","GreaterThan","GroupBy","","HScanResult","Hard","Hash","","Hello","Help","HostMapping","ID","Importing","Include","Inclusive","Index","IndexKind","InfiniteLex","InfiniteScore","InfoKind","Integer","","","Interrupt","Invalidation","JSON","KEEPTTL","Keyspace","KeyspaceEvent","Kilometers","LAddr","LMoveDirection","LT","Last","","Latest","Left","LessThan","Lex","Library","Limit","","LimitCount","Linear","List","ListLocation","Load","Loading","Manual","Map","","","","Master","MasterDown","Max","","","","","","","MaxLen","Memory","MemoryStats","Message","","MessageKind","Meters","Mid","Migrating","Miles","Min","","","","","","MinID","Misconf","MultipleGeoValues","MultipleHashSlots","MultipleIDs","MultipleKeys","MultipleOrderedPairs","MultipleStrings","MultipleValues","MultipleWeights","MultipleZaddValues","NX","","Native","NegInfiniteScore","NegInfinityLex","NewInGroup","No","NoCluster","NoReplicas","NoSave","NoWrites","Node","None","","Normal","Now","Null","","","","Number","","Numeric","Off","","Offset","Ok","On","","Options","Ordering","PMessage","PX","PXAT","Page","PerformanceConfig","Persistence","Pubsub","Push","Quantile","Queued","","","RESP2","RESP3","Random","RandomSample","Range","","RangeAggregation","ReadOnly","Rebalance","ReconnectError","ReconnectPolicy","RedisConfig","RedisKey","RedisMap","RedisValue","RedisValueKind","Reducer","ReducerFunc","Remove","Replace","Replica","ReplicaConfig","ReplicaFilter","Replication","Resolve","Resp2TimeSeriesValues","Resp3Frame","Resp3TimeSeriesValues","RespVersion","Right","Rustls","SMessage","SScanResult","Save","ScanResult","ScanType","Scanner","Score","Script","ScriptDebugFlag","SearchField","SearchFilter","SearchGeoFilter","SearchHighlight","SearchParameter","SearchReducer","SearchSchema","SearchSchemaKind","SearchSortBy","SearchSummarize","SelectedLabels","Sentinel","SentinelConfig","SentinelFailureKind","Server","","ServerConfig","Set","","SetOptions","ShutdownFlags","SimpleError","SimpleString","Skip","SkipMe","Sleep","SlotRange","SlowlogEntry","Soft","Some","","SortBy","SortOrder","SpellcheckTerms","Stable","Start","Stats","","StdDev","StdP","","StdS","","Stream","String","","","","","StringOrNumber","Sum","","","","","Sync","TWA","Tag","Takeover","TcpConfig","Text","Timeout","Timestamp","TlsConfig","TlsConnector","TlsHostMapping","ToList","Toggle","TracingConfig","Type","Uncompressed","Unix","UnresponsiveConfig","UseCache","User","VarP","","VarS","","Vector","VerbatimString","Version","WithCursor","WithLabels","Write","XCap","XCapKind","XCapTrim","XID","XPendingArgs","XReadResponse","XReadValue","XX","","Yes","ZCmp","ZRange","ZRangeBound","ZRangeKind","ZScanResult","ZSet","ZSort","add_attributes","aggregation","alias","align","allocator_active","allocator_allocated","allocator_fragmentation_bytes","allocator_fragmentation_ratio","allocator_resident","allocator_rss_bytes","allocator_rss_ratio","aof_buffer","args","","array_len","as_bool","","as_bytes","","","as_bytes_str","","as_f64","as_functions","as_geo_position","as_i64","as_str","","","as_str_lossy","","as_string","as_u64","as_usize","attempts","attribute","","","","attributes","attributes_mut","auto_client_setname","auto_pipeline","avg","backpressure","blocking","","blocking_encode_threshold","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","broadcast_channel_capacity","bucket_duration","bucket_timestamp","build","","build_exclusive_pool","build_pool","build_sentinel_client","build_subscriber_client","caching","can_hash","channel","clients_normal","clients_slaves","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","cluster_cache_update_delay","cluster_current_epoch","cluster_hash","","","cluster_known_nodes","cluster_my_epoch","cluster_node","cluster_owner","cluster_size","cluster_slots_assigned","cluster_slots_fail","cluster_slots_ok","cluster_slots_pfail","cluster_state","cluster_stats_messages_received","cluster_stats_messages_sent","cmd","cmp","","","","","","","","cmp_precedence","connection_error_count","connection_timeout","connector","consumer","convert","","coordinates","count","","create_client","","","","","credential_provider","cursor","","","","","","database","dataset_bytes","dataset_percentage","db","","default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","default_centralized","","default_clustered","","default_command_timeout","default_native_tls","default_rustls","default_sleep","default_tracing_level","deref","deref_mut","dialect","","disable_auto_backpressure","disable_cluster_health_check","distance","duration","empty","enabled","encode_len","end","","eq","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","evalsha","evalsha_with_reload","expander","explainscore","extend","fail_fast","","fcall","fcall_ro","fetch","field_name","fields","","filter","","","","filters","find_key","flags","flatten_array_values","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fragmentation","fragmentation_bytes","frags","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_buffer","from_cluster_slots","from_code","from_config","from_hash","from_iter","","","","","","","from_key","","","from_lua","from_name","from_redis_value","from_static","","from_static_str","","","from_str","","from_url","from_url_centralized","from_url_clustered","from_url_sentinel","from_url_unix","from_value","","","","","","","","full_tracing_level","func","functions","geofilters","get_config","get_connection_config","get_performance_config","get_policy","get_sentinel_config","get_server","groupby","has_more","","","","","hash","","","","","","","","","","","","hash_key","highlight","host","","hostnames","hosts","id","","identifier","idle","ignore_reconnection_errors","infields","inkeys","inner","","","","","","","","","inorder","internal_command_timeout","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_array","into_bytes","","into_bytes_str","into_geo_radius_result","into_integer","into_json","into_map","into_owned_bytes","into_set","into_string","","into_values","into_xautoclaim_values","into_xread_response","into_xread_value","into_zset_result","ip","is_aggregate_type","is_array","is_boolean","is_bytes","is_centralized","is_clustered","is_double","is_end_stream_frame","is_integer","is_map","is_maybe_map","is_normal_pubsub_message","is_null","is_ok","is_pattern_pubsub_message","is_queued","is_sentinel","is_shard_pubsub_message","is_string","is_unix_socket","keepalive","key","keys","keys_bytes_per_key","keys_count","kind","","","","","language","","language_field","latitude","lazy_connections","len","","","","","","","","","","","limit","linger","load","","longitude","lua","lua_caches","major","map","max","","max_attempts","max_command_attempts","max_command_buffer_len","max_feed_count","max_idle","max_in_flight_commands","max_redirections","","max_timeout","maxtextfields","member","","min","","minor","mocks","name","","","","","new","","","","","","","","","","new_centralized","new_clustered","new_constant","new_empty","new_end_stream","new_exponential","new_linear","new_ok","new_sentinel","new_static","new_unix_socket","new_with_tls","next","","","","","next_delay","no_backpressure","nocontent","nodelay","nofields","nofreqs","nohl","nooffsets","nostopwords","on","operation","options","order","overhead_hashtable_expires","overhead_hashtable_main","overhead_hashtable_slot_to_keys","overhead_total","params","","parse","partial_cmp","","","","","","","","password","","patch","payload","payload_field","peak_allocated","peak_percentage","pipeline","policy","port","","position","","pre","prefixes","pretty","primary","primary_fallback","property","radius","random_node","random_slot","range","reconnect_errors","reconnect_on_auth_error","reduce","refresh_interval","","replica","replicas","","replication_backlog","resolve","results","","","","","return","rss_overhead_bytes","rss_overhead_ratio","samples","score","score_field","scorer","separator","server","","","set_cluster_discovery_policy","set_config","set_connection_config","set_jitter","set_performance_config","set_policy","set_sentinel_config","sha1","skipinitialscan","","slop","slots","sortby","start","","startup_allocated","stddev","stopwords","sum","summarize","tags","take","","","","take_attributes","take_results","","","","","tcp","temporary","timeout","","","timestamp","tls","","tls_server_name","to_byte","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_owned_frame","to_str","to_string","","","","","","","","total_allocated","tracing","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ttl","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","unique_hash_slots","unique_primary_nodes","units","unresponsive","username","","uses_native_tls","uses_rustls","uses_tls","value","","verbatim","","verbatim_string_format","version","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","with_config","with_connection_config","with_performance_config","with_sentinel_config","withcount","withpayloads","withscores","withsortkeys","expression","","fields","max","name","num","offset","properties","reducers","disable_backpressure_scaling","min_sleep_duration","attempts","","","delay","","jitter","","","max_attempts","","","max_delay","","min_delay","mult","attributes","","","","","","","","","","","","","auth","data","","","","","","","","","","","","","format","setname","version","arguments","casesensitive","name","noindex","","","","","","nostem","phonetic","separator","sortable","","","","unf","","","","weight","withsuffixtrie","","hosts","","password","path","policy","server","service_name","username","dictionary","","terms","","NONE","f64_to_redis_string","group_by_hash_slot","redis_keyslot","redis_string_to_f64","sha1_hash","static_bytes","static_str"],"q":[[0,"fred"],[18,"fred::clients"],[225,"fred::error"],[286,"fred::interfaces"],[1146,"fred::interfaces::Resp3Frame"],[1176,"fred::mocks"],[1247,"fred::monitor"],[1270,"fred::prelude"],[1293,"fred::types"],[4203,"fred::types::AggregateOperation"],[4212,"fred::types::BackpressurePolicy"],[4214,"fred::types::ReconnectPolicy"],[4229,"fred::types::Resp3Frame"],[4259,"fred::types::SearchSchemaKind"],[4282,"fred::types::ServerConfig"],[4290,"fred::types::SpellcheckTerms"],[4294,"fred::util"],[4302,"fred::clients::pool"],[4303,"fred::clients::redis"],[4304,"tokio::sync::mutex"],[4305,"fred::protocol::types"],[4306,"alloc::vec"],[4307,"core::result"],[4308,"core::future::future"],[4309,"core::marker"],[4310,"fred::clients::pipeline"],[4311,"fred::_tokio"],[4312,"fred::modules::response"],[4313,"fred::clients::replica"],[4314,"alloc::sync"],[4315,"fred::clients::options"],[4316,"core::clone"],[4317,"fred::clients::sentinel"],[4318,"fred::clients::pubsub"],[4319,"fred::clients::transaction"],[4320,"core::option"],[4321,"core::time"],[4322,"core::fmt"],[4323,"fred::types::scan"],[4324,"futures_core::stream"],[4325,"fred::types::args"],[4326,"core::convert"],[4327,"bytes_utils::string"],[4328,"arc_swap::access"],[4329,"tokio::runtime::task::join"],[4330,"fred::types::config"],[4331,"std::collections::hash::map"],[4332,"fred::types::multiple"],[4333,"alloc::string"],[4334,"alloc::collections::btree::set"],[4335,"core::any"],[4336,"serde_json::error"],[4337,"alloc::borrow"],[4338,"core::error"],[4339,"fred::commands::interfaces::acl"],[4340,"fred::commands::interfaces::keys"],[4341,"fred::commands::interfaces::server"],[4342,"fred::commands::interfaces::lists"],[4343,"fred::types::lists"],[4344,"fred::commands::interfaces::sorted_sets"],[4345,"fred::types::sorted_sets"],[4346,"fred::commands::interfaces::cluster"],[4347,"fred::commands::interfaces::sentinel"],[4348,"fred::commands::interfaces::client"],[4349,"fred::types::client"],[4350,"fred::types::misc"],[4351,"tokio::sync::broadcast"],[4352,"fred::types::cluster"],[4353,"fred::commands::interfaces::metrics"],[4354,"fred::commands::interfaces::config"],[4355,"fred::commands::interfaces::lua"],[4356,"fred::commands::interfaces::redisearch"],[4357,"fred::types::redisearch"],[4358,"bytes::bytes"],[4359,"fred::commands::interfaces::geo"],[4360,"fred::types::geo"],[4361,"fred::commands::interfaces::hashes"],[4362,"redis_protocol::resp3::types"],[4363,"fred::commands::interfaces::tracking"],[4364,"fred::commands::interfaces::redis_json"],[4365,"serde_json::value"],[4366,"fred::commands::interfaces::memory"],[4367,"core::net::ip_addr"],[4368,"fred::commands::interfaces::transactions"],[4369,"core::ops::function"],[4370,"fred::commands::interfaces::hyperloglog"],[4371,"fred::commands::interfaces::pubsub"],[4372,"fred::modules::metrics"],[4373,"fred::commands::interfaces::sets"],[4374,"semver"],[4375,"fred::commands::interfaces::slowlog"],[4376,"fred::commands::interfaces::timeseries"],[4377,"fred::types::timeseries"],[4378,"core::iter::traits::collect"],[4379,"fred::commands::interfaces::streams"],[4380,"fred::types::streams"],[4381,"core::hash"],[4382,"core::cmp"],[4383,"fred::modules::mocks"],[4384,"redis_protocol::error"],[4385,"fred::types::scripts"],[4386,"fred::types::builder"],[4387,"fred::protocol::hashers"],[4388,"fred::protocol::tls"],[4389,"fred::router::replicas"],[4390,"alloc::boxed"],[4391,"core::pin"],[4392,"alloc::collections::vec_deque"],[4393,"rustls::client::client_conn"],[4394,"tokio_rustls"],[4395,"native_tls"],[4396,"tokio_native_tls"],[4397,"std::collections::hash::set"],[4398,"std::path"],[4399,"semver::parse"],[4400,"alloc::collections::btree::map"],[4401,"fred::modules"],[4402,"fred::utils"],[4403,"redis_protocol::utils"]],"i":"```````````````````````````bjAj0Bj23fBnC`BbCb657843210178578432106578432104265784321007878457006578443210786578432107040786578432106705527843277154107227874024478784422212657843210422266578432106578432106578432102278657843210780044Gn0000000000``000000Ab10100101010010010010100000000011001010101`Ll`00000````0Cn`````1````1``110`1``````1`11``````1Hh00000000000000000000000Al0Hn0IbId000If000000000In00000Jb0Jf0Jh08800000000000000880000000000002222Kh33333333333333333333333333333333333333Ld0Lf04400000044;;;;33::;;;;88::::::::Ln3M`000<<<<<<66::Md000>>>>77>>Mf000000000000000000000000000000000000000000000000000111111111111111111111111Nh000000000000000??99??????Al0Of0Ib111111111111111111111111111122Hn0000033==33On0444444A@b0000000000000000000000000000000000000000000=Id033If0000000000000000000000000Jf000A@j000000000Kh77227777AA`033Jb022288222244<<999999AAf00000====AAh0;;00000000000000>>;;Ld000000000577<<<<7777<<88888888AAl000M`0000000000000001111;;;;;;99Al0??::00??00::222222ABh00000333333<<<<`3355333355??11??Hn066444466885555555555ABn00000000000000000000000000000000011Jh022<88224444Id0553355ADb000000000000000000000000000000000000000000000000000In00000000000000000000000000000000000000000000000000000000000BAhBAjBAlBAnBB`BBbBBdBBfBBhBBjBBlBBnBC`BCb=<;:987654321500`````AFh0AFjAFdAFf32101033331332103210110321001000AFl3210011242144321432143214321`AFn0000000000000`0000000```````````````````````KjJjA@h```JnOlAJnALf00ALn`NfAKdLlHjAHfI`ObADhAJhACfAMb``A@h999AHnACb`;:98``AHlAFb0<;:AIj>``````Ol0`3````````10AC`AIh`ABl0`Fb=<;==4ABf0`AGfAGh:AJhALbACdAD````;4Ob99LlHjAHdAHfI`AI``ABb08`AMdAHnKdALnNbALl``FbAHhNnAKdACbACfAGf0AJhNf`Kn````````AAdALb``0````AEh`9`L`AL`FlLlABf`JjLbNbALlALj`00`HjAHfI`AHn``LlFl``11K`JjAI```L`BCdAJnAKd``LbAMd`OlAJhACfAMb10=HjAHdAHfI`Fl`AEl8ACb87AAn9ALbKn`1Kd````=``JjAC`AIj`AIh3ACfAMb108Ll``ACjJn```````NjAAd>`````Fl`5AClMn1AJd0000000AJfAJjI`;0;Dn1011111<0101111FbAKfAKhAKnMjLl0F`EnAAj1ElLj3AB`Oh74AElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAAjAElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdEn44AGdAB`1111FhI`A@lAJd04OhLlAGfAGhAGjAGlnAGn9AH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAB`OhLlAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdF`AHjDnFhLj3312333333330AB`n4A@fALdALfAGbALh6AHbAHdDnOjAHf0?AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABl0AJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALd0ALfAGb0ALh0J`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdAJd0AKjAB`OhLl000AAjAElKf0000FnDjGbGlAEn0000AEjAGf0000AGhAGj0AGl0000n000AGnA@lAH`JdAHbAHd000000000000000Dn000000000000000000000000Oj00AHfI`000000000000000000000000000000000000AGdJlJjJnK`Kb0A@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOd0NnAInNl000AJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGj0000000000000000000000AJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALj0000ALlAF`00000ALnADj0ADd000AM`ADf0ADh0000AEd00000AC`ACbACd0ACfACj00AD`0ACl0AMbACn0AMdLlJdALhAGdALdKfAEnAEjOjI`GjACjADnDn49;AJ`15AHd26AB`ALfEl0000An6:AHjOdAJbAJdAJfAIlAJjALhN`AGd0000JdACnAMjFnDjGbGlAB`LlAGfnDnI`A@fALdALfAGbALhAJ`JdN`:FdAGjAIjAH`AJfAJlAEdAHb88KfAEnAEjDnOjNlGjADjADdN`F`AIfAB`OhLlAAjAElKfFnDjGbGlAEnAEjAGfAGhAGjAGlnAGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdI`Dn1111111101Gj2222AJf3333AIj04Ll555055051051AIdA@fA@`AJd049A@lMnAF`N`Ml0OdAHb;KfAEnAEjJdOjNlGjADjADdAKj=AIdALdMh>1AJdAB`B@hAAjAKfFhF`0EnAK`AIb34AIfMlAInAJ`:9=>?AKlLlDnOjI`3AMjFnDjGbGlF`MlFhMhN`AJfElFdnOhAB`1LlAGfAGhAGjAGl7AGnA@lAH`JdAHbAHdDnOjAHfI`AGdJlJjJnK`KbA@`AHhAHjKnL`LbAHlFbAHnAI`AIbAIdAIfAIhF`EnElAIjAIlFdFhOdNnAInNlAJ`IhA@hABdA@fOlLjKjNjAAdABbABlAJbAJdAJfAAnABfObNfKdGjAJhAJjAJlAJnAK`AKbAKdMhAKfAKhAKjAKlAKnN`AL`MlALbMnMjNbFlALdALfAGbALhJ`AEhAFbALjALlAF`ALnADjADdAM`ADfADhAEdAC`ACbACdACfACjAD`AClAMbACnAMdLlALfAB`2nAHfABlALdAGbALhAJdElFd9Oh<>{{{d{Hn}}cIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Hn}}cIj}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Al}}{Cf{Ol}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{Ch}}}}}}Ah}}}}0{{{d{On}}}{{Kl{A@`}}}}0{{{d{Al}}}Cl}00000{{{d{A@b}}ce{A`{g}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ceg{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ceIl{A`{g}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}c{Cf{e}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}c{Cf{e}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}ceIlIl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}02222{{{d{A@b}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}c{Cf{e}}{Cf{g}}{Cf{i}}k}{{`{{Af{}{{l{{Cn{m}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Fj}}Ah}An}0{{{d{A@b}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{Eb}}Ah}An}0{{{d{A@b}}{A`{{Mb{ceg}}}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}022777777{{{d{A@b}}ceg{Cf{Nj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0{{{d{A@b}}c{Cf{e}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{A@d}}Ah}An}0996699{{{d{Kh}}}{{Kl{A@f}}}}{{{d{Id}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Hn}}ceClCl{Cf{Il}}Cl}{{`{{Af{}{{l{{Ad{gAb}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}cIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}cA@heg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ceIhIh}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}cIh{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{If}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ce{Cf{Il}}{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}000{{{d{If}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}cIle}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}00011{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{A@j}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}000{{{d{A@j}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}011{{{d{A@j}}c{Cf{Df}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Kh}}}{{Kl{A@l}}}}{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{Jf}}cA@nDdDf}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{Hl{Oj}}Ah}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{Hl{Oj}}Ah}An}0{{{d{AA`}}}Cb}099{{{d{Jb}}}Ef}0{{{d{Kh}}ceg}{{Ej{{Cn{Cd}}}}}{{AAb{Ab}{{l{{Cn{Cd}}}}}}Ah}{{AAb{n}{{l{{Cn{Cd}}}}}}Ah}{{AAb{{A`{Kj}}}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{{A`{Kj}}}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{Ab}{{l{{Cn{Cd}}}}}}Ah}}{{{d{On}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@`}{{l{{Cn{Cd}}}}}}Ah}}0{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@f}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{A@l}{{l{{Cn{Cd}}}}}}Ah}}{{{d{Kh}}c}{{Ej{{Cn{Cd}}}}}{{AAb{n}{{l{{Cn{Cd}}}}}}Ah}}0{{{d{Jf}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}En}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Hn}}cIl{Cf{AAd}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}000{{{d{AAf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Al}}}Oh}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}077{{{d{AAh}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{I`}}Ah}An}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{AAh}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Fj}}Ah}An}0220044{{{d{Al}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{Ld}}}AAj}000{{{d{Ld}}}Ef}01111{{{d{Kh}}}{{Kl{n}}}}{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Hn}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0001111{{{d{Hn}}cIlI`ClCl{Cf{Il}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{If}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}000{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{M`}}AAn}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{M`}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Fj}}Ah}An}0{{{d{M`}}Cl}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}000{{{d{M`}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}000{{{d{M`}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}000{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{Id}}Lh}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Id}}}{{Cf{{A`{n}}}}}}0{{{d{Id}}}{{Cf{n}}}}0{{{d{Jf}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Eb}}Ah}An}0{{{d{Al}}}{{Cf{AB`}}}}0{{{d{Hn}}ce{Cf{ABb}}{Cf{Nj}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{Jf}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{Oj}}Ah}An}0{{{d{Al}}{Bh{G`}}}{{`{AfAh}}}}0{{{d{Hn}}cDfe}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{Al}}{Cf{ABd}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Jf}}ABf}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0<<;;{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{ABh}}{Cf{Il}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{ABh}}}{{`{{Af{}{{l{{Cn{c}}}}}}Ah}}}An}0{{{d{ABh}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AAl}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{If}}c{Cf{Eb}}{Cf{ABj}}e{Cf{Ob}}Cl{Cf{Dn}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{d{If}}c{Cf{Eb}}{Cf{ABj}}e{Cf{Ob}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{Kl{c}}e}{{Ej{{Cn{Cd}}}}}{BlAh}{{AAb{c}{{l{{Cn{Cd}}}}}}Ah}}{{{d{AAl}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{AAh}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{Hl{I`}}Ah}An}01166{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{On}}cClClClCl}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{Al}}}ABl}0{{{d{On}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}044{{{d{AAl}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{AAl}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}066{{{d{Jb}}}{{`{{Af{}{{l{{Ad{CdAb}}}}}}Ah}}}}0{{{d{Ld}}}AAj}000{{{d{Ld}}}Ef}01111{{{d{ABn}}ceIj{Cf{Ed}}{Cf{AC`}}{Cf{Ed}}{Cf{ACb}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ACd}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}c{Cf{Ed}}{Cf{Ed}}{Cf{ACb}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}c{Cf{Ed}}{Cf{AC`}}{Cf{Ed}}{Cf{ACb}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}ce{Mb{ACfEd}}{Cf{Ed}}}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{ABn}}cIj{Cf{ACd}}{Cf{Ed}}Cl{Cf{Ed}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Oj}}Ah}An}0{{{d{ABn}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{ABn}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}An}0{{{d{ABn}}cCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}03300{{{d{ABn}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{ACh{}{{Dh{{Mb{cACdIj}}}}}}Ah}An}0{{{d{ABn}}Cl{Cf{c}}g}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{ACj}}Ah}{{E`{Eb}}Ah}{{ACh{}{{Dh{e}}}}Ah}An}0{{{d{ABn}}ceClg{Cf{{Mb{IlIl}}}}{Cf{ACj}}{Cf{Ed}}{Cf{ACl}}k{Cf{ACn}}}{{`{{Af{}{{l{{Cn{m}}}}}}Ah}}}{{Hl{AD`}}Ah}{{Hl{AD`}}Ah}{{ACh{}{{Dh{Il}}}}Ah}{{E`{Eb}}Ah}{{ACh{}{{Dh{i}}}}Ah}An}000{{{d{ABn}}e}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Eb}}Ah}{{ACh{}{{Dh{c}}}}Ah}An}0{{{d{ABn}}cegCli{Cf{{Mb{IlIl}}}}{Cf{Ed}}{Cf{ACl}}}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AD`}}Ah}{{Hl{AD`}}Ah}{{ACh{}{{Dh{Il}}}}Ah}An}000{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{Jh}}{Cf{Kd}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{Kh}}}{{Kl{n}}}}{{{d{AAh}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Fj}}Ah}}0{{{d{Hn}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Al}}En}Cd}0{{{d{Al}}}Cl}0{{{d{Id}}IlIl}{{`{{Af{}{{l{{Ad{cAb}}}}}}Ah}}}An}0{{{d{Al}}}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}}0{{{d{Hn}}c}{{`{{Af{}{{l{{Cn{Cd}}}}}}Ah}}}{{E`{Gj}}Ah}}0{{{d{Al}}{d{Fh}}}{{Bj{Al}}}}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}cClegi}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ADf}}Ah}{{E`{ADh}}Ah}{{Hl{ADj}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}Cl}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}Cl}{{`{{Af{}{{l{{Cn{{Mb{Gd{A`{{ADl{kmo}}}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}cegEdi{Cf{Ed}}{Cf{Ed}}{Cf{Ed}}ClCl}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}cegEdi{Cf{Ed}}{Cf{Ed}}{Cf{Ed}}ClCl}{{`{{Af{}{{l{{Cn{{A`{{ADl{kmo}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{ADd}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Fj}}Ah}An}0{{{d{ADb}}cegCl}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{Eb}}Ah}An}000{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}An}0{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{ADh}}Ah}An}011{{{d{ADb}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{ADb}}cCl{Cf{Ed}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}011{{{d{ADb}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Eb}}Ah}{{E`{AEd}}Ah}An}0{{{d{ADb}}ceg{Cf{Ed}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An}0{{{d{ADb}}ceg{Cf{Ed}}}{{`{{Af{}{{l{{Cn{{A`{{ADl{ikm}}}}}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}{{Hl{I`}}Ah}An{ADnAE`AEb}An}0{{{d{ADb}}{Cf{Ed}}{Cf{Ed}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}{Cf{Ed}}{Cf{Ed}}ce}{{`{{Af{}{{l{{Cn{{AEf{gikm}}}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{ADd}}Ah}{ADnAE`AEb}An{ADnAE`AEb}An}0{{{d{ADb}}ce{Cf{Ed}}{Cf{Ed}}Clgi}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Gj}}Ah}{{E`{ADd}}Ah}An}0{{{d{ADb}}ce{Cf{Ed}}{Cf{Ed}}Clgi}{{`{{Af{}{{l{{Cn{{AEf{kmoAa}}}}}}}}Ah}}}{{E`{Eb}}Ah}{{E`{Eb}}Ah}{{E`{Gj}}Ah}{{E`{ADd}}Ah}{ADnAE`AEb}An{ADnAE`AEb}An}05544{{{d{ADb}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{ADf}}Ah}An}0{{{d{In}}c{Cf{Nj}}{Cf{AEh}}ClCle}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AEj}}Ah}An}0{{{d{In}}c}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}cIjIj}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}cCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}An}0{{{d{In}}cIje}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}0{{{d{In}}ce{Cf{AEl}}Cl}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Gj}}Ah}{{E`{AEn}}Ah}An}0{{{d{In}}ceg{Cf{AEl}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Gj}}Ah}{{E`{AEn}}Ah}An}0{{{d{In}}ceg}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cJ`{Cf{Il}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Gj}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{Hj}}Ah}An}0{{{d{In}}c{Cf{Ef}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}000{{{d{In}}c{Cf{{Mb{IlCl}}}}}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0{{{d{In}}ceg{Cf{AFb}}Cl{Cf{ABj}}Cl}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}ceg{Cf{ABj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cegCl{Cf{ABj}}}{{`{{Af{}{{l{{Cn{i}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}cegi{Cf{AFb}}Cl{Cf{ABj}}}{{`{{Af{}{{l{{Cn{k}}}}}}Ah}}}{{E`{Dn}}Ah}{{E`{Dn}}Ah}{{Hl{AF`}}Ah}{{Hl{AF`}}Ah}An}0{{{d{In}}ce}{{`{{Af{}{{l{{Cn{g}}}}}}Ah}}}{{E`{Dn}}Ah}{{Hl{I`}}Ah}An}07799{{{d{In}}cIlIl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}0::{{{d{In}}cIlIlCl}{{`{{Af{}{{l{{Cn{e}}}}}}Ah}}}{{E`{Dn}}Ah}An}055442222==<<````````````````````````````````````{d{{d{c}}}{}}000{{{d{B`}}}{{d{B`c}}}{}}000{{{d{AFd}}}Cd}{{{d{AFf}}}Cd}{{{d{AFh}}}AFh}{{d{d{B`c}}}Cd{}}{dCd}`{{{d{AFd}}{A`{I`}}}{{Ad{I`Ab}}}}{{{d{AFh}}{d{AFh}}}Cl}{{{d{AFh}}{d{B`D`}}}Db}{{{d{AFj}}{d{B`D`}}}Db}{{{d{AFd}}{d{B`D`}}}Db}{{{d{AFf}}{d{B`D`}}}Db}{cc{}}0006{{{d{AFd}}}{{Ff{DnI`}}}}{{{d{AFf}}}{{A`{AFh}}}}{{}c{}}000{{{d{AFf}}}Ef}{{}AFd}{{}AFf}{{{d{AFf}}}{{Cf{AFh}}}}0{{{d{AFl}}AFh}{{Ad{I`Ab}}}}{{{d{AFj}}AFh}{{Ad{I`Ab}}}}{{{d{AFd}}AFh}{{Ad{I`Ab}}}}{{{d{AFf}}AFh}{{Ad{I`Ab}}}}{{{d{AFl}}{A`{AFh}}}{{Ad{I`Ab}}}}0{{{d{AFf}}AFh}Cd}0{{{d{AFd}}{A`{I`}}}{{Ad{I`Ab}}}}`=<{dc{}}{c{{Ad{e}}}{}{}}000{{}{{Ad{c}}}{}}000{dGh}000????``{d{{d{c}}}{}}{{{d{B`}}}{{d{B`c}}}{}}`{{{d{AFn}}}AFn}{{d{d{B`c}}}Cd{}}{dCd}``{{{d{AFn}}{d{AFn}}}Cl}{{{d{AFn}}{d{B`D`}}}Db}0{cc{}}{{}c{}}{El{{Ad{{`{{Dl{}{{Dh{AFn}}}}}}Ab}}}}`={dGd}=<;2```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{B`Ll}}}{{Ad{CdAG`}}}}`````````````{{{d{I`}}}{{Cf{Ef}}}}{{{d{Ll}}}{{Cf{Cl}}}}{{{d{I`}}}{{Cf{Cl}}}}{{{d{Ll}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{Dn}}}{{d{{Bd{Lh}}}}}}{{{d{I`}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{Dn}}}{{Cf{Eb}}}}{{{d{I`}}}{{Cf{Eb}}}}{{{d{I`}}}{{Cf{Ij}}}}{{{d{I`}}{d{H`}}}{{Ad{{A`{AGb}}Ab}}}}{{{d{I`}}}{{Ad{{Cf{Od}}Ab}}}}{{{d{I`}}}{{Cf{Il}}}}{{{d{Ll}}}{{Cf{{d{H`}}}}}}{{{d{Dn}}}{{Cf{{d{H`}}}}}}{{{d{I`}}}{{Cf{{Hd{H`}}}}}}{{{d{Dn}}}{{Hd{H`}}}}1{{{d{I`}}}{{Cf{Gd}}}}{{{d{I`}}}{{Cf{Ed}}}}{{{d{I`}}}{{Cf{Ef}}}}{{{d{Fb}}}Df}````{{{d{Ll}}}{{Cf{d}}}}{{{d{B`Ll}}}{{Cf{{d{B`}}}}}}```````{d{{d{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{B`}}}{{d{B`c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```{{{d{AGd}}}{{Ad{fAb}}}}`{{{d{AGd}}Ef}{{Ad{bAb}}}}{{{d{AGd}}Ef}{{Ad{jAb}}}}{{{d{AGd}}}{{Ad{BnAb}}}}{{{d{AGd}}}{{Ad{C`Ab}}}}`{{{d{I`}}}Cl}```{{{d{AB`}}}AB`}{{{d{Oh}}}Oh}{{{d{Ll}}}Ll}{{{d{AGf}}}AGf}{{{d{AGh}}}AGh}{{{d{AGj}}}AGj}{{{d{AGl}}}AGl}{{{d{n}}}n}{{{d{AGn}}}AGn}{{{d{A@l}}}A@l}{{{d{AH`}}}AH`}{{{d{Jd}}}Jd}{{{d{AHb}}}AHb}{{{d{AHd}}}AHd}{{{d{Dn}}}Dn}{{{d{Oj}}}Oj}{{{d{AHf}}}AHf}{{{d{I`}}}I`}{{{d{AGd}}}AGd}{{{d{Jl}}}Jl}{{{d{Jj}}}Jj}{{{d{Jn}}}Jn}{{{d{K`}}}K`}{{{d{Kb}}}Kb}{{{d{A@`}}}A@`}{{{d{AHh}}}AHh}{{{d{AHj}}}AHj}{{{d{Kn}}}Kn}{{{d{L`}}}L`}{{{d{Lb}}}Lb}{{{d{AHl}}}AHl}{{{d{Fb}}}Fb}{{{d{AHn}}}AHn}{{{d{AI`}}}AI`}{{{d{AIb}}}AIb}{{{d{AId}}}AId}{{{d{AIf}}}AIf}{{{d{AIh}}}AIh}{{{d{F`}}}F`}{{{d{En}}}En}{{{d{El}}}El}{{{d{AIj}}}AIj}{{{d{AIl}}}AIl}{{{d{Fd}}}Fd}{{{d{Fh}}}Fh}{{{d{Od}}}Od}{{{d{Nn}}}Nn}{{{d{AIn}}}AIn}{{{d{Nl}}}Nl}{{{d{AJ`}}}AJ`}{{{d{Ih}}}Ih}{{{d{A@h}}}A@h}{{{d{ABd}}}ABd}{{{d{A@f}}}A@f}{{{d{Ol}}}Ol}{{{d{Lj}}}Lj}{{{d{Kj}}}Kj}{{{d{Nj}}}Nj}{{{d{AAd}}}AAd}{{{d{ABb}}}ABb}{{{d{ABl}}}ABl}{{{d{AJb}}}AJb}{{{d{AJd}}}AJd}{{{d{AJf}}}AJf}{{{d{AAn}}}AAn}{{{d{ABf}}}ABf}{{{d{Ob}}}Ob}{{{d{Nf}}}Nf}{{{d{Kd}}}Kd}{{{d{Gj}}}Gj}{{{d{AJh}}}AJh}{{{d{AJj}}}AJj}{{{d{AJl}}}AJl}{{{d{AJn}}}AJn}{{{d{AK`}}}AK`}{{{d{AKb}}}AKb}{{{d{AKd}}}AKd}{{{d{Mh}}}Mh}{{{d{AKf}}}AKf}{{{d{AKh}}}AKh}{{{d{AKj}}}AKj}{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{N`}}}N`}{{{d{AL`}}}AL`}{{{d{Ml}}}Ml}{{{d{ALb}}}ALb}{{{d{Mn}}}Mn}{{{d{Mj}}}Mj}{{{d{Nb}}}Nb}{{{d{Fl}}}Fl}{{{d{ALd}}}ALd}{{{d{ALf}}}ALf}{{{d{AGb}}}AGb}{{{d{ALh}}}ALh}{{{d{J`}}}J`}{{{d{AEh}}}AEh}{{{d{AFb}}}AFb}{{{d{ALj}}}ALj}{{{d{ALl}}}ALl}{{{d{AF`}}}AF`}{{{d{ALn}}}ALn}{{{d{ADj}}}ADj}{{{d{ADd}}}ADd}{{{d{AM`}}}AM`}{{{d{ADf}}}ADf}{{{d{ADh}}}ADh}{{{d{AEd}}}AEd}{{{d{AC`}}}AC`}{{{d{ACb}}}ACb}{{{d{ACd}}}ACd}{{{d{ACf}}}ACf}{{{d{ACj}}}ACj}{{{d{AD`}}}AD`}{{{d{ACl}}}ACl}{{{d{AMb}}}AMb}{{{d{ACn}}}ACn}{{{d{AMd}}}AMd}{{d{d{B`c}}}Cd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{dCd}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``{{{d{Dn}}}Dd}`````{{{d{Dn}}{d{c}}}{{Cf{n}}}Al}`````````{{{d{AB`}}{d{AB`}}}AMf}{{{d{n}}{d{n}}}AMf}{{{d{Dn}}{d{Dn}}}AMf}{{{d{A@f}}{d{A@f}}}AMf}{{{d{ALd}}{d{ALd}}}AMf}{{{d{ALf}}{d{ALf}}}AMf}{{{d{AGb}}{d{AGb}}}AMf}{{{d{ALh}}{d{ALh}}}AMf}7````{Dn{{Ad{cAb}}}ADn}{I`{{Ad{cAb}}}An}```{{{d{{AMj{}{{AMh{c}}}}}}}f{}}{{{d{Fn}}}f}{{{d{Dj}}}f}{{{d{Gb}}}f}{{{d{Gl}}}f}`{{{d{{AMj{}{{AMh{c}}}}}}}{{Cf{{Hd{H`}}}}}{}}{{{d{Fn}}}{{Cf{{Hd{H`}}}}}}{{{d{Dj}}}{{Cf{{Hd{H`}}}}}}{{{d{Gb}}}{{Cf{{Hd{H`}}}}}}{{{d{Gl}}}{{Cf{{Hd{H`}}}}}}``````{{}AGf}{{}AHb}{{}AGd}{{}AHh}{{}AHj}{{}Fb}{{}AHn}{{}AI`}{{}AIb}{{}AId}{{}AIf}{{}AIh}{{}F`}{{}En}{{}El}{{}AIj}{{}AIl}{{}Fd}{{}Fh}{{}AJ`}{{}AJb}{{}AJd}{{}Nf}{{}Mh}{{}AKj}{{}AKl}{{}N`}{{}Ml}{{}ALl}{{}ACd}{{}AGd}?0?`{{}{{Ad{AGlAb}}}}0{{}AI`}`{{{d{Oj}}}{{d{c}}}{}}{{{d{B`Oj}}}{{d{B`c}}}{}}````````{{{d{Ll}}}Ef}``{{{d{AB`}}{d{AB`}}}Cl}{{{d{Oh}}{d{Oh}}}Cl}{{{d{Ll}}{d{Ll}}}Cl}{{{d{AGf}}{d{AGf}}}Cl}{{{d{AGh}}{d{AGh}}}Cl}{{{d{AGj}}{d{AGj}}}Cl}{{{d{AGl}}{d{AGl}}}Cl}{{{d{n}}{d{n}}}Cl}{{{d{AGn}}{d{AGn}}}Cl}{{{d{A@l}}{d{A@l}}}Cl}{{{d{AH`}}{d{AH`}}}Cl}{{{d{AHb}}{d{AHb}}}Cl}{{{d{AHd}}{d{AHd}}}Cl}{{{d{Dn}}{d{Dn}}}Cl}{{{d{Oj}}{d{Oj}}}Cl}{{{d{AHf}}{d{AHf}}}Cl}{{{d{I`}}{d{I`}}}Cl}{{{d{Jl}}{d{Jl}}}Cl}{{{d{Jj}}{d{Jj}}}Cl}{{{d{Jn}}{d{Jn}}}Cl}{{{d{K`}}{d{K`}}}Cl}{{{d{Kb}}{d{Kb}}}Cl}{{{d{A@`}}{d{A@`}}}Cl}{{{d{AHh}}{d{AHh}}}Cl}{{{d{AHj}}{d{AHj}}}Cl}{{{d{Kn}}{d{Kn}}}Cl}{{{d{L`}}{d{L`}}}Cl}{{{d{Lb}}{d{Lb}}}Cl}{{{d{AHl}}{d{AHl}}}Cl}{{{d{Fb}}{d{Fb}}}Cl}{{{d{AHn}}{d{AHn}}}Cl}{{{d{AI`}}{d{AI`}}}Cl}{{{d{AIb}}{d{AIb}}}Cl}{{{d{AId}}{d{AId}}}Cl}{{{d{AIf}}{d{AIf}}}Cl}{{{d{AIh}}{d{AIh}}}Cl}{{{d{F`}}{d{F`}}}Cl}{{{d{En}}{d{En}}}Cl}{{{d{El}}{d{El}}}Cl}{{{d{AIj}}{d{AIj}}}Cl}{{{d{Fh}}{d{Fh}}}Cl}{{{d{Od}}{d{Od}}}Cl}{{{d{Nn}}{d{Nn}}}Cl}{{{d{AIn}}{d{AIn}}}Cl}{{{d{Nl}}{d{Nl}}}Cl}{{{d{AJ`}}{d{AJ`}}}Cl}{{{d{Ih}}{d{Ih}}}Cl}{{{d{A@h}}{d{A@h}}}Cl}{{{d{ABd}}{d{ABd}}}Cl}{{{d{A@f}}{d{A@f}}}Cl}{{{d{Ol}}{d{Ol}}}Cl}{{{d{Lj}}{d{Lj}}}Cl}{{{d{Kj}}{d{Kj}}}Cl}{{{d{Nj}}{d{Nj}}}Cl}{{{d{AAd}}{d{AAd}}}Cl}{{{d{ABb}}{d{ABb}}}Cl}{{{d{ABl}}{d{ABl}}}Cl}{{{d{AJb}}{d{AJb}}}Cl}{{{d{AJd}}{d{AJd}}}Cl}{{{d{AJf}}{d{AJf}}}Cl}{{{d{AAn}}{d{AAn}}}Cl}{{{d{ABf}}{d{ABf}}}Cl}{{{d{Ob}}{d{Ob}}}Cl}{{{d{Nf}}{d{Nf}}}Cl}{{{d{Kd}}{d{Kd}}}Cl}{{{d{Gj}}{d{Gj}}}Cl}{{{d{AJh}}{d{AJh}}}Cl}{{{d{AJj}}{d{AJj}}}Cl}{{{d{AJl}}{d{AJl}}}Cl}{{{d{AJn}}{d{AJn}}}Cl}{{{d{AK`}}{d{AK`}}}Cl}{{{d{AKb}}{d{AKb}}}Cl}{{{d{AKd}}{d{AKd}}}Cl}{{{d{AKj}}{d{AKj}}}Cl}{{{d{AKl}}{d{AKl}}}Cl}{{{d{AKn}}{d{AKn}}}Cl}{{{d{AL`}}{d{AL`}}}Cl}{{{d{Fl}}{d{Fl}}}Cl}{{{d{ALd}}{d{ALd}}}Cl}{{{d{ALf}}{d{ALf}}}Cl}{{{d{AGb}}{d{AGb}}}Cl}{{{d{ALh}}{d{ALh}}}Cl}{{{d{J`}}{d{J`}}}Cl}{{{d{AEh}}{d{AEh}}}Cl}{{{d{AFb}}{d{AFb}}}Cl}{{{d{ALl}}{d{ALl}}}Cl}{{{d{ALn}}{d{ALn}}}Cl}{{{d{ADj}}{d{ADj}}}Cl}{{{d{ADd}}{d{ADd}}}Cl}{{{d{AM`}}{d{AM`}}}Cl}{{{d{ADf}}{d{ADf}}}Cl}{{{d{ADh}}{d{ADh}}}Cl}{{{d{AEd}}{d{AEd}}}Cl}{{{d{AC`}}{d{AC`}}}Cl}{{{d{ACb}}{d{ACb}}}Cl}{{{d{ACd}}{d{ACd}}}Cl}{{{d{ACf}}{d{ACf}}}Cl}{{{d{ACj}}{d{ACj}}}Cl}{{{d{AD`}}{d{AD`}}}Cl}{{{d{ACl}}{d{ACl}}}Cl}{{{d{AMb}}{d{AMb}}}Cl}{{{d{ACn}}{d{ACn}}}Cl}{{{d{AMd}}{d{AMd}}}Cl}{{{d{ALd}}{d{c}}eg}{{Cn{i}}}{M`AhAMl}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}{{{d{ALd}}{d{f}}ce}{{Cn{g}}}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}``{{{d{B`Fh}}{d{Fh}}}{{d{B`Fh}}}}``{{{d{AGb}}{d{c}}eg}{{Cn{i}}}{MdAhAMl}{{E`{Gj}}Ah}{{Hl{Hj}}Ah}An}0{{{d{AMn}}{Cf{{d{n}}}}}{{ANb{{AN`{Af}}}}}}```{{{d{ANd}}{d{n}}{d{n}}}{{ANb{{AN`{Af}}}}}}0```{{{d{AGf}}{d{{Bd{I`}}}}}{{Cf{{d{{Bd{Lh}}}}}}}}{{{d{AGb}}}{{d{{Bd{ALf}}}}}}{{I`Ef}I`}{{{d{AB`}}{d{B`D`}}}{{Ad{CdANf}}}}0{{{d{Oh}}{d{B`D`}}}{{Ad{CdANf}}}}{{{d{Ll}}{d{B`D`}}}{{Ad{CdANf}}}}{{{d{AGf}}{d{B`D`}}}Db}{{{d{AGh}}{d{B`D`}}}Db}{{{d{AGj}}{d{B`D`}}}Db}{{{d{AGl}}{d{B`D`}}}Db}{{{d{n}}{d{B`D`}}}Db}0{{{d{AGn}}{d{B`D`}}}Db}{{{d{A@l}}{d{B`D`}}}Db}{{{d{AH`}}{d{B`D`}}}Db}{{{d{Jd}}{d{B`D`}}}Db}{{{d{AHb}}{d{B`D`}}}Db}{{{d{AHd}}{d{B`D`}}}Db}{{{d{Dn}}{d{B`D`}}}Db}{{{d{Oj}}{d{B`D`}}}Db}{{{d{AHf}}{d{B`D`}}}Db}0{{{d{I`}}{d{B`D`}}}Db}{{{d{AGd}}{d{B`D`}}}Db}{{{d{Jl}}{d{B`D`}}}Db}{{{d{Jj}}{d{B`D`}}}Db}{{{d{Jn}}{d{B`D`}}}Db}{{{d{K`}}{d{B`D`}}}Db}{{{d{Kb}}{d{B`D`}}}Db}{{{d{A@`}}{d{B`D`}}}Db}{{{d{AHh}}{d{B`D`}}}Db}{{{d{AHj}}{d{B`D`}}}Db}{{{d{Kn}}{d{B`D`}}}Db}{{{d{L`}}{d{B`D`}}}Db}{{{d{Lb}}{d{B`D`}}}Db}{{{d{AHl}}{d{B`D`}}}Db}{{{d{Fb}}{d{B`D`}}}Db}{{{d{AHn}}{d{B`D`}}}Db}{{{d{AI`}}{d{B`D`}}}Db}{{{d{AIb}}{d{B`D`}}}Db}{{{d{AId}}{d{B`D`}}}Db}{{{d{AIf}}{d{B`D`}}}Db}{{{d{AIh}}{d{B`D`}}}Db}{{{d{F`}}{d{B`D`}}}Db}{{{d{En}}{d{B`D`}}}Db}{{{d{El}}{d{B`D`}}}Db}{{{d{AIj}}{d{B`D`}}}Db}{{{d{AIl}}{d{B`D`}}}Db}{{{d{Fd}}{d{B`D`}}}Db}{{{d{Fh}}{d{B`D`}}}Db}{{{d{Od}}{d{B`D`}}}Db}{{{d{Nn}}{d{B`D`}}}Db}{{{d{AIn}}{d{B`D`}}}Db}{{{d{Nl}}{d{B`D`}}}Db}{{{d{AJ`}}{d{B`D`}}}Db}{{{d{Ih}}{d{B`D`}}}Db}{{{d{A@h}}{d{B`D`}}}Db}{{{d{ABd}}{d{B`D`}}}Db}{{{d{A@f}}{d{B`D`}}}Db}{{{d{Ol}}{d{B`D`}}}Db}{{{d{Lj}}{d{B`D`}}}Db}{{{d{Kj}}{d{B`D`}}}Db}{{{d{Nj}}{d{B`D`}}}Db}{{{d{AAd}}{d{B`D`}}}Db}{{{d{ABb}}{d{B`D`}}}Db}{{{d{ABl}}{d{B`D`}}}Db}0{{{d{AJb}}{d{B`D`}}}Db}{{{d{AJd}}{d{B`D`}}}Db}{{{d{AJf}}{d{B`D`}}}Db}{{{d{AAn}}{d{B`D`}}}Db}{{{d{ABf}}{d{B`D`}}}Db}{{{d{Ob}}{d{B`D`}}}Db}{{{d{Nf}}{d{B`D`}}}Db}{{{d{Kd}}{d{B`D`}}}Db}{{{d{Gj}}{d{B`D`}}}Db}{{{d{AJh}}{d{B`D`}}}Db}{{{d{AJj}}{d{B`D`}}}Db}{{{d{AJl}}{d{B`D`}}}Db}{{{d{AJn}}{d{B`D`}}}Db}{{{d{AK`}}{d{B`D`}}}Db}{{{d{AKb}}{d{B`D`}}}Db}{{{d{AKd}}{d{B`D`}}}Db}{{{d{Mh}}{d{B`D`}}}Db}{{{d{AKf}}{d{B`D`}}}Db}{{{d{AKh}}{d{B`D`}}}Db}{{{d{AKj}}{d{B`D`}}}Db}{{{d{AKl}}{d{B`D`}}}Db}{{{d{AKn}}{d{B`D`}}}Db}{{{d{N`}}{d{B`D`}}}Db}{{{d{AL`}}{d{B`D`}}}Db}{{{d{Ml}}{d{B`D`}}}Db}{{{d{ALb}}{d{B`D`}}}Db}{{{d{Mn}}{d{B`D`}}}Db}{{{d{Mj}}{d{B`D`}}}Db}{{{d{Nb}}{d{B`D`}}}Db}{{{d{Fl}}{d{B`D`}}}Db}{{{d{ALd}}{d{B`D`}}}Db}0{{{d{ALf}}{d{B`D`}}}Db}{{{d{AGb}}{d{B`D`}}}Db}0{{{d{ALh}}{d{B`D`}}}Db}0{{{d{J`}}{d{B`D`}}}Db}{{{d{AEh}}{d{B`D`}}}Db}{{{d{AFb}}{d{B`D`}}}Db}{{{d{ALj}}{d{B`D`}}}Db}{{{d{ALl}}{d{B`D`}}}Db}{{{d{AF`}}{d{B`D`}}}Db}{{{d{ALn}}{d{B`D`}}}Db}{{{d{ADj}}{d{B`D`}}}Db}{{{d{ADd}}{d{B`D`}}}Db}{{{d{AM`}}{d{B`D`}}}Db}{{{d{ADf}}{d{B`D`}}}Db}{{{d{ADh}}{d{B`D`}}}Db}{{{d{AEd}}{d{B`D`}}}Db}{{{d{AC`}}{d{B`D`}}}Db}{{{d{ACb}}{d{B`D`}}}Db}{{{d{ACd}}{d{B`D`}}}Db}{{{d{ACf}}{d{B`D`}}}Db}{{{d{ACj}}{d{B`D`}}}Db}{{{d{AD`}}{d{B`D`}}}Db}{{{d{ACl}}{d{B`D`}}}Db}{{{d{AMb}}{d{B`D`}}}Db}{{{d{ACn}}{d{B`D`}}}Db}{{{d{AMd}}{d{B`D`}}}Db}```{cc{}}0{IjLl}1{ClLl}{IlLl}333{{{d{{Bd{Dd}}}}}Kf}{DdKf}{{{A`{Dd}}}Kf}{{{ANh{Dd}}}Kf}77777{{{Cf{Ij}}}AEn}{IjAEn}{{{A`{Ij}}}AEn}{{{ANh{Ij}}}AEn};;{{{Cf{Dd}}}AGf}{DdAGf}{{{d{H`}}}AGf}{{{d{{Bd{Lh}}}}}AGf}?{cAGj{{E`{AGl}}}}{cc{}}{ANjAGl}{ANlAGl}{ANnAGl}3{AO`AGl}{{{Mb{GdDd}}}n}{{{Mb{{d{H`}}Dd}}}n}{{{d{n}}}n}777777{GdAHd}8{AObAHd}{AOdAHd}{AOfAHd}{IlAHd}{AOhAHd}{LhAHd}{EbAHd}{DdAHd}{DfAHd}{EdAHd}{EfAHd}{AOjAHd}{IjAHd}{{{d{H`}}}AHd}{EbDn}{AOfDn}{{{d{Dn}}}Dn}{cc{}}{{{d{Eb}}}Dn}{IjDn}{{{d{Gd}}}Dn}{{{d{H`}}}Dn}{GdDn}{{{d{{Bd{Lh}}}}}Dn}{{{AN`{{Bd{Lh}}}}}Dn}{NdDn}{AOjDn}{AOhDn}{LhDn}{AOlDn}{DdDn}{DfDn}{IlDn}{EdDn}{AOnDn}{EfDn}{AObDn}{AOdDn}{ClDn}{{{d{Oj}}}Oj}{cc{}}{CdOj}1{LhI`}{{{Mb{ce}}}I`{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBaBc}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{CdI`}{OjI`}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBa}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAo}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAcAeAgAiAkAm}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{AOjI`}{{{Mb{cegikmoAaAcAeAgAiAk}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{IjI`}{DnI`}{ClI`}{{{d{{Bd{Lh}}}}}I`}?{{{d{H`}}}I`}{{{Mb{cegikmoAaAcAeAgAi}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{ceg}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{IlI`}{AOfI`}{AOdI`}{{{Mb{cegi}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{AObI`}{{{Mb{cegikmoAaAcAe}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAaAc}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegikmoAa}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{d{Gd}}}I`}{GdI`}{{{AN`{{Bd{Lh}}}}}I`}{NdI`}{EbI`}{{{Mb{cegikmo}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{DdI`}{{{Mb{cegikm}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{{{Mb{cegik}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{DfI`}{{{Mb{cegikmoAaAcAeAg}}}I`{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}{{E`{I`}}}}{cc{}}0000{ClKb}1111111111111111111111{{{Mb{IjIj}}}Od}2222{AInNl}{{{ANh{AIn}}}Nl}{{{A`{AIn}}}Nl}55555555555555555555{cGj{{E`{Dn}}}}{{{Mb{cegik}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBa}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAkAm}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{d{{B@`{c}}}}}Gj{{E`{Dn}}Bl}}{{{Mb{cegikmoAaAcAeAgAiAkAmAo}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Cf{Dn}}}Gj}{{{Mb{cegikmoAaAcAeAgAiAk}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{ANh{c}}}Gj{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAgAiAkAmAoBaBc}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{CdGj}{{{Mb{cegikmoAaAcAeAgAi}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAeAg}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAcAe}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAaAc}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmoAa}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{cc{}}{{{A`{c}}}Gj{{E`{Dn}}}}{{{Mb{ceg}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegi}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikmo}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{cegikm}}}Gj{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}{{E`{Dn}}}}{{{Mb{ce}}}Gj{{E`{Dn}}}{{E`{Dn}}}}6666666666666666666666666666{{{d{H`}}}ALj}{IlALj}{{{d{Gd}}}ALj}9{GdALj}::{{{d{AF`}}}AF`}{{{d{Gd}}}AF`}{IlAF`}{{{d{H`}}}AF`}{GdAF`}??{CdADj}{{{ANh{c}}}ADd{{E`{ADh}}}}{{{A`{c}}}ADd{{E`{ADh}}}}{cc{}}{cADd{{E`{ADh}}}}11{{{Cf{Cd}}}ADf}{GdADh}3{{{d{Gd}}}ADh}{EbADh}{{{d{H`}}}ADh}{{{Mb{ceEdg}}}AEd{{E`{ADh}}}{{E`{ADh}}}{{E`{Eb}}}}{{{Mb{EdceEd}}}AEd{{E`{ADh}}}{{E`{ADh}}}}{{{Mb{EdceEdg}}}AEd{{E`{ADh}}}{{E`{ADh}}}{{E`{Eb}}}}{CdAEd}:{{{Mb{ceEd}}}AEd{{E`{ADh}}}{{E`{ADh}}}};;;{IlACd}<{{{B@`{c}}}ACj{{E`{Eb}}}}={{{A`{c}}}ACj{{E`{Eb}}}}>{IlAD`}?{{{Mb{ACfEd}}}ACl}{cc{}}{{{Mb{cAMb}}}ACn{{E`{Eb}}}}11{{B@bcCf}{{Ad{LlAG`}}}{{ACh{}{{Dh{Ll}}}}}}{{I`c}{{Ad{JdAb}}}{{E`{Eb}}}}{{{d{f}}c}{{Ad{ALhAb}}}{{E`{Eb}}}}{ElAGd}{cALd{{E`{Eb}}}}{cKf{{ACh{}{{Dh{Dd}}}}}}{cAEn{{ACh{}{{Dh{Ij}}}}}}{eAEj{{E`{I`}}}{{ACh{}{{Dh{{Mb{Ijc}}}}}}}}{gOj{{E`{Dn}}}{{E`{I`}}}{{ACh{}{{Dh{{Mb{ce}}}}}}}}{eI`{{E`{I`}}}{{ACh{}{{Dh{c}}}}}}{eGj{{E`{Dn}}}{{ACh{}{{Dh{c}}}}}}{eACj{{E`{Eb}}}{{ACh{}{{Dh{c}}}}}}{Dn{{Ad{ADnAb}}}}{Dn{{Ad{DnAb}}}}{Dn{{Ad{I`Ab}}}}:<{{I`ClClCl}{{Ad{AJ`Ab}}}}{{{d{{Bd{Lh}}}}}Dn}{{{d{{Bd{Lh}}}}}I`}{{{d{H`}}}AHd}{{{d{H`}}}Dn}{{{d{H`}}}I`}{{{d{H`}}}{{Ad{AB`}}}}{{{d{H`}}}{{Cf{ALf}}}}{{{d{H`}}}{{Ad{ElAb}}}}0000{I`{{Ad{AnAb}}}}{I`{{Ad{DnAb}}}}{I`{{Ad{I`Ab}}}}{I`{{Ad{AHjAb}}}}{I`{{Ad{OdAb}}}}{I`{{Ad{AJbAb}}}}{I`{{Ad{AJdAb}}}}{I`{{Ad{AJfAb}}}}``{{{d{ALh}}}{{d{{Ff{EbAGb}}}}}}`{{{d{AGd}}}{{Cf{{d{El}}}}}}{{{d{AGd}}}{{d{F`}}}}{{{d{AGd}}}{{d{En}}}}{{{d{AGd}}}{{Cf{{d{Fb}}}}}}3{{{d{Jd}}Dd}{{Cf{{d{n}}}}}}`{{{d{{AMj{}{{AMh{c}}}}}}}Cl{}}{{{d{Fn}}}Cl}{{{d{Dj}}}Cl}{{{d{Gb}}}Cl}{{{d{Gl}}}Cl}{{{d{AB`}}{d{B`c}}}CdB@d}{{{d{Ll}}{d{B`c}}}CdB@d}{{{d{AGf}}{d{{Bd{I`}}}}}{{Cf{Dd}}}}{{{d{n}}{d{B`c}}}CdB@d}{{{d{Dn}}{d{B`c}}}CdB@d}{{{d{I`}}{d{B`c}}}CdB@d}{{{d{A@f}}{d{B`c}}}CdB@d}{{{d{ALd}}{d{B`c}}}CdB@d}{{{d{ALf}}{d{B`c}}}CdB@d}{{{d{AGb}}{d{B`c}}}CdB@d}{{{d{ALh}}{d{B`c}}}CdB@d}`{{{d{{Bd{Lh}}}}}Dd}````{{{d{AIj}}}{{A`{n}}}}```````{Kf{{A`{Dd}}}}{AEn{{A`{Ij}}}}{AEj{{A`{{Mb{IjI`}}}}}}{{{d{Dn}}}{{d{Nd}}}}{Oj{{Ff{DnI`}}}}{Nl{{A`{AIn}}}}{Gj{{A`{Dn}}}}{ADj{{A`{{Mb{DnI`}}}}}}{ADd{{A`{ADh}}}}```{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{I`{{A`{I`}}}}{DnNd}{I`{{Cf{Nd}}}}{I`{{Cf{Eb}}}}{{I`ClClCl}{{Ad{{A`{AJ`}}Ab}}}}{I`{{Ad{I`I`}}}}{I`{{Ad{A@dAb}}}}{I`{{Ad{OjAb}}}}{I`{{Cf{{A`{Lh}}}}}}{I`{{Ad{{B@f{I`}}Ab}}}}{Dn{{Cf{Gd}}}}{I`{{Cf{Gd}}}}{Gj{{A`{I`}}}}{I`{{Ad{{Mb{Gd{A`{{ADl{ceg}}}}}}Ab}}}An{ADnAE`AEb}An}{I`{{Ad{{AEf{cegi}}Ab}}}{ADnAE`AEb}An{ADnAE`AEb}An}{I`{{Ad{{A`{{ADl{ceg}}}}Ab}}}An{ADnAE`AEb}An}{I`{{Ad{{A`{{Mb{I`Ij}}}}Ab}}}}`{{{d{I`}}}Cl}000{{{d{AIj}}}Cl}01{{{d{Ll}}}Cl}222022021021`````{{{d{Ll}}}B@b}{{{d{I`}}}AHf}````````{{{d{Ll}}}Ef}{{{d{Kf}}}Ef}{{{d{AEn}}}Ef}{{{d{AEj}}}Ef}{{{d{Jd}}}Ef}{{{d{Oj}}}Ef}{{{d{Nl}}}Ef}{{{d{Gj}}}Ef}{{{d{ADj}}}Ef}{{{d{ADd}}}Ef}```{{{d{ALd}}{d{f}}}{{Cn{Cd}}}}``{{{d{ALd}}}{{Cf{{d{Eb}}}}}}``{{{d{B@h}}{d{A@n}}{d{H`}}}{{Cf{Gd}}}}``````````````````{{{d{AGb}}}{{d{Eb}}}}{{{d{ALh}}}{{d{Eb}}}}```{{EdEdEd}AB`}{{}AEn}{{}AEj}{{cDd}n{{E`{Eb}}}}{{}Jd}{{}Oj}{ClAIl}{{ceCl}Lj{{E`{Eb}}}{{E`{AGf}}}}{{}Gj}{{c{A`{ALf}}}AGb{{E`{Eb}}}}{{cDd}AIj{{E`{Gd}}}}{{{A`{{Mb{cDd}}}}}AIj{{E`{Gd}}}}{{DfDf}Fb}{{}Ll}0{{DfDfDfDf}Fb}{{DfDfDf}Fb}{{}I`}{{{A`{{Mb{cDd}}}}e}AIj{{E`{Gd}}}{{E`{Gd}}}}{{{d{H`}}cCl}Lj{{E`{AGf}}}}{cAIj{{E`{B@j}}}}{{cDd{Cf{Gd}}}n{{E`{Eb}}}}{{{AMj{}{{AMh{c}}}}}{{Ad{CdAb}}}{}}{Fn{{Ad{CdAb}}}}{Dj{{Ad{CdAb}}}}{Gb{{Ad{CdAb}}}}{Gl{{Ad{CdAb}}}}{{{d{B`Fb}}}{{Cf{Ed}}}}``````````````````{{{d{H`}}}{{Ad{AB`B@l}}}}{{{d{AB`}}{d{AB`}}}{{Cf{AMf}}}}{{{d{n}}{d{n}}}{{Cf{AMf}}}}{{{d{Dn}}{d{Dn}}}{{Cf{AMf}}}}{{{d{A@f}}{d{A@f}}}{{Cf{AMf}}}}{{{d{ALd}}{d{ALd}}}{{Cf{AMf}}}}{{{d{ALf}}{d{ALf}}}{{Cf{AMf}}}}{{{d{AGb}}{d{AGb}}}{{Cf{AMf}}}}{{{d{ALh}}{d{ALh}}}{{Cf{AMf}}}}```````````````{{{d{Jd}}}{{B@n{n{Mb{{A`{{Mb{DdDd}}}}{Gf{n}}}}}}}}````{{{d{Jd}}}{{Cf{{d{n}}}}}}{{{d{Jd}}}{{Cf{{d{AH`}}}}}}````{{{d{AMn}}}{{Cf{Cj}}}}0`{{{d{Jd}}{d{n}}}{{A`{n}}}}``{{{d{G`}}EbDd}{{ANb{{AN`{Af}}}}}}{{{d{{AMj{}{{AMh{c}}}}}}}{{d{{Cf{c}}}}}{}}{{{d{Fn}}}{{d{{Cf{c}}}}}{}}{{{d{Dj}}}{{d{{Cf{c}}}}}{}}{{{d{Gb}}}{{d{{Cf{c}}}}}{}}{{{d{Gl}}}{{d{{Cf{c}}}}}{}}```````````{{{d{B`AIj}}AIh}{{Ad{CdAb}}}}{{{d{B`AGd}}El}{{d{B`AGd}}}}{{{d{B`AGd}}F`}{{d{B`AGd}}}}{{{d{B`Fb}}Df}Cd}{{{d{B`AGd}}En}{{d{B`AGd}}}}{{{d{B`AGd}}Fb}{{d{B`AGd}}}}{{{d{B`AGd}}Fd}{{d{B`AGd}}}}{{{d{ALd}}}{{d{Eb}}}}```{{{d{Jd}}}{{d{{Bd{AH`}}}}}}`````````{{{d{B`Ll}}}Ll}{{{d{B`Dn}}}Nd}{{{d{B`Oj}}}Oj}{{{d{B`I`}}}I`}{{{d{B`Ll}}}Cf}{{{d{B`{AMj{}{{AMh{c}}}}}}}{{Cf{c}}}{}}{{{d{B`Fn}}}{{Cf{c}}}{}}{{{d{B`Dj}}}{{Cf{c}}}{}}{{{d{B`Gb}}}{{Cf{c}}}{}}{{{d{B`Gl}}}{{Cf{c}}}{}}`````````{{{d{Oh}}}Lh}{dc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Ll}}}BA`}{{{d{ALf}}}{{d{H`}}}}{dGd}{{{d{Ll}}}{{Cf{Gd}}}}111111```{c{{Ad{e}}}{}{}}00{{{Mb{B@bc}}}{{Ad{Ll}}}{{E`{Nd}}}}111111111{{{Mb{Ijc}}}{{Ad{AEje}}}{{Hl{I`}}}{}}{{{A`{{Mb{Ijc}}}}}{{Ad{AEje}}}{{Hl{I`}}}{}}{{{ANh{{Mb{Ijc}}}}}{{Ad{AEje}}}{{Hl{I`}}}{}}4444{BAb{{Ad{AGlc}}}{}}5{{{d{H`}}}{{Ad{nc}}}{}}{Gd{{Ad{nc}}}{}}777777{I`{{Ad{AHdc}}}{}}8{I`{{Ad{Dnc}}}{}}{{{B@`{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{Mb{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{A`{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{Ff{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{d{{B@`{{Mb{ce}}}}}}}{{Ad{Ojg}}}{{Hl{Dn}}Bl}{{Hl{I`}}Bl}{}}>{{{ANh{{Mb{ce}}}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{B@n{ce}}}{{Ad{Ojg}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{c{{Ad{e}}}{}{}}{{{A`{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}{Ef{{Ad{I`c}}}{}}{{{B@`{c}}}{{Ad{I`e}}}{{Hl{I`}}Bl}{}}{{{Ff{ce}}}{{Ad{I`g}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{{{d{{B@`{c}}}}}{{Ad{I`e}}}{{Hl{I`}}Bl}{}}{{{ANh{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}6{AOl{{Ad{I`c}}}{}}{{{B@n{ce}}}{{Ad{I`g}}}{{Hl{Dn}}}{{Hl{I`}}}{}}{Ll{{Ad{I`c}}}{}}{{{Cf{c}}}{{Ad{I`e}}}{{Hl{I`}}}{}}{AOn{{Ad{I`c}}}{}}{Ed{{Ad{I`c}}}{}}<<<<<{{{d{Gd}}}{{Ad{Kbc}}}{}}{Gd{{Ad{Kbc}}}{}}>{{{d{H`}}}{{Ad{Kbc}}}{}}???{I`{{Ad{AHjc}}}{}}{c{{Ad{e}}}{}{}}000000000000000000{I`{{Ad{Odc}}}{}}1{{{Mb{IjIjc}}}{{Ad{AIne}}}{{Hl{I`}}}{}}22222222222222{I`{{Ad{AJbc}}}{}}33{I`{{Ad{AJdc}}}{}}{I`{{Ad{AJfc}}}{}}55555{{{d{H`}}}{{Ad{Nfc}}}{}}{{{d{Gd}}}{{Ad{Nfc}}}{}}{Gd{{Ad{Nfc}}}{}}{Eb{{Ad{Nfc}}}{}}{{{d{Eb}}}{{Ad{Nfc}}}{}}:::::::::::::::::::::::::::::::{Ij{{Ad{ALjc}}}{}};;{Ij{{Ad{AF`c}}}{}}{{{d{H`}}}{{Ad{ALnc}}}{}}=={{{ANh{{Mb{ce}}}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{Ff{ce}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{Mb{ce}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{{{A`{{Mb{ce}}}}}{{Ad{ADjg}}}{{E`{Dn}}}{{Hl{I`}}}{}}{c{{Ad{e}}}{}{}}{{{d{H`}}}{{Ad{AM`c}}}{}}11{{{Mb{ceg{Cf{Il}}}}}{{Ad{ADfi}}}{{Hl{AM`}}}{{Hl{ALn}}}{{E`{AHd}}}{}}{{{Mb{ceg}}}{{Ad{ADfi}}}{{Hl{AM`}}}{{Hl{ALn}}}{{E`{AHd}}}{}}{{{Mb{ce}}}{{Ad{ADfg}}}{{Hl{AM`}}}{{E`{AHd}}}{}}44444{Gd{{Ad{ACdc}}}{}}{{{d{H`}}}{{Ad{ACdc}}}{}}{Eb{{Ad{ACdc}}}{}}777{{{d{H`}}}{{Ad{AD`c}}}{}}888{{{d{H`}}}{{Ad{AMdc}}}{}}9{{}{{Ad{c}}}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`{dGh}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{Jd}}}{{A`{Dd}}}}{{{d{Jd}}}{{A`{n}}}}````{{{d{El}}}Cl}00````{{{d{Ll}}}{{Cf{{d{BAd}}}}}}`{{}c{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`El}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`F`}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`En}}}}}}{{{d{B`AGd}}c}{{d{B`AGd}}}{{BAf{{d{B`Fd}}}}}}````````````````````````````````````````````````````````````````````````````````````````````````{Ij{{Ad{I`Ab}}}}{e{{Ad{{B@n{Dd{ANh{Dn}}}}Ab}}}{{Hl{Dn}}}{{ACh{}{{Dh{c}}}}}}{{{d{{Bd{Lh}}}}}Dd}{{{d{H`}}}{{Ad{IjAb}}}}{{{d{H`}}}Gd}{{{d{{Bd{Lh}}}}}Nd}{{{d{H`}}}Eb}","D":"N@l","p":[[5,"ExclusivePool",18,4302],[1,"reference"],[5,"RedisClient",18,4303],[5,"OwnedMutexGuard",4304],[5,"RedisPool",18,4302],[17,"Output"],[5,"Server",1293,4305],[5,"Vec",4306],[5,"RedisError",225],[6,"Result",4307],[10,"Future",4308],[10,"Send",4309],[5,"Pipeline",18,4310],[10,"ClientLike",286,4311],[10,"FromRedis",1293,4312],[0,"mut"],[5,"Replicas",18,4313],[1,"slice"],[5,"Mutex",4304],[5,"Arc",4314],[5,"WithOptions",18,4315],[10,"Clone",4316],[5,"SentinelClient",18,4317],[5,"SubscriberClient",18,4318],[5,"Transaction",18,4319],[1,"unit"],[6,"Option",4320],[8,"ConnectHandle",1293],[5,"Duration",4321],[1,"bool"],[8,"RedisResult",286],[5,"Formatter",4322],[8,"Result",4322],[1,"u16"],[1,"u32"],[17,"Item"],[5,"HScanResult",1293,4323],[10,"Stream",4324],[5,"RedisKey",1293,4325],[10,"Into",4326],[8,"Str",4327],[1,"u64"],[1,"usize"],[5,"DynGuard",4328],[5,"JoinHandle",4329],[5,"RedisConfig",1293,4330],[5,"PerformanceConfig",1293,4330],[5,"ConnectionConfig",1293,4330],[6,"ReconnectPolicy",1293,4330],[5,"SentinelConfig",1293,4330],[5,"HashMap",4331],[5,"Options",1293,4330],[8,"MultipleStrings",1293,4332],[6,"ScanType",1293,4323],[5,"ScanResult",1293,4323],[10,"Resolve",1293,4305],[5,"SScanResult",1293,4323],[5,"String",4333],[5,"BTreeSet",4334],[5,"TypeId",4335],[5,"MultipleKeys",1293,4332],[5,"ZScanResult",1293,4323],[6,"RedisErrorKind",225],[1,"str"],[5,"Error",4336],[6,"Cow",4337],[10,"Error",4338],[10,"AclInterface",286,4339],[8,"MultipleValues",1293,4332],[10,"TryInto",4326],[10,"KeysInterface",286,4340],[6,"RedisValue",1293,4325],[10,"AuthInterface",286],[10,"ServerInterface",286,4341],[10,"ListInterface",286,4342],[6,"LMoveDirection",1293,4343],[1,"f64"],[1,"i64"],[10,"SortedSetsInterface",286,4344],[6,"ZCmp",1293,4345],[10,"ClusterInterface",286,4346],[5,"ClusterRouting",1293,4305],[10,"SentinelInterface",286,4347],[10,"ClientInterface",286,4348],[6,"ClientKillFilter",1293,4349],[6,"ClientKillType",1293,4349],[6,"ClientPauseKind",1293,4349],[6,"ClientReplyFlag",1293,4349],[6,"Toggle",1293,4349],[6,"ClientUnblockFlag",1293,4350],[5,"MultipleHashSlots",1293,4332],[10,"EventInterface",286],[6,"ClusterStateChange",1293,4350],[5,"Receiver",4351],[6,"ClusterFailoverFlag",1293,4352],[6,"ClusterResetFlag",1293,4352],[6,"ClusterSetSlotState",1293,4352],[10,"MetricsInterface",286,4353],[10,"ConfigInterface",286,4354],[1,"u8"],[5,"CustomCommand",1293,4350],[6,"Resp3Frame",1293],[10,"HeartbeatInterface",286],[10,"LuaInterface",286,4355],[1,"tuple"],[10,"FunctionInterface",286,4355],[10,"RediSearchInterface",286,4356],[5,"FtAggregateOptions",1293,4357],[5,"FtAlterOptions",1293,4357],[5,"FtCreateOptions",1293,4357],[5,"SearchSchema",1293,4357],[5,"FtSearchOptions",1293,4357],[6,"SpellcheckTerms",1293,4357],[5,"Bytes",4358],[6,"FnPolicy",1293,4350],[10,"GeoInterface",286,4359],[6,"SetOptions",1293,4350],[5,"MultipleGeoValues",1293,4360],[6,"GeoUnit",1293,4360],[8,"Any",1293],[6,"SortOrder",1293,4350],[5,"GeoPosition",1293,4360],[10,"HashesInterface",286,4361],[6,"RespVersion",1293,4362],[5,"RedisMap",1293,4325],[6,"InfoKind",1293,4350],[10,"TrackingInterface",286,4363],[5,"Invalidation",1293,4349],[10,"RedisJsonInterface",286,4364],[6,"Value",4365],[5,"KeyspaceEvent",1293,4350],[6,"ListLocation",1293,4343],[10,"MemoryInterface",286,4366],[5,"Message",1293,4305],[6,"IpAddr",4367],[10,"TransactionInterface",286,4368],[10,"Fn",4369],[6,"ExpireOptions",1293,4350],[10,"HyperloglogInterface",286,4370],[10,"PubsubInterface",286,4371],[5,"Stats",1293,4372],[10,"SetsInterface",286,4373],[6,"ScriptDebugFlag",1293,4350],[5,"Version",1293,4374],[6,"Expiration",1293,4350],[6,"ShutdownFlags",1293,4350],[6,"SentinelFailureKind",1293,4350],[10,"SlowlogInterface",286,4375],[8,"Limit",1293],[6,"ClientState",1293,4350],[10,"TimeSeriesInterface",286,4376],[6,"Encoding",1293,4377],[6,"DuplicatePolicy",1293,4377],[6,"Timestamp",1293,4377],[6,"Aggregator",1293,4377],[10,"IntoIterator",4378],[6,"GetLabels",1293,4377],[5,"RangeAggregation",1293,4377],[5,"GroupBy",1293,4377],[6,"GetTimestamp",1293,4377],[10,"StreamsInterface",286,4379],[5,"MultipleIDs",1293,4380],[5,"XCap",1293,4380],[6,"XID",1293,4380],[5,"MultipleOrderedPairs",1293,4380],[8,"XReadValue",1293,4380],[10,"FromRedisKey",1293,4312],[10,"Hash",4381],[10,"Eq",4382],[5,"XPendingArgs",1293,4380],[8,"XReadResponse",1293,4380],[6,"Ordering",1293,4345],[5,"MultipleZaddValues",1293,4345],[6,"AggregateOptions",1293,4350],[5,"MultipleWeights",1293,4345],[5,"ZRange",1293,4345],[6,"ZSort",1293,4345],[5,"SimpleMap",1176,4383],[5,"Buffer",1176,4383],[5,"MockCommand",1176,4383],[5,"Echo",1176,4383],[10,"Mocks",1176,4383],[5,"Command",1247],[5,"RedisProtocolError",4384],[5,"Function",1293,4385],[5,"Builder",1293,4386],[6,"ClusterHash",1293,4387],[6,"TlsHostMapping",1293,4388],[5,"TlsConfig",1293,4388],[6,"TlsConnector",1293,4388],[6,"MessageKind",1293,4305],[5,"SlotRange",1293,4305],[5,"ReplicaConfig",1293,4389],[6,"StringOrNumber",1293,4325],[6,"RedisValueKind",1293,4325],[6,"ClusterState",1293,4352],[5,"ClusterInfo",1293,4352],[6,"ReconnectError",1293,4330],[6,"Blocking",1293,4330],[6,"BackpressurePolicy",1293,4330],[5,"BackpressureConfig",1293,4330],[5,"TcpConfig",1293,4330],[5,"UnresponsiveConfig",1293,4330],[6,"ClusterDiscoveryPolicy",1293,4330],[6,"ServerConfig",1293,4330],[5,"TracingConfig",1293,4330],[5,"GeoValue",1293,4360],[5,"GeoRadiusInfo",1293,4360],[5,"DatabaseMemoryStats",1293,4350],[5,"MemoryStats",1293,4350],[5,"SlowlogEntry",1293,4350],[6,"ReducerFunc",1293,4357],[5,"SearchReducer",1293,4357],[5,"SearchField",1293,4357],[6,"Load",1293,4357],[5,"WithCursor",1293,4357],[5,"SearchParameter",1293,4357],[6,"AggregateOperation",1293,4357],[5,"SearchFilter",1293,4357],[5,"SearchGeoFilter",1293,4357],[5,"SearchSummarize",1293,4357],[5,"SearchHighlight",1293,4357],[5,"SearchSortBy",1293,4357],[6,"IndexKind",1293,4357],[6,"SearchSchemaKind",1293,4357],[5,"Script",1293,4385],[6,"FunctionFlag",1293,4385],[5,"Library",1293,4385],[6,"ZRangeBound",1293,4345],[6,"ZRangeKind",1293,4345],[6,"XCapTrim",1293,4380],[6,"XCapKind",1293,4380],[6,"Reducer",1293,4377],[6,"BucketTimestamp",1293,4377],[6,"Ordering",4382],[17,"Page"],[10,"Scanner",1293,4323],[10,"Sync",4309],[10,"CredentialProvider",1293,4330],[5,"Box",4390],[5,"Pin",4391],[10,"ReplicaFilter",1293,4389],[5,"Error",4322],[5,"VecDeque",4392],[5,"ClientConfig",4393],[5,"TlsConnector",4394],[5,"TlsConnector",4395],[5,"TlsConnector",4396],[1,"i8"],[1,"i16"],[1,"i32"],[1,"isize"],[1,"f32"],[1,"i128"],[1,"u128"],[1,"array"],[6,"FrameKind",4362],[10,"Hasher",4381],[5,"HashSet",4397],[10,"HostMapping",1293,4388],[5,"PathBuf",4398],[5,"Error",4399],[5,"BTreeMap",4400],[6,"OwnedFrame",4362],[5,"TlsConnectorBuilder",4395],[6,"VerbatimStringFormat",4362],[10,"FnOnce",4369],[15,"BlobString",1146],[15,"BlobError",1146],[15,"SimpleString",1146],[15,"SimpleError",1146],[15,"Boolean",1146],[15,"Number",1146],[15,"Double",1146],[15,"BigNumber",1146],[15,"VerbatimString",1146],[15,"Array",1146],[15,"Map",1146],[15,"Set",1146],[15,"Push",1146],[15,"Hello",1146],[8,"LimitCount",1293],[15,"Filter",4203],[15,"Apply",4203],[15,"GroupBy",4203],[15,"SortBy",4203],[15,"Limit",4203],[15,"Sleep",4212],[15,"Constant",4214],[15,"Linear",4214],[15,"Exponential",4214],[15,"Custom",4259],[15,"Tag",4259],[15,"Text",4259],[15,"Numeric",4259],[15,"Geo",4259],[15,"Vector",4259],[15,"GeoShape",4259],[15,"Clustered",4282],[15,"Sentinel",4282],[15,"Unix",4282],[15,"Centralized",4282],[15,"Include",4290],[15,"Exclude",4290]],"r":[[7,4401],[18,4302],[19,4310],[20,4303],[21,4302],[22,4313],[23,4317],[24,4318],[25,4319],[26,4315],[286,4339],[294,4348],[295,4311],[296,4346],[297,4354],[301,4355],[302,4359],[303,4361],[306,4370],[307,4340],[308,4342],[309,4355],[311,4366],[312,4353],[316,4371],[318,4356],[319,4364],[322,4347],[323,4341],[325,4373],[328,4375],[329,4344],[330,4379],[331,4376],[332,4363],[333,4368],[938,4311],[1176,4383],[1177,4383],[1178,4383],[1179,4383],[1180,4383],[1270,4330],[1271,4386],[1272,4330],[1273,4350],[1274,4312],[1275,4330],[1276,4330],[1277,4330],[1278,4303],[1279,4330],[1280,225],[1281,225],[1282,4325],[1283,4302],[1284,4325],[1285,4325],[1286,4305],[1287,4330],[1288,4350],[1289,4330],[1290,4388],[1291,4388],[1292,4330],[1296,4357],[1297,4350],[1298,4377],[1318,4330],[1319,4330],[1326,4330],[1331,4377],[1332,4386],[1341,4349],[1342,4349],[1343,4349],[1344,4349],[1345,4350],[1346,4350],[1349,4330],[1351,4352],[1352,4387],[1353,4352],[1354,4352],[1355,4305],[1356,4352],[1357,4352],[1358,4350],[1366,4330],[1376,4330],[1384,4350],[1385,4330],[1386,4350],[1398,4377],[1402,4377],[1409,4350],[1410,4350],[1421,4350],[1423,4312],[1424,4312],[1425,4357],[1426,4357],[1427,4357],[1428,4357],[1429,4385],[1430,4385],[1433,4360],[1434,4360],[1436,4360],[1437,4360],[1438,4377],[1439,4377],[1441,4377],[1443,4323],[1449,4388],[1455,4357],[1458,4350],[1463,4349],[1467,4350],[1470,4343],[1478,4385],[1484,4343],[1485,4357],[1503,4350],[1504,4305],[1506,4305],[1519,4360],[1520,4332],[1521,4380],[1522,4332],[1523,4380],[1524,4332],[1525,4332],[1526,4345],[1527,4345],[1557,4330],[1558,4345],[1563,4330],[1577,4377],[1580,4330],[1581,4330],[1582,4330],[1583,4325],[1584,4325],[1585,4325],[1586,4325],[1587,4377],[1588,4357],[1592,4389],[1593,4389],[1595,4305],[1596,4377],[1598,4377],[1599,4362],[1603,4323],[1605,4323],[1606,4323],[1607,4323],[1609,4385],[1610,4350],[1611,4357],[1612,4357],[1613,4357],[1614,4357],[1615,4357],[1616,4357],[1617,4357],[1618,4357],[1619,4357],[1620,4357],[1623,4330],[1624,4350],[1625,4305],[1627,4330],[1630,4350],[1631,4350],[1637,4305],[1638,4350],[1643,4350],[1644,4357],[1647,4372],[1660,4325],[1670,4330],[1673,4377],[1674,4388],[1675,4388],[1676,4388],[1678,4349],[1679,4330],[1683,4330],[1692,4374],[1693,4357],[1696,4380],[1697,4380],[1698,4380],[1699,4380],[1700,4380],[1701,4380],[1702,4380],[1706,4345],[1707,4345],[1708,4345],[1709,4345],[1710,4323],[1712,4345],[4295,4402],[4297,4403],[4298,4402],[4300,4402],[4301,4402]],"b":[[93,"impl-Debug-for-RedisClient"],[94,"impl-Display-for-RedisClient"],[258,"impl-Debug-for-RedisError"],[259,"impl-Display-for-RedisError"],[1258,"impl-Display-for-Command"],[1259,"impl-Debug-for-Command"],[2612,"impl-Debug-for-Version"],[2613,"impl-Display-for-Version"],[2620,"impl-Display-for-Server"],[2621,"impl-Debug-for-Server"],[2630,"impl-Debug-for-RedisValueKind"],[2631,"impl-Display-for-RedisValueKind"],[2675,"impl-Debug-for-ClientState"],[2676,"impl-Display-for-ClientState"],[2707,"impl-Debug-for-Script"],[2708,"impl-Display-for-Script"],[2710,"impl-Debug-for-Function"],[2711,"impl-Display-for-Function"],[2712,"impl-Display-for-Library"],[2713,"impl-Debug-for-Library"],[2742,"impl-From%3Cf64%3E-for-BytesFrame"],[2744,"impl-From%3Cbool%3E-for-BytesFrame"],[2745,"impl-From%3Ci64%3E-for-BytesFrame"],[2749,"impl-From%3C%26%5Bu16%5D%3E-for-MultipleHashSlots"],[2750,"impl-From%3Cu16%3E-for-MultipleHashSlots"],[2751,"impl-From%3CVec%3Cu16%3E%3E-for-MultipleHashSlots"],[2752,"impl-From%3CVecDeque%3Cu16%3E%3E-for-MultipleHashSlots"],[2758,"impl-From%3COption%3Cf64%3E%3E-for-MultipleWeights"],[2759,"impl-From%3Cf64%3E-for-MultipleWeights"],[2760,"impl-From%3CVec%3Cf64%3E%3E-for-MultipleWeights"],[2761,"impl-From%3CVecDeque%3Cf64%3E%3E-for-MultipleWeights"],[2764,"impl-From%3COption%3Cu16%3E%3E-for-ClusterHash"],[2765,"impl-From%3Cu16%3E-for-ClusterHash"],[2766,"impl-From%3C%26str%3E-for-ClusterHash"],[2767,"impl-From%3C%26%5Bu8%5D%3E-for-ClusterHash"],[2771,"impl-From%3CClientConfig%3E-for-TlsConnector"],[2772,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2773,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2775,"impl-From%3CTlsConnector%3E-for-TlsConnector"],[2776,"impl-From%3C(String,+u16)%3E-for-Server"],[2777,"impl-From%3C(%26str,+u16)%3E-for-Server"],[2778,"impl-From%3C%26Server%3E-for-Server"],[2785,"impl-From%3CString%3E-for-StringOrNumber"],[2787,"impl-From%3Ci8%3E-for-StringOrNumber"],[2788,"impl-From%3Ci16%3E-for-StringOrNumber"],[2789,"impl-From%3Ci32%3E-for-StringOrNumber"],[2790,"impl-From%3Ci64%3E-for-StringOrNumber"],[2791,"impl-From%3Cisize%3E-for-StringOrNumber"],[2792,"impl-From%3Cu8%3E-for-StringOrNumber"],[2793,"impl-From%3CStrInner%3CBytes%3E%3E-for-StringOrNumber"],[2794,"impl-From%3Cu16%3E-for-StringOrNumber"],[2795,"impl-From%3Cu32%3E-for-StringOrNumber"],[2796,"impl-From%3Cu64%3E-for-StringOrNumber"],[2797,"impl-From%3Cusize%3E-for-StringOrNumber"],[2798,"impl-From%3Cf32%3E-for-StringOrNumber"],[2799,"impl-From%3Cf64%3E-for-StringOrNumber"],[2800,"impl-From%3C%26str%3E-for-StringOrNumber"],[2801,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisKey"],[2802,"impl-From%3Ci32%3E-for-RedisKey"],[2803,"impl-From%3C%26RedisKey%3E-for-RedisKey"],[2805,"impl-From%3C%26StrInner%3CBytes%3E%3E-for-RedisKey"],[2806,"impl-From%3Cf64%3E-for-RedisKey"],[2807,"impl-From%3C%26String%3E-for-RedisKey"],[2808,"impl-From%3C%26str%3E-for-RedisKey"],[2809,"impl-From%3CString%3E-for-RedisKey"],[2810,"impl-From%3C%26%5Bu8%5D%3E-for-RedisKey"],[2811,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisKey"],[2812,"impl-From%3CBytes%3E-for-RedisKey"],[2813,"impl-From%3Cf32%3E-for-RedisKey"],[2814,"impl-From%3Cisize%3E-for-RedisKey"],[2815,"impl-From%3Cu8%3E-for-RedisKey"],[2816,"impl-From%3Ci128%3E-for-RedisKey"],[2817,"impl-From%3Cu16%3E-for-RedisKey"],[2818,"impl-From%3Cu32%3E-for-RedisKey"],[2819,"impl-From%3Ci64%3E-for-RedisKey"],[2820,"impl-From%3Cu64%3E-for-RedisKey"],[2821,"impl-From%3Cu128%3E-for-RedisKey"],[2822,"impl-From%3Cusize%3E-for-RedisKey"],[2823,"impl-From%3Ci8%3E-for-RedisKey"],[2824,"impl-From%3Ci16%3E-for-RedisKey"],[2825,"impl-From%3Cbool%3E-for-RedisKey"],[2826,"impl-From%3C%26RedisMap%3E-for-RedisMap"],[2828,"impl-From%3C()%3E-for-RedisMap"],[2830,"impl-From%3Cu8%3E-for-RedisValue"],[2831,"impl-From%3C(A0,+A1)%3E-for-RedisValue"],[2832,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-RedisValue"],[2833,"impl-From%3C()%3E-for-RedisValue"],[2834,"impl-From%3CRedisMap%3E-for-RedisValue"],[2835,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-RedisValue"],[2836,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-RedisValue"],[2837,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-RedisValue"],[2838,"impl-From%3Cf32%3E-for-RedisValue"],[2839,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-RedisValue"],[2840,"impl-From%3Cf64%3E-for-RedisValue"],[2841,"impl-From%3CRedisKey%3E-for-RedisValue"],[2842,"impl-From%3Cbool%3E-for-RedisValue"],[2843,"impl-From%3C%26%5Bu8%5D%3E-for-RedisValue"],[2845,"impl-From%3C%26str%3E-for-RedisValue"],[2846,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-RedisValue"],[2847,"impl-From%3C(A0,+A1,+A2)%3E-for-RedisValue"],[2848,"impl-From%3Ci64%3E-for-RedisValue"],[2849,"impl-From%3Ci32%3E-for-RedisValue"],[2850,"impl-From%3Ci16%3E-for-RedisValue"],[2851,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-RedisValue"],[2852,"impl-From%3Ci8%3E-for-RedisValue"],[2853,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-RedisValue"],[2854,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-RedisValue"],[2855,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-RedisValue"],[2856,"impl-From%3C%26String%3E-for-RedisValue"],[2857,"impl-From%3CString%3E-for-RedisValue"],[2858,"impl-From%3CBox%3C%5Bu8%5D%3E%3E-for-RedisValue"],[2859,"impl-From%3CBytes%3E-for-RedisValue"],[2860,"impl-From%3CStrInner%3CBytes%3E%3E-for-RedisValue"],[2861,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-RedisValue"],[2862,"impl-From%3Cu16%3E-for-RedisValue"],[2863,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-RedisValue"],[2864,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-RedisValue"],[2865,"impl-From%3Cu32%3E-for-RedisValue"],[2866,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-RedisValue"],[2900,"impl-From%3CGeoValue%3E-for-MultipleGeoValues"],[2901,"impl-From%3CVecDeque%3CGeoValue%3E%3E-for-MultipleGeoValues"],[2902,"impl-From%3CVec%3CGeoValue%3E%3E-for-MultipleGeoValues"],[2923,"impl-From%3CT%3E-for-MultipleKeys"],[2924,"impl-From%3C(A0,+A1,+A2,+A3,+A4)%3E-for-MultipleKeys"],[2925,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15)%3E-for-MultipleKeys"],[2926,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13)%3E-for-MultipleKeys"],[2927,"impl-From%3C%26%5BK;+N%5D%3E-for-MultipleKeys"],[2928,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14)%3E-for-MultipleKeys"],[2929,"impl-From%3COption%3CRedisKey%3E%3E-for-MultipleKeys"],[2930,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12)%3E-for-MultipleKeys"],[2931,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleKeys"],[2932,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,+A12,+A13,+A14,+A15,+A16)%3E-for-MultipleKeys"],[2933,"impl-From%3C()%3E-for-MultipleKeys"],[2934,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11)%3E-for-MultipleKeys"],[2935,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10)%3E-for-MultipleKeys"],[2936,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9)%3E-for-MultipleKeys"],[2937,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8)%3E-for-MultipleKeys"],[2938,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7)%3E-for-MultipleKeys"],[2940,"impl-From%3CVec%3CT%3E%3E-for-MultipleKeys"],[2941,"impl-From%3C(A0,+A1,+A2)%3E-for-MultipleKeys"],[2942,"impl-From%3C(A0,+A1,+A2,+A3)%3E-for-MultipleKeys"],[2943,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5,+A6)%3E-for-MultipleKeys"],[2944,"impl-From%3C(A0,+A1,+A2,+A3,+A4,+A5)%3E-for-MultipleKeys"],[2945,"impl-From%3C(A0,+A1)%3E-for-MultipleKeys"],[2974,"impl-From%3C%26str%3E-for-ZRangeBound"],[2975,"impl-From%3Ci64%3E-for-ZRangeBound"],[2976,"impl-From%3C%26String%3E-for-ZRangeBound"],[2978,"impl-From%3CString%3E-for-ZRangeBound"],[2981,"impl-From%3C%26ZRange%3E-for-ZRange"],[2982,"impl-From%3C%26String%3E-for-ZRange"],[2983,"impl-From%3Ci64%3E-for-ZRange"],[2984,"impl-From%3C%26str%3E-for-ZRange"],[2985,"impl-From%3CString%3E-for-ZRange"],[2989,"impl-From%3CVecDeque%3CT%3E%3E-for-MultipleIDs"],[2990,"impl-From%3CVec%3CT%3E%3E-for-MultipleIDs"],[2992,"impl-From%3CT%3E-for-MultipleIDs"],[2996,"impl-From%3CString%3E-for-XID"],[2998,"impl-From%3C%26String%3E-for-XID"],[2999,"impl-From%3CStrInner%3CBytes%3E%3E-for-XID"],[3000,"impl-From%3C%26str%3E-for-XID"],[3001,"impl-From%3C(S,+E,+u64,+C)%3E-for-XPendingArgs"],[3002,"impl-From%3C(u64,+S,+E,+u64)%3E-for-XPendingArgs"],[3003,"impl-From%3C(u64,+S,+E,+u64,+C)%3E-for-XPendingArgs"],[3004,"impl-From%3C()%3E-for-XPendingArgs"],[3006,"impl-From%3C(S,+E,+u64)%3E-for-XPendingArgs"],[3012,"impl-From%3C%5BS;+N%5D%3E-for-GetLabels"],[3014,"impl-From%3CVec%3CS%3E%3E-for-GetLabels"],[3626,"impl-TryFrom%3C(f64,+T)%3E-for-MultipleZaddValues"],[3627,"impl-TryFrom%3CVec%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[3628,"impl-TryFrom%3CVecDeque%3C(f64,+T)%3E%3E-for-MultipleZaddValues"],[3635,"impl-TryFrom%3C%26str%3E-for-Server"],[3636,"impl-TryFrom%3CString%3E-for-Server"],[3646,"impl-TryFrom%3C%5B(K,+V);+N%5D%3E-for-RedisMap"],[3647,"impl-TryFrom%3C(K,+V)%3E-for-RedisMap"],[3648,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-RedisMap"],[3649,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisMap"],[3650,"impl-TryFrom%3C%26%5B(K,+V);+N%5D%3E-for-RedisMap"],[3652,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-RedisMap"],[3653,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisMap"],[3655,"impl-TryFrom%3CVec%3CT%3E%3E-for-RedisValue"],[3656,"impl-TryFrom%3Cusize%3E-for-RedisValue"],[3657,"impl-TryFrom%3C%5BT;+N%5D%3E-for-RedisValue"],[3658,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-RedisValue"],[3659,"impl-TryFrom%3C%26%5BT;+N%5D%3E-for-RedisValue"],[3660,"impl-TryFrom%3CVecDeque%3CT%3E%3E-for-RedisValue"],[3662,"impl-TryFrom%3Ci128%3E-for-RedisValue"],[3663,"impl-TryFrom%3CBTreeMap%3CK,+V%3E%3E-for-RedisValue"],[3664,"impl-TryFrom%3CBytesFrame%3E-for-RedisValue"],[3665,"impl-TryFrom%3COption%3CT%3E%3E-for-RedisValue"],[3666,"impl-TryFrom%3Cu128%3E-for-RedisValue"],[3667,"impl-TryFrom%3Cu64%3E-for-RedisValue"],[3673,"impl-TryFrom%3C%26String%3E-for-Toggle"],[3674,"impl-TryFrom%3CString%3E-for-Toggle"],[3676,"impl-TryFrom%3C%26str%3E-for-Toggle"],[3727,"impl-TryFrom%3C%26str%3E-for-FnPolicy"],[3728,"impl-TryFrom%3C%26String%3E-for-FnPolicy"],[3729,"impl-TryFrom%3CString%3E-for-FnPolicy"],[3730,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-FnPolicy"],[3731,"impl-TryFrom%3C%26StrInner%3CBytes%3E%3E-for-FnPolicy"],[3770,"impl-TryFrom%3CVecDeque%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[3771,"impl-TryFrom%3CHashMap%3CK,+V%3E%3E-for-MultipleOrderedPairs"],[3772,"impl-TryFrom%3C(K,+V)%3E-for-MultipleOrderedPairs"],[3773,"impl-TryFrom%3CVec%3C(K,+V)%3E%3E-for-MultipleOrderedPairs"],[3778,"impl-TryFrom%3C(K,+T,+S,+Option%3Ci64%3E)%3E-for-XCap"],[3779,"impl-TryFrom%3C(K,+T,+S)%3E-for-XCap"],[3780,"impl-TryFrom%3C(K,+S)%3E-for-XCap"],[3786,"impl-TryFrom%3CString%3E-for-Timestamp"],[3787,"impl-TryFrom%3C%26str%3E-for-Timestamp"],[3788,"impl-TryFrom%3CStrInner%3CBytes%3E%3E-for-Timestamp"]],"c":"OjAAAAEAAAAAAAEAEAAAAN4A3wA=","e":"OzAAAAEAAMgJ6AABAAEACgAAAAwABAAfABEANAAQAEcACABVAAMAWgAJAIEAAQCRAAEAoQACAKYACQC0ABsA0wAIAPUAAwD6AAUAAQEFABIBDACrAwAAewQdAJ8EBwCpBAIArgQEAMQEAgDPBBAA4gQBAOUEAgDqBAIA8QQcAA8FAQAUBQYAHAUBACAFAAAiBQAAJAUCACkFAAAuBQAAMgUAADcFAQA6BQAAPAUAAEQFAQBQBQIAVQUBAFkFBwBlBQEAaAUAAGwFAABuBQIAcwUBAHwFAAB+BQMAhQUEAIwFAQCPBQAAmAUBAJwFAAChBQAAowUAAKUFAgCpBQAAqwUDALUFAAC5BQAAuwUAAL0FAQDABQIAxAUBAMkFAADMBQAA0wUAANUFAADXBQIA2wUEAOQFCgD5BQIA/wUBAAIGAgAHBgAACwYAAA4GAwATBgIAHQYBACAGAAAiBgAAJAYBACcGAgA3BgEAOwYAAEEGAQBFBgAAVgYBAFsGAABeBgAAYwYBAGgGAABqBgEAbgYBAHEGBgB5BgEAfAYAAH4GCACIBgEAjgYAAJEGAgCWBgUAnwYBAKgGAgCwBgAAswYMAMEGAADDBgAAzAYAANUGBQDdBgAA4gb9AOEHAQDkBwAA7AdjAVEJAABVCQEAWQkHAGIJBwBuCQAAcQkCAHUJAwB7CQQAgQkhAKwJAwCyCQIAtgkAALgJZwAiCgEAKgoCADAKAQA1Cn8AtwoAALkKAQC+CgMAxwoDAM0KAwDSCgAA1AoCANgKAwDiCgAA5AoQAPYKFQANCwAADwsNAB4LFQA5CwAAUAsAAFULAgBsCw8AfQsFAJ8LAgCjCwAApgsEAK0LAgCxCwAAtAsBALcLBgC/CwAAwwsAAMULAADHCwAAyQsAAMsLAADNCwAA0AsAANULCQDnCwAA7gsHAPcLAAD5CwAAAAwAAAIMBQAJDAgAEwwAABkMAgAdDAQAJAwEALYMAAC7DAAAwwwAAMcMAADKDAAAzQwAANEMBADYDAUA3wwDAOUMBQDtDAEA8AwBAPMMAQD5DAAA/gwFAAcNAgALDQEAEA0AABINAAAXDQEAIQ0DACcNAAApDQ4AOQ0HAEMNBQBMDQMAUw0BAFcNAABaDQAAYA0AAGMNCwBwDQAAeg0CAH4NAACADQcAiw0AAI0NAwCSDQAAlA0CAJoNdgATDggAHg43AVcPfgDYDwAA4A8DAOUPfgBoEAUAbxAFAHcQQwDDEAMA"}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[111437]} \ No newline at end of file +//{"start":39,"fragment_lengths":[111478]} \ No newline at end of file diff --git a/docs/tokio/search.desc/fred/fred-desc-0-.js b/docs/tokio/search.desc/fred/fred-desc-0-.js index ca5ac891..a521d99f 100644 --- a/docs/tokio/search.desc/fred/fred-desc-0-.js +++ b/docs/tokio/search.desc/fred/fred-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("fred", 0, "Fred\nRedis client implementations.\nShorthand to create a CustomCommand.\nError structs returned by Redis commands.\nTraits that implement portions of the Redis interface.\nA helper macro to wrap a string value in quotes via the …\nAn interface for mocking Redis commands.\nAn interface to run the MONITOR command.\nConvenience module to import a RedisClient, all possible …\nThe structs and enums used by the Redis client.\nVarious client utility functions.\nA cheaply cloneable round-robin client pool that provides …\nSend a series of commands in a pipeline.\nA cheaply cloneable Redis client struct.\nA cheaply cloneable round-robin client pool.\nA struct for interacting with cluster replica nodes.\nA struct for interacting directly with Sentinel nodes.\nA subscriber client that will manage subscription state to …\nA cheaply cloneable transaction block.\nA client interface used to customize command configuration …\nRead the client that should run the next command.\nRead the set of active connections across all clients in …\nSend the pipeline and respond with an array of all …\nRead the underlying RedisClient that interacts with …\nRead the individual clients in the pool.\nRead the clients in the pool.\nCreate a new RedisClient from the config provided to this …\nCreate a new SubscriberClient from the config provided to …\nRead the server ID against which this transaction will …\nConnect each client to the server.\nConnect each client to the server.\nConnect each client to the server, returning the task …\nConnect each client to the server, returning the task …\nExecutes all previously queued commands in a transaction.\nForce a reconnection to the server(s) for each client.\nForce a reconnection to the server(s) for each client.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new pool from an existing set of clients.\nRead the hash slot against which this transaction will …\nIncrementally iterate over pages of the hash map stored at …\nAn ID identifying the underlying transaction state.\nInitialize a new routing and connection task for each …\nInitialize a new routing and connection task for each …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSend the pipeline and respond with only the result of the …\nRead the client that ran the last command.\nRead the number of commands queued to run.\nSpawn a task that will automatically re-subscribe to any …\nCreate a new pool without connecting to the server.\nCreate a new pool without connecting to the server.\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nRead the client that should run the next command.\nRead the next connected client that should run the next …\nRead a mapping of replica server IDs to primary server IDs.\nRead the options that will be applied to commands.\nSend a series of commands in a pipeline.\nSend a series of commands in a pipeline.\nSet whether the client will use next_connected or next …\nClose the connection to the Redis server for each client. …\nClose the connection to the Redis server for each client. …\nCreate a client that interacts with the replica nodes …\nCreate a client that interacts with replica nodes.\nClear the internal command buffer and watched keys.\nRe-subscribe to any tracked channels and patterns.\nIncrementally iterate over a set of keys matching the …\nRun the SCAN command on each primary/main node in a …\nOverride the DNS resolution logic for all clients in the …\nOverride the DNS resolution logic for all clients in the …\nRead the size of the pool.\nRead the size of the pool.\nSplit a clustered Redis client into a set of centralized …\nIncrementally iterate over pages of the set stored at key, …\nSync the cached replica routing table with the server(s).\nCreate a new RedisClient, reusing the existing …\nRead the set of channels that this client will manage.\nRead the set of channel patterns that this client will …\nRead the set of shard channels that this client will …\nSend the pipeline and respond with each individual result.\nUnsubscribe from all tracked channels and patterns, and …\nUpdate the internal PerformanceConfig on each client in …\nUpdate the internal PerformanceConfig on each client in …\nWait for all the clients to connect to the server.\nWait for all the clients to connect to the server.\nSend the WATCH command with the provided keys before …\nRead the number of keys to WATCH before the starting the …\nShorthand to route subsequent commands to the provided …\nIncrementally iterate over pages of the sorted set stored …\nAn authentication error.\nAn error indicating that the caller should apply …\nAn error indicating the request was canceled.\nAn error used to indicate that the cluster’s state has …\nA fatal client configuration error. These errors will …\nAn IO error with the underlying connection.\nAn invalid argument or set of arguments to a command.\nAn invalid command, such as trying to perform a set …\nAn error indicating a value was not found, often used when …\nA parser error.\nA protocol error such as an invalid or unexpected frame …\nAn error from Redis.\nAn enum representing the type of error from Redis.\nAn error associated with a replica node.\nAn error communicating with redis sentinel.\nA timeout error.\nA TLS error.\nAn unknown error.\nAn invalid URL error.\nChange the kind of the error.\nRead details about the error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWhether the error is a Canceled error.\nWhether the error is a Cluster error.\nWhether the error is a NotFound error.\nWhether the error is a Replica error.\nRead the type of error without any associated data.\nCreate a new Redis error with the provided details.\nCreate a new empty Canceled error.\nFunctions that implement the ACL interface.\nAn array of frames.\nFunctions for authenticating clients.\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nA boolean type.\nOne chunk of a streaming blob.\nFunctions that implement the client interface.\nAny Redis client that implements any part of the Redis …\nFunctions that implement the cluster interface.\nFunctions that implement the config interface.\nA signed 64-bit floating point number.\nContains the error value\nAn interface that exposes various client and connection …\nFunctions that implement the function interface.\nFunctions that implement the geo interface.\nFunctions that implement the hashes interface.\nFunctions that provide a connection heartbeat interface.\nA special frame type used when first connecting to the …\nFunctions that implement the HyperLogLog interface.\nFunctions that implement the generic keys interface.\nFunctions that implement the lists interface.\nFunctions that implement the lua interface.\nAn unordered map of key-value pairs.\nFunctions that implement the memory interface.\nFunctions that implement the internal metrics interface.\nA null type.\nA signed 64-bit integer.\nContains the success value\nFunctions that implement the pubsub interface.\nOut-of-band data.\nA RediSearch interface.\nThe client commands in the RedisJSON interface.\nType alias for Result<T, RedisError>.\nA RESP3 frame that uses Bytes and Str as the underlying …\nFunctions that implement the sentinel interface.\nFunctions that implement the server interface.\nAn unordered collection of other frames with a uniqueness …\nFunctions that implement the sets interface.\nA small string representing an error.\nA small string.\nFunctions that implement the slowlog interface.\nFunctions that implement the sorted sets interface.\nFunctions that implement the streams interface.\nA Redis Timeseries interface.\nA high level interface that supports client side caching …\nFunctions that implement the transactions interface.\nA string to be displayed without any escaping or filtering.\nThe command shows the available ACL categories if called …\nThe command shows the available ACL categories if called …\nDelete all the specified ACL users and terminate all the …\nDelete all the specified ACL users and terminate all the …\nGenerate a password with length bits, returning the …\nGenerate a password with length bits, returning the …\nThe command returns all the rules defined for an existing …\nThe command returns all the rules defined for an existing …\nThe command shows the currently active ACL rules in the …\nThe command shows the currently active ACL rules in the …\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nRead count recent ACL security events.\nRead count recent ACL security events.\nClear the ACL security events logs.\nClear the ACL security events logs.\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nCreate an ACL user with the specified rules or modify the …\nCreate an ACL user with the specified rules or modify the …\nThe command shows a list of all the usernames of the …\nThe command shows a list of all the usernames of the …\nReturn the username the current connection is …\nReturn the username the current connection is …\nRead the set of active connections managed by the client.\nRead the set of active connections managed by the client.\nAppend value to key if it’s a string.\nAppend value to key if it’s a string.\nRequest for authentication in a password-protected Redis …\nInstruct Redis to start an Append Only File rewrite …\nInstruct Redis to start an Append Only File rewrite …\nSave the DB in background.\nSave the DB in background.\nThe blocking equivalent of Self::lmove.\nThe blocking equivalent of Self::lmove.\nThe blocking variant of Self::lmpop.\nThe blocking variant of Self::lmpop.\nBLPOP is a blocking list pop primitive. It is the blocking …\nBLPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nThe blocking equivalent of Self::rpoplpush.\nThe blocking equivalent of Self::rpoplpush.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmin.\nThe blocking variant of Self::zpopmin.\nRead the cached cluster state used for routing commands to …\nRead the cached cluster state used for routing commands to …\nCheck if the current Sentinel configuration is able to …\nCheck if the current Sentinel configuration is able to …\nThis command controls the tracking of the keys in the next …\nThis command controls the tracking of the keys in the next …\nRead the config used to initialize the client.\nRead the config used to initialize the client.\nThe CLIENT GETNAME returns the name of the current …\nThe CLIENT GETNAME returns the name of the current …\nThis command returns the client ID we are redirecting our …\nThis command returns the client ID we are redirecting our …\nReturn the ID of the current connection.\nReturn the ID of the current connection.\nThe command returns information and statistics about the …\nThe command returns information and statistics about the …\nClose a given connection or set of connections.\nClose a given connection or set of connections.\nThe CLIENT LIST command returns information and statistics …\nThe CLIENT LIST command returns information and statistics …\nCLIENT PAUSE is a connections control command able to …\nCLIENT PAUSE is a connections control command able to …\nRead the reconnect policy used to initialize the client.\nRead the reconnect policy used to initialize the client.\nThe CLIENT REPLY command controls whether the server will …\nThe CLIENT REPLY command controls whether the server will …\nAssign a name to the current connection.\nAssign a name to the current connection.\nThis command enables the tracking feature of the Redis …\nThis command enables the tracking feature of the Redis …\nThe command returns information about the current client …\nThe command returns information about the current client …\nThis command can unblock, from a different connection, a …\nThis command can unblock, from a different connection, a …\nCLIENT UNPAUSE is used to resume command processing for …\nCLIENT UNPAUSE is used to resume command processing for …\nThis command is useful in order to modify a node’s view …\nThis command is useful in order to modify a node’s view …\nAdvances the cluster config epoch.\nAdvances the cluster config epoch.\nListen for notifications whenever the cluster state …\nThe command returns the number of failure reports for the …\nThe command returns the number of failure reports for the …\nReturns the number of keys in the specified Redis Cluster …\nReturns the number of keys in the specified Redis Cluster …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThis command, that can only be sent to a Redis Cluster …\nThis command, that can only be sent to a Redis Cluster …\nDeletes all slots from a node.\nDeletes all slots from a node.\nThe command is used in order to remove a node, specified …\nThe command is used in order to remove a node, specified …\nThe command returns an array of keys names stored in the …\nThe command returns an array of keys names stored in the …\nCLUSTER INFO provides INFO style information about Redis …\nCLUSTER INFO provides INFO style information about Redis …\nReturns an integer identifying the hash slot the specified …\nReturns an integer identifying the hash slot the specified …\nCLUSTER MEET is used in order to connect different Redis …\nCLUSTER MEET is used in order to connect different Redis …\nReturns the node’s id.\nReturns the node’s id.\nRead the current cluster node configuration.\nRead the current cluster node configuration.\nThe command provides a list of replica nodes replicating …\nThe command provides a list of replica nodes replicating …\nThe command reconfigures a node as a replica of the …\nThe command reconfigures a node as a replica of the …\nReset a Redis Cluster node, in a more or less drastic way …\nReset a Redis Cluster node, in a more or less drastic way …\nForces a node to save the nodes.conf configuration on disk.\nForces a node to save the nodes.conf configuration on disk.\nThis command sets a specific config epoch in a fresh node.\nThis command sets a specific config epoch in a fresh node.\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SLOTS returns details about which cluster slots …\nCLUSTER SLOTS returns details about which cluster slots …\nRead the number of buffered commands that have not yet …\nRead the number of buffered commands that have not yet …\nThe CONFIG GET command is used to read the configuration …\nThe CONFIG GET command is used to read the configuration …\nGet the current value of a global Sentinel configuration …\nGet the current value of a global Sentinel configuration …\nResets the statistics reported by Redis using the INFO …\nResets the statistics reported by Redis using the INFO …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG SET command is used in order to reconfigure the …\nThe CONFIG SET command is used in order to reconfigure the …\nSet the value of a global Sentinel configuration parameter.\nSet the value of a global Sentinel configuration parameter.\nConnect to the server.\nConnect to the server.\nRead the connection config used to initialize the client.\nRead the connection config used to initialize the client.\nRead the connection IDs for the active connections to each …\nRead the connection IDs for the active connections to each …\nThis command copies the value stored at the source key to …\nThis command copies the value stored at the source key to …\nRun a custom command that is not yet supported via another …\nRun a custom command that is not yet supported via another …\nRun a custom command similar to custom, but return the …\nRun a custom command similar to custom, but return the …\nReturn the number of keys in the selected database.\nReturn the number of keys in the selected database.\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by val. If the key …\nDecrements the number stored at key by val. If the key …\nRemoves the specified keys. A key is ignored if it does …\nRemoves the specified keys. A key is ignored if it does …\nSerialize the value stored at key in a Redis-specific …\nSerialize the value stored at key in a Redis-specific …\nReturn a future that will ping the server on an interval.\nListen for protocol and connection errors. This stream can …\nEvaluate a Lua script on the server.\nEvaluate a Lua script on the server.\nEvaluates a script cached on the server side by its SHA1 …\nEvaluates a script cached on the server side by its SHA1 …\nReturns number of keys that exist from the keys arguments.\nReturns number of keys that exist from the keys arguments.\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on a key based on a UNIX timestamp.\nSet a timeout on a key based on a UNIX timestamp.\nForce a failover as if the master was not reachable, and …\nForce a failover as if the master was not reachable, and …\nThis command will start a coordinated failover between the …\nThis command will start a coordinated failover between the …\nInvoke a function.\nInvoke a function.\nThis is a read-only variant of the FCALL command that …\nThis is a read-only variant of the FCALL command that …\nDelete the keys in all databases.\nDelete the keys in all databases.\nDelete the keys on all nodes in the cluster. This is a …\nDelete the keys on all nodes in the cluster. This is a …\nForce Sentinel to rewrite its configuration on disk, …\nForce Sentinel to rewrite its configuration on disk, …\nForce a reconnection to the server(s).\nForce a reconnection to the server(s).\nRun a search query on an index, and perform aggregate …\nRun a search query on an index, and perform aggregate …\nAdd an alias to an index.\nAdd an alias to an index.\nRemove an alias from an index.\nRemove an alias from an index.\nAdd an alias to an index. If the alias is already …\nAdd an alias to an index. If the alias is already …\nAdd a new attribute to the index.\nAdd a new attribute to the index.\nRetrieve configuration options.\nRetrieve configuration options.\nSet the value of a RediSearch configuration parameter.\nSet the value of a RediSearch configuration parameter.\nCreate an index with the given specification.\nCreate an index with the given specification.\nDelete a cursor.\nDelete a cursor.\nRead next results from an existing cursor.\nRead next results from an existing cursor.\nAdd terms to a dictionary.\nAdd terms to a dictionary.\nRemove terms from a dictionary.\nRemove terms from a dictionary.\nDump all terms in the given dictionary.\nDump all terms in the given dictionary.\nDelete an index.\nDelete an index.\nReturn the execution plan for a complex query.\nReturn the execution plan for a complex query.\nReturn information and statistics on the index.\nReturn information and statistics on the index.\nReturns a list of all existing indexes.\nReturns a list of all existing indexes.\nSearch the index with a textual query, returning either …\nSearch the index with a textual query, returning either …\nPerform spelling correction on a query, returning …\nPerform spelling correction on a query, returning …\nAdd a suggestion string to an auto-complete suggestion …\nAdd a suggestion string to an auto-complete suggestion …\nDelete a string from a suggestion index.\nDelete a string from a suggestion index.\nGet completion suggestions for a prefix.\nGet completion suggestions for a prefix.\nGet the size of an auto-complete suggestion dictionary.\nGet the size of an auto-complete suggestion dictionary.\nDump the contents of a synonym group.\nDump the contents of a synonym group.\nUpdate a synonym group.\nUpdate a synonym group.\nReturn a distinct set of values indexed in a Tag field.\nReturn a distinct set of values indexed in a Tag field.\nDelete a library and all its functions.\nDelete a library and all its functions.\nDelete a library and all its functions from each cluster …\nDelete a library and all its functions from each cluster …\nReturn the serialized payload of loaded libraries.\nReturn the serialized payload of loaded libraries.\nDeletes all the libraries.\nDeletes all the libraries.\nDeletes all the libraries on all cluster nodes …\nDeletes all the libraries on all cluster nodes …\nKill a function that is currently executing.\nKill a function that is currently executing.\nReturn information about the functions and libraries.\nReturn information about the functions and libraries.\nLoad a library to Redis.\nLoad a library to Redis.\nLoad a library to Redis on all cluster nodes concurrently.\nLoad a library to Redis on all cluster nodes concurrently.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload on all …\nRestore libraries from the serialized payload on all …\nReturn information about the function that’s currently …\nReturn information about the function that’s currently …\nAdds the specified geospatial items (longitude, latitude, …\nAdds the specified geospatial items (longitude, latitude, …\nReturn the distance between two members in the geospatial …\nReturn the distance between two members in the geospatial …\nReturn valid Geohash strings representing the position of …\nReturn valid Geohash strings representing the position of …\nReturn the positions (longitude,latitude) of all the …\nReturn the positions (longitude,latitude) of all the …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is exactly like GEORADIUS with the sole …\nThis command is exactly like GEORADIUS with the sole …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is like GEOSEARCH, but stores the result in …\nThis command is like GEOSEARCH, but stores the result in …\nRead a value from the server.\nRead a value from the server.\nReturn the ip and port number of the master with that name.\nReturn the ip and port number of the master with that name.\nGet the value of key and delete the key. This command is …\nGet the value of key and delete the key. This command is …\nReturns the substring of the string value stored at key …\nReturns the substring of the string value stored at key …\nAtomically sets key to value and returns the old value …\nAtomically sets key to value and returns the old value …\nWhether the client has a reconnection policy.\nWhether the client has a reconnection policy.\nRemoves the specified fields from the hash stored at key.\nRemoves the specified fields from the hash stored at key.\nSwitch to a different protocol, optionally authenticating …\nReturns if field is an existing field in the hash stored …\nReturns if field is an existing field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns all fields and values of the hash stored at key.\nReturns all fields and values of the hash stored at key.\nIncrements the number stored at field in the hash stored …\nIncrements the number stored at field in the hash stored …\nIncrement the specified field of a hash stored at key, and …\nIncrement the specified field of a hash stored at key, and …\nReturns all field names in the hash stored at key.\nReturns all field names in the hash stored at key.\nReturns the number of fields contained in the hash stored …\nReturns the number of fields contained in the hash stored …\nReturns the values associated with the specified fields in …\nReturns the values associated with the specified fields in …\nSets the specified fields to their respective values in …\nSets the specified fields to their respective values in …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nSets fields in the hash stored at key to their provided …\nSets fields in the hash stored at key to their provided …\nSets field in the hash stored at key to value, only if …\nSets field in the hash stored at key to value, only if …\nReturns the string length of the value associated with …\nReturns the string length of the value associated with …\nReturns all values in the hash stored at key.\nReturns all values in the hash stored at key.\nThe unique ID identifying this client and underlying …\nThe unique ID identifying this client and underlying …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by val. If the key …\nIncrements the number stored at key by val. If the key …\nIncrement the string representing a floating point number …\nIncrement the string representing a floating point number …\nRead info about the server.\nRead info about the server.\nReturn cached INFO output from masters and replicas.\nReturn cached INFO output from masters and replicas.\nInitialize a new routing and connection task and wait for …\nInitialize a new routing and connection task and wait for …\nSubscribe to invalidation messages from the server(s).\nSubscribe to invalidation messages from the server(s).\nWhether the client is connected to a cluster.\nWhether the client is connected to a cluster.\nWhether all underlying connections are healthy.\nWhether all underlying connections are healthy.\nWhether the client will automatically pipeline commands.\nWhether the client will automatically pipeline commands.\nAppend the json values into the array at path after the …\nAppend the json values into the array at path after the …\nSearch for the first occurrence of a JSON value in an …\nSearch for the first occurrence of a JSON value in an …\nInsert the json values into the array at path before the …\nInsert the json values into the array at path before the …\nReport the length of the JSON array at path in key.\nReport the length of the JSON array at path in key.\nRemove and return an element from the index in the array\nRemove and return an element from the index in the array\nTrim an array so that it contains only the specified …\nTrim an array so that it contains only the specified …\nClear container values (arrays/objects) and set numeric …\nClear container values (arrays/objects) and set numeric …\nReport a value’s memory usage in bytes\nReport a value’s memory usage in bytes\nDelete a value.\nDelete a value.\nReturn the value at path in JSON serialized form.\nReturn the value at path in JSON serialized form.\nMerge a given JSON value into matching paths.\nMerge a given JSON value into matching paths.\nReturn the values at path from multiple key arguments.\nReturn the values at path from multiple key arguments.\nSet or update one or more JSON values according to the …\nSet or update one or more JSON values according to the …\nIncrement the number value stored at path by number\nIncrement the number value stored at path by number\nReturn the keys in the object that’s referenced by path.\nReturn the keys in the object that’s referenced by path.\nReport the number of keys in the JSON object at path in …\nReport the number of keys in the JSON object at path in …\nReturn the JSON in key in Redis serialization protocol …\nReturn the JSON in key in Redis serialization protocol …\nSet the JSON value at path in key.\nSet the JSON value at path in key.\nAppend the json-string values to the string at path.\nAppend the json-string values to the string at path.\nReport the length of the JSON String at path in key.\nReport the length of the JSON String at path in key.\nToggle a Boolean value stored at path.\nToggle a Boolean value stored at path.\nReport the type of JSON value at path.\nReport the type of JSON value at path.\nListen for keyspace and keyevent notifications on the …\nReturn the UNIX TIME of the last DB save executed with …\nReturn the UNIX TIME of the last DB save executed with …\nRuns the longest common subsequence algorithm on two keys.\nRuns the longest common subsequence algorithm on two keys.\nReturns the element at index in the list stored at key.\nReturns the element at index in the list stored at key.\nInserts element in the list stored at key either before or …\nInserts element in the list stored at key either before or …\nReturns the length of the list stored at key.\nReturns the length of the list stored at key.\nAtomically returns and removes the first/last element …\nAtomically returns and removes the first/last element …\nPops one or more elements from the first non-empty list …\nPops one or more elements from the first non-empty list …\nRemoves and returns the first elements of the list stored …\nRemoves and returns the first elements of the list stored …\nThe command returns the index of matching elements inside …\nThe command returns the index of matching elements inside …\nInsert all the specified values at the head of the list …\nInsert all the specified values at the head of the list …\nInserts specified values at the head of the list stored at …\nInserts specified values at the head of the list stored at …\nReturns the specified elements of the list stored at key.\nReturns the specified elements of the list stored at key.\nRemoves the first count occurrences of elements equal to …\nRemoves the first count occurrences of elements equal to …\nSets the list element at index to element.\nSets the list element at index to element.\nTrim an existing list so that it will contain only the …\nTrim an existing list so that it will contain only the …\nShow the state and info of the specified master.\nShow the state and info of the specified master.\nShow a list of monitored masters and their state.\nShow a list of monitored masters and their state.\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY USAGE command reports the number of bytes that …\nThe MEMORY USAGE command reports the number of bytes that …\nListen for messages on the publish-subscribe interface.\nReturns the values of all specified keys. For every key …\nReturns the values of all specified keys. For every key …\nStart Sentinel’s monitoring.\nStart Sentinel’s monitoring.\nSets the given keys to their respective values.\nSets the given keys to their respective values.\nSets the given keys to their respective values. MSETNX …\nSets the given keys to their respective values. MSETNX …\nEnter a MULTI block, executing subsequent commands as a …\nEnter a MULTI block, executing subsequent commands as a …\nReturn the ID of the Sentinel instance.\nReturn the ID of the Sentinel instance.\nRead the number of known primary cluster nodes, or 0 if …\nRead the number of known primary cluster nodes, or 0 if …\nSpawn one task that listens for all connection management …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function whenever the …\nThis command returns information about pending scripts.\nThis command returns information about pending scripts.\nRead the PerformanceConfig associated with this client.\nRead the PerformanceConfig associated with this client.\nRemove the existing timeout on a key, turning the key from …\nRemove the existing timeout on a key, turning the key from …\nThis command works exactly like EXPIRE but the time to …\nThis command works exactly like EXPIRE but the time to …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nAdds all the element arguments to the HyperLogLog data …\nAdds all the element arguments to the HyperLogLog data …\nWhen called with a single key, returns the approximated …\nWhen called with a single key, returns the approximated …\nMerge multiple HyperLogLog values into an unique value …\nMerge multiple HyperLogLog values into an unique value …\nPing the Redis server.\nPing the Redis server.\nRead the RESP version used by the client when …\nRead the RESP version used by the client when …\nSubscribes the client to the given patterns.\nSubscribes the client to the given patterns.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nPublish a message on the PubSub interface, returning the …\nPublish a message on the PubSub interface, returning the …\nLists the currently active channels.\nLists the currently active channels.\nReturns the number of unique patterns that are subscribed …\nReturns the number of unique patterns that are subscribed …\nReturns the number of subscribers (exclusive of clients …\nReturns the number of subscribers (exclusive of clients …\nLists the currently active shard channels.\nLists the currently active shard channels.\nReturns the number of subscribers for the specified shard …\nReturns the number of subscribers for the specified shard …\nUnsubscribes the client from the given patterns, or from …\nUnsubscribes the client from the given patterns, or from …\nClose the connection to the Redis server. The returned …\nClose the connection to the Redis server. The returned …\nReturn a random key from the currently selected database.\nReturn a random key from the currently selected database.\nRead latency metrics across all commands.\nRead latency metrics across all commands.\nRead network latency metrics across all commands.\nRead network latency metrics across all commands.\nRead the number of request redeliveries.\nRead the number of request redeliveries.\nRead request payload size metrics across all commands.\nRead request payload size metrics across all commands.\nRead response payload size metrics across all commands.\nRead response payload size metrics across all commands.\nListen for reconnection notifications.\nStop Sentinel’s monitoring.\nStop Sentinel’s monitoring.\nRenames source key to destination.\nRenames source key to destination.\nRenames source key to destination if destination does not …\nRenames source key to destination if destination does not …\nShow a list of replicas for this master, and their state.\nShow a list of replicas for this master, and their state.\nThis command will reset all the masters with matching name.\nThis command will reset all the masters with matching name.\nCreate a key associated with a value that is obtained by …\nCreate a key associated with a value that is obtained by …\nRemoves and returns the last elements of the list stored …\nRemoves and returns the last elements of the list stored …\nAtomically returns and removes the last element (tail) of …\nAtomically returns and removes the last element (tail) of …\nInsert all the specified values at the tail of the list …\nInsert all the specified values at the tail of the list …\nInserts specified values at the tail of the list stored at …\nInserts specified values at the tail of the list stored at …\nAdd the specified members to the set stored at key.\nAdd the specified members to the set stored at key.\nReturns the set cardinality (number of elements) of the …\nReturns the set cardinality (number of elements) of the …\nSet the debug mode for subsequent scripts executed with …\nSet the debug mode for subsequent scripts executed with …\nReturns information about the existence of the scripts in …\nReturns information about the existence of the scripts in …\nFlush the Lua scripts cache.\nFlush the Lua scripts cache.\nA clustered variant of script_flush that flushes the …\nA clustered variant of script_flush that flushes the …\nKills the currently executing Lua script, assuming no …\nKills the currently executing Lua script, assuming no …\nA clustered variant of the script_kill command that issues …\nA clustered variant of the script_kill command that issues …\nLoad a script into the scripts cache, without executing …\nLoad a script into the scripts cache, without executing …\nA clustered variant of script_load that loads the script …\nA clustered variant of script_load that loads the script …\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SDIFF, but instead of returning …\nThis command is equal to SDIFF, but instead of returning …\nSelect the database this client should use.\nSelect the database this client should use.\nRead the set of known sentinel nodes.\nRead the set of known sentinel nodes.\nRead the primary Redis server identifier returned from the …\nRead the primary Redis server identifier returned from the …\nShow a list of sentinel instances for this master, and …\nShow a list of sentinel instances for this master, and …\nRead the server version, if known.\nRead the server version, if known.\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet Sentinel’s monitoring configuration.\nSet Sentinel’s monitoring configuration.\nOverride the DNS resolution logic for the client.\nOverride the DNS resolution logic for the client.\nOverwrites part of the string stored at key, starting at …\nOverwrites part of the string stored at key, starting at …\nShut down the server and quit the client.\nShut down the server and quit the client.\nThis command simulates different Sentinel crash scenarios.\nThis command simulates different Sentinel crash scenarios.\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SINTER, but instead of returning …\nThis command is equal to SINTER, but instead of returning …\nReturns if member is a member of the set stored at key.\nReturns if member is a member of the set stored at key.\nThis command is used to read the slow queries log.\nThis command is used to read the slow queries log.\nThis command is used to read length of the slow queries …\nThis command is used to read length of the slow queries …\nThis command is used to reset the slow queries log.\nThis command is used to reset the slow queries log.\nReturns all the members of the set value stored at key.\nReturns all the members of the set value stored at key.\nReturns whether each member is a member of the set stored …\nReturns whether each member is a member of the set stored …\nMove member from the set at source to the set at …\nMove member from the set at source to the set at …\nReturns or stores the elements contained in the list, set …\nReturns or stores the elements contained in the list, set …\nRead-only variant of the SORT command. It is exactly like …\nRead-only variant of the SORT command. It is exactly like …\nRemoves and returns one or more random members from the …\nRemoves and returns one or more random members from the …\nPosts a message to the given shard channel.\nPosts a message to the given shard channel.\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nRemove the specified members from the set stored at key.\nRemove the specified members from the set stored at key.\nSubscribes the client to the specified shard channels.\nSubscribes the client to the specified shard channels.\nSend the CLIENT TRACKING command to all connected servers, …\nSend the CLIENT TRACKING command to all connected servers, …\nRead the state of the underlying connection(s).\nRead the state of the underlying connection(s).\nDisable client tracking on all connections.\nDisable client tracking on all connections.\nReturns the length of the string value stored at key. An …\nReturns the length of the string value stored at key. An …\nSubscribe to a channel on the publish-subscribe interface.\nSubscribe to a channel on the publish-subscribe interface.\nReturns the members of the set resulting from the union of …\nReturns the members of the set resulting from the union of …\nThis command is equal to SUNION, but instead of returning …\nThis command is equal to SUNION, but instead of returning …\nUnsubscribes the client from the given shard channels, or …\nUnsubscribes the client from the given shard channels, or …\nUpdate the cached cluster state and add or remove any …\nUpdate the cached cluster state and add or remove any …\nRead and consume latency metrics, resetting their values …\nRead and consume latency metrics, resetting their values …\nRead and consume network latency metrics, resetting their …\nRead and consume network latency metrics, resetting their …\nRead and reset the number of request redeliveries.\nRead and reset the number of request redeliveries.\nRead and consume request payload size metrics, resetting …\nRead and consume request payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nAppend a sample to a time series.\nAppend a sample to a time series.\nUpdate the retention, chunk size, duplicate policy, and …\nUpdate the retention, chunk size, duplicate policy, and …\nCreate a new time series.\nCreate a new time series.\nCreate a compaction rule.\nCreate a compaction rule.\nDecrease the value of the sample with the maximum existing …\nDecrease the value of the sample with the maximum existing …\nDelete all samples between two timestamps for a given time …\nDelete all samples between two timestamps for a given time …\nDelete a compaction rule.\nDelete a compaction rule.\nGet the sample with the highest timestamp from a given …\nGet the sample with the highest timestamp from a given …\nIncrease the value of the sample with the maximum existing …\nIncrease the value of the sample with the maximum existing …\nReturn information and statistics for a time series.\nReturn information and statistics for a time series.\nAppend new samples to one or more time series.\nAppend new samples to one or more time series.\nGet the sample with the highest timestamp from each time …\nGet the sample with the highest timestamp from each time …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nGet all time series keys matching a filter list.\nGet all time series keys matching a filter list.\nQuery a range in forward direction.\nQuery a range in forward direction.\nQuery a range in reverse direction.\nQuery a range in reverse direction.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nA convenience function to unblock any blocked connection …\nA convenience function to unblock any blocked connection …\nUnlinks the specified keys. A key is ignored if it does …\nUnlinks the specified keys. A key is ignored if it does …\nReceive a message when the client initiates a reconnection …\nUnsubscribe from a channel on the PubSub interface.\nUnsubscribe from a channel on the PubSub interface.\nFlushes all the previously watched keys for a transaction.\nFlushes all the previously watched keys for a transaction.\nUpdate the internal PerformanceConfig in place with new …\nUpdate the internal PerformanceConfig in place with new …\nWhether the client uses the sentinel interface.\nWhether the client uses the sentinel interface.\nThis command blocks the current client until all the …\nThis command blocks the current client until all the …\nWait for the result of the next connection attempt.\nWait for the result of the next connection attempt.\nMarks the given keys to be watched for conditional …\nMarks the given keys to be watched for conditional …\nCustomize various configuration options on commands.\nCustomize various configuration options on commands.\nRemove one or more messages from the Pending Entries List …\nRemove one or more messages from the Pending Entries List …\nAppends the specified stream entry to the stream at the …\nAppends the specified stream entry to the stream at the …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nIn the context of a stream consumer group, this command …\nIn the context of a stream consumer group, this command …\nA variation of xclaim with a less verbose return type.\nA variation of xclaim with a less verbose return type.\nRemoves the specified entries from a stream, and returns …\nRemoves the specified entries from a stream, and returns …\nThis command creates a new consumer group uniquely …\nThis command creates a new consumer group uniquely …\nCreate a consumer named consumername in the consumer group …\nCreate a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nCompletely destroy a consumer group.\nCompletely destroy a consumer group.\nSet the last delivered ID for a consumer group.\nSet the last delivered ID for a consumer group.\nThis command returns the list of consumers that belong to …\nThis command returns the list of consumers that belong to …\nThis command returns the list of all consumers groups of …\nThis command returns the list of all consumers groups of …\nThis command returns information about the stream stored …\nThis command returns information about the stream stored …\nReturns the number of entries inside a stream.\nReturns the number of entries inside a stream.\nInspect the list of pending messages in a consumer group.\nInspect the list of pending messages in a consumer group.\nThe command returns the stream entries matching a given …\nThe command returns the stream entries matching a given …\nReturn the stream entries matching the provided range of …\nReturn the stream entries matching the provided range of …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nTrims the stream by evicting older entries (entries with …\nTrims the stream by evicting older entries (entries with …\nAdds all the specified members with the specified scores …\nAdds all the specified members with the specified scores …\nReturns the sorted set cardinality (number of elements) of …\nReturns the sorted set cardinality (number of elements) of …\nReturns the number of elements in the sorted set at key …\nReturns the number of elements in the sorted set at key …\nThis command is similar to ZDIFFSTORE, but instead of …\nThis command is similar to ZDIFFSTORE, but instead of …\nComputes the difference between the first and all …\nComputes the difference between the first and all …\nIncrements the score of member in the sorted set stored at …\nIncrements the score of member in the sorted set stored at …\nThis command is similar to ZINTERSTORE, but instead of …\nThis command is similar to ZINTERSTORE, but instead of …\nComputes the intersection of the sorted sets given by the …\nComputes the intersection of the sorted sets given by the …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nPops one or more elements, that are member-score pairs, …\nPops one or more elements, that are member-score pairs, …\nReturns the scores associated with the specified members …\nReturns the scores associated with the specified members …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the lowest …\nRemoves and returns up to count members with the lowest …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nThis command is like ZRANGE, but stores the result in the …\nThis command is like ZRANGE, but stores the result in the …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nRemoves the specified members from the sorted set stored …\nRemoves the specified members from the sorted set stored …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nReturns the score of member in the sorted set at key.\nReturns the score of member in the sorted set at key.\nThis command is similar to ZUNIONSTORE, but instead of …\nThis command is similar to ZUNIONSTORE, but instead of …\nComputes the union of the sorted sets given by the …\nComputes the union of the sorted sets given by the …\nA mocking layer that buffers the commands internally and …\nAn implementation of a mocking layer that returns the …\nA wrapper type for the parts of an internal Redis command.\nAn interface for intercepting and processing Redis …\nA struct that implements some of the basic mapping …\nThe ordered list of arguments to the command.\nClear the inner map.\nClear the inner buffer.\nThe first word in the command string. For example:\nPerform a DEL operation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nPerform a GET operation.\nRead a copy of the inner map.\nRead a copy of the internal command buffer without …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRead the length of the internal buffer.\nCreate a new empty SimpleMap.\nCreate a new empty Buffer.\nPop a command from the back of the internal buffer.\nPop a command from the front of the internal buffer.\nIntercept and process a Redis command, returning any …\nIntercept and process an entire transaction. The provided …\nIntercept and process an entire transaction. The provided …\nPush a new command onto the back of the internal buffer.\nPush a new command onto the front of the internal buffer.\nPerform a SET operation.\nThe optional subcommand string (or second word) in the …\nTake the inner map.\nDrain and return the internal command buffer.\nA command parsed from a MONITOR stream.\nArguments passed to the command.\nThe host and port of the client that ran the command, or …\nThe command run by the server.\nThe database against which the command was run.\nReturns the argument unchanged.\nCalls U::from(self).\nRun the MONITOR command against the provided server.\nWhen the command was run on the server.\nA node was added to the cluster.\nAn aggregation operation used in FT.AGGREGATE.\nAggregate options for the zinterstore (and related) …\nAn aggregation policy to use with certain timeseries …\nThe ANY flag used on certain GEO commands.\nAn array of frames.\nAn ordered list of values.\nAn ordered list of values.\nThe auto-generated key symbol “*”.\nConfiguration options for backpressure features in the …\nBackpressure policies to apply when the max number of …\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nWait to send the command until the blocked command …\nDescribes how the client should respond when a command is …\nA boolean type.\nA boolean value.\nA boolean value.\nA BUCKETTIMESTAMP argument in commands such as TS.MRANGE.\nA client and pool builder interface.\nThe BUSY prefix.\nA byte array value.\nA byte array value.\nOne chunk of a streaming blob.\nFilters provided to the CLIENT KILL command.\nThe type of clients to close.\nFilters for the CLIENT PAUSE command.\nArguments for the CLIENT REPLY command.\nThe state of the underlying connection to the Redis server.\nArguments to the CLIENT UNBLOCK command.\nA policy that determines how clustered clients initially …\nThe CLUSTERDOWN prefix.\nOptions for the CLUSTER FAILOVER command.\nA cluster hashing policy.\nA parsed response from the CLUSTER INFO command.\nFlags for the CLUSTER RESET command.\nThe cached view of the cluster used by the client to route …\nFlags for the CLUSTER SETSLOT command.\nThe state of the cluster from the CLUSTER INFO command.\nAn enum describing the possible ways in which a Redis …\nAlways use the endpoint(s) provided in the client’s …\nThe result from any of the connect functions showing the …\nConfiguration options related to the creation or …\nWait a constant amount of time between reconnect attempts, …\nA trait that can be used to override the credentials used …\nProvide a custom hash slot value.\nProvide a custom mapping from IP address to hostname to be …\nA case-sensitive prefix on an error message.\nUnix time (milliseconds since epoch).\nConfiguration for custom redis commands, primarily used …\nThe default amount of jitter when waiting to reconnect.\nThe parsed result of the MEMORY STATS command for a …\nReplace any IP addresses in the CLUSTER SLOTS response …\nA signed 64-bit floating point number.\nA double floating point number.\nA double floating point number.\nWait for all in-flight commands to finish before sending …\nThe duplicate policy used with certain timeseries commands.\nExpiration in seconds.\nExpiration time, in seconds.\nEquivalent to -.\nEncoding arguments for certain timeseries commands.\nReturn an error to the caller.\nExpiration options for the set command.\nOptions for certain expiration commands (PEXPIRE, etc).\nBackoff reconnection attempts exponentially, multiplying …\nHash the first string or bytes value in the arguments. …\nHash the first argument regardless of type.\nThe policy type for the FUNCTION RESTORE command.\nA trait used to convert various forms of RedisValue into …\nA trait used to convert RedisKey values to various types.\nArguments to the FT.AGGREGATE command.\nArguments to FT.ALTER.\nArguments for FT.CREATE.\nArguments to FT.SEARCH.\nAn individual function within a Library.\nPossible flags associated with a Function.\nA struct describing the longitude and latitude coordinates …\nA typed struct representing the full output of the …\nUnits for the GEO DIST command.\nA struct describing the value inside a GEO data structure.\nArguments equivalent to …\nA timestamp query used in commands such as TS.MRANGE.\nA struct representing GROUPBY label REDUCE reducer in …\nThe result of a HSCAN operation.\nA special frame type used when first connecting to the …\nA trait used for mapping IP addresses to hostnames when …\nIndex ranges (https://redis.io/commands/zrange#index-ranges…\nIndex arguments for FT.CREATE.\nShortcut for the + character.\nShortcut for the +inf range bound.\nOptions for the info command.\nAn integer value.\nAn integer value.\nInterrupt the blocked command by automatically sending …\nA client tracking invalidation message from the provided …\nDo not reset the TTL.\nAn event on the publish-subscribe interface describing a …\nThe direction to move elements in a *LMOVE command.\nEquivalent to +\nLexicographical ranges (…\nA helper struct for interacting with libraries and …\nA tuple of (offset, count) values for commands that allow …\nAn argument type equivalent to “[LIMIT count]”.\nBackoff reconnection attempts linearly, adding delay each …\nLocation flag for the LINSERT command.\nArguments to LOAD in FT.AGGREGATE.\nThe LOADING prefix.\nAn ID specified by the user such as “12345-0”.\nAn unordered map of key-value pairs.\nA map of key/value pairs, primarily used in RESP3 mode.\nA map of key/value pairs, primarily used in RESP3 mode.\nThe MASTERDOWN prefix.\nThe highest ID in a stream (“$”).\nThe parsed result of the MEMORY STATS command.\nA publish-subscribe message.\nA message from a subscribe command.\nThe kind of pubsub message.\nThe MISCONF prefix.\nA convenience struct for commands that take one or more …\nA convenience struct for functions that take one or more …\nOne or more IDs for elements in a stream.\nConvenience struct for commands that take 1 or more keys.\nOne or more ordered key-value pairs, typically used as an …\nConvenience interface for commands that take 1 or more …\nConvenience interface for commands that take 1 or more …\nConvenience struct for ZINTERSTORE and ZUNIONSTORE when …\nConvenience struct for the ZADD command to accept 1 or …\nShortcut for the -inf range bound.\nShortcut for the - character.\nFor XREADGROUP, only return new IDs (“>”).\nThe NOREPLICAS prefix.\nNo value.\nDo not modify or replace hostnames or IP addresses in the …\nThe server’s current time, equivalent to “*”.\nA null type.\nA nil value.\nA nil value.\nA signed 64-bit integer.\nHash the value with the provided offset in the arguments …\nOptions to configure or overwrite for individual commands.\nOrdering options for the ZADD (and related) commands.\nA message from a pattern psubscribe command.\nExpiration in milliseconds.\nExpiration time, in milliseconds.\nThe type of results from the scan operation.\nConfiguration options that can affect the performance of …\nOut-of-band data.\nA special value used to indicate a MULTI block command was …\nA special value used to indicate a MULTI block command was …\nUse a random node in the cluster.\nA struct representing …\nThe READONLY prefix, which can happen if a primary node is …\nHash slots were rebalanced across the cluster and/or local …\nSpecial errors that can trigger reconnection logic, which …\nThe type of reconnection policy to use. This will apply to …\nConfiguration options for a RedisClient.\nA key in Redis.\nA map of (RedisKey, RedisValue) pairs.\nA value used in a Redis command.\nThe kind of value from Redis.\nA REDUCER argument in commands such as TS.MRANGE.\nGROUPBY reducer functions.\nA node was removed from the cluster.\nConfiguration options for replica node connections.\nAn interface used to filter the list of available replica …\nA trait that can be used to override DNS resolution logic.\nShorthand for the result of commands such as MGET, MRANGE, …\nA RESP3 frame that uses Bytes and Str as the underlying …\nThe RESP3 equivalent of Resp2TimeSeriesValues.\nThe RESP version used in the HELLO request.\nA message from a sharded ssubscribe command.\nThe result of a SSCAN operation.\nThe result of a SCAN operation.\nThe types of values supported by the type command.\nAn interface for interacting with the results of a scan …\nScore ranges (https://redis.io/commands/zrange#score-ranges…\nAn interface for caching and running lua scripts.\nFlags for the SCRIPT DEBUG command.\nA search field with an optional property.\nArguments for FILTER in FT.SEARCH.\nArguments for GEOFILTER in FT.SEARCH.\nArguments used in HIGHLIGHT values.\nArguments for PARAMS in FT.AGGREGATE.\nREDUCE arguments in FT.AGGREGATE.\nArguments for SCHEMA in FT.CREATE.\nOne of the available schema types used with FT.CREATE or …\nArguments for SORTBY in FT.SEARCH.\nArguments used in SUMMARIZE values.\nConfiguration options for sentinel clients.\nArguments for the SENTINEL SIMULATE-FAILURE command.\nState necessary to identify or connect to a server.\nConnection configuration for the Redis server.\nAn unordered collection of other frames with a uniqueness …\nOptions for the set command.\nArguments passed to the SHUTDOWN command.\nA small string representing an error.\nA small string.\nSleep for some amount of time before sending the next …\nA slot range and associated cluster node information from …\nThe output of an entry in the slow queries log.\nSome value of type T.\nThe sort order for redis commands that take or return a …\nArguments to TERMS in FT.SPELLCHECK,\nStats describing a distribution of samples.\nA string value.\nA string value.\nAn argument representing a string or number.\nTCP configuration options.\nA timestamp used in most timeseries commands.\nTLS configuration for a client.\nAn enum for interacting with various TLS libraries and …\nAn optional enum used to describe how the client should …\nAn ON|OFF flag used with client tracking commands.\nConfiguration options for tracing.\nConfiguration options used to detect potentially …\nTry connecting to nodes specified in both the client’s …\nA string to be displayed without any escaping or filtering.\nSemVer version as defined by https://semver.org.\nArguments for WITHCURSOR in FT.AGGREGATE.\nStream cap arguments for XADD, XTRIM, etc.\nThe MAXLEN or MINID argument for a stream cap.\nRepresentation for the “=” or “~” operator in XADD…\nStream ID arguments for XADD, XREAD, etc.\nA struct representing the trailing optional arguments to …\nA generic helper type describing the top level response …\nA generic helper type describing the ID and associated map …\nMIN|MAX arguments for BZMPOP, etc.\nA wrapper struct for a range bound in a sorted set command.\nAn index, score, lexicographical, or +|-|+inf|-inf range …\nThe type of range interval bound.\nThe result of a ZSCAN operation.\nOptions for the ZRANGE (and related) commands.\nAttempt to add attributes to the frame, extending the …\nReturn the length of the inner array if the value is an …\nAttempt to convert the value to a bool.\nRead the key as a byte slice.\nRead the inner value as an array of bytes, if possible.\nParse and return the key as a Str without copying the …\nRead the inner value as a Str.\nRead and return the inner value as a f64, if possible.\nParse the value as the response from FUNCTION LIST, …\nConvert the value into a GeoPosition, if possible.\nRead and return the inner value as a i64, if possible.\nRead the key as a str slice if it can be parsed as a UTF8 …\nRead the inner value as a string slice.\nRead the key as a lossy UTF8 string with …\nRead the inner value as a string, using …\nRead and return the inner String if the value is a string …\nRead and return the inner value as a u64, if possible.\nRead and return the inner value as a usize, if possible.\nRead the number of reconnection attempts.\nAutomatically send CLIENT SETNAME on each connection …\nWhether the client should automatically pipeline commands …\nConfiguration options for backpressure features in the …\nThe default behavior of the client when a command is sent …\nWhether the command should block the connection while …\nThe minimum size, in bytes, of frames that should be …\nThe default capacity used when creating broadcast channels …\nCreate a new client.\nCreate a new exclusive client pool.\nCreate a new client pool.\nCreate a new sentinel client.\nCreate a new subscriber client.\nWhether to send CLIENT CACHING yes|no before the command.\nWhether the value can be hashed.\nThe channel on which the message was sent.\nThe amount of time to wait after a MOVED error is received …\nHash the key to find the associated cluster hash slot.\nThe cluster hashing policy to use, if applicable.\nThe cluster hashing policy to use, if any.\nThe cluster node that should receive the command.\nRead the host:port of the cluster node that owns the key …\nThe command name, sent directly to the server.\nCompare the major, minor, patch, and pre-release value of …\nThe number of times a command can fail with a replica …\nThe timeout to apply when attempting to create a new TCP …\nThe TLS connector from either native-tls or rustls.\nAttempt to convert the key to any type that implements …\nAttempt to convert this value to any value that implements …\nA lightweight function to create a Redis client from the …\nAn optional credential provider callback interface.\nRead the cursor returned from the last scan operation.\nAn optional database number that the client will …\nCreate a new builder instance with default config values …\nCreate a centralized config with default settings for a …\nCreate a new builder instance with default config values …\nCreate a clustered config with the same defaults as …\nAn optional timeout to apply to all commands.\nCreate a default TLS connector from the native-tls module.\nCreate a default TLS connector with the rustls module with …\nCreate a new Sleep policy with the legacy default values.\nSet the tracing::Level of spans under partial-tracing …\nWhether to disable the automatic backpressure features …\nDisable the CLUSTER INFO health check when initializing …\nWhether to enable tracing for this client.\nThe end of the hash slot range.\nSend EVALSHA to the server with the provided arguments.\nSend EVALSHA to the server with the provided arguments. …\nSet the non-null values from other onto self.\nWhether the client should return an error if it cannot …\nWhether the command should fail quickly if the connection …\nSend the fcall command via the provided client.\nSend the fcall_ro command via the provided client.\nRead the username and password that should be used in the …\nReturns whether the replica node mapping can be used when …\nReturns whether the replica node mapping can be used when …\nAn optional interface for filtering available replica …\nFind the key to hash with the provided arguments.\nRead the flags associated with the function.\nFlatten adjacent nested arrays to the provided depth.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new routing table from the result of the …\nCreate a new Library with the provided code, loading it on …\nCreate a new builder instance from the provided client …\nCreate a new Script from a lua hash.\nCreate a new Script from a lua script.\nCreate a new Library with the associated name, inspecting …\nParse the value with context from the calling command.\nCreate a new RedisKey from static bytes without copying.\nCreate a new RedisValue::Bytes from a static byte slice …\nAn optimized way to convert from &'static str that avoids …\nCreate a new RedisKey from a &'static str without copying.\nCreate a new RedisValue::String from a static str without …\nParse the string representation of the flag.\nParse a URL string into a RedisConfig.\nCreate a centralized RedisConfig struct from a URL.\nCreate a clustered RedisConfig struct from a URL.\nCreate a sentinel RedisConfig struct from a URL.\nCreate a RedisConfig from a URL that connects via a Unix …\nSet the tracing::Level of spans under full-tracing feature.\nRead the functions contained within this library.\nRead the client config.\nRead the connection config.\nRead the performance config.\nRead the reconnection policy.\nRead the sentinel client config.\nFind the primary server that owns the provided hash slot.\nWhether the scan call will continue returning results. If …\nHash the provided arguments.\nCalculate the cluster hash slot for the provided key.\nThe hostname or IP address for the server.\nThe hostname for the sentinel node.\nThe hostname modification or mapping policy to use when …\nRead the server hosts or sentinel hosts if using the …\nThe internal ID assigned by the server.\nWhether the client should ignore errors from replicas that …\nRead the inner Bytes struct.\nTake the inner HashMap.\nThe timeout to apply when sending internal commands such …\nThe frequency at which the client checks for unresponsive …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert this value to an array if it’s an array or map.\nRead the inner bytes making up the key.\nConvert the value into a Bytes view.\nRead and return the inner data as a Str from the bytes …\nParse the value as the response to any of the relevant GEO …\nAttempt to convert the value into an integer, returning …\nConvert the value to JSON.\nAttempt to convert this value to a Redis map if it’s an …\nConvert the value to an array of bytes, if possible.\nConvert the array value to a set, if possible.\nConvert the key to a UTF8 string, if possible.\nRead and return the inner String if the value is a string …\nA utility function to convert the response from XAUTOCLAIM …\nA utility function to convert the response from XREAD or …\nA utility function to convert the response from XCLAIM, …\nConvert a RedisValue to Vec<(RedisValue, f64)>, if …\nWhether the value is an array or map.\nWhether the value is an array.\nWhether the value is a boolean value or can be parsed as a …\nCheck if the value is an array of bytes.\nWhether the config is for a centralized server.\nWhether the config uses a clustered deployment.\nWhether the inner value is a double or can be parsed as a …\nCheck if the value is an integer.\nWhether the value is a RedisMap.\nWhether the value is a RedisMap or an array with an even …\nCheck if the value is null.\nWhether the value is a simple string OK value.\nCheck if the value is a QUEUED response.\nWhether the config is for a centralized server behind a …\nCheck if the value is a string.\nWhether the config uses a Unix socket.\nSet the TCP keepalive values.\nRead the type of the value without any associated data.\nThe type of message subscription.\nWhether the client should lazily connect to replica nodes.\nRead the number of hash slot ranges in the cluster.\nRead the number of (key, value) pairs in the map.\nSet the SO_LINGER value.\nCall SCRIPT LOAD on all the associated servers. This must …\nRead the lua script contents.\nMap the provided IP address to a hostname that should be …\nSet the max number of write attempts for a command.\nThe maximum number of times the client will attempt to …\nLimit the size of the internal in-memory command queue.\nThe maximum number of frames that will be fed to a socket …\nThe maximum number of in-flight commands (per connection) …\nThe maximum number of times the client will attempt to …\nSet the max number of cluster redirections to follow for a …\nIf provided, the amount of time a frame can wait without a …\nAn optional mocking layer to intercept and process …\nRead the name of the function.\nRead the name of the library.\nCreate Version with an empty pre-release and build …\nCreate a new Server from parts.\nCreate a new empty routing table.\nCreate a new empty map.\nCreate a new custom command.\nCreate a new Function.\nCreate a new centralized config with the provided host and …\nCreate a new clustered config with the provided set of …\nCreate a new reconnect policy with a constant backoff.\nCreate a new reconnect policy with an exponential backoff.\nCreate a new reconnect policy with a linear backoff.\nCreate a new RedisValue with the OK status.\nCreate a new sentinel config with the provided set of …\nCreate a new custom command specified by a &'static str.\nCreate a new server config for a connected Unix socket.\nCreate a new Server from parts with a TLS server name.\nMove on to the next page of results from the SCAN …\nCalculate the next delay, incrementing attempts in the …\nWhether to skip backpressure checks for a command.\nSet the TCP_NODELAY value.\nCreate Version by parsing from string representation.\nAn optional password for the client to use when …\nAn optional password for the client to use when …\nThe backpressure policy to apply when the max number of …\nThe port for the server.\nThe port on which the sentinel node is listening.\nPrint the contents of the routing table as a …\nThe primary server owner.\nWhether the client should use the associated primary node …\nRead a random primary node from the cluster cache.\nRead a random primary node hash slot range from the …\nErrors that should trigger reconnection logic.\nAn unexpected NOAUTH error is treated the same as a …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfiguration options for replica nodes.\nRead the replicas associated with the provided primary …\nReplica node owners.\nResolve a hostname.\nReturn a reference to the last page of results.\nThe server that sent the message.\nConnection configuration for the server(s).\nSet the ClusterDiscoveryPolicy, if possible.\nOverwrite the client config on the builder.\nOverwrite the connection config on the builder.\nSet the amount of jitter to add to each reconnect delay.\nOverwrite the performance config on the builder.\nOverwrite the reconnection policy on the builder.\nOverwrite the sentinel config on the builder.\nRead the SHA-1 hash for the script.\nRead the hash slot ranges in the cluster.\nThe start of the hash slot range.\nReplace this key with an empty byte array, returning the …\nReplace the value an empty map, returning the original …\nReplace this value with RedisValue::Null, returning the …\nTake ownership over the results of the SCAN operation. …\nTCP connection options.\nSet the timeout duration for a command.\nTLS configuration options.\nTLS configuration fields. If None the connection will not …\nThe server name used during the TLS handshake.\nCopy the frame contents into a new OwnedFrame.\nConvert to the string representation of the flag.\nTracing configuration options.\nWhether to enable tracing for this client.\nSet the IP_TTL value.\nRead a set of unique hash slots that each map to a …\nRead the set of unique primary nodes in the cluster.\nUnresponsive connection configuration options.\nAn optional ACL username for the client to use when …\nAn optional ACL username for the client to use when …\nWhether the client uses a native-tls connector.\nWhether the client uses a rustls connector.\nWhether the client uses TLS.\nThe message contents.\nThe protocol version to use when communicating with the …\nModify the client config in place, creating a new one with …\nModify the connection config in place, creating a new one …\nModify the performance config in place, creating a new one …\nModify the sentinel config in place, creating a new one …\nAn empty array is equivalent to GROUPBY 0\nDisable the backpressure scaling logic used to calculate …\nThe minimum amount of time to wait when applying …\nThe known cluster node Server identifiers.\nAn array of Server identifiers for each known sentinel …\nAn optional password for the client to use when …\nThe path to the Unix socket.\nThe cluster discovery policy to use when connecting or …\nThe Server identifier.\nThe service name for primary/main instances.\nAn optional ACL username for the client to use when …\nA convenience constant for None values used as generic …\nConvert an f64 to a redis string, supporting “+inf” …\nGroup the provided arguments by their cluster hash slot.\nMap a key to the corresponding cluster key slot.\nConvert a redis string to an f64, supporting “+inf” …\nCalculate the SHA1 hash output as a hex string. This is …\nCreate a Bytes from static bytes without copying.\nCreate a Str from a static str slice without copying.") \ No newline at end of file +searchState.loadedDescShard("fred", 0, "Fred\nRedis client implementations.\nShorthand to create a CustomCommand.\nError structs returned by Redis commands.\nTraits that implement portions of the Redis interface.\nA helper macro to wrap a string value in quotes via the …\nAn interface for mocking Redis commands.\nAn interface to run the MONITOR command.\nConvenience module to import a RedisClient, all possible …\nThe structs and enums used by the Redis client.\nVarious client utility functions.\nA cheaply cloneable round-robin client pool that provides …\nSend a series of commands in a pipeline.\nA cheaply cloneable Redis client struct.\nA cheaply cloneable round-robin client pool.\nA struct for interacting with cluster replica nodes.\nA struct for interacting directly with Sentinel nodes.\nA subscriber client that will manage subscription state to …\nA cheaply cloneable transaction block.\nA client interface used to customize command configuration …\nRead the client that should run the next command.\nRead the set of active connections across all clients in …\nSend the pipeline and respond with an array of all …\nRead the underlying RedisClient that interacts with …\nRead the individual clients in the pool.\nRead the clients in the pool.\nCreate a new RedisClient from the config provided to this …\nCreate a new SubscriberClient from the config provided to …\nRead the server ID against which this transaction will …\nConnect each client to the server.\nConnect each client to the server.\nConnect each client to the server, returning the task …\nConnect each client to the server, returning the task …\nExecutes all previously queued commands in a transaction.\nForce a reconnection to the server(s) for each client.\nForce a reconnection to the server(s) for each client.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new pool from an existing set of clients.\nRead the hash slot against which this transaction will …\nIncrementally iterate over pages of the hash map stored at …\nAn ID identifying the underlying transaction state.\nInitialize a new routing and connection task for each …\nInitialize a new routing and connection task for each …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSend the pipeline and respond with only the result of the …\nRead the client that ran the last command.\nRead the number of commands queued to run.\nSpawn a task that will automatically re-subscribe to any …\nCreate a new pool without connecting to the server.\nCreate a new pool without connecting to the server.\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nCreate a new client instance without connecting to the …\nRead the client that should run the next command.\nRead the next connected client that should run the next …\nRead a mapping of replica server IDs to primary server IDs.\nRead the options that will be applied to commands.\nSend a series of commands in a pipeline.\nSend a series of commands in a pipeline.\nWhether to pipeline commands in the transaction.\nSet whether the client will use next_connected or next …\nClose the connection to the Redis server for each client. …\nClose the connection to the Redis server for each client. …\nCreate a client that interacts with the replica nodes …\nCreate a client that interacts with replica nodes.\nClear the internal command buffer and watched keys.\nRe-subscribe to any tracked channels and patterns.\nIncrementally iterate over a set of keys matching the …\nRun the SCAN command on each primary/main node in a …\nOverride the DNS resolution logic for all clients in the …\nOverride the DNS resolution logic for all clients in the …\nRead the size of the pool.\nRead the size of the pool.\nSplit a clustered Redis client into a set of centralized …\nIncrementally iterate over pages of the set stored at key, …\nSync the cached replica routing table with the server(s).\nCreate a new RedisClient, reusing the existing …\nRead the set of channels that this client will manage.\nRead the set of channel patterns that this client will …\nRead the set of shard channels that this client will …\nSend the pipeline and respond with each individual result.\nUnsubscribe from all tracked channels and patterns, and …\nUpdate the internal PerformanceConfig on each client in …\nUpdate the internal PerformanceConfig on each client in …\nWait for all the clients to connect to the server.\nWait for all the clients to connect to the server.\nSend the WATCH command with the provided keys before …\nRead the number of keys to WATCH before the starting the …\nShorthand to route subsequent commands to the provided …\nIncrementally iterate over pages of the sorted set stored …\nAn authentication error.\nAn error indicating that the caller should apply …\nAn error indicating the request was canceled.\nAn error used to indicate that the cluster’s state has …\nA fatal client configuration error. These errors will …\nAn IO error with the underlying connection.\nAn invalid argument or set of arguments to a command.\nAn invalid command, such as trying to perform a set …\nAn error indicating a value was not found, often used when …\nA parser error.\nA protocol error such as an invalid or unexpected frame …\nAn error from Redis.\nAn enum representing the type of error from Redis.\nAn error associated with a replica node.\nAn error communicating with redis sentinel.\nA timeout error.\nA TLS error.\nAn unknown error.\nAn invalid URL error.\nChange the kind of the error.\nRead details about the error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWhether the error is a Canceled error.\nWhether the error is a Cluster error.\nWhether the error is a NotFound error.\nWhether the error is a Replica error.\nRead the type of error without any associated data.\nCreate a new Redis error with the provided details.\nCreate a new empty Canceled error.\nFunctions that implement the ACL interface.\nAn array of frames.\nFunctions for authenticating clients.\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nA boolean type.\nOne chunk of a streaming blob.\nFunctions that implement the client interface.\nAny Redis client that implements any part of the Redis …\nFunctions that implement the cluster interface.\nFunctions that implement the config interface.\nA signed 64-bit floating point number.\nContains the error value\nAn interface that exposes various client and connection …\nFunctions that implement the function interface.\nFunctions that implement the geo interface.\nFunctions that implement the hashes interface.\nFunctions that provide a connection heartbeat interface.\nA special frame type used when first connecting to the …\nFunctions that implement the HyperLogLog interface.\nFunctions that implement the generic keys interface.\nFunctions that implement the lists interface.\nFunctions that implement the lua interface.\nAn unordered map of key-value pairs.\nFunctions that implement the memory interface.\nFunctions that implement the internal metrics interface.\nA null type.\nA signed 64-bit integer.\nContains the success value\nFunctions that implement the pubsub interface.\nOut-of-band data.\nA RediSearch interface.\nThe client commands in the RedisJSON interface.\nType alias for Result<T, RedisError>.\nA RESP3 frame that uses Bytes and Str as the underlying …\nFunctions that implement the sentinel interface.\nFunctions that implement the server interface.\nAn unordered collection of other frames with a uniqueness …\nFunctions that implement the sets interface.\nA small string representing an error.\nA small string.\nFunctions that implement the slowlog interface.\nFunctions that implement the sorted sets interface.\nFunctions that implement the streams interface.\nA Redis Timeseries interface.\nA high level interface that supports client side caching …\nFunctions that implement the transactions interface.\nA string to be displayed without any escaping or filtering.\nThe command shows the available ACL categories if called …\nThe command shows the available ACL categories if called …\nDelete all the specified ACL users and terminate all the …\nDelete all the specified ACL users and terminate all the …\nGenerate a password with length bits, returning the …\nGenerate a password with length bits, returning the …\nThe command returns all the rules defined for an existing …\nThe command returns all the rules defined for an existing …\nThe command shows the currently active ACL rules in the …\nThe command shows the currently active ACL rules in the …\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nRead count recent ACL security events.\nRead count recent ACL security events.\nClear the ACL security events logs.\nClear the ACL security events logs.\nWhen Redis is configured to use an ACL file (with the …\nWhen Redis is configured to use an ACL file (with the …\nCreate an ACL user with the specified rules or modify the …\nCreate an ACL user with the specified rules or modify the …\nThe command shows a list of all the usernames of the …\nThe command shows a list of all the usernames of the …\nReturn the username the current connection is …\nReturn the username the current connection is …\nRead the set of active connections managed by the client.\nRead the set of active connections managed by the client.\nAppend value to key if it’s a string.\nAppend value to key if it’s a string.\nRequest for authentication in a password-protected Redis …\nInstruct Redis to start an Append Only File rewrite …\nInstruct Redis to start an Append Only File rewrite …\nSave the DB in background.\nSave the DB in background.\nThe blocking equivalent of Self::lmove.\nThe blocking equivalent of Self::lmove.\nThe blocking variant of Self::lmpop.\nThe blocking variant of Self::lmpop.\nBLPOP is a blocking list pop primitive. It is the blocking …\nBLPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nBRPOP is a blocking list pop primitive. It is the blocking …\nThe blocking equivalent of Self::rpoplpush.\nThe blocking equivalent of Self::rpoplpush.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zmpop.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmax.\nThe blocking variant of Self::zpopmin.\nThe blocking variant of Self::zpopmin.\nRead the cached cluster state used for routing commands to …\nRead the cached cluster state used for routing commands to …\nCheck if the current Sentinel configuration is able to …\nCheck if the current Sentinel configuration is able to …\nThis command controls the tracking of the keys in the next …\nThis command controls the tracking of the keys in the next …\nRead the config used to initialize the client.\nRead the config used to initialize the client.\nThe CLIENT GETNAME returns the name of the current …\nThe CLIENT GETNAME returns the name of the current …\nThis command returns the client ID we are redirecting our …\nThis command returns the client ID we are redirecting our …\nReturn the ID of the current connection.\nReturn the ID of the current connection.\nThe command returns information and statistics about the …\nThe command returns information and statistics about the …\nClose a given connection or set of connections.\nClose a given connection or set of connections.\nThe CLIENT LIST command returns information and statistics …\nThe CLIENT LIST command returns information and statistics …\nCLIENT PAUSE is a connections control command able to …\nCLIENT PAUSE is a connections control command able to …\nRead the reconnect policy used to initialize the client.\nRead the reconnect policy used to initialize the client.\nThe CLIENT REPLY command controls whether the server will …\nThe CLIENT REPLY command controls whether the server will …\nAssign a name to the current connection.\nAssign a name to the current connection.\nThis command enables the tracking feature of the Redis …\nThis command enables the tracking feature of the Redis …\nThe command returns information about the current client …\nThe command returns information about the current client …\nThis command can unblock, from a different connection, a …\nThis command can unblock, from a different connection, a …\nCLIENT UNPAUSE is used to resume command processing for …\nCLIENT UNPAUSE is used to resume command processing for …\nThis command is useful in order to modify a node’s view …\nThis command is useful in order to modify a node’s view …\nAdvances the cluster config epoch.\nAdvances the cluster config epoch.\nListen for notifications whenever the cluster state …\nThe command returns the number of failure reports for the …\nThe command returns the number of failure reports for the …\nReturns the number of keys in the specified Redis Cluster …\nReturns the number of keys in the specified Redis Cluster …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThe CLUSTER DELSLOTS command asks a particular Redis …\nThis command, that can only be sent to a Redis Cluster …\nThis command, that can only be sent to a Redis Cluster …\nDeletes all slots from a node.\nDeletes all slots from a node.\nThe command is used in order to remove a node, specified …\nThe command is used in order to remove a node, specified …\nThe command returns an array of keys names stored in the …\nThe command returns an array of keys names stored in the …\nCLUSTER INFO provides INFO style information about Redis …\nCLUSTER INFO provides INFO style information about Redis …\nReturns an integer identifying the hash slot the specified …\nReturns an integer identifying the hash slot the specified …\nCLUSTER MEET is used in order to connect different Redis …\nCLUSTER MEET is used in order to connect different Redis …\nReturns the node’s id.\nReturns the node’s id.\nRead the current cluster node configuration.\nRead the current cluster node configuration.\nThe command provides a list of replica nodes replicating …\nThe command provides a list of replica nodes replicating …\nThe command reconfigures a node as a replica of the …\nThe command reconfigures a node as a replica of the …\nReset a Redis Cluster node, in a more or less drastic way …\nReset a Redis Cluster node, in a more or less drastic way …\nForces a node to save the nodes.conf configuration on disk.\nForces a node to save the nodes.conf configuration on disk.\nThis command sets a specific config epoch in a fresh node.\nThis command sets a specific config epoch in a fresh node.\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SETSLOT is responsible for changing the state of a …\nCLUSTER SLOTS returns details about which cluster slots …\nCLUSTER SLOTS returns details about which cluster slots …\nRead the number of buffered commands that have not yet …\nRead the number of buffered commands that have not yet …\nThe CONFIG GET command is used to read the configuration …\nThe CONFIG GET command is used to read the configuration …\nGet the current value of a global Sentinel configuration …\nGet the current value of a global Sentinel configuration …\nResets the statistics reported by Redis using the INFO …\nResets the statistics reported by Redis using the INFO …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG REWRITE command rewrites the redis.conf file …\nThe CONFIG SET command is used in order to reconfigure the …\nThe CONFIG SET command is used in order to reconfigure the …\nSet the value of a global Sentinel configuration parameter.\nSet the value of a global Sentinel configuration parameter.\nConnect to the server.\nConnect to the server.\nRead the connection config used to initialize the client.\nRead the connection config used to initialize the client.\nRead the connection IDs for the active connections to each …\nRead the connection IDs for the active connections to each …\nThis command copies the value stored at the source key to …\nThis command copies the value stored at the source key to …\nRun a custom command that is not yet supported via another …\nRun a custom command that is not yet supported via another …\nRun a custom command similar to custom, but return the …\nRun a custom command similar to custom, but return the …\nReturn the number of keys in the selected database.\nReturn the number of keys in the selected database.\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by one. If the key …\nDecrements the number stored at key by val. If the key …\nDecrements the number stored at key by val. If the key …\nRemoves the specified keys. A key is ignored if it does …\nRemoves the specified keys. A key is ignored if it does …\nSerialize the value stored at key in a Redis-specific …\nSerialize the value stored at key in a Redis-specific …\nReturn a future that will ping the server on an interval.\nListen for protocol and connection errors. This stream can …\nEvaluate a Lua script on the server.\nEvaluate a Lua script on the server.\nEvaluates a script cached on the server side by its SHA1 …\nEvaluates a script cached on the server side by its SHA1 …\nReturns number of keys that exist from the keys arguments.\nReturns number of keys that exist from the keys arguments.\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on key. After the timeout has expired, the …\nSet a timeout on a key based on a UNIX timestamp.\nSet a timeout on a key based on a UNIX timestamp.\nForce a failover as if the master was not reachable, and …\nForce a failover as if the master was not reachable, and …\nThis command will start a coordinated failover between the …\nThis command will start a coordinated failover between the …\nInvoke a function.\nInvoke a function.\nThis is a read-only variant of the FCALL command that …\nThis is a read-only variant of the FCALL command that …\nDelete the keys in all databases.\nDelete the keys in all databases.\nDelete the keys on all nodes in the cluster. This is a …\nDelete the keys on all nodes in the cluster. This is a …\nForce Sentinel to rewrite its configuration on disk, …\nForce Sentinel to rewrite its configuration on disk, …\nForce a reconnection to the server(s).\nForce a reconnection to the server(s).\nRun a search query on an index, and perform aggregate …\nRun a search query on an index, and perform aggregate …\nAdd an alias to an index.\nAdd an alias to an index.\nRemove an alias from an index.\nRemove an alias from an index.\nAdd an alias to an index. If the alias is already …\nAdd an alias to an index. If the alias is already …\nAdd a new attribute to the index.\nAdd a new attribute to the index.\nRetrieve configuration options.\nRetrieve configuration options.\nSet the value of a RediSearch configuration parameter.\nSet the value of a RediSearch configuration parameter.\nCreate an index with the given specification.\nCreate an index with the given specification.\nDelete a cursor.\nDelete a cursor.\nRead next results from an existing cursor.\nRead next results from an existing cursor.\nAdd terms to a dictionary.\nAdd terms to a dictionary.\nRemove terms from a dictionary.\nRemove terms from a dictionary.\nDump all terms in the given dictionary.\nDump all terms in the given dictionary.\nDelete an index.\nDelete an index.\nReturn the execution plan for a complex query.\nReturn the execution plan for a complex query.\nReturn information and statistics on the index.\nReturn information and statistics on the index.\nReturns a list of all existing indexes.\nReturns a list of all existing indexes.\nSearch the index with a textual query, returning either …\nSearch the index with a textual query, returning either …\nPerform spelling correction on a query, returning …\nPerform spelling correction on a query, returning …\nAdd a suggestion string to an auto-complete suggestion …\nAdd a suggestion string to an auto-complete suggestion …\nDelete a string from a suggestion index.\nDelete a string from a suggestion index.\nGet completion suggestions for a prefix.\nGet completion suggestions for a prefix.\nGet the size of an auto-complete suggestion dictionary.\nGet the size of an auto-complete suggestion dictionary.\nDump the contents of a synonym group.\nDump the contents of a synonym group.\nUpdate a synonym group.\nUpdate a synonym group.\nReturn a distinct set of values indexed in a Tag field.\nReturn a distinct set of values indexed in a Tag field.\nDelete a library and all its functions.\nDelete a library and all its functions.\nDelete a library and all its functions from each cluster …\nDelete a library and all its functions from each cluster …\nReturn the serialized payload of loaded libraries.\nReturn the serialized payload of loaded libraries.\nDeletes all the libraries.\nDeletes all the libraries.\nDeletes all the libraries on all cluster nodes …\nDeletes all the libraries on all cluster nodes …\nKill a function that is currently executing.\nKill a function that is currently executing.\nReturn information about the functions and libraries.\nReturn information about the functions and libraries.\nLoad a library to Redis.\nLoad a library to Redis.\nLoad a library to Redis on all cluster nodes concurrently.\nLoad a library to Redis on all cluster nodes concurrently.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload.\nRestore libraries from the serialized payload on all …\nRestore libraries from the serialized payload on all …\nReturn information about the function that’s currently …\nReturn information about the function that’s currently …\nAdds the specified geospatial items (longitude, latitude, …\nAdds the specified geospatial items (longitude, latitude, …\nReturn the distance between two members in the geospatial …\nReturn the distance between two members in the geospatial …\nReturn valid Geohash strings representing the position of …\nReturn valid Geohash strings representing the position of …\nReturn the positions (longitude,latitude) of all the …\nReturn the positions (longitude,latitude) of all the …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is exactly like GEORADIUS with the sole …\nThis command is exactly like GEORADIUS with the sole …\nReturn the members of a sorted set populated with …\nReturn the members of a sorted set populated with …\nThis command is like GEOSEARCH, but stores the result in …\nThis command is like GEOSEARCH, but stores the result in …\nRead a value from the server.\nRead a value from the server.\nReturn the ip and port number of the master with that name.\nReturn the ip and port number of the master with that name.\nGet the value of key and delete the key. This command is …\nGet the value of key and delete the key. This command is …\nReturns the substring of the string value stored at key …\nReturns the substring of the string value stored at key …\nAtomically sets key to value and returns the old value …\nAtomically sets key to value and returns the old value …\nWhether the client has a reconnection policy.\nWhether the client has a reconnection policy.\nRemoves the specified fields from the hash stored at key.\nRemoves the specified fields from the hash stored at key.\nSwitch to a different protocol, optionally authenticating …\nReturns if field is an existing field in the hash stored …\nReturns if field is an existing field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns the value associated with field in the hash stored …\nReturns all fields and values of the hash stored at key.\nReturns all fields and values of the hash stored at key.\nIncrements the number stored at field in the hash stored …\nIncrements the number stored at field in the hash stored …\nIncrement the specified field of a hash stored at key, and …\nIncrement the specified field of a hash stored at key, and …\nReturns all field names in the hash stored at key.\nReturns all field names in the hash stored at key.\nReturns the number of fields contained in the hash stored …\nReturns the number of fields contained in the hash stored …\nReturns the values associated with the specified fields in …\nReturns the values associated with the specified fields in …\nSets the specified fields to their respective values in …\nSets the specified fields to their respective values in …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nSets fields in the hash stored at key to their provided …\nSets fields in the hash stored at key to their provided …\nSets field in the hash stored at key to value, only if …\nSets field in the hash stored at key to value, only if …\nReturns the string length of the value associated with …\nReturns the string length of the value associated with …\nReturns all values in the hash stored at key.\nReturns all values in the hash stored at key.\nThe unique ID identifying this client and underlying …\nThe unique ID identifying this client and underlying …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by one. If the key …\nIncrements the number stored at key by val. If the key …\nIncrements the number stored at key by val. If the key …\nIncrement the string representing a floating point number …\nIncrement the string representing a floating point number …\nRead info about the server.\nRead info about the server.\nReturn cached INFO output from masters and replicas.\nReturn cached INFO output from masters and replicas.\nInitialize a new routing and connection task and wait for …\nInitialize a new routing and connection task and wait for …\nSubscribe to invalidation messages from the server(s).\nSubscribe to invalidation messages from the server(s).\nWhether the client is connected to a cluster.\nWhether the client is connected to a cluster.\nWhether all underlying connections are healthy.\nWhether all underlying connections are healthy.\nWhether the client will automatically pipeline commands.\nWhether the client will automatically pipeline commands.\nAppend the json values into the array at path after the …\nAppend the json values into the array at path after the …\nSearch for the first occurrence of a JSON value in an …\nSearch for the first occurrence of a JSON value in an …\nInsert the json values into the array at path before the …\nInsert the json values into the array at path before the …\nReport the length of the JSON array at path in key.\nReport the length of the JSON array at path in key.\nRemove and return an element from the index in the array\nRemove and return an element from the index in the array\nTrim an array so that it contains only the specified …\nTrim an array so that it contains only the specified …\nClear container values (arrays/objects) and set numeric …\nClear container values (arrays/objects) and set numeric …\nReport a value’s memory usage in bytes\nReport a value’s memory usage in bytes\nDelete a value.\nDelete a value.\nReturn the value at path in JSON serialized form.\nReturn the value at path in JSON serialized form.\nMerge a given JSON value into matching paths.\nMerge a given JSON value into matching paths.\nReturn the values at path from multiple key arguments.\nReturn the values at path from multiple key arguments.\nSet or update one or more JSON values according to the …\nSet or update one or more JSON values according to the …\nIncrement the number value stored at path by number\nIncrement the number value stored at path by number\nReturn the keys in the object that’s referenced by path.\nReturn the keys in the object that’s referenced by path.\nReport the number of keys in the JSON object at path in …\nReport the number of keys in the JSON object at path in …\nReturn the JSON in key in Redis serialization protocol …\nReturn the JSON in key in Redis serialization protocol …\nSet the JSON value at path in key.\nSet the JSON value at path in key.\nAppend the json-string values to the string at path.\nAppend the json-string values to the string at path.\nReport the length of the JSON String at path in key.\nReport the length of the JSON String at path in key.\nToggle a Boolean value stored at path.\nToggle a Boolean value stored at path.\nReport the type of JSON value at path.\nReport the type of JSON value at path.\nListen for keyspace and keyevent notifications on the …\nReturn the UNIX TIME of the last DB save executed with …\nReturn the UNIX TIME of the last DB save executed with …\nRuns the longest common subsequence algorithm on two keys.\nRuns the longest common subsequence algorithm on two keys.\nReturns the element at index in the list stored at key.\nReturns the element at index in the list stored at key.\nInserts element in the list stored at key either before or …\nInserts element in the list stored at key either before or …\nReturns the length of the list stored at key.\nReturns the length of the list stored at key.\nAtomically returns and removes the first/last element …\nAtomically returns and removes the first/last element …\nPops one or more elements from the first non-empty list …\nPops one or more elements from the first non-empty list …\nRemoves and returns the first elements of the list stored …\nRemoves and returns the first elements of the list stored …\nThe command returns the index of matching elements inside …\nThe command returns the index of matching elements inside …\nInsert all the specified values at the head of the list …\nInsert all the specified values at the head of the list …\nInserts specified values at the head of the list stored at …\nInserts specified values at the head of the list stored at …\nReturns the specified elements of the list stored at key.\nReturns the specified elements of the list stored at key.\nRemoves the first count occurrences of elements equal to …\nRemoves the first count occurrences of elements equal to …\nSets the list element at index to element.\nSets the list element at index to element.\nTrim an existing list so that it will contain only the …\nTrim an existing list so that it will contain only the …\nShow the state and info of the specified master.\nShow the state and info of the specified master.\nShow a list of monitored masters and their state.\nShow a list of monitored masters and their state.\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY DOCTOR command reports about different …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY MALLOC-STATS command provides an internal …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY PURGE command attempts to purge dirty pages so …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY STATS command returns an Array reply about the …\nThe MEMORY USAGE command reports the number of bytes that …\nThe MEMORY USAGE command reports the number of bytes that …\nListen for messages on the publish-subscribe interface.\nReturns the values of all specified keys. For every key …\nReturns the values of all specified keys. For every key …\nStart Sentinel’s monitoring.\nStart Sentinel’s monitoring.\nSets the given keys to their respective values.\nSets the given keys to their respective values.\nSets the given keys to their respective values. MSETNX …\nSets the given keys to their respective values. MSETNX …\nEnter a MULTI block, executing subsequent commands as a …\nEnter a MULTI block, executing subsequent commands as a …\nReturn the ID of the Sentinel instance.\nReturn the ID of the Sentinel instance.\nRead the number of known primary cluster nodes, or 0 if …\nRead the number of known primary cluster nodes, or 0 if …\nSpawn one task that listens for all connection management …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that processes invalidation messages from the …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function on each …\nSpawn a task that runs the provided function whenever the …\nThis command returns information about pending scripts.\nThis command returns information about pending scripts.\nRead the PerformanceConfig associated with this client.\nRead the PerformanceConfig associated with this client.\nRemove the existing timeout on a key, turning the key from …\nRemove the existing timeout on a key, turning the key from …\nThis command works exactly like EXPIRE but the time to …\nThis command works exactly like EXPIRE but the time to …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nPEXPIREAT has the same effect and semantic as EXPIREAT, …\nAdds all the element arguments to the HyperLogLog data …\nAdds all the element arguments to the HyperLogLog data …\nWhen called with a single key, returns the approximated …\nWhen called with a single key, returns the approximated …\nMerge multiple HyperLogLog values into an unique value …\nMerge multiple HyperLogLog values into an unique value …\nPing the Redis server.\nPing the Redis server.\nRead the RESP version used by the client when …\nRead the RESP version used by the client when …\nSubscribes the client to the given patterns.\nSubscribes the client to the given patterns.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nPublish a message on the PubSub interface, returning the …\nPublish a message on the PubSub interface, returning the …\nLists the currently active channels.\nLists the currently active channels.\nReturns the number of unique patterns that are subscribed …\nReturns the number of unique patterns that are subscribed …\nReturns the number of subscribers (exclusive of clients …\nReturns the number of subscribers (exclusive of clients …\nLists the currently active shard channels.\nLists the currently active shard channels.\nReturns the number of subscribers for the specified shard …\nReturns the number of subscribers for the specified shard …\nUnsubscribes the client from the given patterns, or from …\nUnsubscribes the client from the given patterns, or from …\nClose the connection to the Redis server. The returned …\nClose the connection to the Redis server. The returned …\nReturn a random key from the currently selected database.\nReturn a random key from the currently selected database.\nRead latency metrics across all commands.\nRead latency metrics across all commands.\nRead network latency metrics across all commands.\nRead network latency metrics across all commands.\nRead the number of request redeliveries.\nRead the number of request redeliveries.\nRead request payload size metrics across all commands.\nRead request payload size metrics across all commands.\nRead response payload size metrics across all commands.\nRead response payload size metrics across all commands.\nListen for reconnection notifications.\nStop Sentinel’s monitoring.\nStop Sentinel’s monitoring.\nRenames source key to destination.\nRenames source key to destination.\nRenames source key to destination if destination does not …\nRenames source key to destination if destination does not …\nShow a list of replicas for this master, and their state.\nShow a list of replicas for this master, and their state.\nThis command will reset all the masters with matching name.\nThis command will reset all the masters with matching name.\nCreate a key associated with a value that is obtained by …\nCreate a key associated with a value that is obtained by …\nRemoves and returns the last elements of the list stored …\nRemoves and returns the last elements of the list stored …\nAtomically returns and removes the last element (tail) of …\nAtomically returns and removes the last element (tail) of …\nInsert all the specified values at the tail of the list …\nInsert all the specified values at the tail of the list …\nInserts specified values at the tail of the list stored at …\nInserts specified values at the tail of the list stored at …\nAdd the specified members to the set stored at key.\nAdd the specified members to the set stored at key.\nReturns the set cardinality (number of elements) of the …\nReturns the set cardinality (number of elements) of the …\nSet the debug mode for subsequent scripts executed with …\nSet the debug mode for subsequent scripts executed with …\nReturns information about the existence of the scripts in …\nReturns information about the existence of the scripts in …\nFlush the Lua scripts cache.\nFlush the Lua scripts cache.\nA clustered variant of script_flush that flushes the …\nA clustered variant of script_flush that flushes the …\nKills the currently executing Lua script, assuming no …\nKills the currently executing Lua script, assuming no …\nA clustered variant of the script_kill command that issues …\nA clustered variant of the script_kill command that issues …\nLoad a script into the scripts cache, without executing …\nLoad a script into the scripts cache, without executing …\nA clustered variant of script_load that loads the script …\nA clustered variant of script_load that loads the script …\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SDIFF, but instead of returning …\nThis command is equal to SDIFF, but instead of returning …\nSelect the database this client should use.\nSelect the database this client should use.\nRead the set of known sentinel nodes.\nRead the set of known sentinel nodes.\nRead the primary Redis server identifier returned from the …\nRead the primary Redis server identifier returned from the …\nShow a list of sentinel instances for this master, and …\nShow a list of sentinel instances for this master, and …\nRead the server version, if known.\nRead the server version, if known.\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet a value with optional NX|XX, EX|PX|EXAT|PXAT|KEEPTTL, …\nSet Sentinel’s monitoring configuration.\nSet Sentinel’s monitoring configuration.\nOverride the DNS resolution logic for the client.\nOverride the DNS resolution logic for the client.\nOverwrites part of the string stored at key, starting at …\nOverwrites part of the string stored at key, starting at …\nShut down the server and quit the client.\nShut down the server and quit the client.\nThis command simulates different Sentinel crash scenarios.\nThis command simulates different Sentinel crash scenarios.\nReturns the members of the set resulting from the …\nReturns the members of the set resulting from the …\nThis command is equal to SINTER, but instead of returning …\nThis command is equal to SINTER, but instead of returning …\nReturns if member is a member of the set stored at key.\nReturns if member is a member of the set stored at key.\nThis command is used to read the slow queries log.\nThis command is used to read the slow queries log.\nThis command is used to read length of the slow queries …\nThis command is used to read length of the slow queries …\nThis command is used to reset the slow queries log.\nThis command is used to reset the slow queries log.\nReturns all the members of the set value stored at key.\nReturns all the members of the set value stored at key.\nReturns whether each member is a member of the set stored …\nReturns whether each member is a member of the set stored …\nMove member from the set at source to the set at …\nMove member from the set at source to the set at …\nReturns or stores the elements contained in the list, set …\nReturns or stores the elements contained in the list, set …\nRead-only variant of the SORT command. It is exactly like …\nRead-only variant of the SORT command. It is exactly like …\nRemoves and returns one or more random members from the …\nRemoves and returns one or more random members from the …\nPosts a message to the given shard channel.\nPosts a message to the given shard channel.\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nRemove the specified members from the set stored at key.\nRemove the specified members from the set stored at key.\nSubscribes the client to the specified shard channels.\nSubscribes the client to the specified shard channels.\nSend the CLIENT TRACKING command to all connected servers, …\nSend the CLIENT TRACKING command to all connected servers, …\nRead the state of the underlying connection(s).\nRead the state of the underlying connection(s).\nDisable client tracking on all connections.\nDisable client tracking on all connections.\nReturns the length of the string value stored at key. An …\nReturns the length of the string value stored at key. An …\nSubscribe to a channel on the publish-subscribe interface.\nSubscribe to a channel on the publish-subscribe interface.\nReturns the members of the set resulting from the union of …\nReturns the members of the set resulting from the union of …\nThis command is equal to SUNION, but instead of returning …\nThis command is equal to SUNION, but instead of returning …\nUnsubscribes the client from the given shard channels, or …\nUnsubscribes the client from the given shard channels, or …\nUpdate the cached cluster state and add or remove any …\nUpdate the cached cluster state and add or remove any …\nRead and consume latency metrics, resetting their values …\nRead and consume latency metrics, resetting their values …\nRead and consume network latency metrics, resetting their …\nRead and consume network latency metrics, resetting their …\nRead and reset the number of request redeliveries.\nRead and reset the number of request redeliveries.\nRead and consume request payload size metrics, resetting …\nRead and consume request payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nRead and consume response payload size metrics, resetting …\nAppend a sample to a time series.\nAppend a sample to a time series.\nUpdate the retention, chunk size, duplicate policy, and …\nUpdate the retention, chunk size, duplicate policy, and …\nCreate a new time series.\nCreate a new time series.\nCreate a compaction rule.\nCreate a compaction rule.\nDecrease the value of the sample with the maximum existing …\nDecrease the value of the sample with the maximum existing …\nDelete all samples between two timestamps for a given time …\nDelete all samples between two timestamps for a given time …\nDelete a compaction rule.\nDelete a compaction rule.\nGet the sample with the highest timestamp from a given …\nGet the sample with the highest timestamp from a given …\nIncrease the value of the sample with the maximum existing …\nIncrease the value of the sample with the maximum existing …\nReturn information and statistics for a time series.\nReturn information and statistics for a time series.\nAppend new samples to one or more time series.\nAppend new samples to one or more time series.\nGet the sample with the highest timestamp from each time …\nGet the sample with the highest timestamp from each time …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nQuery a range across multiple time series by filters in …\nGet all time series keys matching a filter list.\nGet all time series keys matching a filter list.\nQuery a range in forward direction.\nQuery a range in forward direction.\nQuery a range in reverse direction.\nQuery a range in reverse direction.\nReturns the remaining time to live of a key that has a …\nReturns the remaining time to live of a key that has a …\nA convenience function to unblock any blocked connection …\nA convenience function to unblock any blocked connection …\nUnlinks the specified keys. A key is ignored if it does …\nUnlinks the specified keys. A key is ignored if it does …\nReceive a message when the client initiates a reconnection …\nUnsubscribe from a channel on the PubSub interface.\nUnsubscribe from a channel on the PubSub interface.\nFlushes all the previously watched keys for a transaction.\nFlushes all the previously watched keys for a transaction.\nUpdate the internal PerformanceConfig in place with new …\nUpdate the internal PerformanceConfig in place with new …\nWhether the client uses the sentinel interface.\nWhether the client uses the sentinel interface.\nThis command blocks the current client until all the …\nThis command blocks the current client until all the …\nWait for the result of the next connection attempt.\nWait for the result of the next connection attempt.\nMarks the given keys to be watched for conditional …\nMarks the given keys to be watched for conditional …\nCustomize various configuration options on commands.\nCustomize various configuration options on commands.\nRemove one or more messages from the Pending Entries List …\nRemove one or more messages from the Pending Entries List …\nAppends the specified stream entry to the stream at the …\nAppends the specified stream entry to the stream at the …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nThis command transfers ownership of pending stream entries …\nIn the context of a stream consumer group, this command …\nIn the context of a stream consumer group, this command …\nA variation of xclaim with a less verbose return type.\nA variation of xclaim with a less verbose return type.\nRemoves the specified entries from a stream, and returns …\nRemoves the specified entries from a stream, and returns …\nThis command creates a new consumer group uniquely …\nThis command creates a new consumer group uniquely …\nCreate a consumer named consumername in the consumer group …\nCreate a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nDelete a consumer named consumername in the consumer group …\nCompletely destroy a consumer group.\nCompletely destroy a consumer group.\nSet the last delivered ID for a consumer group.\nSet the last delivered ID for a consumer group.\nThis command returns the list of consumers that belong to …\nThis command returns the list of consumers that belong to …\nThis command returns the list of all consumers groups of …\nThis command returns the list of all consumers groups of …\nThis command returns information about the stream stored …\nThis command returns information about the stream stored …\nReturns the number of entries inside a stream.\nReturns the number of entries inside a stream.\nInspect the list of pending messages in a consumer group.\nInspect the list of pending messages in a consumer group.\nThe command returns the stream entries matching a given …\nThe command returns the stream entries matching a given …\nReturn the stream entries matching the provided range of …\nReturn the stream entries matching the provided range of …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nRead data from one or multiple streams, only returning …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nA special version of the XREAD command with support for …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nSimilar to XRANGE, but with the results returned in …\nTrims the stream by evicting older entries (entries with …\nTrims the stream by evicting older entries (entries with …\nAdds all the specified members with the specified scores …\nAdds all the specified members with the specified scores …\nReturns the sorted set cardinality (number of elements) of …\nReturns the sorted set cardinality (number of elements) of …\nReturns the number of elements in the sorted set at key …\nReturns the number of elements in the sorted set at key …\nThis command is similar to ZDIFFSTORE, but instead of …\nThis command is similar to ZDIFFSTORE, but instead of …\nComputes the difference between the first and all …\nComputes the difference between the first and all …\nIncrements the score of member in the sorted set stored at …\nIncrements the score of member in the sorted set stored at …\nThis command is similar to ZINTERSTORE, but instead of …\nThis command is similar to ZINTERSTORE, but instead of …\nComputes the intersection of the sorted sets given by the …\nComputes the intersection of the sorted sets given by the …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nPops one or more elements, that are member-score pairs, …\nPops one or more elements, that are member-score pairs, …\nReturns the scores associated with the specified members …\nReturns the scores associated with the specified members …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the highest …\nRemoves and returns up to count members with the lowest …\nRemoves and returns up to count members with the lowest …\nWhen called with just the key argument, return a random …\nWhen called with just the key argument, return a random …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nThis command is like ZRANGE, but stores the result in the …\nThis command is like ZRANGE, but stores the result in the …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nRemoves the specified members from the sorted set stored …\nRemoves the specified members from the sorted set stored …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nRemoves all elements in the sorted set stored at key with …\nReturns the specified range of elements in the sorted set …\nReturns the specified range of elements in the sorted set …\nWhen all the elements in a sorted set are inserted with …\nWhen all the elements in a sorted set are inserted with …\nReturns all the elements in the sorted set at key with a …\nReturns all the elements in the sorted set at key with a …\nReturns the rank of member in the sorted set stored at key…\nReturns the rank of member in the sorted set stored at key…\nReturns the score of member in the sorted set at key.\nReturns the score of member in the sorted set at key.\nThis command is similar to ZUNIONSTORE, but instead of …\nThis command is similar to ZUNIONSTORE, but instead of …\nComputes the union of the sorted sets given by the …\nComputes the union of the sorted sets given by the …\nA mocking layer that buffers the commands internally and …\nAn implementation of a mocking layer that returns the …\nA wrapper type for the parts of an internal Redis command.\nAn interface for intercepting and processing Redis …\nA struct that implements some of the basic mapping …\nThe ordered list of arguments to the command.\nClear the inner map.\nClear the inner buffer.\nThe first word in the command string. For example:\nPerform a DEL operation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nPerform a GET operation.\nRead a copy of the inner map.\nRead a copy of the internal command buffer without …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRead the length of the internal buffer.\nCreate a new empty SimpleMap.\nCreate a new empty Buffer.\nPop a command from the back of the internal buffer.\nPop a command from the front of the internal buffer.\nIntercept and process a Redis command, returning any …\nIntercept and process an entire transaction. The provided …\nIntercept and process an entire transaction. The provided …\nPush a new command onto the back of the internal buffer.\nPush a new command onto the front of the internal buffer.\nPerform a SET operation.\nThe optional subcommand string (or second word) in the …\nTake the inner map.\nDrain and return the internal command buffer.\nA command parsed from a MONITOR stream.\nArguments passed to the command.\nThe host and port of the client that ran the command, or …\nThe command run by the server.\nThe database against which the command was run.\nReturns the argument unchanged.\nCalls U::from(self).\nRun the MONITOR command against the provided server.\nWhen the command was run on the server.\nA node was added to the cluster.\nAn aggregation operation used in FT.AGGREGATE.\nAggregate options for the zinterstore (and related) …\nAn aggregation policy to use with certain timeseries …\nThe ANY flag used on certain GEO commands.\nAn array of frames.\nAn ordered list of values.\nAn ordered list of values.\nThe auto-generated key symbol “*”.\nConfiguration options for backpressure features in the …\nBackpressure policies to apply when the max number of …\nA large number not representable as a Number or Double.\nA blob representing an error.\nA blob of bytes.\nWait to send the command until the blocked command …\nDescribes how the client should respond when a command is …\nA boolean type.\nA boolean value.\nA boolean value.\nA BUCKETTIMESTAMP argument in commands such as TS.MRANGE.\nA client and pool builder interface.\nThe BUSY prefix.\nA byte array value.\nA byte array value.\nOne chunk of a streaming blob.\nFilters provided to the CLIENT KILL command.\nThe type of clients to close.\nFilters for the CLIENT PAUSE command.\nArguments for the CLIENT REPLY command.\nThe state of the underlying connection to the Redis server.\nArguments to the CLIENT UNBLOCK command.\nA policy that determines how clustered clients initially …\nThe CLUSTERDOWN prefix.\nOptions for the CLUSTER FAILOVER command.\nA cluster hashing policy.\nA parsed response from the CLUSTER INFO command.\nFlags for the CLUSTER RESET command.\nThe cached view of the cluster used by the client to route …\nFlags for the CLUSTER SETSLOT command.\nThe state of the cluster from the CLUSTER INFO command.\nAn enum describing the possible ways in which a Redis …\nAlways use the endpoint(s) provided in the client’s …\nThe result from any of the connect functions showing the …\nConfiguration options related to the creation or …\nWait a constant amount of time between reconnect attempts, …\nA trait that can be used to override the credentials used …\nProvide a custom hash slot value.\nProvide a custom mapping from IP address to hostname to be …\nA case-sensitive prefix on an error message.\nUnix time (milliseconds since epoch).\nConfiguration for custom redis commands, primarily used …\nThe default amount of jitter when waiting to reconnect.\nThe parsed result of the MEMORY STATS command for a …\nReplace any IP addresses in the CLUSTER SLOTS response …\nA signed 64-bit floating point number.\nA double floating point number.\nA double floating point number.\nWait for all in-flight commands to finish before sending …\nThe duplicate policy used with certain timeseries commands.\nExpiration in seconds.\nExpiration time, in seconds.\nEquivalent to -.\nEncoding arguments for certain timeseries commands.\nReturn an error to the caller.\nExpiration options for the set command.\nOptions for certain expiration commands (PEXPIRE, etc).\nBackoff reconnection attempts exponentially, multiplying …\nHash the first string or bytes value in the arguments. …\nHash the first argument regardless of type.\nThe policy type for the FUNCTION RESTORE command.\nA trait used to convert various forms of RedisValue into …\nA trait used to convert RedisKey values to various types.\nArguments to the FT.AGGREGATE command.\nArguments to FT.ALTER.\nArguments for FT.CREATE.\nArguments to FT.SEARCH.\nAn individual function within a Library.\nPossible flags associated with a Function.\nA struct describing the longitude and latitude coordinates …\nA typed struct representing the full output of the …\nUnits for the GEO DIST command.\nA struct describing the value inside a GEO data structure.\nArguments equivalent to …\nA timestamp query used in commands such as TS.MRANGE.\nA struct representing GROUPBY label REDUCE reducer in …\nThe result of a HSCAN operation.\nA special frame type used when first connecting to the …\nA trait used for mapping IP addresses to hostnames when …\nIndex ranges (https://redis.io/commands/zrange#index-ranges…\nIndex arguments for FT.CREATE.\nShortcut for the + character.\nShortcut for the +inf range bound.\nOptions for the info command.\nAn integer value.\nAn integer value.\nInterrupt the blocked command by automatically sending …\nA client tracking invalidation message from the provided …\nDo not reset the TTL.\nAn event on the publish-subscribe interface describing a …\nThe direction to move elements in a *LMOVE command.\nEquivalent to +\nLexicographical ranges (…\nA helper struct for interacting with libraries and …\nA tuple of (offset, count) values for commands that allow …\nAn argument type equivalent to “[LIMIT count]”.\nBackoff reconnection attempts linearly, adding delay each …\nLocation flag for the LINSERT command.\nArguments to LOAD in FT.AGGREGATE.\nThe LOADING prefix.\nAn ID specified by the user such as “12345-0”.\nAn unordered map of key-value pairs.\nA map of key/value pairs, primarily used in RESP3 mode.\nA map of key/value pairs, primarily used in RESP3 mode.\nThe MASTERDOWN prefix.\nThe highest ID in a stream (“$”).\nThe parsed result of the MEMORY STATS command.\nA publish-subscribe message.\nA message from a subscribe command.\nThe kind of pubsub message.\nThe MISCONF prefix.\nA convenience struct for commands that take one or more …\nA convenience struct for functions that take one or more …\nOne or more IDs for elements in a stream.\nConvenience struct for commands that take 1 or more keys.\nOne or more ordered key-value pairs, typically used as an …\nConvenience interface for commands that take 1 or more …\nConvenience interface for commands that take 1 or more …\nConvenience struct for ZINTERSTORE and ZUNIONSTORE when …\nConvenience struct for the ZADD command to accept 1 or …\nShortcut for the -inf range bound.\nShortcut for the - character.\nFor XREADGROUP, only return new IDs (“>”).\nThe NOREPLICAS prefix.\nNo value.\nDo not modify or replace hostnames or IP addresses in the …\nThe server’s current time, equivalent to “*”.\nA null type.\nA nil value.\nA nil value.\nA signed 64-bit integer.\nHash the value with the provided offset in the arguments …\nOptions to configure or overwrite for individual commands.\nOrdering options for the ZADD (and related) commands.\nA message from a pattern psubscribe command.\nExpiration in milliseconds.\nExpiration time, in milliseconds.\nThe type of results from the scan operation.\nConfiguration options that can affect the performance of …\nOut-of-band data.\nA special value used to indicate a MULTI block command was …\nA special value used to indicate a MULTI block command was …\nUse a random node in the cluster.\nA struct representing …\nThe READONLY prefix, which can happen if a primary node is …\nHash slots were rebalanced across the cluster and/or local …\nSpecial errors that can trigger reconnection logic, which …\nThe type of reconnection policy to use. This will apply to …\nConfiguration options for a RedisClient.\nA key in Redis.\nA map of (RedisKey, RedisValue) pairs.\nA value used in a Redis command.\nThe kind of value from Redis.\nA REDUCER argument in commands such as TS.MRANGE.\nGROUPBY reducer functions.\nA node was removed from the cluster.\nConfiguration options for replica node connections.\nAn interface used to filter the list of available replica …\nA trait that can be used to override DNS resolution logic.\nShorthand for the result of commands such as MGET, MRANGE, …\nA RESP3 frame that uses Bytes and Str as the underlying …\nThe RESP3 equivalent of Resp2TimeSeriesValues.\nThe RESP version used in the HELLO request.\nA message from a sharded ssubscribe command.\nThe result of a SSCAN operation.\nThe result of a SCAN operation.\nThe types of values supported by the type command.\nAn interface for interacting with the results of a scan …\nScore ranges (https://redis.io/commands/zrange#score-ranges…\nAn interface for caching and running lua scripts.\nFlags for the SCRIPT DEBUG command.\nA search field with an optional property.\nArguments for FILTER in FT.SEARCH.\nArguments for GEOFILTER in FT.SEARCH.\nArguments used in HIGHLIGHT values.\nArguments for PARAMS in FT.AGGREGATE.\nREDUCE arguments in FT.AGGREGATE.\nArguments for SCHEMA in FT.CREATE.\nOne of the available schema types used with FT.CREATE or …\nArguments for SORTBY in FT.SEARCH.\nArguments used in SUMMARIZE values.\nConfiguration options for sentinel clients.\nArguments for the SENTINEL SIMULATE-FAILURE command.\nState necessary to identify or connect to a server.\nConnection configuration for the Redis server.\nAn unordered collection of other frames with a uniqueness …\nOptions for the set command.\nArguments passed to the SHUTDOWN command.\nA small string representing an error.\nA small string.\nSleep for some amount of time before sending the next …\nA slot range and associated cluster node information from …\nThe output of an entry in the slow queries log.\nSome value of type T.\nThe sort order for redis commands that take or return a …\nArguments to TERMS in FT.SPELLCHECK,\nStats describing a distribution of samples.\nA string value.\nA string value.\nAn argument representing a string or number.\nTCP configuration options.\nA timestamp used in most timeseries commands.\nTLS configuration for a client.\nAn enum for interacting with various TLS libraries and …\nAn optional enum used to describe how the client should …\nAn ON|OFF flag used with client tracking commands.\nConfiguration options for tracing.\nConfiguration options used to detect potentially …\nTry connecting to nodes specified in both the client’s …\nA string to be displayed without any escaping or filtering.\nSemVer version as defined by https://semver.org.\nArguments for WITHCURSOR in FT.AGGREGATE.\nStream cap arguments for XADD, XTRIM, etc.\nThe MAXLEN or MINID argument for a stream cap.\nRepresentation for the “=” or “~” operator in XADD…\nStream ID arguments for XADD, XREAD, etc.\nA struct representing the trailing optional arguments to …\nA generic helper type describing the top level response …\nA generic helper type describing the ID and associated map …\nMIN|MAX arguments for BZMPOP, etc.\nA wrapper struct for a range bound in a sorted set command.\nAn index, score, lexicographical, or +|-|+inf|-inf range …\nThe type of range interval bound.\nThe result of a ZSCAN operation.\nOptions for the ZRANGE (and related) commands.\nAttempt to add attributes to the frame, extending the …\nReturn the length of the inner array if the value is an …\nAttempt to convert the value to a bool.\nRead the key as a byte slice.\nRead the inner value as an array of bytes, if possible.\nParse and return the key as a Str without copying the …\nRead the inner value as a Str.\nRead and return the inner value as a f64, if possible.\nParse the value as the response from FUNCTION LIST, …\nConvert the value into a GeoPosition, if possible.\nRead and return the inner value as a i64, if possible.\nRead the key as a str slice if it can be parsed as a UTF8 …\nRead the inner value as a string slice.\nRead the key as a lossy UTF8 string with …\nRead the inner value as a string, using …\nRead and return the inner String if the value is a string …\nRead and return the inner value as a u64, if possible.\nRead and return the inner value as a usize, if possible.\nRead the number of reconnection attempts.\nAutomatically send CLIENT SETNAME on each connection …\nWhether the client should automatically pipeline commands …\nConfiguration options for backpressure features in the …\nThe default behavior of the client when a command is sent …\nWhether the command should block the connection while …\nThe minimum size, in bytes, of frames that should be …\nThe default capacity used when creating broadcast channels …\nCreate a new client.\nCreate a new exclusive client pool.\nCreate a new client pool.\nCreate a new sentinel client.\nCreate a new subscriber client.\nWhether to send CLIENT CACHING yes|no before the command.\nWhether the value can be hashed.\nThe channel on which the message was sent.\nThe amount of time to wait after a MOVED error is received …\nHash the key to find the associated cluster hash slot.\nThe cluster hashing policy to use, if applicable.\nThe cluster hashing policy to use, if any.\nThe cluster node that should receive the command.\nRead the host:port of the cluster node that owns the key …\nThe command name, sent directly to the server.\nCompare the major, minor, patch, and pre-release value of …\nThe number of times a command can fail with a replica …\nThe timeout to apply when attempting to create a new TCP …\nThe TLS connector from either native-tls or rustls.\nAttempt to convert the key to any type that implements …\nAttempt to convert this value to any value that implements …\nA lightweight function to create a Redis client from the …\nAn optional credential provider callback interface.\nRead the cursor returned from the last scan operation.\nAn optional database number that the client will …\nCreate a new builder instance with default config values …\nCreate a centralized config with default settings for a …\nCreate a new builder instance with default config values …\nCreate a clustered config with the same defaults as …\nAn optional timeout to apply to all commands.\nCreate a default TLS connector from the native-tls module.\nCreate a default TLS connector with the rustls module with …\nCreate a new Sleep policy with the legacy default values.\nSet the tracing::Level of spans under partial-tracing …\nWhether to disable the automatic backpressure features …\nDisable the CLUSTER INFO health check when initializing …\nWhether to enable tracing for this client.\nThe end of the hash slot range.\nSend EVALSHA to the server with the provided arguments.\nSend EVALSHA to the server with the provided arguments. …\nSet the non-null values from other onto self.\nWhether the client should return an error if it cannot …\nWhether the command should fail quickly if the connection …\nSend the fcall command via the provided client.\nSend the fcall_ro command via the provided client.\nRead the username and password that should be used in the …\nReturns whether the replica node mapping can be used when …\nReturns whether the replica node mapping can be used when …\nAn optional interface for filtering available replica …\nFind the key to hash with the provided arguments.\nRead the flags associated with the function.\nFlatten adjacent nested arrays to the provided depth.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a new routing table from the result of the …\nCreate a new Library with the provided code, loading it on …\nCreate a new builder instance from the provided client …\nCreate a new Script from a lua hash.\nCreate a new Script from a lua script.\nCreate a new Library with the associated name, inspecting …\nParse the value with context from the calling command.\nCreate a new RedisKey from static bytes without copying.\nCreate a new RedisValue::Bytes from a static byte slice …\nAn optimized way to convert from &'static str that avoids …\nCreate a new RedisKey from a &'static str without copying.\nCreate a new RedisValue::String from a static str without …\nParse the string representation of the flag.\nParse a URL string into a RedisConfig.\nCreate a centralized RedisConfig struct from a URL.\nCreate a clustered RedisConfig struct from a URL.\nCreate a sentinel RedisConfig struct from a URL.\nCreate a RedisConfig from a URL that connects via a Unix …\nSet the tracing::Level of spans under full-tracing feature.\nRead the functions contained within this library.\nRead the client config.\nRead the connection config.\nRead the performance config.\nRead the reconnection policy.\nRead the sentinel client config.\nFind the primary server that owns the provided hash slot.\nWhether the scan call will continue returning results. If …\nHash the provided arguments.\nCalculate the cluster hash slot for the provided key.\nThe hostname or IP address for the server.\nThe hostname for the sentinel node.\nThe hostname modification or mapping policy to use when …\nRead the server hosts or sentinel hosts if using the …\nThe internal ID assigned by the server.\nWhether the client should ignore errors from replicas that …\nRead the inner Bytes struct.\nTake the inner HashMap.\nThe timeout to apply when sending internal commands such …\nThe frequency at which the client checks for unresponsive …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert this value to an array if it’s an array or map.\nRead the inner bytes making up the key.\nConvert the value into a Bytes view.\nRead and return the inner data as a Str from the bytes …\nParse the value as the response to any of the relevant GEO …\nAttempt to convert the value into an integer, returning …\nConvert the value to JSON.\nAttempt to convert this value to a Redis map if it’s an …\nConvert the value to an array of bytes, if possible.\nConvert the array value to a set, if possible.\nConvert the key to a UTF8 string, if possible.\nRead and return the inner String if the value is a string …\nA utility function to convert the response from XAUTOCLAIM …\nA utility function to convert the response from XREAD or …\nA utility function to convert the response from XCLAIM, …\nConvert a RedisValue to Vec<(RedisValue, f64)>, if …\nWhether the value is an array or map.\nWhether the value is an array.\nWhether the value is a boolean value or can be parsed as a …\nCheck if the value is an array of bytes.\nWhether the config is for a centralized server.\nWhether the config uses a clustered deployment.\nWhether the inner value is a double or can be parsed as a …\nCheck if the value is an integer.\nWhether the value is a RedisMap.\nWhether the value is a RedisMap or an array with an even …\nCheck if the value is null.\nWhether the value is a simple string OK value.\nCheck if the value is a QUEUED response.\nWhether the config is for a centralized server behind a …\nCheck if the value is a string.\nWhether the config uses a Unix socket.\nSet the TCP keepalive values.\nRead the type of the value without any associated data.\nThe type of message subscription.\nWhether the client should lazily connect to replica nodes.\nRead the number of hash slot ranges in the cluster.\nRead the number of (key, value) pairs in the map.\nSet the SO_LINGER value.\nCall SCRIPT LOAD on all the associated servers. This must …\nRead the lua script contents.\nMap the provided IP address to a hostname that should be …\nSet the max number of write attempts for a command.\nThe maximum number of times the client will attempt to …\nLimit the size of the internal in-memory command queue.\nThe maximum number of frames that will be fed to a socket …\nThe maximum number of in-flight commands (per connection) …\nThe maximum number of times the client will attempt to …\nSet the max number of cluster redirections to follow for a …\nIf provided, the amount of time a frame can wait without a …\nAn optional mocking layer to intercept and process …\nRead the name of the function.\nRead the name of the library.\nCreate Version with an empty pre-release and build …\nCreate a new Server from parts.\nCreate a new empty routing table.\nCreate a new empty map.\nCreate a new custom command.\nCreate a new Function.\nCreate a new centralized config with the provided host and …\nCreate a new clustered config with the provided set of …\nCreate a new reconnect policy with a constant backoff.\nCreate a new reconnect policy with an exponential backoff.\nCreate a new reconnect policy with a linear backoff.\nCreate a new RedisValue with the OK status.\nCreate a new sentinel config with the provided set of …\nCreate a new custom command specified by a &'static str.\nCreate a new server config for a connected Unix socket.\nCreate a new Server from parts with a TLS server name.\nMove on to the next page of results from the SCAN …\nCalculate the next delay, incrementing attempts in the …\nWhether to skip backpressure checks for a command.\nSet the TCP_NODELAY value.\nCreate Version by parsing from string representation.\nAn optional password for the client to use when …\nAn optional password for the client to use when …\nThe backpressure policy to apply when the max number of …\nThe port for the server.\nThe port on which the sentinel node is listening.\nPrint the contents of the routing table as a …\nThe primary server owner.\nWhether the client should use the associated primary node …\nRead a random primary node from the cluster cache.\nRead a random primary node hash slot range from the …\nErrors that should trigger reconnection logic.\nAn unexpected NOAUTH error is treated the same as a …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfigure the client to call fetch and send AUTH or HELLO …\nConfiguration options for replica nodes.\nRead the replicas associated with the provided primary …\nReplica node owners.\nResolve a hostname.\nReturn a reference to the last page of results.\nThe server that sent the message.\nConnection configuration for the server(s).\nSet the ClusterDiscoveryPolicy, if possible.\nOverwrite the client config on the builder.\nOverwrite the connection config on the builder.\nSet the amount of jitter to add to each reconnect delay.\nOverwrite the performance config on the builder.\nOverwrite the reconnection policy on the builder.\nOverwrite the sentinel config on the builder.\nRead the SHA-1 hash for the script.\nRead the hash slot ranges in the cluster.\nThe start of the hash slot range.\nReplace this key with an empty byte array, returning the …\nReplace the value an empty map, returning the original …\nReplace this value with RedisValue::Null, returning the …\nTake ownership over the results of the SCAN operation. …\nTCP connection options.\nSet the timeout duration for a command.\nTLS configuration options.\nTLS configuration fields. If None the connection will not …\nThe server name used during the TLS handshake.\nCopy the frame contents into a new OwnedFrame.\nConvert to the string representation of the flag.\nTracing configuration options.\nWhether to enable tracing for this client.\nSet the IP_TTL value.\nRead a set of unique hash slots that each map to a …\nRead the set of unique primary nodes in the cluster.\nUnresponsive connection configuration options.\nAn optional ACL username for the client to use when …\nAn optional ACL username for the client to use when …\nWhether the client uses a native-tls connector.\nWhether the client uses a rustls connector.\nWhether the client uses TLS.\nThe message contents.\nThe protocol version to use when communicating with the …\nModify the client config in place, creating a new one with …\nModify the connection config in place, creating a new one …\nModify the performance config in place, creating a new one …\nModify the sentinel config in place, creating a new one …\nAn empty array is equivalent to GROUPBY 0\nDisable the backpressure scaling logic used to calculate …\nThe minimum amount of time to wait when applying …\nThe known cluster node Server identifiers.\nAn array of Server identifiers for each known sentinel …\nAn optional password for the client to use when …\nThe path to the Unix socket.\nThe cluster discovery policy to use when connecting or …\nThe Server identifier.\nThe service name for primary/main instances.\nAn optional ACL username for the client to use when …\nA convenience constant for None values used as generic …\nConvert an f64 to a redis string, supporting “+inf” …\nGroup the provided arguments by their cluster hash slot.\nMap a key to the corresponding cluster key slot.\nConvert a redis string to an f64, supporting “+inf” …\nCalculate the SHA1 hash output as a hex string. This is …\nCreate a Bytes from static bytes without copying.\nCreate a Str from a static str slice without copying.") \ No newline at end of file diff --git a/docs/tokio/src-files.js b/docs/tokio/src-files.js index 35d56c9e..c4b1f38a 100644 --- a/docs/tokio/src-files.js +++ b/docs/tokio/src-files.js @@ -1,3 +1,3 @@ -var srcIndex = new Map(JSON.parse('[["fred",["",[["clients",[],["mod.rs","options.rs","pipeline.rs","pool.rs","pubsub.rs","redis.rs","replica.rs","sentinel.rs","transaction.rs"]],["commands",[["impls",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs"]],["interfaces",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","metrics.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs","transactions.rs"]]],["mod.rs"]],["modules",[],["backchannel.rs","inner.rs","metrics.rs","mocks.rs","mod.rs","response.rs"]],["monitor",[],["mod.rs","parser.rs","utils.rs"]],["protocol",[],["cluster.rs","codec.rs","command.rs","connection.rs","debug.rs","hashers.rs","mod.rs","responders.rs","tls.rs","types.rs","utils.rs"]],["router",[],["centralized.rs","clustered.rs","commands.rs","mod.rs","reader.rs","replicas.rs","responses.rs","sentinel.rs","transactions.rs","types.rs","utils.rs"]],["trace",[],["disabled.rs","enabled.rs","mod.rs"]],["types",[],["args.rs","builder.rs","client.rs","cluster.rs","config.rs","from_tuple.rs","geo.rs","lists.rs","misc.rs","mod.rs","multiple.rs","redisearch.rs","scan.rs","scripts.rs","sorted_sets.rs","streams.rs","timeseries.rs"]]],["_tokio.rs","error.rs","interfaces.rs","lib.rs","macros.rs","utils.rs"]]]]')); +var srcIndex = new Map(JSON.parse('[["fred",["",[["clients",[],["mod.rs","options.rs","pipeline.rs","pool.rs","pubsub.rs","redis.rs","replica.rs","sentinel.rs","transaction.rs"]],["commands",[["impls",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs"]],["interfaces",[],["acl.rs","client.rs","cluster.rs","config.rs","geo.rs","hashes.rs","hyperloglog.rs","keys.rs","lists.rs","lua.rs","memory.rs","metrics.rs","mod.rs","pubsub.rs","redis_json.rs","redisearch.rs","scan.rs","sentinel.rs","server.rs","sets.rs","slowlog.rs","sorted_sets.rs","streams.rs","strings.rs","timeseries.rs","tracking.rs","transactions.rs"]]],["mod.rs"]],["modules",[],["backchannel.rs","inner.rs","metrics.rs","mocks.rs","mod.rs","response.rs"]],["monitor",[],["mod.rs","parser.rs","utils.rs"]],["protocol",[],["cluster.rs","codec.rs","command.rs","connection.rs","debug.rs","hashers.rs","mod.rs","responders.rs","tls.rs","types.rs","utils.rs"]],["router",[],["centralized.rs","clustered.rs","commands.rs","mod.rs","replicas.rs","responses.rs","sentinel.rs","transactions.rs","types.rs","utils.rs"]],["trace",[],["disabled.rs","enabled.rs","mod.rs"]],["types",[],["args.rs","builder.rs","client.rs","cluster.rs","config.rs","from_tuple.rs","geo.rs","lists.rs","misc.rs","mod.rs","multiple.rs","redisearch.rs","scan.rs","scripts.rs","sorted_sets.rs","streams.rs","timeseries.rs"]]],["_tokio.rs","error.rs","interfaces.rs","lib.rs","macros.rs","utils.rs"]]]]')); createSrcSidebar(); -//{"start":36,"fragment_lengths":[1670]} \ No newline at end of file +//{"start":36,"fragment_lengths":[1658]} \ No newline at end of file diff --git a/docs/tokio/src/fred/clients/transaction.rs.html b/docs/tokio/src/fred/clients/transaction.rs.html index f7f08185..f5a92574 100644 --- a/docs/tokio/src/fred/clients/transaction.rs.html +++ b/docs/tokio/src/fred/clients/transaction.rs.html @@ -345,6 +345,23 @@ 345 346 347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces,
    @@ -357,38 +374,43 @@
         responders::ResponseKind,
         utils as protocol_utils,
       },
    -  runtime::{oneshot_channel, Mutex, RefCount},
    +  runtime::{oneshot_channel, AtomicBool, Mutex, RefCount},
       types::{FromRedis, MultipleKeys, Options, RedisKey, Server},
       utils,
     };
     use std::{collections::VecDeque, fmt};
     
    +struct State {
    +  id:        u64,
    +  commands:  Mutex<VecDeque<RedisCommand>>,
    +  watched:   Mutex<VecDeque<RedisKey>>,
    +  hash_slot: Mutex<Option<u16>>,
    +  pipelined: AtomicBool,
    +}
    +
     /// A cheaply cloneable transaction block.
     #[derive(Clone)]
    -#[cfg(feature = "transactions")]
     #[cfg_attr(docsrs, doc(cfg(feature = "transactions")))]
     pub struct Transaction {
    -  id:        u64,
    -  inner:     RefCount<RedisClientInner>,
    -  commands:  RefCount<Mutex<VecDeque<RedisCommand>>>,
    -  watched:   RefCount<Mutex<VecDeque<RedisKey>>>,
    -  hash_slot: RefCount<Mutex<Option<u16>>>,
    +  inner: RefCount<RedisClientInner>,
    +  state: RefCount<State>,
     }
     
     impl fmt::Debug for Transaction {
       fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         f.debug_struct("Transaction")
           .field("client", &self.inner.id)
    -      .field("id", &self.id)
    -      .field("length", &self.commands.lock().len())
    -      .field("hash_slot", &self.hash_slot.lock())
    +      .field("id", &self.state.id)
    +      .field("length", &self.state.commands.lock().len())
    +      .field("hash_slot", &self.state.hash_slot.lock())
    +      .field("pipelined", &utils::read_bool_atomic(&self.state.pipelined))
           .finish()
       }
     }
     
     impl PartialEq for Transaction {
       fn eq(&self, other: &Self) -> bool {
    -    self.id == other.id
    +    self.state.id == other.state.id
       }
     }
     
    @@ -420,7 +442,7 @@
           let _ = tx.send(Ok(protocol_utils::queued_frame()));
         }
     
    -    self.commands.lock().push_back(command);
    +    self.state.commands.lock().push_back(command);
         Ok(())
       }
     }
    @@ -485,11 +507,14 @@
       /// Create a new transaction.
       pub(crate) fn from_inner(inner: &RefCount<RedisClientInner>) -> Self {
         Transaction {
    -      inner:     inner.clone(),
    -      commands:  RefCount::new(Mutex::new(VecDeque::new())),
    -      watched:   RefCount::new(Mutex::new(VecDeque::new())),
    -      hash_slot: RefCount::new(Mutex::new(None)),
    -      id:        utils::random_u64(u64::MAX),
    +      inner: inner.clone(),
    +      state: RefCount::new(State {
    +        commands:  Mutex::new(VecDeque::new()),
    +        watched:   Mutex::new(VecDeque::new()),
    +        hash_slot: Mutex::new(None),
    +        pipelined: AtomicBool::new(false),
    +        id:        utils::random_u64(u64::MAX),
    +      }),
         }
       }
     
    @@ -500,7 +525,7 @@
         }
     
         if let Some(slot) = command.cluster_hash() {
    -      if let Some(old_slot) = utils::read_mutex(&self.hash_slot) {
    +      if let Some(old_slot) = utils::read_mutex(&self.state.hash_slot) {
             let (old_server, server) = self.inner.with_cluster_state(|state| {
               debug!(
                 "{}: Checking transaction hash slots: {}, {}",
    @@ -517,7 +542,7 @@
               ));
             }
           } else {
    -        utils::set_mutex(&self.hash_slot, Some(slot));
    +        utils::set_mutex(&self.state.hash_slot, Some(slot));
           }
         }
     
    @@ -537,24 +562,35 @@
     
       /// An ID identifying the underlying transaction state.
       pub fn id(&self) -> u64 {
    -    self.id
    +    self.state.id
       }
     
       /// Clear the internal command buffer and watched keys.
       pub fn reset(&self) {
    -    self.commands.lock().clear();
    -    self.watched.lock().clear();
    -    self.hash_slot.lock().take();
    +    self.state.commands.lock().clear();
    +    self.state.watched.lock().clear();
    +    self.state.hash_slot.lock().take();
       }
     
       /// Read the number of commands queued to run.
       pub fn len(&self) -> usize {
    -    self.commands.lock().len()
    +    self.state.commands.lock().len()
    +  }
    +
    +  /// Whether to pipeline commands in the transaction.
    +  ///
    +  /// Note: pipelined transactions should only be used with Redis version >=2.6.5.
    +  pub fn pipeline(&self, val: bool) {
    +    utils::set_bool_atomic(&self.state.pipelined, val);
       }
     
       /// Read the number of keys to `WATCH` before the starting the transaction.
    +  #[deprecated(
    +    since = "9.2.0",
    +    note = "Please use `WATCH` with clients from an `ExclusivePool` instead."
    +  )]
       pub fn watched_len(&self) -> usize {
    -    self.watched.lock().len()
    +    self.state.watched.lock().len()
       }
     
       /// Executes all previously queued commands in a transaction.
    @@ -586,35 +622,48 @@
       {
         let commands = {
           self
    -        .commands
    +        .state
    +        .commands
             .lock()
             .iter()
             .map(|cmd| cmd.duplicate(ResponseKind::Skip))
             .collect()
         };
    -    let watched = { self.watched.lock().iter().cloned().collect() };
    -    let hash_slot = utils::read_mutex(&self.hash_slot);
    -    exec(&self.inner, commands, watched, hash_slot, abort_on_error, self.id)
    -      .await?
    -      .convert()
    +    let pipelined = utils::read_bool_atomic(&self.state.pipelined);
    +    let hash_slot = utils::read_mutex(&self.state.hash_slot);
    +
    +    exec(
    +      &self.inner,
    +      commands,
    +      hash_slot,
    +      abort_on_error,
    +      pipelined,
    +      self.state.id,
    +    )
    +    .await?
    +    .convert()
       }
     
       /// Send the `WATCH` command with the provided keys before starting the transaction.
    +  #[deprecated(
    +    since = "9.2.0",
    +    note = "Please use `WATCH` with clients from an `ExclusivePool` instead."
    +  )]
       pub fn watch_before<K>(&self, keys: K)
       where
         K: Into<MultipleKeys>,
       {
    -    self.watched.lock().extend(keys.into().inner());
    +    self.state.watched.lock().extend(keys.into().inner());
       }
     
       /// Read the hash slot against which this transaction will run, if known.  
       pub fn hash_slot(&self) -> Option<u16> {
    -    utils::read_mutex(&self.hash_slot)
    +    utils::read_mutex(&self.state.hash_slot)
       }
     
       /// Read the server ID against which this transaction will run, if known.
       pub fn cluster_node(&self) -> Option<Server> {
    -    utils::read_mutex(&self.hash_slot).and_then(|slot| {
    +    utils::read_mutex(&self.state.hash_slot).and_then(|slot| {
           self
             .inner
             .with_cluster_state(|state| Ok(state.get_server(slot).cloned()))
    @@ -627,9 +676,9 @@
     async fn exec(
       inner: &RefCount<RedisClientInner>,
       commands: VecDeque<RedisCommand>,
    -  watched: VecDeque<RedisKey>,
       hash_slot: Option<u16>,
       abort_on_error: bool,
    +  pipelined: bool,
       id: u64,
     ) -> Result<RedisValue, RedisError> {
       if commands.is_empty() {
    @@ -657,33 +706,18 @@
           command
         })
         .collect();
    -  // collapse the watched keys into one command
    -  let watched = if watched.is_empty() {
    -    None
    -  } else {
    -    let args: Vec<RedisValue> = watched.into_iter().map(|k| k.into()).collect();
    -    let mut watch_cmd = RedisCommand::new(RedisCommandKind::Watch, args);
    -    watch_cmd.can_pipeline = false;
    -    watch_cmd.skip_backpressure = true;
    -    watch_cmd.transaction_id = Some(id);
    -    if let Some(hash_slot) = hash_slot.as_ref() {
    -      watch_cmd.hasher = ClusterHash::Custom(*hash_slot);
    -    }
    -    Some(watch_cmd)
    -  };
     
       _trace!(
         inner,
    -    "Sending transaction {} with {} commands ({} watched) to router.",
    +    "Sending transaction {} with {} commands to router.",
         id,
         commands.len(),
    -    watched.as_ref().map(|c| c.args().len()).unwrap_or(0)
       );
       let command = RouterCommand::Transaction {
         id,
         tx,
         commands,
    -    watched,
    +    pipelined,
         abort_on_error,
       };
       let timeout_dur = trx_options.timeout.unwrap_or_else(|| inner.default_command_timeout());
    diff --git a/docs/tokio/src/fred/modules/mocks.rs.html b/docs/tokio/src/fred/modules/mocks.rs.html
    index 1a425093..e89ac0c8 100644
    --- a/docs/tokio/src/fred/modules/mocks.rs.html
    +++ b/docs/tokio/src/fred/modules/mocks.rs.html
    @@ -406,6 +406,22 @@
     406
     407
     408
    +409
    +410
    +411
    +412
    +413
    +414
    +415
    +416
    +417
    +418
    +419
    +420
    +421
    +422
    +423
    +424
     
    //! An interface for mocking Redis commands.
     //!
     //! There are several patterns for utilizing a mocking layer in tests. In some cases a simple "echo" interface is
    @@ -736,10 +752,10 @@
         interfaces::{ClientLike, KeysInterface},
         mocks::{Buffer, Echo, Mocks, SimpleMap},
         prelude::Expiration,
    +    runtime::JoinHandle,
         types::{RedisConfig, RedisValue, SetOptions},
       };
       use std::sync::Arc;
    -  use tokio::task::JoinHandle;
     
       async fn create_mock_client(mocks: Arc<dyn Mocks>) -> (RedisClient, JoinHandle<Result<(), RedisError>>) {
         let config = RedisConfig {
    @@ -813,5 +829,21 @@
         ];
         assert_eq!(buffer.take(), expected);
       }
    +
    +  #[tokio::test]
    +  async fn should_mock_pipelines() {
    +    let (client, _) = create_mock_client(Arc::new(Echo)).await;
    +
    +    let pipeline = client.pipeline();
    +    pipeline.get::<(), _>("foo").await.unwrap();
    +    pipeline.get::<(), _>("bar").await.unwrap();
    +
    +    let all: Vec<Vec<String>> = pipeline.all().await.unwrap();
    +    assert_eq!(all, vec![vec!["foo"], vec!["bar"]]);
    +    let try_all = pipeline.try_all::<Vec<String>>().await;
    +    assert_eq!(try_all, vec![Ok(vec!["foo".to_string()]), Ok(vec!["bar".to_string()])]);
    +    let last: Vec<String> = pipeline.last().await.unwrap();
    +    assert_eq!(last, vec!["bar"]);
    +  }
     }
     

    \ No newline at end of file diff --git a/docs/tokio/src/fred/protocol/command.rs.html b/docs/tokio/src/fred/protocol/command.rs.html index 63a8be40..c1a2be12 100644 --- a/docs/tokio/src/fred/protocol/command.rs.html +++ b/docs/tokio/src/fred/protocol/command.rs.html @@ -2283,6 +2283,14 @@ 2283 2284 2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -4108,6 +4116,14 @@
         }
       }
     
    +  pub fn in_pipelined_transaction(&self) -> bool {
    +    self.transaction_id.is_some() && self.response.is_buffer()
    +  }
    +
    +  pub fn in_non_pipelined_transaction(&self) -> bool {
    +    self.transaction_id.is_some() && !self.response.is_buffer()
    +  }
    +
       pub fn decr_check_redirections(&mut self) -> Result<(), RedisError> {
         if self.redirections_remaining == 0 {
           Err(RedisError::new(RedisErrorKind::Unknown, "Too many redirections."))
    @@ -4376,8 +4392,8 @@
       Transaction {
         id:             u64,
         commands:       Vec<RedisCommand>,
    -    watched:        Option<RedisCommand>,
         abort_on_error: bool,
    +    pipelined:      bool,
         tx:             ResponseSender,
       },
       /// Retry a command after a `MOVED` error.
    diff --git a/docs/tokio/src/fred/protocol/responders.rs.html b/docs/tokio/src/fred/protocol/responders.rs.html
    index 0bc0f252..b4ae4b3d 100644
    --- a/docs/tokio/src/fred/protocol/responders.rs.html
    +++ b/docs/tokio/src/fred/protocol/responders.rs.html
    @@ -612,6 +612,11 @@
     612
     613
     614
    +615
    +616
    +617
    +618
    +619
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -782,6 +787,11 @@
           ResponseKind::ValueScan(_) | ResponseKind::KeyScan(_) => 1,
         }
       }
    +
    +  /// Whether the responder is a `ResponseKind::Buffer`.
    +  pub fn is_buffer(&self) -> bool {
    +    matches!(self, ResponseKind::Buffer { .. })
    +  }
     }
     
     #[cfg(feature = "metrics")]
    diff --git a/docs/tokio/src/fred/router/centralized.rs.html b/docs/tokio/src/fred/router/centralized.rs.html
    index 02460a03..0d0e7803 100644
    --- a/docs/tokio/src/fred/router/centralized.rs.html
    +++ b/docs/tokio/src/fred/router/centralized.rs.html
    @@ -221,6 +221,8 @@
     221
     222
     223
    +224
    +225
     

    use crate::{
       error::RedisErrorKind,
       modules::inner::RedisClientInner,
    @@ -363,7 +365,10 @@
       }
       responses::check_and_set_unblocked_flag(inner, &command).await;
     
    -  if command.transaction_id.is_some() {
    +  // non-pipelined transactions use ResponseKind::Skip, pipelined ones use a buffer. non-pipelined transactions
    +  // need to retry commands in a special way so this logic forwards the result via the latest command's router
    +  // response channel and exits early. pipelined transactions use the normal buffered response process below.
    +  if command.in_non_pipelined_transaction() {
         if let Some(error) = protocol_utils::frame_to_error(&frame) {
           #[allow(unused_mut)]
           if let Some(mut tx) = command.take_router_tx() {
    @@ -379,8 +384,7 @@
         }
       }
     
    -  // TODO clean this up
    -  _trace!(inner, "Handling centralized response kind: {:?}", command.response);
    +  _trace!(inner, "Handling centralized response kind: {:?}", command.response);
       match command.take_response() {
         ResponseKind::Skip | ResponseKind::Respond(None) => {
           command.respond_to_router(inner, RouterResponse::Continue);
    diff --git a/docs/tokio/src/fred/router/clustered.rs.html b/docs/tokio/src/fred/router/clustered.rs.html
    index 68c7ce96..601790d4 100644
    --- a/docs/tokio/src/fred/router/clustered.rs.html
    +++ b/docs/tokio/src/fred/router/clustered.rs.html
    @@ -755,6 +755,15 @@
     755
     756
     757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces,
    @@ -1059,9 +1068,33 @@
       spawn(reader_ft)
     }
     
    +/// Parse a cluster redirection frame from the provided server, returning the new destination node info.
    +pub fn parse_cluster_error_frame(
    +  inner: &RefCount<RedisClientInner>,
    +  frame: &Resp3Frame,
    +  server: &Server,
    +) -> Result<(ClusterErrorKind, u16, Server), RedisError> {
    +  let (kind, slot, server_str) = match frame.as_str() {
    +    Some(data) => protocol_utils::parse_cluster_error(data)?,
    +    None => return Err(RedisError::new(RedisErrorKind::Protocol, "Invalid cluster error.")),
    +  };
    +  let server = match Server::from_parts(&server_str, &server.host) {
    +    Some(server) => server,
    +    None => {
    +      _warn!(inner, "Invalid server field in cluster error: {}", server_str);
    +      return Err(RedisError::new(
    +        RedisErrorKind::Protocol,
    +        "Invalid cluster redirection error.",
    +      ));
    +    },
    +  };
    +
    +  Ok((kind, slot, server))
    +}
    +
     /// Send a MOVED or ASK command to the router, using the router channel if possible and falling back on the
     /// command queue if appropriate.
    -// Cluster errors within a transaction can only be handled via the blocking router channel.
    +// Cluster errors within a non-pipelined transaction can only be handled via the blocking router channel.
     fn process_cluster_error(
       inner: &RefCount<RedisClientInner>,
       server: &Server,
    @@ -1071,30 +1104,11 @@
       // commands are not redirected to replica nodes
       command.use_replica = false;
     
    -  let (kind, slot, server_str) = match frame.as_str() {
    -    Some(data) => match protocol_utils::parse_cluster_error(data) {
    -      Ok(result) => result,
    -      Err(e) => {
    -        command.respond_to_router(inner, RouterResponse::Continue);
    -        command.respond_to_caller(Err(e));
    -        return;
    -      },
    -    },
    -    None => {
    -      command.respond_to_router(inner, RouterResponse::Continue);
    -      command.respond_to_caller(Err(RedisError::new(RedisErrorKind::Protocol, "Invalid cluster error.")));
    -      return;
    -    },
    -  };
    -  let server = match Server::from_parts(&server_str, &server.host) {
    -    Some(server) => server,
    -    None => {
    -      _warn!(inner, "Invalid server field in cluster error: {}", server_str);
    +  let (kind, slot, server) = match parse_cluster_error_frame(inner, &frame, server) {
    +    Ok(results) => results,
    +    Err(e) => {
           command.respond_to_router(inner, RouterResponse::Continue);
    -      command.respond_to_caller(Err(RedisError::new(
    -        RedisErrorKind::Cluster,
    -        "Invalid cluster redirection error.",
    -      )));
    +      command.respond_to_caller(Err(e));
           return;
         },
       };
    @@ -1198,7 +1212,8 @@
       }
       responses::check_and_set_unblocked_flag(inner, &command).await;
     
    -  if frame.is_redirection() {
    +  // pipelined transactions defer cluster redirections until after `EXECABORT` is received
    +  if frame.is_redirection() && !command.in_pipelined_transaction() {
         _debug!(
           inner,
           "Recv MOVED or ASK error for `{}` from {}: {:?}",
    @@ -1210,7 +1225,10 @@
         return Ok(());
       }
     
    -  if command.transaction_id.is_some() {
    +  // non-pipelined transactions use ResponseKind::Skip, pipelined ones use a buffer. non-pipelined transactions
    +  // need to retry commands in a special way so this logic forwards the result via the latest command's router
    +  // response channel and exits early. pipelined transactions use the normal buffered response process below.
    +  if command.in_non_pipelined_transaction() {
         if let Some(error) = protocol_utils::frame_to_error(&frame) {
           #[allow(unused_mut)]
           if let Some(mut tx) = command.take_router_tx() {
    diff --git a/docs/tokio/src/fred/router/commands.rs.html b/docs/tokio/src/fred/router/commands.rs.html
    index df589199..11ddfab8 100644
    --- a/docs/tokio/src/fred/router/commands.rs.html
    +++ b/docs/tokio/src/fred/router/commands.rs.html
    @@ -731,6 +731,46 @@
     731
     732
     733
    +734
    +735
    +736
    +737
    +738
    +739
    +740
    +741
    +742
    +743
    +744
    +745
    +746
    +747
    +748
    +749
    +750
    +751
    +752
    +753
    +754
    +755
    +756
    +757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
    +767
    +768
    +769
    +770
    +771
    +772
    +773
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       modules::inner::{CommandReceiver, RedisClientInner},
    @@ -1267,11 +1307,17 @@
         #[cfg(feature = "transactions")]
         RouterCommand::Transaction {
           commands,
    -      watched,
    +      pipelined,
           id,
           tx,
           abort_on_error,
    -    } => transactions::run(inner, router, commands, watched, id, abort_on_error, tx).await,
    +    } => {
    +      if pipelined {
    +        transactions::exec::pipelined(inner, router, commands, id, tx).await
    +      } else {
    +        transactions::exec::non_pipelined(inner, router, commands, id, abort_on_error, tx).await
    +      }
    +    },
         RouterCommand::Pipeline { commands } => process_pipeline(inner, router, commands).await,
         RouterCommand::Command(command) => process_normal_command(inner, router, command).await,
         RouterCommand::Connections { tx } => process_connections(inner, router, tx),
    @@ -1374,7 +1420,11 @@
     #[allow(unused_mut)]
     mod mocking {
       use super::*;
    -  use crate::{modules::mocks::Mocks, protocol::utils as protocol_utils};
    +  use crate::{
    +    modules::mocks::Mocks,
    +    protocol::{responders::ResponseKind, utils as protocol_utils},
    +  };
    +  use redis_protocol::resp3::types::BytesFrame;
       use std::sync::Arc;
     
       /// Process any kind of router command.
    @@ -1395,12 +1445,42 @@
               },
             }
           },
    -      RouterCommand::Pipeline { commands } => {
    +      RouterCommand::Pipeline { mut commands } => {
    +        let mut results = Vec::with_capacity(commands.len());
    +        let response = commands.last_mut().map(|c| c.take_response());
    +        let uses_all_results = matches!(response, Some(ResponseKind::Buffer { .. }));
    +        let tx = response.and_then(|mut k| k.take_response_tx());
    +
             for mut command in commands.into_iter() {
    -          let mocked = command.to_mocked();
    -          let result = mocks.process_command(mocked).map(protocol_utils::mocked_value_to_frame);
    +          let result = mocks
    +            .process_command(command.to_mocked())
    +            .map(protocol_utils::mocked_value_to_frame);
    +
    +          results.push(result);
    +        }
    +        if let Some(mut tx) = tx {
    +          let mut frames = Vec::with_capacity(results.len());
    +
    +          for frame in results.into_iter() {
    +            match frame {
    +              Ok(frame) => frames.push(frame),
    +              Err(err) => {
    +                frames.push(Resp3Frame::SimpleError {
    +                  data:       err.details().into(),
    +                  attributes: None,
    +                });
    +              },
    +            }
    +          }
     
    -          command.respond_to_caller(result);
    +          if uses_all_results {
    +            let _ = tx.send(Ok(BytesFrame::Array {
    +              data:       frames,
    +              attributes: None,
    +            }));
    +          } else {
    +            let _ = tx.send(Ok(frames.pop().unwrap_or(BytesFrame::Null)));
    +          }
             }
     
             Ok(())
    diff --git a/docs/tokio/src/fred/router/mod.rs.html b/docs/tokio/src/fred/router/mod.rs.html
    index 025d743c..12686192 100644
    --- a/docs/tokio/src/fred/router/mod.rs.html
    +++ b/docs/tokio/src/fred/router/mod.rs.html
    @@ -967,7 +967,6 @@
     967
     968
     969
    -970
     
    use crate::{
       error::{RedisError, RedisErrorKind},
       modules::inner::RedisClientInner,
    @@ -999,7 +998,6 @@
     pub mod centralized;
     pub mod clustered;
     pub mod commands;
    -pub mod reader;
     pub mod replicas;
     pub mod responses;
     pub mod sentinel;
    diff --git a/docs/tokio/src/fred/router/reader.rs.html b/docs/tokio/src/fred/router/reader.rs.html
    deleted file mode 100644
    index b7f0e738..00000000
    --- a/docs/tokio/src/fred/router/reader.rs.html
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -reader.rs - source
    1
    -
    
    -
    \ No newline at end of file diff --git a/docs/tokio/src/fred/router/transactions.rs.html b/docs/tokio/src/fred/router/transactions.rs.html index 8fce1217..775f1adf 100644 --- a/docs/tokio/src/fred/router/transactions.rs.html +++ b/docs/tokio/src/fred/router/transactions.rs.html @@ -338,6 +338,185 @@ 338 339 340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519

    use crate::{
       error::{RedisError, RedisErrorKind},
       interfaces::Resp3Frame,
    @@ -345,12 +524,15 @@
       protocol::{
         command::{ClusterErrorKind, RedisCommand, RedisCommandKind, ResponseSender, RouterReceiver, RouterResponse},
         responders::ResponseKind,
    +    utils::pretty_error,
       },
    -  router::{utils, Router, Written},
    -  runtime::RefCount,
    +  router::{clustered::parse_cluster_error_frame, utils, Router, Written},
    +  runtime::{oneshot_channel, AtomicUsize, Mutex, RefCount},
       types::{ClusterHash, Server},
       utils as client_utils,
     };
    +use redis_protocol::resp3::types::{FrameKind, Resp3Frame as _Resp3Frame};
    +use std::iter::repeat;
     
     /// An internal enum describing the result of an attempt to send a transaction command.
     #[derive(Debug)]
    @@ -379,7 +561,7 @@
       server: &Server,
       command: RedisCommand,
       abort_on_error: bool,
    -  rx: RouterReceiver,
    +  rx: Option<RouterReceiver>,
     ) -> Result<TransactionResponse, RedisError> {
       _trace!(
         inner,
    @@ -402,30 +584,34 @@
         return Ok(TransactionResponse::Retry(e));
       }
     
    -  match client_utils::timeout(rx, timeout_dur).await? {
    -    RouterResponse::Continue => Ok(TransactionResponse::Continue),
    -    RouterResponse::Ask((slot, server, _)) => {
    -      Ok(TransactionResponse::Redirection((ClusterErrorKind::Ask, slot, server)))
    -    },
    -    RouterResponse::Moved((slot, server, _)) => Ok(TransactionResponse::Redirection((
    -      ClusterErrorKind::Moved,
    -      slot,
    -      server,
    -    ))),
    -    RouterResponse::ConnectionClosed((err, _)) => Ok(TransactionResponse::Retry(err)),
    -    RouterResponse::TransactionError((err, _)) => {
    -      if abort_on_error {
    -        Err(err)
    -      } else {
    -        Ok(TransactionResponse::Continue)
    -      }
    -    },
    -    RouterResponse::TransactionResult(frame) => Ok(TransactionResponse::Finished(frame)),
    +  if let Some(rx) = rx {
    +    match client_utils::timeout(rx, timeout_dur).await? {
    +      RouterResponse::Continue => Ok(TransactionResponse::Continue),
    +      RouterResponse::Ask((slot, server, _)) => {
    +        Ok(TransactionResponse::Redirection((ClusterErrorKind::Ask, slot, server)))
    +      },
    +      RouterResponse::Moved((slot, server, _)) => Ok(TransactionResponse::Redirection((
    +        ClusterErrorKind::Moved,
    +        slot,
    +        server,
    +      ))),
    +      RouterResponse::ConnectionClosed((err, _)) => Ok(TransactionResponse::Retry(err)),
    +      RouterResponse::TransactionError((err, _)) => {
    +        if abort_on_error {
    +          Err(err)
    +        } else {
    +          Ok(TransactionResponse::Continue)
    +        }
    +      },
    +      RouterResponse::TransactionResult(frame) => Ok(TransactionResponse::Finished(frame)),
    +    }
    +  } else {
    +    Ok(TransactionResponse::Continue)
       }
     }
     
     /// Send EXEC to the provided server.
    -async fn send_exec(
    +async fn send_non_pipelined_exec(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
       server: &Server,
    @@ -437,11 +623,11 @@
       command.transaction_id = Some(id);
       let rx = command.create_router_channel();
     
    -  write_command(inner, router, server, command, true, rx).await
    +  write_command(inner, router, server, command, true, Some(rx)).await
     }
     
     /// Send DISCARD to the provided server.
    -async fn send_discard(
    +async fn send_non_pipelined_discard(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
       server: &Server,
    @@ -453,7 +639,7 @@
       command.transaction_id = Some(id);
       let rx = command.create_router_channel();
     
    -  write_command(inner, router, server, command, true, rx).await
    +  write_command(inner, router, server, command, true, Some(rx)).await
     }
     
     fn update_hash_slot(commands: &mut [RedisCommand], slot: u16) {
    @@ -462,79 +648,178 @@
       }
     }
     
    -/// Run the transaction, following cluster redirects and reconnecting as needed.
    -// this would be a lot cleaner with GATs if we could abstract the inner loops with async closures
    -#[allow(unused_mut)]
    -pub async fn run(
    +/// Find the server that should receive the transaction, creating connections if needed.
    +async fn find_or_create_connection(
       inner: &RefCount<RedisClientInner>,
       router: &mut Router,
    -  mut commands: Vec<RedisCommand>,
    -  watched: Option<RedisCommand>,
    +  command: &RedisCommand,
    +) -> Result<Option<Server>, RedisError> {
    +  if let Some(server) = command.cluster_node.as_ref() {
    +    Ok(Some(server.clone()))
    +  } else {
    +    match router.find_connection(command) {
    +      Some(server) => Ok(Some(server.clone())),
    +      None => {
    +        if inner.config.server.is_clustered() {
    +          // optimistically sync the cluster, then fall back to a full reconnect
    +          if router.sync_cluster().await.is_err() {
    +            utils::delay_cluster_sync(inner).await?;
    +            utils::reconnect_with_policy(inner, router).await?
    +          }
    +        } else {
    +          utils::reconnect_with_policy(inner, router).await?
    +        };
    +
    +        Ok(None)
    +      },
    +    }
    +  }
    +}
    +
    +fn build_pipeline(
    +  commands: &[RedisCommand],
    +  response: ResponseKind,
       id: u64,
    -  abort_on_error: bool,
    -  mut tx: ResponseSender,
    -) -> Result<(), RedisError> {
    -  if commands.is_empty() {
    -    let _ = tx.send(Ok(Resp3Frame::Null));
    -    return Ok(());
    +) -> Result<Vec<RedisCommand>, RedisError> {
    +  let mut pipeline = Vec::with_capacity(commands.len() + 1);
    +  let mut exec = RedisCommand::new(RedisCommandKind::Exec, vec![]);
    +  exec.can_pipeline = true;
    +  exec.skip_backpressure = true;
    +  exec.fail_fast = true;
    +  exec.transaction_id = Some(id);
    +  exec.response = response
    +    .duplicate()
    +    .ok_or_else(|| RedisError::new(RedisErrorKind::Unknown, "Invalid pipelined transaction response."))?;
    +  exec.response.set_expected_index(commands.len());
    +
    +  for (idx, command) in commands.iter().enumerate() {
    +    let mut response = response
    +      .duplicate()
    +      .ok_or_else(|| RedisError::new(RedisErrorKind::Unknown, "Invalid pipelined transaction response."))?;
    +    response.set_expected_index(idx);
    +    let mut command = command.duplicate(response);
    +    command.fail_fast = true;
    +    command.skip_backpressure = true;
    +    command.can_pipeline = true;
    +
    +    pipeline.push(command);
       }
    -  // each of the commands should have the same options
    -  let max_attempts = if commands[0].attempts_remaining == 0 {
    -    inner.max_command_attempts()
    -  } else {
    -    commands[0].attempts_remaining
    -  };
    -  let max_redirections = if commands[0].redirections_remaining == 0 {
    -    inner.connection.max_redirections
    -  } else {
    -    commands[0].redirections_remaining
    -  };
    +  pipeline.push(exec);
    +  Ok(pipeline)
    +}
     
    -  let mut attempted = 0;
    -  let mut redirections = 0;
    -  'outer: loop {
    -    _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +pub mod exec {
    +  use super::*;
    +  // TODO find a better way to combine these functions
     
    -    let server = if let Some(server) = commands[0].cluster_node.as_ref() {
    -      server.clone()
    +  /// Run the transaction, following cluster redirects and reconnecting as needed.
    +  #[allow(unused_mut)]
    +  pub async fn non_pipelined(
    +    inner: &RefCount<RedisClientInner>,
    +    router: &mut Router,
    +    mut commands: Vec<RedisCommand>,
    +    id: u64,
    +    abort_on_error: bool,
    +    mut tx: ResponseSender,
    +  ) -> Result<(), RedisError> {
    +    if commands.is_empty() {
    +      let _ = tx.send(Ok(Resp3Frame::Null));
    +      return Ok(());
    +    }
    +    // each of the commands should have the same options
    +    let max_attempts = if commands[0].attempts_remaining == 0 {
    +      inner.max_command_attempts()
         } else {
    -      match router.find_connection(&commands[0]) {
    -        Some(server) => server.clone(),
    -        None => {
    -          if inner.config.server.is_clustered() {
    -            // optimistically sync the cluster, then fall back to a full reconnect
    -            if router.sync_cluster().await.is_err() {
    -              utils::delay_cluster_sync(inner).await?;
    -              utils::reconnect_with_policy(inner, router).await?
    -            }
    -          } else {
    -            utils::reconnect_with_policy(inner, router).await?
    -          };
    +      commands[0].attempts_remaining
    +    };
    +    let max_redirections = if commands[0].redirections_remaining == 0 {
    +      inner.connection.max_redirections
    +    } else {
    +      commands[0].redirections_remaining
    +    };
     
    -          continue;
    -        },
    +    let mut attempted = 0;
    +    let mut redirections = 0;
    +    'outer: loop {
    +      _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +      let server = match find_or_create_connection(inner, router, &commands[0]).await? {
    +        Some(server) => server,
    +        None => continue,
    +      };
    +
    +      let mut idx = 0;
    +      if attempted > 0 {
    +        inner.counters.incr_redelivery_count();
           }
    -    };
    -    let mut idx = 0;
    -
    -    // send the WATCH command before any of the trx commands
    -    if let Some(watch) = watched.as_ref() {
    -      let watch = watch.duplicate(ResponseKind::Skip);
    -      let rx = watch.create_router_channel();
    -
    -      _debug!(
    -        inner,
    -        "Sending WATCH for {} keys in trx {} to {}",
    -        watch.args().len(),
    -        id,
    -        server
    -      );
    -      match write_command(inner, router, &server, watch, false, rx).await {
    -        Ok(TransactionResponse::Continue) => {
    -          _debug!(inner, "Successfully sent WATCH command before transaction {}.", id);
    +      // send each of the commands. the first one is always MULTI
    +      'inner: while idx < commands.len() {
    +        let command = commands[idx].duplicate(ResponseKind::Skip);
    +        let rx = command.create_router_channel();
    +
    +        // wait on each response before sending the next command in order to handle errors or follow cluster
    +        // redirections as quickly as possible.
    +        match write_command(inner, router, &server, command, abort_on_error, Some(rx)).await {
    +          Ok(TransactionResponse::Continue) => {
    +            idx += 1;
    +            continue 'inner;
    +          },
    +          Ok(TransactionResponse::Retry(error)) => {
    +            _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +            }
    +
    +            attempted += 1;
    +            if attempted >= max_attempts {
    +              let _ = tx.send(Err(error));
    +              return Ok(());
    +            } else {
    +              utils::reconnect_with_policy(inner, router).await?;
    +            }
    +
    +            continue 'outer;
    +          },
    +          Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    +            redirections += 1;
    +            if redirections > max_redirections {
    +              let _ = tx.send(Err(RedisError::new(
    +                RedisErrorKind::Cluster,
    +                "Too many cluster redirections.",
    +              )));
    +              return Ok(());
    +            }
    +
    +            update_hash_slot(&mut commands, slot);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +            }
    +            utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    +
    +            continue 'outer;
    +          },
    +          Ok(TransactionResponse::Finished(frame)) => {
    +            let _ = tx.send(Ok(frame));
    +            return Ok(());
    +          },
    +          Err(error) => {
    +            // fatal errors that end the transaction
    +            let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +            let _ = tx.send(Err(error));
    +            return Ok(());
    +          },
    +        }
    +      }
    +
    +      match send_non_pipelined_exec(inner, router, &server, id).await {
    +        Ok(TransactionResponse::Finished(frame)) => {
    +          let _ = tx.send(Ok(frame));
    +          return Ok(());
             },
             Ok(TransactionResponse::Retry(error)) => {
    -          _debug!(inner, "Retrying trx {} after WATCH error: {:?}.", id, error);
    +          _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    +          if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    +          }
     
               attempted += 1;
               if attempted >= max_attempts {
    @@ -546,56 +831,131 @@
     
               continue 'outer;
             },
    -        Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    -          redirections += 1;
    -          if redirections > max_redirections {
    -            let _ = tx.send(Err(RedisError::new(
    -              RedisErrorKind::Cluster,
    -              "Too many cluster redirections.",
    -            )));
    -            return Ok(());
    -          }
    -
    -          _debug!(inner, "Recv {} redirection to {} for WATCH in trx {}", kind, server, id);
    -          update_hash_slot(&mut commands, slot);
    -          utils::delay_cluster_sync(inner).await?;
    -          utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    -          continue 'outer;
    +        Ok(TransactionResponse::Redirection((kind, slot, dest))) => {
    +          // doesn't make sense on EXEC, but return it as an error so it isn't lost
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +          let _ = tx.send(Err(RedisError::new(
    +            RedisErrorKind::Cluster,
    +            format!("{} {} {}", kind, slot, dest),
    +          )));
    +          return Ok(());
             },
    -        Ok(TransactionResponse::Finished(frame)) => {
    -          _warn!(inner, "Unexpected trx finished frame after WATCH.");
    -          let _ = tx.send(Ok(frame));
    +        Ok(TransactionResponse::Continue) => {
    +          _warn!(inner, "Invalid final response to transaction {}", id);
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
    +          let _ = tx.send(Err(RedisError::new_canceled()));
               return Ok(());
             },
             Err(error) => {
    +          let _ = send_non_pipelined_discard(inner, router, &server, id).await;
               let _ = tx.send(Err(error));
               return Ok(());
             },
           };
         }
    +  }
     
    -    if attempted > 0 {
    -      inner.counters.incr_redelivery_count();
    +  #[allow(unused_mut)]
    +  pub async fn pipelined(
    +    inner: &RefCount<RedisClientInner>,
    +    router: &mut Router,
    +    mut commands: Vec<RedisCommand>,
    +    id: u64,
    +    mut tx: ResponseSender,
    +  ) -> Result<(), RedisError> {
    +    if commands.is_empty() {
    +      let _ = tx.send(Ok(Resp3Frame::Null));
    +      return Ok(());
         }
    -    // send each of the commands. the first one is always MULTI
    -    'inner: while idx < commands.len() {
    -      let command = commands[idx].duplicate(ResponseKind::Skip);
    -      let rx = command.create_router_channel();
    +    // each of the commands should have the same options
    +    let max_attempts = if commands[0].attempts_remaining == 0 {
    +      inner.max_command_attempts()
    +    } else {
    +      commands[0].attempts_remaining
    +    };
    +    let max_redirections = if commands[0].redirections_remaining == 0 {
    +      inner.connection.max_redirections
    +    } else {
    +      commands[0].redirections_remaining
    +    };
     
    -      match write_command(inner, router, &server, command, abort_on_error, rx).await {
    -        Ok(TransactionResponse::Continue) => {
    -          idx += 1;
    -          continue 'inner;
    -        },
    -        Ok(TransactionResponse::Retry(error)) => {
    -          _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    -          if let Err(e) = send_discard(inner, router, &server, id).await {
    -            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -          }
    +    let mut attempted = 0;
    +    let mut redirections = 0;
    +    'outer: loop {
    +      _debug!(inner, "Starting transaction {} (attempted: {})", id, attempted);
    +      let server = match find_or_create_connection(inner, router, &commands[0]).await? {
    +        Some(server) => server,
    +        None => continue,
    +      };
    +
    +      if attempted > 0 {
    +        inner.counters.incr_redelivery_count();
    +      }
    +      let (exec_tx, exec_rx) = oneshot_channel();
    +      let buf: Vec<_> = repeat(Resp3Frame::Null).take(commands.len() + 1).collect();
    +      // pipelined transactions buffer their results until a response to EXEC is received
    +      let response = ResponseKind::Buffer {
    +        error_early: false,
    +        expected:    commands.len() + 1,
    +        received:    RefCount::new(AtomicUsize::new(0)),
    +        tx:          RefCount::new(Mutex::new(Some(exec_tx))),
    +        frames:      RefCount::new(Mutex::new(buf)),
    +        index:       0,
    +      };
     
    +      // write each command in the pipeline
    +      let pipeline = build_pipeline(&commands, response, id)?;
    +      for command in pipeline.into_iter() {
    +        match write_command(inner, router, &server, command, false, None).await? {
    +          TransactionResponse::Continue => continue,
    +          TransactionResponse::Retry(error) => {
    +            _debug!(inner, "Retrying pipelined trx {} after error: {:?}", id, error);
    +            if let Err(e) = send_non_pipelined_discard(inner, router, &server, id).await {
    +              _warn!(inner, "Error sending pipelined discard: {:?}", e);
    +            }
    +
    +            attempted += 1;
    +            if attempted >= max_attempts {
    +              let _ = tx.send(Err(error));
    +              return Ok(());
    +            } else {
    +              utils::reconnect_with_policy(inner, router).await?;
    +            }
    +            continue 'outer;
    +          },
    +          _ => {
    +            _error!(inner, "Unexpected pipelined write response.");
    +            let _ = tx.send(Err(RedisError::new(
    +              RedisErrorKind::Protocol,
    +              "Unexpected pipeline write response.",
    +            )));
    +            return Ok(());
    +          },
    +        }
    +      }
    +
    +      // wait on the response and deconstruct the output frames
    +      let mut response = match exec_rx.await.map_err(RedisError::from) {
    +        Ok(Ok(frame)) => match frame {
    +          Resp3Frame::Array { data, .. } => data,
    +          _ => {
    +            _error!(inner, "Unexpected pipelined exec response.");
    +            let _ = tx.send(Err(RedisError::new(
    +              RedisErrorKind::Protocol,
    +              "Unexpected pipeline exec response.",
    +            )));
    +            return Ok(());
    +          },
    +        },
    +        Ok(Err(err)) | Err(err) => {
    +          _debug!(
    +            inner,
    +            "Reconnecting and retrying pipelined transaction after error: {:?}",
    +            err
    +          );
               attempted += 1;
               if attempted >= max_attempts {
    -            let _ = tx.send(Err(error));
    +            let _ = tx.send(Err(err));
                 return Ok(());
               } else {
                 utils::reconnect_with_policy(inner, router).await?;
    @@ -603,79 +963,77 @@
     
               continue 'outer;
             },
    -        Ok(TransactionResponse::Redirection((kind, slot, server))) => {
    -          redirections += 1;
    -          if redirections > max_redirections {
    -            let _ = tx.send(Err(RedisError::new(
    -              RedisErrorKind::Cluster,
    -              "Too many cluster redirections.",
    -            )));
    -            return Ok(());
    -          }
    +      };
    +      if response.is_empty() {
    +        let _ = tx.send(Err(RedisError::new(
    +          RedisErrorKind::Protocol,
    +          "Unexpected empty pipeline exec response.",
    +        )));
    +        return Ok(());
    +      }
     
    -          update_hash_slot(&mut commands, slot);
    -          if let Err(e) = send_discard(inner, router, &server, id).await {
    -            _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -          }
    -          utils::cluster_redirect_with_policy(inner, router, kind, slot, &server).await?;
    +      // check the last result for EXECABORT
    +      let execabort = response
    +        .last()
    +        .and_then(|f| f.as_str())
    +        .map(|s| s.starts_with("EXECABORT"))
    +        .unwrap_or(false);
     
    -          continue 'outer;
    -        },
    -        Ok(TransactionResponse::Finished(frame)) => {
    -          let _ = tx.send(Ok(frame));
    -          return Ok(());
    -        },
    -        Err(error) => {
    -          // fatal errors that end the transaction
    -          let _ = send_discard(inner, router, &server, id).await;
    -          let _ = tx.send(Err(error));
    -          return Ok(());
    -        },
    -      }
    -    }
    +      if execabort {
    +        // find the first error, if it's a redirection then follow it and retry, otherwise return to the caller
    +        let first_error = response.iter().enumerate().find_map(|(idx, frame)| {
    +          if matches!(frame.kind(), FrameKind::SimpleError | FrameKind::BlobError) {
    +            Some(idx)
    +          } else {
    +            None
    +          }
    +        });
     
    -    match send_exec(inner, router, &server, id).await {
    -      Ok(TransactionResponse::Finished(frame)) => {
    -        let _ = tx.send(Ok(frame));
    -        return Ok(());
    -      },
    -      Ok(TransactionResponse::Retry(error)) => {
    -        _debug!(inner, "Retrying trx {} after error: {:?}", id, error);
    -        if let Err(e) = send_discard(inner, router, &server, id).await {
    -          _warn!(inner, "Error sending DISCARD in trx {}: {:?}", id, e);
    -        }
    +        if let Some(idx) = first_error {
    +          let first_error_frame = response[idx].take();
    +          // check if error is a cluster redirection, otherwise return the error to the caller
    +          if first_error_frame.is_redirection() {
    +            redirections += 1;
    +            if redirections > max_redirections {
    +              let _ = tx.send(Err(RedisError::new(
    +                RedisErrorKind::Cluster,
    +                "Too many cluster redirections.",
    +              )));
    +              return Ok(());
    +            }
    +
    +            let (kind, slot, dest) = parse_cluster_error_frame(inner, &first_error_frame, &server)?;
    +            update_hash_slot(&mut commands, slot);
    +            utils::cluster_redirect_with_policy(inner, router, kind, slot, &dest).await?;
    +            continue 'outer;
    +          } else {
    +            // these errors are typically from the server, not from the connection layer
    +            let error = first_error_frame.as_str().map(pretty_error).unwrap_or_else(|| {
    +              RedisError::new(
    +                RedisErrorKind::Protocol,
    +                "Unexpected response to pipelined transaction.",
    +              )
    +            });
     
    -        attempted += 1;
    -        if attempted >= max_attempts {
    +            let _ = tx.send(Err(error));
    +            return Ok(());
    +          }
    +        } else {
    +          // return the EXECABORT error to the caller if there's no other error
    +          let error = response
    +            .pop()
    +            .and_then(|f| f.as_str().map(pretty_error))
    +            .unwrap_or_else(|| RedisError::new(RedisErrorKind::Protocol, "Invalid pipelined transaction response."));
               let _ = tx.send(Err(error));
               return Ok(());
    -        } else {
    -          utils::reconnect_with_policy(inner, router).await?;
             }
    -
    -        continue 'outer;
    -      },
    -      Ok(TransactionResponse::Redirection((kind, slot, dest))) => {
    -        // doesn't make sense on EXEC, but return it as an error so it isn't lost
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(RedisError::new(
    -          RedisErrorKind::Cluster,
    -          format!("{} {} {}", kind, slot, dest),
    -        )));
    -        return Ok(());
    -      },
    -      Ok(TransactionResponse::Continue) => {
    -        _warn!(inner, "Invalid final response to transaction {}", id);
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(RedisError::new_canceled()));
    -        return Ok(());
    -      },
    -      Err(error) => {
    -        let _ = send_discard(inner, router, &server, id).await;
    -        let _ = tx.send(Err(error));
    +      } else {
    +        // return the last frame to the caller
    +        let last = response.pop().unwrap_or(Resp3Frame::Null);
    +        let _ = tx.send(Ok(last));
             return Ok(());
    -      },
    -    };
    +      }
    +    }
       }
     }
     
    \ No newline at end of file diff --git a/docs/tokio/src/fred/types/config.rs.html b/docs/tokio/src/fred/types/config.rs.html index 8706a027..ef114159 100644 --- a/docs/tokio/src/fred/types/config.rs.html +++ b/docs/tokio/src/fred/types/config.rs.html @@ -1804,6 +1804,8 @@ 1804 1805 1806 +1807 +1808

    pub use crate::protocol::types::Server;
     use crate::{
       error::{RedisError, RedisErrorKind},
    @@ -1817,6 +1819,8 @@
     
     #[cfg(feature = "mocks")]
     use crate::mocks::Mocks;
    +#[cfg(feature = "credential-provider")]
    +use async_trait::async_trait;
     #[cfg(feature = "unix-sockets")]
     use std::path::PathBuf;
     #[cfg(any(feature = "mocks", feature = "credential-provider"))]