diff --git a/build.gradle b/build.gradle
index ce2127e5a83..06f594a454b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -49,7 +49,7 @@ ext {
zstdVersion = '1.5.2-5'
awsSdkV2Version = '2.18.9'
awsSdkV1Version = '1.12.337'
- mongoCryptVersion = '1.6.1'
+ mongoCryptVersion = '1.7.1'
projectReactorVersion = '2022.0.0'
junitBomVersion = '5.8.2'
gitVersion = getGitVersion()
@@ -244,6 +244,7 @@ configure(javaCodeCheckedProjects) {
testImplementation(platform("org.junit:junit-bom:$junitBomVersion"))
testImplementation('org.junit.jupiter:junit-jupiter')
testImplementation('org.junit.jupiter:junit-jupiter-params')
+ testImplementation('org.junit.jupiter:junit-jupiter-engine')
testImplementation('org.junit.vintage:junit-vintage-engine')
testImplementation platform('org.spockframework:spock-bom:2.1-groovy-3.0')
diff --git a/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java b/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java
index 489f0065a40..42b89fb249e 100644
--- a/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java
+++ b/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java
@@ -31,6 +31,7 @@ public class EncryptOptions {
private final String algorithm;
private Long contentionFactor;
private String queryType;
+ private RangeOptions rangeOptions;
/**
* Construct an instance with the given algorithm.
@@ -50,6 +51,7 @@ public EncryptOptions(final String algorithm) {
*
AEAD_AES_256_CBC_HMAC_SHA_512-Random
* Indexed
* Unindexed
+ * RangePreview
*
*
* @return the encryption algorithm
@@ -113,7 +115,8 @@ public EncryptOptions keyAltName(final String keyAltName) {
/**
* The contention factor.
*
- * It is an error to set contentionFactor when algorithm is not "Indexed".
+ *
It is an error to set contentionFactor when algorithm is not "Indexed" or "RangePreview".
+ *
Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
* @param contentionFactor the contention factor, which must be {@code >= 0} or null.
* @return this
* @since 4.7
@@ -140,9 +143,9 @@ public Long getContentionFactor() {
/**
* The QueryType.
*
- * Currently, we support only "equality" queryType.
- * It is an error to set queryType when the algorithm is not "Indexed".
- *
+ * Currently, we support only "equality" or "RangePreview" queryType.
+ * It is an error to set queryType when the algorithm is not "Indexed" or "RangePreview".
+ * Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
* @param queryType the query type
* @return this
* @since 4.7
@@ -156,7 +159,7 @@ public EncryptOptions queryType(@Nullable final String queryType) {
/**
* Gets the QueryType.
*
- * Currently, we support only "equality" queryType.
+ * Currently, we support only "equality" or "RangePreview" queryType.
* @see #queryType(String)
* @return the queryType or null
* @since 4.7
@@ -167,6 +170,36 @@ public String getQueryType() {
return queryType;
}
+ /**
+ * The RangeOptions
+ *
+ * It is an error to set RangeOptions when the algorithm is not "RangePreview".
+ *
Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
+ * @param rangeOptions the range options
+ * @return this
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption
+ */
+ @Beta(Beta.Reason.SERVER)
+ public EncryptOptions rangeOptions(@Nullable final RangeOptions rangeOptions) {
+ this.rangeOptions = rangeOptions;
+ return this;
+ }
+
+ /**
+ * Gets the RangeOptions
+ * @return the range options or null if not set
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption
+ */
+ @Nullable
+ @Beta(Beta.Reason.SERVER)
+ public RangeOptions getRangeOptions() {
+ return rangeOptions;
+ }
+
@Override
public String toString() {
return "EncryptOptions{"
@@ -174,7 +207,8 @@ public String toString() {
+ ", keyAltName='" + keyAltName + '\''
+ ", algorithm='" + algorithm + '\''
+ ", contentionFactor=" + contentionFactor
- + ", queryType=" + queryType
+ + ", queryType='" + queryType + '\''
+ + ", rangeOptions=" + rangeOptions
+ '}';
}
}
diff --git a/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java b/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java
new file mode 100644
index 00000000000..b763b0bf112
--- /dev/null
+++ b/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.mongodb.client.model.vault;
+
+import com.mongodb.annotations.Beta;
+import com.mongodb.lang.Nullable;
+import org.bson.BsonValue;
+
+/**
+ * Range options specifies index options for a Queryable Encryption field supporting "rangePreview" queries.
+ *
+ *
{@code min}, {@code max}, {@code sparsity}, and {@code precision} must match the values set in the {@code encryptedFields}
+ * of the destination collection.
+ *
+ *
For {@code double} and {@code decimal128}, {@code min}/{@code max}/{@code precision} must all be set, or all be unset.
+ *
+ *
Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption
+ */
+@Beta(Beta.Reason.SERVER)
+public class RangeOptions {
+
+ private BsonValue min;
+ private BsonValue max;
+ private Long sparsity;
+ private Integer precision;
+
+ /**
+ * Construct a new instance
+ */
+ public RangeOptions() {
+ }
+
+ /**
+ * Set the minimum value set in the encryptedFields of the destination collection.
+ * @param min the minimum value
+ * @return this
+ */
+ public RangeOptions min(@Nullable final BsonValue min) {
+ this.min = min;
+ return this;
+ }
+
+ /**
+ * @return the minimum value if set
+ */
+ @Nullable
+ public BsonValue getMin() {
+ return min;
+ }
+
+ /**
+ * Set the maximum value set in the encryptedFields of the destination collection.
+ * @param max the maximum value
+ * @return this
+ */
+ public RangeOptions max(@Nullable final BsonValue max) {
+ this.max = max;
+ return this;
+ }
+
+ /**
+ * @return the maximum value if set
+ */
+ @Nullable
+ public BsonValue getMax() {
+ return max;
+ }
+
+ /**
+ * Set the Queryable Encryption range hypergraph sparsity factor
+ * @param sparsity the sparsity
+ * @return this
+ */
+ public RangeOptions sparsity(@Nullable final Long sparsity) {
+ this.sparsity = sparsity;
+ return this;
+ }
+
+ /**
+ * @return the sparsity value if set
+ */
+ @Nullable
+ public Long getSparsity() {
+ return sparsity;
+ }
+
+ /**
+ * Set the precision of double or decimal128 values in the encryptedFields of the destination collection.
+ * @param precision the precision
+ * @return this
+ */
+ public RangeOptions precision(@Nullable final Integer precision) {
+ this.precision = precision;
+ return this;
+ }
+
+ /**
+ * @return the precision value if set
+ */
+ @Nullable
+ public Integer getPrecision() {
+ return precision;
+ }
+
+ @Override
+ public String toString() {
+ return "RangeOptions{"
+ + "min=" + min
+ + ", max=" + max
+ + ", sparsity=" + sparsity
+ + ", precision=" + precision
+ + '}';
+ }
+}
diff --git a/driver-core/src/main/com/mongodb/internal/client/vault/EncryptOptionsHelper.java b/driver-core/src/main/com/mongodb/internal/client/vault/EncryptOptionsHelper.java
new file mode 100644
index 00000000000..36e9053b231
--- /dev/null
+++ b/driver-core/src/main/com/mongodb/internal/client/vault/EncryptOptionsHelper.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.mongodb.internal.client.vault;
+
+import com.mongodb.client.model.vault.EncryptOptions;
+import com.mongodb.client.model.vault.RangeOptions;
+import com.mongodb.crypt.capi.MongoExplicitEncryptOptions;
+import org.bson.BsonDocument;
+import org.bson.BsonInt32;
+import org.bson.BsonInt64;
+import org.bson.BsonValue;
+
+public final class EncryptOptionsHelper {
+
+ public static MongoExplicitEncryptOptions asMongoExplicitEncryptOptions(final EncryptOptions options) {
+ MongoExplicitEncryptOptions.Builder encryptOptionsBuilder = MongoExplicitEncryptOptions.builder()
+ .algorithm(options.getAlgorithm());
+
+ if (options.getKeyId() != null) {
+ encryptOptionsBuilder.keyId(options.getKeyId());
+ }
+
+ if (options.getKeyAltName() != null) {
+ encryptOptionsBuilder.keyAltName(options.getKeyAltName());
+ }
+
+ if (options.getContentionFactor() != null) {
+ encryptOptionsBuilder.contentionFactor(options.getContentionFactor());
+ }
+
+ if (options.getQueryType() != null) {
+ encryptOptionsBuilder.queryType(options.getQueryType());
+ }
+
+ RangeOptions rangeOptions = options.getRangeOptions();
+ if (rangeOptions != null) {
+ BsonDocument rangeOptionsBsonDocument = new BsonDocument();
+ BsonValue min = rangeOptions.getMin();
+ if (min != null) {
+ rangeOptionsBsonDocument.put("min", min);
+ }
+ BsonValue max = rangeOptions.getMax();
+ if (max != null) {
+ rangeOptionsBsonDocument.put("max", max);
+ }
+ Long sparsity = rangeOptions.getSparsity();
+ if (sparsity != null) {
+ rangeOptionsBsonDocument.put("sparsity", new BsonInt64(sparsity));
+ }
+ Integer precision = rangeOptions.getPrecision();
+ if (precision != null) {
+ rangeOptionsBsonDocument.put("precision", new BsonInt32(precision));
+ }
+ encryptOptionsBuilder.rangeOptions(rangeOptionsBsonDocument);
+ }
+ return encryptOptionsBuilder.build();
+ }
+ private EncryptOptionsHelper() {
+ }
+}
diff --git a/driver-core/src/main/com/mongodb/internal/client/vault/package-info.java b/driver-core/src/main/com/mongodb/internal/client/vault/package-info.java
new file mode 100644
index 00000000000..51c351d1e1f
--- /dev/null
+++ b/driver-core/src/main/com/mongodb/internal/client/vault/package-info.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This package contains classes that manage binding to MongoDB servers for various operations.
+ */
+
+@NonNullApi
+package com.mongodb.internal.client.vault;
+
+import com.mongodb.lang.NonNullApi;
diff --git a/driver-core/src/test/functional/com/mongodb/test/AfterBeforeParameterResolver.java b/driver-core/src/test/functional/com/mongodb/test/AfterBeforeParameterResolver.java
new file mode 100644
index 00000000000..bc78709e73b
--- /dev/null
+++ b/driver-core/src/test/functional/com/mongodb/test/AfterBeforeParameterResolver.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.mongodb.test;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.jupiter.api.extension.ParameterResolver;
+import org.junit.jupiter.engine.execution.BeforeEachMethodAdapter;
+import org.junit.jupiter.engine.extension.ExtensionRegistry;
+import org.junit.platform.commons.util.AnnotationUtils;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Parameter;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * The {@code AfterBeforeParameterResolver} supports passing parameterized test values to the {@code BeforeEach} and/or
+ * the {@code AfterEach} methods.
+ *
+ *
Example usage:
+ *
+ * {@code
+ * @ExtendWith(AfterBeforeParameterResolver.class)
+ * class AfterBeforeParameterResolverTest {
+ *
+ * private TestEnum capturedParameter;
+ * @BeforeEach
+ * public void setup(TestEnum parameter) {
+ * capturedParameter = parameter;
+ * }
+ *
+ * @ParameterizedTest
+ * @EnumSource(TestEnum.class)
+ * public void test(TestEnum parameter) {
+ * assertThat(parameter).isEqualTo(capturedParameter);
+ * }
+ *
+ * enum TestEnum {
+ * PARAMETER_1,
+ * PARAMETER_2;
+ * }
+ * }
+ * }
+ *
+ * @see AfterBeforeParameterResolver
+ * @see junit-team/junit5#944
+ */
+public class AfterBeforeParameterResolver implements BeforeEachMethodAdapter, ParameterResolver {
+ private ParameterResolver parameterisedTestParameterResolver = null;
+
+ @Override
+ public void invokeBeforeEachMethod(final ExtensionContext context, final ExtensionRegistry registry) {
+ Optional resolverOptional = registry.getExtensions(ParameterResolver.class)
+ .stream()
+ .filter(parameterResolver -> parameterResolver.getClass().getName().contains("ParameterizedTestParameterResolver"))
+ .findFirst();
+ if (!resolverOptional.isPresent()) {
+ throw new IllegalStateException("ParameterizedTestParameterResolver missed in the registry. "
+ + "Probably it's not a Parameterized Test");
+ } else {
+ parameterisedTestParameterResolver = resolverOptional.get();
+ }
+ }
+
+ @Override
+ public boolean supportsParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext)
+ throws ParameterResolutionException {
+ if (isExecutedOnAfterOrBeforeMethod(parameterContext)) {
+ ParameterContext pContext = getMappedContext(parameterContext, extensionContext);
+ return parameterisedTestParameterResolver.supportsParameter(pContext, extensionContext);
+ }
+ return false;
+ }
+
+ @Override
+ public Object resolveParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext)
+ throws ParameterResolutionException {
+ return parameterisedTestParameterResolver.resolveParameter(getMappedContext(parameterContext, extensionContext), extensionContext);
+ }
+
+ private MappedParameterContext getMappedContext(final ParameterContext parameterContext, final ExtensionContext extensionContext) {
+ return new MappedParameterContext(
+ parameterContext.getIndex(),
+ extensionContext.getRequiredTestMethod().getParameters()[parameterContext.getIndex()],
+ parameterContext.getTarget());
+ }
+
+
+ private boolean isExecutedOnAfterOrBeforeMethod(final ParameterContext parameterContext) {
+ return Arrays.stream(parameterContext.getDeclaringExecutable().getDeclaredAnnotations())
+ .anyMatch(this::isAfterEachOrBeforeEachAnnotation);
+ }
+
+ private boolean isAfterEachOrBeforeEachAnnotation(final Annotation annotation) {
+ return annotation.annotationType() == BeforeEach.class || annotation.annotationType() == AfterEach.class;
+ }
+
+
+ @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
+ public static class MappedParameterContext implements ParameterContext {
+ private final int index;
+ private final Parameter parameter;
+ private final Optional target;
+ public MappedParameterContext(final int index, final Parameter parameter, final Optional target) {
+ this.index = index;
+ this.parameter = parameter;
+ this.target = target;
+ }
+
+ @Override
+ public int getIndex() {
+ return index;
+ }
+
+ @Override
+ public Parameter getParameter() {
+ return parameter;
+ }
+
+ @Override
+ public Optional getTarget() {
+ return target;
+ }
+
+ @Override
+ public boolean isAnnotated(final Class extends Annotation> annotationType) {
+ return AnnotationUtils.isAnnotated(parameter, annotationType);
+ }
+
+ @Override
+ public Optional findAnnotation(final Class annotationType) {
+ return AnnotationUtils.findAnnotation(parameter, annotationType);
+ }
+
+ @Override
+ public List findRepeatableAnnotations(final Class annotationType) {
+ return AnnotationUtils.findRepeatableAnnotations(parameter, annotationType);
+ }
+ }
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Date.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Date.json
new file mode 100644
index 00000000000..c9ad1ffdd47
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Date.json
@@ -0,0 +1,36 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Decimal.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Decimal.json
new file mode 100644
index 00000000000..f209536c9c0
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Decimal.json
@@ -0,0 +1,26 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DecimalPrecision.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DecimalPrecision.json
new file mode 100644
index 00000000000..e7634152ba5
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DecimalPrecision.json
@@ -0,0 +1,35 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Double.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Double.json
new file mode 100644
index 00000000000..4e9e8d6d818
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Double.json
@@ -0,0 +1,26 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DoublePrecision.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DoublePrecision.json
new file mode 100644
index 00000000000..17c725ec44c
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-DoublePrecision.json
@@ -0,0 +1,35 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Int.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Int.json
new file mode 100644
index 00000000000..661d7395c56
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Int.json
@@ -0,0 +1,32 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Long.json b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Long.json
new file mode 100644
index 00000000000..b36bfb2c464
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/encryptedFields-Range-Long.json
@@ -0,0 +1,32 @@
+{
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Date.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Date.json
new file mode 100644
index 00000000000..e19fc1e1826
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Date.json
@@ -0,0 +1,30 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalNoPrecision.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalNoPrecision.json
new file mode 100644
index 00000000000..c6d129d4ca1
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalNoPrecision.json
@@ -0,0 +1,21 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalNoPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalPrecision.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalPrecision.json
new file mode 100644
index 00000000000..c23c3fa923c
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DecimalPrecision.json
@@ -0,0 +1,29 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberInt": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoubleNoPrecision.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoubleNoPrecision.json
new file mode 100644
index 00000000000..4af6422714b
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoubleNoPrecision.json
@@ -0,0 +1,21 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoubleNoPrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoublePrecision.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoublePrecision.json
new file mode 100644
index 00000000000..c1f388219db
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-DoublePrecision.json
@@ -0,0 +1,30 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Int.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Int.json
new file mode 100644
index 00000000000..217bf6743c8
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Int.json
@@ -0,0 +1,27 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Long.json b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Long.json
new file mode 100644
index 00000000000..0fb87edaeff
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption-data/range-encryptedFields-Long.json
@@ -0,0 +1,27 @@
+{
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/driver-core/src/test/resources/client-side-encryption/README.rst b/driver-core/src/test/resources/client-side-encryption/README.rst
index 3764eae003b..ad465411da9 100644
--- a/driver-core/src/test/resources/client-side-encryption/README.rst
+++ b/driver-core/src/test/resources/client-side-encryption/README.rst
@@ -330,8 +330,19 @@ Using ``crypt_shared``
On platforms where crypt_shared_ is available, drivers should prefer to test
with the ``crypt_shared`` library instead of spawning mongocryptd.
-Drivers MUST continue to run all tests with mongocryptd on at least one
-platform for all tested server versions.
+crypt_shared_ is released alongside the server.
+crypt_shared_ is only available in versions 6.0 and above.
+
+mongocryptd is released alongside the server.
+mongocryptd is available in versions 4.2 and above.
+
+Drivers MUST run all tests with mongocryptd on at least one platform for all
+tested server versions.
+
+Drivers MUST run all tests with crypt_shared_ on at least one platform for all
+tested server versions. For server versions < 6.0, drivers MUST test with the
+latest major release of crypt_shared_. Using the latest major release of
+crypt_shared_ is supported with older server versions.
Note that some tests assert on mongocryptd-related behaviors (e.g. the
``mongocryptdBypassSpawn`` test).
@@ -605,7 +616,7 @@ Using ``client_encrypted`` perform the following operations:
- ``{ "_id": "over_2mib_2", "unencrypted": }``
- Expect the bulk write to succeed and split after first doc (i.e. two inserts occur). This may be verified using `command monitoring `_.
+ Expect the bulk write to succeed and split after first doc (i.e. two inserts occur). This may be verified using `command monitoring `_.
#. Bulk insert the following:
@@ -613,7 +624,7 @@ Using ``client_encrypted`` perform the following operations:
- The document `limits/limits-doc.json <../limits/limits-doc.json>`_ concatenated with ``{ "_id": "encryption_exceeds_2mib_2", "unencrypted": < the string "a" repeated (2097152 - 2000) times > }``
- Expect the bulk write to succeed and split after first doc (i.e. two inserts occur). This may be verified using `command monitoring `_.
+ Expect the bulk write to succeed and split after first doc (i.e. two inserts occur). This may be verified using `command logging and monitoring `_.
#. Insert ``{ "_id": "under_16mib", "unencrypted": ``.
@@ -966,13 +977,52 @@ Test cases
8. Bypass Spawning mongocryptd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Via loading shared library
+``````````````````````````
+
+The following tests that loading crypt_shared_ bypasses spawning mongocryptd.
+
+.. note::
+
+ IMPORTANT: This test requires the crypt_shared_ library be loaded. If the crypt_shared_ library is
+ not available, skip the test.
+
+#. Create a MongoClient configured with auto encryption (referred to as ``client_encrypted``)
+
+ Configure the required options. Use the ``local`` KMS provider as follows:
+
+ .. code:: javascript
+
+ { "local": { "key": } }
+
+ Configure with the ``keyVaultNamespace`` set to ``keyvault.datakeys``.
+
+ Configure ``client_encrypted`` to use the schema `external/external-schema.json <../external/external-schema.json>`_ for ``db.coll`` by setting a schema map like: ``{ "db.coll": }``
+
+ Configure the following ``extraOptions``:
+
+ .. code:: javascript
+
+ {
+ "mongocryptdURI": "mongodb://localhost:27021/db?serverSelectionTimeoutMS=1000",
+ "mongocryptdSpawnArgs": [ "--pidfilepath=bypass-spawning-mongocryptd.pid", "--port=27021"],
+ "cryptSharedLibPath": "",
+ "cryptSharedLibRequired": true
+ }
+
+ Drivers MAY pass a different port if they expect their testing infrastructure to be using port 27021. Pass a port that should be free.
+
+#. Use ``client_encrypted`` to insert the document ``{"unencrypted": "test"}`` into ``db.coll``. Expect this to succeed.
+
+#. Validate that mongocryptd was not spawned. Create a MongoClient to localhost:27021 (or whatever was passed via ``--port``) with serverSelectionTimeoutMS=1000. Run a handshake command and ensure it fails with a server selection timeout.
+
.. note::
IMPORTANT: If crypt_shared_ is visible to the operating system's library
search mechanism, the expected server error generated by these
``mongocryptdBypassSpawn`` tests will not appear because libmongocrypt will
load the ``crypt_shared`` library instead of consulting mongocryptd. For
- these tests, it is required that libmongocrypt *not* load ``crypt_shared``.
+ the following tests, it is required that libmongocrypt *not* load ``crypt_shared``.
Refer to the client-side-encryption document for more information on
"disabling" ``crypt_shared``.
@@ -1601,6 +1651,29 @@ the same masterKey.
Expect an error indicating TLS handshake failed due to an invalid hostname.
+Case 5: `tlsDisableOCSPEndpointCheck` is permitted
+``````````````````````````````````````````````````
+
+This test does not apply if the driver does not support the the option ``tlsDisableOCSPEndpointCheck``.
+
+Create a ``ClientEncryption`` object with the following KMS providers:
+
+ .. code:: javascript
+
+ {
+ "aws": {
+ "accessKeyId": "foo",
+ "secretAccessKey": "bar"
+ }
+ }
+
+ Add TLS options for the ``aws`` with the following options:
+
+ - ``tlsDisableOCSPEndpointCheck`` (or equivalent) set to ``true``.
+
+Expect no error on construction.
+
+
12. Explicit Encryption
~~~~~~~~~~~~~~~~~~~~~~~
@@ -1965,3 +2038,914 @@ Use ``encryptedClient`` to run an aggregate on ``db.decryption_events`` with an
Expect no exception.
Expect a ``CommandSucceededEvent``. Expect the ``CommandSucceededEvent.reply`` to contain BSON binary for the field ``cursor.firstBatch.encrypted``.
+
+
+15. On-demand AWS Credentials
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+These tests require valid AWS credentials. Refer: `Automatic AWS Credentials`_.
+
+For these cases, create a ClientEncryption_ object :math:`C` with the following
+options:
+
+.. code-block:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ,
+ keyVaultNamespace: "keyvault.datakeys",
+ kmsProviders: { "aws": {} },
+ }
+
+Case 1: Failure
+```````````````
+
+Do not run this test case in an environment where AWS credentials are available
+(e.g. via environment variables or a metadata URL). (Refer:
+`Obtaining credentials for AWS `_)
+
+Attempt to create a datakey with :math:`C` using the ``"aws"`` KMS provider.
+Expect this to fail due to a lack of KMS provider credentials.
+
+Case 2: Success
+```````````````
+
+For this test case, the environment variables ``AWS_ACCESS_KEY_ID`` and
+``AWS_SECRET_ACCESS_KEY`` must be defined and set to a valid set of AWS
+credentials.
+
+Use the client encryption to create a datakey using the ``"aws"`` KMS provider.
+This should successfully load and use the AWS credentials that were defined in
+the environment.
+
+.. _Automatic AWS Credentials: ../client-side-encryption.rst#automatic-aws-credentials
+.. _ClientEncryption: ../client-side-encryption.rst#clientencryption
+.. _auth-aws: ../../auth/auth.rst#obtaining-credentials
+
+16. Rewrap
+~~~~~~~~~~
+
+Case 1: Rewrap with separate ClientEncryption
+`````````````````````````````````````````````
+
+When the following test case requests setting ``masterKey``, use the following values based on the KMS provider:
+
+For "aws":
+
+.. code:: javascript
+
+ {
+ "region": "us-east-1",
+ "key": "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0"
+ }
+
+For "azure":
+
+.. code:: javascript
+
+ {
+ "keyVaultEndpoint": "key-vault-csfle.vault.azure.net",
+ "keyName": "key-name-csfle"
+ }
+
+For "gcp":
+
+.. code:: javascript
+
+ {
+ "projectId": "devprod-drivers",
+ "location": "global",
+ "keyRing": "key-ring-csfle",
+ "keyName": "key-name-csfle"
+ }
+
+For "kmip":
+
+.. code:: javascript
+
+ {}
+
+For "local", do not set a masterKey document.
+
+Run the following test case for each pair of KMS providers (referred to as ``srcProvider`` and ``dstProvider``).
+Include pairs where ``srcProvider`` equals ``dstProvider``.
+
+1. Drop the collection ``keyvault.datakeys``.
+
+2. Create a ``ClientEncryption`` object named ``clientEncryption1`` with these options:
+
+ .. code:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ;
+ keyVaultNamespace: "keyvault.datakeys";
+ kmsProviders:
+ }
+
+3. Call ``clientEncryption1.createDataKey`` with ``srcProvider`` and these options:
+
+ .. code:: typescript
+
+ class DataKeyOpts {
+ masterKey:
+ }
+
+ Store the return value in ``keyID``.
+
+4. Call ``clientEncryption1.encrypt`` with the value "test" and these options:
+
+ .. code:: typescript
+
+ class EncryptOpts {
+ keyId : keyID,
+ algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
+ }
+
+ Store the return value in ``ciphertext``.
+
+5. Create a ``ClientEncryption`` object named ``clientEncryption2`` with these options:
+
+ .. code:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ;
+ keyVaultNamespace: "keyvault.datakeys";
+ kmsProviders:
+ }
+
+6. Call ``clientEncryption2.rewrapManyDataKey`` with an empty ``filter`` and these options:
+
+ .. code:: typescript
+
+ class RewrapManyDataKeyOpts {
+ provider: dstProvider
+ masterKey:
+ }
+
+ Assert that the returned ``RewrapManyDataKeyResult.bulkWriteResult.modifiedCount`` is 1.
+
+7. Call ``clientEncryption1.decrypt`` with the ``ciphertext``. Assert the return value is "test".
+
+8. Call ``clientEncryption2.decrypt`` with the ``ciphertext``. Assert the return value is "test".
+
+
+17. On-demand GCP Credentials
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Refer: `Automatic GCP Credentials`_.
+
+For these cases, create a ClientEncryption_ object :math:`C` with the following
+options:
+
+.. code-block:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ,
+ keyVaultNamespace: "keyvault.datakeys",
+ kmsProviders: { "gcp": {} },
+ }
+
+Case 1: Failure
+```````````````
+
+Do not run this test case in an environment with a GCP service account is
+attached (e.g. any `GCE equivalent runtime
+`_). This may be run in an AWS EC2 instance.
+
+Attempt to create a datakey with :math:`C` using the ``"gcp"`` KMS provider and
+following ``DataKeyOpts``:
+
+.. code-block:: typescript
+
+ class DataKeyOpts {
+ masterKey: {
+ "projectId": "devprod-drivers",
+ "location": "global",
+ "keyRing": "key-ring-csfle",
+ "keyName": "key-name-csfle"
+ }
+ }
+
+Expect the attempt to obtain ``"gcp"`` credentials from the environment to fail.
+
+Case 2: Success
+```````````````
+
+This test case must run in a Google Compute Engine (GCE) Virtual Machine with a
+service account attached. See `drivers-evergreen-tools/.evergreen/csfle/gcpkms
+`_
+for scripts to create a GCE instance for testing. The Evergreen task SHOULD set a
+``batchtime`` of 14 days to reduce how often this test case runs.
+
+Attempt to create a datakey with :math:`C` using the ``"gcp"`` KMS provider and
+following ``DataKeyOpts``:
+
+.. code-block:: typescript
+
+ class DataKeyOpts {
+ masterKey: {
+ "projectId": "devprod-drivers",
+ "location": "global",
+ "keyRing": "key-ring-csfle",
+ "keyName": "key-name-csfle"
+ }
+ }
+
+This should successfully load and use the GCP credentials of the service account
+attached to the virtual machine.
+
+Expect the key to be successfully created.
+
+.. _Automatic GCP Credentials: ../client-side-encryption.rst#automatic-gcp-credentials
+
+
+18. Azure IMDS Credentials
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Refer: `Automatic Azure Credentials `_
+
+.. _auto-azure: ../client-side-encryption.rst#obtaining-an-access-token-for-azure-key-vault
+
+The test cases for IMDS communication are specially designed to not require an
+Azure environment, while still exercising the core of the functionality. The
+design of these test cases encourages an implementation to separate the concerns
+of IMDS communication from the logic of KMS key manipulation. The purpose of
+these test cases is to ensure drivers will behave appropriately regardless of
+the behavior of the IMDS server.
+
+For these IMDS credentials tests, a simple stand-in IMDS-imitating HTTP server
+is available in drivers-evergreen-tools, at ``.evergreen/csfle/fake_azure.py``.
+``fake_azure.py`` is a very simple ``bottle.py`` application. For the easiest
+use, it is recommended to execute it through ``bottle.py`` (which is a sibling
+file in the same directory)::
+
+ python .evergreen/csfle/bottle.py fake_azure:imds
+
+This will run the ``imds`` Bottle application defined in the ``fake_azure``
+Python module. ``bottle.py`` accepts additional command line arguments to
+control the bind host and TCP port (use ``--help`` for more information).
+
+For each test case, follow the process for obtaining the token as outlined in
+the `automatic Azure credentials section `_ with the following
+changes:
+
+1. Instead of the standard IMDS TCP endpoint of `169.254.169.254:80`,
+ communicate with the running ``fake_azure`` HTTP server.
+
+2. For each test case, the behavior of the server may be controlled by attaching
+ an additional HTTP header to the sent request: ``X-MongoDB-HTTP-TestParams``.
+
+
+Case 1: Success
+```````````````
+
+Do not set an ``X-MongoDB-HTTP-TestParams`` header.
+
+Upon receiving a response from ``fake_azure``, the driver must decode the
+following information:
+
+1. HTTP status will be ``200 Okay``.
+2. The HTTP body will be a valid JSON string.
+3. The access token will be the string ``"magic-cookie"``.
+4. The expiry duration of the token will be seventy seconds.
+5. The token will have a resource of ``"https://vault.azure.net"``
+
+
+Case 2: Empty JSON
+``````````````````
+
+This case addresses a server returning valid JSON with invalid content.
+
+Set ``X-MongoDB-HTTP-TestParams`` to ``case=empty-json``.
+
+Upon receiving a response:
+
+1. HTTP status will be ``200 Okay``
+2. The HTTP body will be a valid JSON string.
+3. There will be no access token, expiry duration, or resource.
+
+The test case should ensure that this error condition is handled gracefully.
+
+
+Case 3: Bad JSON
+````````````````
+
+This case addresses a server returning malformed JSON.
+
+Set ``X-MongoDB-HTTP-TestParams`` to ``case=bad-json``.
+
+Upon receiving a response:
+
+1. HTTP status will be ``200 Okay``
+2. The response body will contain a malformed JSON string.
+
+The test case should ensure that this error condition is handled gracefully.
+
+
+Case 4: HTTP 404
+````````````````
+
+This case addresses a server returning a "Not Found" response. This is
+documented to occur spuriously within an Azure environment.
+
+Set ``X-MongoDB-HTTP-TestParams`` to ``case=404``.
+
+Upon receiving a response:
+
+1. HTTP status will be ``404 Not Found``.
+2. The response body is unspecified.
+
+The test case should ensure that this error condition is handled gracefully.
+
+
+Case 5: HTTP 500
+````````````````
+
+This case addresses an IMDS server reporting an internal error. This is
+documented to occur spuriously within an Azure environment.
+
+Set ``X-MongoDB-HTTP-TestParams`` to ``case=500``.
+
+Upon receiving a response:
+
+1. HTTP status code will be ``500``.
+2. The response body is unspecified.
+
+The test case should ensure that this error condition is handled gracefully.
+
+
+Case 6: Slow Response
+`````````````````````
+
+This case addresses an IMDS server responding very slowly. Drivers should not
+halt the application waiting on a peer to communicate.
+
+Set ``X-MongoDB-HTTP-TestParams`` to ``case=slow``.
+
+The HTTP response from the ``fake_azure`` server will take at least 1000 seconds
+to complete. The request should fail with a timeout.
+
+19. Azure IMDS Credentials Integration Test
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Refer: `Automatic Azure Credentials `_
+
+.. _auto-azure: ../client-side-encryption.rst#obtaining-an-access-token-for-azure-key-vault
+
+For these cases, create a ClientEncryption_ object :math:`C` with the following
+options:
+
+.. code-block:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ,
+ keyVaultNamespace: "keyvault.datakeys",
+ kmsProviders: { "azure": {} },
+ }
+
+Case 1: Failure
+```````````````
+
+Do not run this test case in an Azure environment with an attached identity.
+This may be run in an AWS EC2 instance.
+
+Attempt to create a datakey with :math:`C` using the ``"azure"`` KMS provider and
+following ``DataKeyOpts``:
+
+.. code-block:: typescript
+
+ class DataKeyOpts {
+ masterKey: {
+ "keyVaultEndpoint": "https://keyvault-drivers-2411.vault.azure.net/keys/",
+ "keyName": "KEY-NAME"
+ }
+ }
+
+Expect the attempt to obtain ``"azure"`` credentials from the environment to fail.
+
+Case 2: Success
+```````````````
+
+This test case must run in an Azure environment with an attached identity.
+See `drivers-evergreen-tools/.evergreen/csfle/azurekms
+`_
+for scripts to create a Azure instance for testing. The Evergreen task SHOULD set a
+``batchtime`` of 14 days to reduce how often this test case runs.
+
+Attempt to create a datakey with :math:`C` using the ``"azure"`` KMS provider and
+following ``DataKeyOpts``:
+
+.. code-block:: typescript
+
+ class DataKeyOpts {
+ masterKey: {
+ "keyVaultEndpoint": "https://keyvault-drivers-2411.vault.azure.net/keys/",
+ "keyName": "KEY-NAME"
+ }
+ }
+
+This should successfully load and use the Azure credentials of the service account
+attached to the virtual machine.
+
+Expect the key to be successfully created.
+
+20. Bypass creating mongocryptd client when shared library is loaded
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. note::
+
+ IMPORTANT: If crypt_shared_ is not visible to the operating system's library
+ search mechanism, this test should be skipped.
+
+
+The following tests that a mongocryptd client is not created when shared library is in-use.
+
+#. Start a new thread (referred to as ``listenerThread``)
+
+#. On ``listenerThread``, create a TcpListener on 127.0.0.1 endpoint and port 27021. Start the listener and wait for establishing connections.
+ If any connection is established, then signal about this to the main thread.
+
+ Drivers MAY pass a different port if they expect their testing infrastructure to be using port 27021. Pass a port that should be free.
+
+#. Create a MongoClient configured with auto encryption (referred to as ``client_encrypted``)
+
+ Configure the required options. Use the ``local`` KMS provider as follows:
+
+ .. code:: javascript
+
+ { "local": { "key": } }
+
+ Configure with the ``keyVaultNamespace`` set to ``keyvault.datakeys``.
+
+ Configure the following ``extraOptions``:
+
+ .. code:: javascript
+
+ {
+ "mongocryptdURI": "mongodb://localhost:27021"
+ }
+
+#. Use ``client_encrypted`` to insert the document ``{"unencrypted": "test"}`` into ``db.coll``.
+
+#. Expect no signal from ``listenerThread``.
+
+
+
+21. Automatic Data Encryption Keys
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The Automatic Data Encryption Keys tests require MongoDB server 6.0+. The tests must not run against a standalone.
+
+For each of the following test cases, assume `DB` is a valid open database
+handle, and assume a ClientEncryption_ object `CE` created using the following
+options::
+
+ clientEncryptionOptions: {
+ keyVaultClient: ,
+ keyVaultNamespace: "keyvault.datakeys",
+ kmsProviders: {
+ local: { key: base64Decode(LOCAL_MASTERKEY) },
+ },
+ }
+
+
+Case 1: Simple Creation and Validation
+``````````````````````````````````````
+
+This test is the most basic to verify that CreateEncryptedCollection_ created a
+collection with queryable encryption enabled. It verifies that the server
+rejects an attempt to insert plaintext in an encrypted fields.
+
+.. _CreateEncryptedCollection: ../client-side-encryption.rst#create-encrypted-collection-helper
+.. _MongoClient: ../client-side-encryption.rst#mongoclient-changes
+
+.. highlight:: typescript
+.. default-role:: math
+
+1. Create a new create-collection options `Opts` including the following::
+
+ {
+ encryptedFields: {
+ fields: [{
+ path: "ssn",
+ bsonType: "string",
+ keyId: null
+ }]
+ }
+ }
+
+2. Invoke `CreateEncryptedCollection(CE, DB, "testing1", Opts, "local", null)`
+ to obtain a new collection `Coll`. Expect success.
+3. Attempt to insert the following document into `Coll`::
+
+ {
+ ssn: "123-45-6789"
+ }
+
+4. Expect an error from the insert operation that indicates that the document
+ failed validation. This error indicates that the server expects to receive an
+ encrypted field for ``ssn``, but we tried to insert a plaintext field via a
+ client that is unaware of the encryption requirements.
+
+
+Case 2: Missing ``encryptedFields``
+```````````````````````````````````
+
+The CreateEncryptedCollection_ helper should not create a regular collection if
+there are no ``encryptedFields`` for the collection being created. Instead, it
+should generate an error indicated that the ``encryptedFields`` option is
+missing.
+
+1. Create a new empty create-collection options `Opts`. (i.e. it must not
+ contain any ``encryptedFields`` options.)
+2. Invoke `CreateEncryptedCollection(CE, DB, "testing1", Opts, "local", null)`.
+3. Expect the invocation to fail with an error indicating that
+ ``encryptedFields`` is not defined for the collection, and expect that no
+ collection was created within the database. It would be *incorrect* for
+ CreateEncryptedCollection_ to create a regular collection without queryable
+ encryption enabled.
+
+
+Case 3: Invalid ``keyId``
+`````````````````````````
+
+The CreateEncryptedCollection_ helper only inspects ``encryptedFields.fields``
+for ``keyId`` of ``null``. CreateEncryptedCollection_ should forward all other
+data as-is, even if it would be malformed. The server should generate an error
+when attempting to create a collection with such invalid settings.
+
+.. note::
+
+ This test is not required if the type system of the driver has a compile-time
+ check that fields' ``keyId``\ s are of the correct type.
+
+1. Create a new create-collection options `Opts` including the following::
+
+ {
+ encryptedFields: {
+ fields: [{
+ path: "ssn",
+ bsonType: "string",
+ keyId: false,
+ }]
+ }
+ }
+
+2. Invoke `CreateEncryptedCollection(CE, DB, "testing1", Opts, "local", null)`.
+3. Expect an error from the server indicating a validation error at
+ ``create.encryptedFields.fields.keyId``, which must be a UUID and not a
+ boolean value.
+
+Case 4: Insert encrypted value
+``````````````````````````````
+
+This test is continuation of the case 1 and provides a way to complete inserting
+with encrypted value.
+
+1. Create a new create-collection options `Opts` including the following::
+
+ {
+ encryptedFields: {
+ fields: [{
+ path: "ssn",
+ bsonType: "string",
+ keyId: null
+ }]
+ }
+ }
+
+2. Invoke `CreateEncryptedCollection(CE, DB, "testing1", Opts, "local", null)`
+ to obtain a new collection `Coll` and data key `key1`. Expect success.
+3. Use `CE` to explicitly encrypt the string "123-45-6789" using
+ algorithm `Unindexed` and data key `key1`. Refer result as `encryptedPayload`.
+4. Attempt to insert the following document into `Coll`::
+
+ {
+ ssn:
+ }
+
+ Expect success.
+
+22. Range Explicit Encryption
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The Range Explicit Encryption tests require MongoDB server 6.2+. The tests must not run against a standalone.
+
+Each of the following test cases must pass for each of the supported types (``DecimalNoPrecision``, ``DecimalPrecision``, ``DoublePrecision``, ``DoubleNoPrecision``, ``Date``, ``Int``, and ``Long``), unless it is stated the type should be skipped.
+
+Tests for ``DecimalNoPrecision`` must only run against a replica set. ``DecimalNoPrecision`` queries are expected to take a long time and may exceed the default mongos timeout.
+
+Before running each of the following test cases, perform the following Test Setup.
+
+Test Setup
+``````````
+Load the file for the specific data type being tested ``encryptedFields-.json``. For example, for ``Int`` load `range-encryptedFields-Int.json `_ as ``encryptedFields``.
+
+Load the file `key1-document.json `_ as ``key1Document``.
+
+Read the ``"_id"`` field of ``key1Document`` as ``key1ID``.
+
+Drop and create the collection ``db.explicit_encryption`` using ``encryptedFields`` as an option. See `FLE 2 CreateCollection() and Collection.Drop() `_.
+
+Drop and create the collection ``keyvault.datakeys``.
+
+Insert ``key1Document`` in ``keyvault.datakeys`` with majority write concern.
+
+Create a MongoClient named ``keyVaultClient``.
+
+Create a ClientEncryption object named ``clientEncryption`` with these options:
+
+.. code:: typescript
+
+ ClientEncryptionOpts {
+ keyVaultClient: ;
+ keyVaultNamespace: "keyvault.datakeys";
+ kmsProviders: { "local": { "key": } }
+ }
+
+Create a MongoClient named ``encryptedClient`` with these ``AutoEncryptionOpts``:
+
+.. code:: typescript
+
+ AutoEncryptionOpts {
+ keyVaultNamespace: "keyvault.datakeys";
+ kmsProviders: { "local": { "key": } }
+ bypassQueryAnalysis: true
+ }
+
+The remaining tasks require setting ``RangeOpts``. `Test Setup: RangeOpts`_ lists the values to use for ``RangeOpts`` for each of the supported data types.
+
+Use ``clientEncryption`` to encrypt these values: 0, 6, 30, and 200. Ensure the type matches with the type of the encrypted field. For example, if the encrypted field is ``encryptedDoubleNoPrecision`` encrypt the value 6.0.
+
+Encrypt these values with the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts``:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ contentionFactor: 0
+ }
+
+Use ``encryptedClient`` to insert these documents into ``db.explicit_encryption``:
+
+- ``{ "encrypted": , _id: 0 }``
+- ``{ "encrypted": , _id: 1 }``
+- ``{ "encrypted": , _id: 2 }``
+- ``{ "encrypted": , _id: 3 }``
+
+
+Test Setup: RangeOpts
+`````````````````````
+This section lists the values to use for ``RangeOpts`` for each of the supported data types, since each data type requires a different ``RangeOpts``.
+
+Each test listed in the cases below must pass for all supported data types unless it is stated the type should be skipped.
+
+#. DecimalNoPrecision
+
+ .. code:: typescript
+
+ class RangeOpts {
+ sparsity: 1
+ }
+
+#. DecimalPrecision
+
+ .. code:: typescript
+
+ class RangeOpts {
+ min: { "$numberDecimal": "0" },
+ max: { "$numberDecimal": "200" },
+ sparsity: 1,
+ precision: 2
+ }
+
+#. DoubleNoPrecision
+
+ .. code:: typescript
+
+ class RangeOpts {
+ sparsity: 1
+ }
+
+#. DoublePrecision
+
+ .. code:: typescript
+
+ class RangeOpts {
+ min: { "$numberDouble": "0" },
+ max: { "$numberDouble": "200" },
+ sparsity: 1,
+ precision: 2
+ }
+
+#. Date
+
+ .. code:: typescript
+
+ class RangeOpts {
+ min: {"$date": { "$numberLong": "0" } } ,
+ max: {"$date": { "$numberLong": "200" } },
+ sparsity: 1
+ }
+
+#. Int
+
+ .. code:: typescript
+
+ class RangeOpts {
+ min: {"$numberInt": "0" } ,
+ max: {"$numberInt": "200" },
+ sparsity: 1
+ }
+
+#. Long
+
+ .. code:: typescript
+
+ class RangeOpts {
+ min: {"$numberLong": "0" } ,
+ max: {"$numberLong": "200" },
+ sparsity: 1
+ }
+
+Case 1: can decrypt a payload
+`````````````````````````````
+Use ``clientEncryption.encrypt()`` to encrypt the value 6. Ensure the type matches with the type of the encrypted field. For example, if the encrypted field is ``encryptedDoubleNoPrecision`` encrypt the double value 6.0.
+
+Store the result in ``insertPayload``.
+
+Encrypt with the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts``:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ contentionFactor: 0
+ }
+
+Use ``clientEncryption`` to decrypt ``insertPayload``. Assert the returned value equals 6.
+
+Case 2: can find encrypted range and return the maximum
+```````````````````````````````````````````````````````
+Use ``clientEncryption.encryptExpression()`` to encrypt this query:
+
+.. code:: javascript
+
+ //convert 6 and 200 to match the type of the encrypted field.
+ {"$and": [{"encrypted": {"$gte": 6}}, {"encrypted": {"$lte": 200}}]}
+
+Use the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts`` to encrypt the query:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ queryType: "rangePreview",
+ contentionFactor: 0
+ }
+
+Store the result in ``findPayload``.
+
+Use ``encryptedClient`` to run a "find" operation on the ``db.explicit_encryption`` collection with the filter ``findPayload`` and sort the results by ``_id``.
+
+Assert these three documents ``{ "encrypted": 6 }, { "encrypted": 30 }, { "encrypted": 200}`` are returned.
+
+
+Case 3: can find encrypted range and return the minimum
+```````````````````````````````````````````````````````
+Use ``clientEncryption.encryptExpression()`` to encrypt this query:
+
+
+.. code:: javascript
+
+ //convert 0 and 6 to match the type of the encrypted field.
+ {"$and": [{"encrypted": {"$gte": 0}}, {"encrypted": {"$lte": 6}}]}
+
+Use the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts`` to encrypt the query:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ queryType: "rangePreview",
+ contentionFactor: 0
+ }
+
+Store the result in ``findPayload``.
+
+Use ``encryptedClient`` to run a "find" operation on the ``db.explicit_encryption`` collection with the filter ``findPayload`` and sort the results by ``_id``.
+
+Assert these two documents ``{ "encrypted": 0 }, { "encrypted": 6 }`` are returned.
+
+Case 4: can find encrypted range with an open range query
+`````````````````````````````````````````````````````````
+Use ``clientEncryption.encryptExpression()`` to encrypt this query:
+
+.. code:: javascript
+
+ //convert 30 to match the type of the encrypted field.
+ {"$and": [{"encrypted": {"$gt": 30}}]}
+
+Use the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts`` to encrypt the query:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ queryType: "rangePreview",
+ contentionFactor: 0
+ }
+
+Store the result in ``findPayload``.
+
+Use ``encryptedClient`` to run a "find" operation on the ``db.explicit_encryption`` collection with the filter ``findPayload`` and sort the results by ``_id``.
+
+Assert that only this document ``{ "encrypted": 200 }`` is returned.
+
+Case 5: can run an aggregation expression inside $expr
+``````````````````````````````````````````````````````
+Use ``clientEncryption.encryptExpression()`` to encrypt this query:
+
+.. code:: javascript
+
+ {'$and': [ { '$lt': [ '$encrypted', 30 ] } ] } }
+
+Use the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts`` to encrypt the query:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ queryType: "rangePreview",
+ contentionFactor: 0
+ }
+
+Store the result in ``findPayload``.
+
+Use ``encryptedClient`` to run a "find" operation on the ``db.explicit_encryption`` collection with the filter ``{'$expr' : }`` and sort the results by ``_id``.
+
+Assert that these two documents ``{ "encrypted": 0 }, { "encrypted": 6 }`` are returned.
+
+Case 6: encrypting a document greater than the maximum errors
+`````````````````````````````````````````````````````````````
+This test case should be skipped if the encrypted field is ``encryptedDoubleNoPrecision`` or ``encryptedDecimalNoPrecision``.
+
+Use ``clientEncryption.encrypt()`` to try to encrypt the value 201 with the matching ``RangeOpts`` listed in `Test Setup: RangeOpts`_ and these ``EncryptOpts``:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ contentionFactor: 0
+ }
+
+Ensure 201 matches the type of the encrypted field. The error should be raised because 201 is greater than the maximum value in ``RangeOpts``.
+
+Assert that an error was raised.
+
+Case 7: encrypting a document of a different type errors
+````````````````````````````````````````````````````````
+This test case should be skipped if the encrypted field is ``encryptedDoubleNoPrecision`` or ``encryptedDecimalNoPrecision``.
+
+For all the tests below use these ``EncryptOpts``:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ contentionFactor: 0
+ }
+
+If the encrypted field is ``encryptedInt`` encrypt ``{ "encryptedInt": { "$numberDouble": "6" } }``.
+Otherwise, encrypt ``{ "encrypted": { "$numberInt": "6" }``.
+Assert an error was raised.
+
+
+Case 8: setting precision errors if the type is not a double
+````````````````````````````````````````````````````````````
+This test case should be skipped if the encrypted field is ``encryptedDoublePrecision`` or ``encryptedDoubleNoPrecision`` or ``encryptedDecimalPrecision`` or ``encryptedDecimalNoPrecision``.
+
+Use ``clientEncryption.encrypt()`` to try to encrypt the value 6 with these ``EncryptOpts`` and these ``RangeOpts``:
+
+.. code:: typescript
+
+ class EncryptOpts {
+ keyId :
+ algorithm: "RangePreview",
+ contentionFactor: 0
+ }
+
+ class RangeOpts {
+ min: 0,
+ max: 200,
+ sparsity: 1,
+ precision: 2,
+ }
+
+Assert an error was raised.
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-BypassQueryAnalysis.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-BypassQueryAnalysis.json
index 629faf189db..b8d06e8bcdd 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-BypassQueryAnalysis.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-BypassQueryAnalysis.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Compact.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Compact.json
index 46da99cbfc3..6ca0f9ba02c 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Compact.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Compact.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-CreateCollection.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-CreateCollection.json
index 6836f40e040..9f8db41f871 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-CreateCollection.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-CreateCollection.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-DecryptExistingData.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-DecryptExistingData.json
index c6d0bca0d1a..e622d3334de 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-DecryptExistingData.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-DecryptExistingData.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Delete.json
index 0e3e06396e5..86871277480 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Delete.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Delete.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-EncryptedFieldsMap.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-EncryptedFieldsMap.json
index ea3eb4850c1..911b428633a 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-EncryptedFieldsMap.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-EncryptedFieldsMap.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-jsonSchema.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-jsonSchema.json
index 1d3227ee7f0..f4386483da9 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-jsonSchema.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFields-vs-jsonSchema.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFieldsMap-defaults.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFieldsMap-defaults.json
index 030952e0564..60820aae95e 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFieldsMap-defaults.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-EncryptedFieldsMap-defaults.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-FindOneAndUpdate.json
index b31438876f9..de1b5c5aad0 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-FindOneAndUpdate.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-FindOneAndUpdate.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Indexed.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Indexed.json
index 81a549590e7..84b69d7de91 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Indexed.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Indexed.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Unindexed.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Unindexed.json
index c1bdc90760b..9b314385256 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Unindexed.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-InsertFind-Unindexed.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-MissingKey.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-MissingKey.json
index 2db1cd77025..4210da09e43 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-MissingKey.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-MissingKey.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-NoEncryption.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-NoEncryption.json
index e9dd586c26c..9d255bd4938 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-NoEncryption.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-NoEncryption.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Aggregate.json
new file mode 100644
index 00000000000..a35321cd358
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Aggregate.json
@@ -0,0 +1,514 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Date. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Correctness.json
new file mode 100644
index 00000000000..5832e854183
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Correctness.json
@@ -0,0 +1,1842 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gte": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$lt": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$lte": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$lt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "$lt": {
+ "$date": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gte": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "$lte": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$in": [
+ {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Insert out of range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "-1"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value must be greater than or equal to the minimum value"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Insert min and max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 200,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {},
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 200,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gte": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$lt": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$lte": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$lt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "$lt": {
+ "$date": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$gte": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "$lte": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDate": {
+ "$in": [
+ {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gte": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value type is a date"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Delete.json
new file mode 100644
index 00000000000..b5856e76206
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Delete.json
@@ -0,0 +1,459 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Date. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedDate": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDate": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-FindOneAndUpdate.json
new file mode 100644
index 00000000000..a59258a466e
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-FindOneAndUpdate.json
@@ -0,0 +1,538 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Date. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedDate": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDate": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-InsertFind.json
new file mode 100644
index 00000000000..4357fafeea5
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-InsertFind.json
@@ -0,0 +1,505 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Date. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Update.json
new file mode 100644
index 00000000000..fd170554f62
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Date-Update.json
@@ -0,0 +1,540 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Date. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedDate": {
+ "$gt": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDate": {
+ "$date": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedDate": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedDate": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDate",
+ "bsonType": "date",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$date": {
+ "$numberLong": "0"
+ }
+ },
+ "max": {
+ "$date": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDate": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDate": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Aggregate.json
new file mode 100644
index 00000000000..73d2cf4892d
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Aggregate.json
@@ -0,0 +1,1908 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Decimal. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RGTjNVEsNJb+DG7DpPOam8rQWD5HZAMpRyiTQaw7tk8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I93Md7QNPGmEEGYU1+VVCqBPBEvXdqHPtTJtMOn06Yk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "GecBFQ1PemlECWZWCl7f74vmsL6eB6mzQ9n6tK6FYfs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QpjhZl+O1ORifgtCZuWAdcP6OKL7IZ2cA46v8FJcV28=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RlQWwhU+uVv0a+9IB5cUkEfvHBvOw3B1Sx6WfPWMqes=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubb81XTC7U+4tcNzf1oYvOY6gR5hC2Izqx54f4GuJ0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6M4Q5NMQ9TqNnjzGOxIkiUIY8TEL0I3XD1QnhefQUqU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BtInzk9t2FFMCEY6AQ7zN8jwrrZEs2irSv6q0Q4NaIw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vxXfETu9cuBIpRBo3jUUU04mJIH/aAhLX8K6VI5Xv0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXPCdS+q23zi1bkPnaVG2j0PsVtxdeSLJ//h6J1x8RU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KY3KkfBAsN2l80wbpj41G0gwBR5KmmFnZcagg7D3ENk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI8NFAxXCX4VOnY5X73K6KI/Yspd3aR94KV39MhJlAw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nFxH0UC3mATKA6Vboz+QX/hAjj19kF/SH6H5Cne7qC0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q8hYqIYaIi7nOdG/7qQZYnz8Bsacfi66M1nVku4SH08=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4saA92R4arp4anvD9xFtze+sNcQqTEhPHyl1h70A8NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DbIziOBRRyeQS6RtBR09E37LV+CTKrEjGoRMLSpG6eE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Fv80Plp/7w2gnVqrwawLd6qhJ10G4NCDm3re67cNq4Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "T/T2oiQCBBES4YN7EodzPRdabZSFlYIClHBym+bQUZE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZQgHD3l46Ujqtbnj1VbbeM29C9wJzOhz+yZ/7XdSrxk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ltlFKzWvyZvHxDFOYDd/XXJ6kUiJj0ln2HTCEz2o4Z4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "flW8A7bltC1u8bzx0WJtxosGJdOVsJFfbx33jxnpFGg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SXO+92QbMKwUSG2t27ciunV1c3VvFkUuDmSczpRe008=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+KioGs1GM+xRBzFE67ePTWj04KMSE5/Y6qUF7nJ5kvU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L3xNVbh6YH+RzqABN+5Jgb7T234Efpn766DmUvxIxgg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hPF+60mBYPjh21dEmPlBhKgyc9S2qLtTkypYvnqP2Fc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EletRsETy2HcjaPIm2c8CkT7ch/P3pJJDC8hasepcSU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "r5bMXUaNKqLPxZ+TG9HYTG4aSDgcpim27rN8rQFkM0w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Q7Erdr8+/S0wUEDDIqlS5XjBVWvhZY65K0uUDb6+Ns=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xEcnhXy35hbXNVBPOOt3TUHbxvKfQ48KjA9b6/rbMqQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "T8bEpiQNgsEudXvyKE9SZlSvbpV/LUaslsdqgSFltyo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hIoiaF2YjnxDbODfhFEB+JGZ5nf8suD3Shck5bwQ3N0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qnA6qzejeRJ0rsZaZ0zOvKAaXyxt5lpscKQNYFZNl4k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "anAKCL2DN/le2VaP0n2ucYSEH/DaaEH/8Sa4OqTZsRA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JCZlBJaFm618oWYSnT9Jr1MtwFVw4BZjOzO+5yWgR90=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yxyk4n9762WzcDVGnTn4jCqUnSMIVCrLDIjCX1QVj34=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fDI6fdKvDJwim5/CQwWZEzcrXE3LHgy7FTtffcC7tXE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Vex+gcz5T+WkzsVZQrkqUR2ryyZbnaOGuWpYvjN0zCw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8TLEXz+Gbbp6llHpZXVjLsdlYY9f6hrKpHVpyfDe0RY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7fTyt5BrunypS65TfOzFW2E2qdIuT4SLeDeGlbQoJCs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8fKGrkqN0/KuSjyXgDBmRauDKrSa//JBKRWHEB9xBf4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s4codmG7uN4ss6P357jL21lazEe90M9GOK5WrOknSV0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RkSpua8XF+NUdxVDU90EbLUTTyZFX3tt3atBTroFaRk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LnTCuCDyAHK5B9KXzjtwGmWB+qergQk2OCjnIx9MI2A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cBFh0virAX4pVXf/udIGI2951i0+0aZAdJcBVGtYnT4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "G54X6myQXWZ5fw/G31en3QbdgfXzL9+hFTtJpnWMqDI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EdsiiuezcsFJFnYIyGjCOhnqMj1BOwTB5EFxN+ERUkg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dVH9MXLtk0WTwGQ3xmrhOqfropMUkDW3o6paNPGl3NU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sB3HqXKWY3pKbuEH8BTbfNIGfbY+7/ZbOc3XC+JRNNI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WHyDk62Xhqbo4/iie2aLIM4x2uuAjv6102dJSHI58oM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pNUFuHpeNRDUZ/NrtII2c6sNc9eGR1lIUlIyXKERA+0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UPa+pdCqnN0bfAptdzldQOSd01gidrDKy8KhWrpSKAI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "l+7dOAlo+HUffMqFYXL6pgUFeTbwOM9CjKQLxEoLtc4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SRnDXV/rN6C8xwMutv9E1luv3DOUio3VkgPr8Cpm7Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QcH6gl+gX7xZ7OWhUNQMbndJy0Piz49pDo6RsnLkVSA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "t+uL4DnfsI/Zll/KXWW1cOKX3Hu8WIkm3pt9efCVSAQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "myutHDctku/+Uug/nD8gRbYvmx/IovtoAAC2/fz2oHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6C+cjD0e0nSCP6cPqQYbNG7SlOd6Mfvi8hyfm7Ng+D8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zg01JSoOj9oBKT0S1ldJucXzY5AKgreS+h2xJreWTOs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7qQ80/FjodHl1m1py/Oii0/9C/xWbLdhaRXQ+kkCP10=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YwWMNH07vL6c5Nhg+MRnVByhzUunu8y0VLM9z/XvR5U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dle8bU98+fudAbc14SToZFkwvV3tcYVsjDug0NWljpc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "J+eKL1vPJmlzltvhI6Li5Fz/TJmi3Ng+ehRTcs46API=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB3XzfFygLwC3WHkj0up+VbEd25KKoce1vOpG/5bwK4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vnVnmOnL+z2pqwE+A6cVKS0Iwy4F4/2IiElJca9bUQM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+lG5r/Fpqry3BtFuvY67+RntmHAMDoLVOSGc6ZoXPb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L5MXQertqc6uj7ADe8aWKbd1sYHPCE7P1VYVg9Zc3VI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "imKONuZgopt0bhM3GMX2WVPwQYMTobuUUEdhcLfHs4c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eOkU1J1uVbiVFWBerbXsSIVcF2nqiicTkFy4x7kFHB8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gI0uDhXeoH/UatDQKEf4qo8FHzWZDhb/wuWTqbq/ID4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cOkd5Aa3btYhtojE/smsF/PJnULqQ4NNqTkU6KXTFmo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AWNJMs1MTe294oFipp8Y6P0CjpkZ4qCZoClQF3XcHq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6gJtlzXOFhGYrVbTuRMmvMlDTwXdNtR9aGBlHZPwIMw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LEmwVGA/xsEG7UrcOoYLFu6KCXgijzFznenknuDacm8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mIRFPTXRrGaPtp/Ydij2jgkRe4uoUvAKxW2d8b9zYL0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "B+Uv2u48WALOO0L311z+eryjYQzKJVMfdHMZPhOAFmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "INXXp0wDyVCq+NtfIrrC2ciETmyW/dWB/48/u4yLEZ4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "se7DGo8XrlrQDLEcco1tZrQt9kDe+0RTyl2bw/quG4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vr0m2+Zk9lbN6UgWCyn8xJWJOokU3IDYab5U5q1+CgQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XI+eJ8Gy2JktG1gICgoj1qpsfy1tKmH0kglWbaQH6DA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A+UCuNnuAUqnQzspA6TVqUPRmtZmpSex5HFw7THRxs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xaH2Ehfljd19uo0Fvb3iwkdaiWEVQd2YPoitgEPkhSM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S/iZBJGcc8+qZxyMtab65MMBoSglybwk3x58Nb86gnY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "w14ZE5qqY5YgkS4Zcs9YNbrQbY1XfGOOHNn9bOYnFVQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0MhGd/jEF1vjkKGp+ZMn9SjLK54jkp9W4Hg+Sp/oxaI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "92QZ73e/NRTYgCm4aifaKth6aAsKnLLccBc0zx/qUTY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WOjzemCgFJOiGIp81RSVh/tFlzSTj9eFWcBnsiv2Ycs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DrsP9CmfKPjw5yLL8bnSeAxfNzAwlb+Z8OqCiKgBY7o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lMogqg8veBv6mri3/drMe9afJiKMvevkmGcw9BedfLo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TxqwNcY8Tg2MPpNdkPBwvfpuTttSYRHU26DGECKYQ9o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "l0u1b4b4vYACWIwfnB7PZac4oDEgjQZCzHruNPTgAIY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "iVSGQ+cCfhbWIrY/v/WBORK92elu9gfRKyGhr6r/k00=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yK1forG50diEXte8ECzjfpHeYsPyuQ/dgxbxn/nzY5k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gIfTLCD3VwnOwkC0zPXWTqaITxX6ZplA69PO2a6zolc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "O/Zxlgh3WqpzJ7+Sd8XWMVID4/GXJUUWaSqfgDUi3b0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZQ6yv368zwahUqSUYH/StL0Qgz/TwS1CzlMjVDvCciI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m2rPEYkjwyiKdonMrKlcF7hya4lFOAUwEePJ3SgrNx8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mq0yl5iVKlq71bT/dT/fXOWf2n90bTnXFnOdGDN0JOc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6qDGMXipPLC2O6EAAMjO2F9xx4rdqZso4IkPpH2304U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jvQHRQQa2RIszE2LX2Hv2LbRhYawJ6qmtRt8HZzFQXg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ovJXQrkZlpeHRciKyE/WWNm5O389gRgzx1W+Dw596X4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "a4kgRNvYctGYqyQv9qScL/WkljTYVylJ9pE9KDULlxU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qV4Q48vPiCJMTjljotzYKI/zfExWpkKOSHGcAjGyDig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jtI7zbBF+QW/aYYTkn90zzyHLXLgmy7l1bzgMb2oqic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q0KmJl9txPdn962UNvnfe6UFhdk9YaFZuTm33F+csso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ULNdEqeZJgtmNOhN/Y9INzsE9AnxWYwOMn+pIbRXIFs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "R4oz9+wkdjpKe5tE1jpG7IURAnfvS5fLP4LrD5cZfTE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qG5Z7VhwSu/HT/YFTgDzyAAzJKq51xPw2HeEV5btYC4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OM/1DmIIZ5Qyhtq8TGkHTBEMVKjAnKRZMRXYtTG8ctc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2R5vZbljLXnDFA99YfGuRB7pAdPJVKsT25zLNMC0fUk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OMbavF2EmdAz1fHkLV3ctFEUDfriKhoT2gidwHZ9z1o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MWT4Zrw3/vVvTYMa1Is5Pjr3wEwnBfnEAPPUAHKQhNU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tBkRPfG9yxfKocQx5pAJX0oEHKPL0Tgtr+0UYe09InE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lqxpnDR/H0YgH7RcfKoNoaaRhe1SIazIeMbQ1fu9y3Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "utT1UdR22PWOTrOkZauztX613lAplV4eh/ejTRb7ZSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S+Y2yFyKi/a6FXhih4yGo29X8I8OT6/zwEoX6NMKT4o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QSjVppg29x6oS5yBg8OFjrFt0tuTpWCuKxfIy0k8YnE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y3r6/Xsfvsl3HksXlVYkJgHUqpQGfICxg3x9f8Zw1qM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BSltHzEwDjFN4du9rDHAPvl22atlcTioEtt+gC5L1tk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0arGXjSN0006UnXbrWsGqhvBair569DeFDUME3Df3rA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s/DumaMad08S+PBUUcrS+v42K0z8HgcdiQtrFAEu2Qs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EzJ8Y8N0OQBTlnvrK82PdevDNZZO4E6CNgYVu8Cj6Ks=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VA4vr8jBPI5QdiPrULzzZjBMIUbG3V7Slg5zm0bFcKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YAOvEB2ZLtq9LQiFViBHWaxxWVVonC2rNYj9tN9s3L0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hgaHMo9aAGS+nBwvqnTjZO+YkiQPY1c1XcIYeaYKHyI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YvaoLt3ZpH0atB0tNzwMjpoxRYJXl0DqSjisMJiGVBE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EMmW6CptFsiLoPOi5/uAJQ2FmeLg6mCpuVLLrRWk7Mc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1jQsNMarSnarlYmXEuoFokeBMg/090qUD9wqo1Zn8Gs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hupXNKhRpJxpyDAAP1TgJ5JMZh9lhbMk6s7D7dMS3C8=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Correctness.json
new file mode 100644
index 00000000000..89b7bd3118b
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Correctness.json
@@ -0,0 +1,1158 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$lt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$lte": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ },
+ "$lt": {
+ "$numberDecimal": "2.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$in": [
+ {
+ "$numberDecimal": "0.0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$lt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$lte": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ },
+ "$lt": {
+ "$numberDecimal": "2.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimal": {
+ "$in": [
+ {
+ "$numberDecimal": "0.0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Delete.json
new file mode 100644
index 00000000000..0463be1c69f
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Delete.json
@@ -0,0 +1,1133 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Decimal. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$binary": {
+ "base64": "CgljAAADcGF5bG9hZADZYgAABGcAnWIAAAMwAH0AAAAFZAAgAAAAAJu2KgiI8vM+kz9qD3ZQzFQY5qbgYqCqHG5R4jAlnlwXBXMAIAAAAAAAUXxFXsz764T79sGCdhxvNd5b6E/9p61FonsHyEIhogVjACAAAAAAeEtIU/sp7zwjA/VArYkCzkUUiRiQOmlTaVZvfUqbEp0AAzEAfQAAAAVkACAAAAAAPQPvL0ARjujSv2Rkm8r7spVsgeC1K3FWcskGGZ3OdDIFcwAgAAAAACgNn660GmefR8jLqzgR1u5O+Uocx9GyEHiBqVGko5FZBWMAIAAAAACMKx1UyNAN4yVafFht8jp4w4LNaJcLhnozfSMzDHD3owADMgB9AAAABWQAIAAAAAD2Zi6kcxmaD2mY3VWrP+wYJMPg6cSBIYPapxaFQxYFdQVzACAAAAAAM/cV36BLBY3xFBXsXJY8M9EHHOc/qrmdc2CJmj3M89gFYwAgAAAAAHdek2wlAQ5BQORVjudyziRTV0EKx8qbsnoDiw4HG2xaAAMzAH0AAAAFZAAgAAAAAOaNqI9srQ/mI9gwbk+VkizGBBH/PPWOVusgnfPk3tY1BXMAIAAAAAAc96O/pwKCmHCagT6T/QV/wz4vqO+R22GsZ1dse2Vg6QVjACAAAAAA3tld+twIlVWnCTXElspau5k02CwxXDjh+3u1CQtV/W4AAzQAfQAAAAVkACAAAAAA0XlQgy/Yu97EQOjronl9b3dcR1DFn3deuVhtTLbJZHkFcwAgAAAAACoMnpVl6EFJak8A+t5N4RFnQhkQEBnNAx8wDqmq5U/dBWMAIAAAAABRmXIchytMNz4J439viiY5FZ1OB3AXJBkZ3udUqHpsqAADNQB9AAAABWQAIAAAAAAOtpNexRxfv0yRFvZO9DhlkpU4mDuAb8ykdLnE5Vf1VAVzACAAAAAAeblFKm/30orP16uQpZslvsoS8s0xfNPIBlw3VkHeekYFYwAgAAAAAJQdzGMO2s1AkdKz3ZPytivrQphUFVhvhMcXjvUGzHBDAAM2AH0AAAAFZAAgAAAAAIr8xAFm1zPmrvW4Vy5Ct0W8FxMmyPmFzdWVzesBhAJFBXMAIAAAAABYeeXjJEzTHwxab6pUiCRiZjxgtN59a1y8Szy3hfkg+gVjACAAAAAA161loizzKvXS1Po/3bxeNICmKpsPSK9Q+EpkISK3jVoAAzcAfQAAAAVkACAAAAAAl+ibLk0/+EwoqeC8S8cGgAtjtpQWGEZDsybMPnrrkwEFcwAgAAAAAHPPBudWgQ+HUorLDpJMqhS9VBF2VF5aLcxgrM1s+yU7BWMAIAAAAAACyakB3CZWEjbxK0u9Sflc3+EafBAQFbvBpCxKvxuEQAADOAB9AAAABWQAIAAAAACR9erwLTb+tcWFZgJ2MEfM0PKI9uuwIjDTHADRFgD+SQVzACAAAAAAcOop8TXsGUVQoKhzUllMYWxL93xCOkwtIpV8Q6hiSYYFYwAgAAAAAJ43998lzKoVqWm99ZzKHJLeVscGNCVoKDvpUtt2rDI9AAM5AH0AAAAFZAAgAAAAALv0vCPgh7QpmM8Ug6ad5ioZJCh7pLMdT8FYyQioBQ6KBXMAIAAAAADsCPyIG8t6ApQkRk1fX/sfc1kpuWCWP8gAEpnYoBSHrQVjACAAAAAAj2h1WLr0EFEFZ31djx3BtLIbAtdE05ax54opkJo4/bQAAzEwAH0AAAAFZAAgAAAAAIW4AxJgYoM0pcNTwk1RSbyjZGIqgKL1hcTJmNrnZmoPBXMAIAAAAAAZpfx3EFO0vY0f1eHnE0PazgqeNDTaj+pPJMUNW8lFrAVjACAAAAAAqFD83E8POmo6pdqg7D+jWtngbgcV99mbQBxkbpX7ds4AAzExAH0AAAAFZAAgAAAAAKliO6L9zgeuufjj174hvmQGNRbmYYs9yAirL7OxwEW3BXMAIAAAAAAqU7vs3DWUQ95Eq8OejwWnD0GuXd+ASi/uD6S0l8MM1QVjACAAAAAAp0cwpAh7SiuStPwYNVvp83N5GWyWRWA7UGRxHDDj8g8AAzEyAH0AAAAFZAAgAAAAAOGQcCBkk+j/Kzjt/Cs6g3BZPJG81wIHBS8JewHGpgk+BXMAIAAAAABjrxZXWCkdzrExwCgyHaafuPSQ4V4x2k9kUCAqUaYKDQVjACAAAAAAJr/tEuxScrJJEMECy4itHf1y5+gO2l5sBjgM/EOLXw0AAzEzAH0AAAAFZAAgAAAAAPmCNEt4t97waOSd5hNi2fNCdWEkmcFJ37LI9k4Az4/5BXMAIAAAAABX7DuDPNg+duvELf3NbLWkPMFw2HGLgWGHyVWcPvSNCAVjACAAAAAAeNCEn5Z3A5CgCnIgaBl2N8p0t+5rRY06vGg6ePVMaTUAAzE0AH0AAAAFZAAgAAAAAD4vtVUYRNB+FD9yoQ2FVJH3nMeJeKbi6eZfth638YqbBXMAIAAAAAANCuUB4OdmuD6LaDK2f3vaqfgYYvg40wDXOBbcFjTqLwVjACAAAAAATozHsao4er/Uk5H/pKe/1JEo/3h4Pgah2RgJHXf2PeYAAzE1AH0AAAAFZAAgAAAAAJPIRzjmTjbdIvshG6UslbEOd797ZSIdjGAhGWxVQvK1BXMAIAAAAABgmJ0Jh8WLs9IYs/a7DBjDWd8J3thW/AGJK7zDnMeYOAVjACAAAAAAtD48LbnCkTvacfz8DvR1ixsbYceiJxJRV7tLqDUWvVwAAzE2AH0AAAAFZAAgAAAAAABQyKQPoW8wGPIqnsTv69+DzIdRkohRhOhDmyVHkw9WBXMAIAAAAAAqWA2X4tB/h3O1Xlawtz6ndI6WaTwgU1QYflL35opu5gVjACAAAAAAphx2eRFGSW/tm3HxilqRv5Zj5TtOy4KSGiCIm6yJANYAAzE3AH0AAAAFZAAgAAAAACB7NOyGQ1Id3MYnxtBXqyZ5Ul/lHH6p1b10U63DfT6bBXMAIAAAAADpOryIcndxztkHSfLN3Kzq29sD8djS0PspDSqERMqokQVjACAAAAAAIHYCljTfUu/Ox23Nrjz2Z6cqQpn4s0sJV/SxkC9UtIEAAzE4AH0AAAAFZAAgAAAAAKVfXLfs8XA14CRTB56oZwV+bFJN5BHraTXbqEXZDmTkBXMAIAAAAAASRWTsfGOpqdffiOodoqIgBzG/yzFyjR5CfUsIUIWGpgVjACAAAAAAGs7l0GsFNkQMcJBUuUsEOMuQupbEvi7MDcezspsCY3EAAzE5AH0AAAAFZAAgAAAAAH/aZr4EuS0/noQR9rcF8vwoaxnxrwgOsSJ0ys8PkHhGBXMAIAAAAACd7ObGQW7qfddcvyxRTkPuvq/PHu7+6I5dxwS1Lzy5XAVjACAAAAAAWnfsbdu5Qvb62rEpBR90qh+3jdYfp266dmuNPLoXys4AAzIwAH0AAAAFZAAgAAAAAKvlcpFFNq0oA+urq3w6d80PK1HHHw0H0yVWvU9aHijXBXMAIAAAAADWnAHQ5Fhlcjawki7kWzdqjM2f6IdGJblojrYElWjsZgVjACAAAAAAdNxswYIMjqVta8sLC8wniMm6gOgIgG5eWTPAxItBJJ4AAzIxAH0AAAAFZAAgAAAAAH/2aMezEOddrq+dNOkDrdqf13h2ttOnexZsJxG1G6PNBXMAIAAAAABNtgnibjC4VKy5poYjvdsBBnVvDTF/4mmEAxsXVgZVKgVjACAAAAAArWXr2Myg8T8/0eYBCUXDOsIR//zqZtlE6Lb1YZJkvYcAAzIyAH0AAAAFZAAgAAAAAF2wZoDL6/V59QqO8vdRZWDpXpkV4h4KOCSn5e7x7nmzBXMAIAAAAADLZBu7LCYjbThaVUqMK14H/elrVOYIKJQCx4C9Yjw37gVjACAAAAAAWeF6F8pBeCm27PWjQGrlyN7JHp9WqCNnwFzqZ+V51t0AAzIzAH0AAAAFZAAgAAAAAH27yYaLn9zh2CpvaoomUPercSfJRUmBY6XFqmhcXi9QBXMAIAAAAAAUwumVlIYIs9JhDhSj0R0+59psCMsFk94E62VxkPt42QVjACAAAAAAjbsmlVrfexmULer3RtGwnOf20pF0xv4Z46OHOaIwgzEAAzI0AH0AAAAFZAAgAAAAALMg2kNAO4AFFs/mW3In04yFeN4AP6Vo0klyUoT06RquBXMAIAAAAAAgGWJbeIdwlpqXCyVIYSs0dt54Rfc8JF4b8uYc+YUj0AVjACAAAAAAsNKKan8cMW1oYFmQiyPZbepuJlDD0/CQUS21++CP16kAAzI1AH0AAAAFZAAgAAAAALas/i1T2DFCEmrrLEi7O2ngJZyFHialOoedVXS+OjenBXMAIAAAAAA1kK0QxY4REcGxHeMkgumyF7iwlsRFtw9MlbSSoQY7uAVjACAAAAAAUGZ/BwF6Q9hcFBC8F5ed6RwYWJ1/OahRwljBloMgkFAAAzI2AH0AAAAFZAAgAAAAAP1TejmWg1CEuNSMt6NUgeQ5lT+oBoeyF7d2l5xQrbXWBXMAIAAAAABPX0kj6obggdJShmqtVfueKHplH4ZrXusiwrRDHMOKeQVjACAAAAAApU9zcPAQ2xOspmwhjWN90v2m2clQ4rk7WBmm/nUyOHQAAzI3AH0AAAAFZAAgAAAAAMrKn+QPa/NxYezNhlOX9nyEkN1kE/gW7EuZkVqYl0b8BXMAIAAAAABUoZMSPUywRGfX2EEencJEKH5x/P9ySUVrhStAwgR/LgVjACAAAAAAl/hDhauhBkda/I/kLr/XLxyso2guawC2isj+tDQhfMoAAzI4AH0AAAAFZAAgAAAAAMmD1+a+oVbiUZd1HuZqdgtdVsVKwuWAn3/M1B6QGBM3BXMAIAAAAACLyytOYuZ9WEsIrrtJbXUx4QgipbaAbmlJvSZVkGi0CAVjACAAAAAAVKbMdxvkfCBoqJCUVjLrtKF90a80LocckdFc7LvYuWIAAzI5AH0AAAAFZAAgAAAAAOVKV7IuFwmYP1qVv8h0NvJmfPICu8yQhzjG7oJdTLDoBXMAIAAAAABL70XLfQLKRsw1deJ2MUvxSWKxpF/Ez73jqtbLvqbuogVjACAAAAAARiC2ShVCKMjjiqB6xg+jDIYJNhhWqmceO07EC8rEXkoAAzMwAH0AAAAFZAAgAAAAAKS/1RSAQma+xV9rz04IcdzmavtrBDjOKPM+Z2NEyYfPBXMAIAAAAAAOJDWGORDgfRv8+w5nunh41wXb2hCA0MRzwnLnQtIqPgVjACAAAAAAWU2Vw2Rta8oHxPPfOWQa86tjYWndb0E3RNlZ9gthHt0AAzMxAH0AAAAFZAAgAAAAAFeq8o82uNY1X8cH6OhdTzHNBUnCChsEDs5tm0kPBz3qBXMAIAAAAABaxMBbsaeEj/EDtr8nZfrhhhirBRPJwVamDo5WwbgvTQVjACAAAAAAqcsCyJuLvxG8STrUI1Ccaga760+4fbmIPc6bXodea0gAAzMyAH0AAAAFZAAgAAAAAI8IKIfDrohHh2cjspJHCovqroSr5N3QyVtNzFvT5+FzBXMAIAAAAABXHXteKG0DoOMmECKp6ro1MZNQvXGzqTDdZ0DUc8QfFAVjACAAAAAA47u7VuqtYJ4jt5CcGrUacopqApwpqEpIpkalvCRtul0AAzMzAH0AAAAFZAAgAAAAAJkHvm15kIu1OtAiaByj5ieWqzxiu/epK6c/9+KYIrB0BXMAIAAAAACzg5TcyANk0nes/wCJudd1BwlkWWF6zw3nGclq5v3SJQVjACAAAAAAvTQRtEYdIj2+bfJNamvrgWRoBsYYjMQx9MyuFwSfKmYAAzM0AH0AAAAFZAAgAAAAAAYSOvEWWuSg1Aym7EssNLR+xsY7e9BcwsX4JKlnSHJcBXMAIAAAAABT48eY3PXVDOjw7JpNjOe1j2JyI3LjDnQoqZ8Je5B2KgVjACAAAAAA4eLwHqiSgM1pMqjK3QFgYauOnI3emnlOK3rgQPuec4AAAzM1AH0AAAAFZAAgAAAAAGQxC9L1e9DfO5XZvX1yvc3hTLtQEdKO9FPMkyg0Y9ZABXMAIAAAAADtmcMNJwdWLxQEArMGZQyzpnu+Z5yMmPAkvgq4eAKwNQVjACAAAAAAxA7XR9Cp6671TiZesvqE/EPKVPXfGDaYuDnce+MaZw0AAzM2AH0AAAAFZAAgAAAAADLHK2LNCNRO0pv8n4fAsxwtUqCNnVK8rRgNiQfXpHSdBXMAIAAAAACf16EBIHRKD3SzjRW+LMOl+47QXA3CJhMzlcqyFRW22AVjACAAAAAA9F9Ztm39rTapXoeRmzk6eUoa3MDPatwoQD5PvD+3xGEAAzM3AH0AAAAFZAAgAAAAAHiZJiXKNF8bbukQGsdYkEi95I+FSBHy1I5/hK2uEZruBXMAIAAAAADE+lZBa8HDUJPN+bF6xI9x4N7GF9pj3vBR7y0BcfFhBAVjACAAAAAArsw2CrSC2y02EiWJxViVxlYRIXtWARpUTwO/mfqS7O4AAzM4AH0AAAAFZAAgAAAAAI1oa2OIw5TvhT14tYCGmhanUoYcCZtNbrVbeoMldHNZBXMAIAAAAAAx2nS0Ipblf2XOgBiUOuJFBupBhe7nb6QPLZlA4aMPCgVjACAAAAAAaVoGxV5YH4urmcw3Zocg+QHoq+hA0u6nIkconI0MtZoAAzM5AH0AAAAFZAAgAAAAABgTWS3Yap7Q59hii/uPPimHWXsr+DUmsqfwt/X73qsOBXMAIAAAAACKK05liW5KrmEAvtpCB1WUltruzUylDDpjea//UlWoOAVjACAAAAAAAI3iOqWSA+DpgNr/neIRpt85Q8pLS/81ZKDnbC4io/0AAzQwAH0AAAAFZAAgAAAAABOAnBPXDp6i9TISQXvcNKwGDLepZTu3cKrB4vKnSCjBBXMAIAAAAADjjzZO7UowAAvpwyG8BNOVqLCccMFk3aDK4unUeft5ywVjACAAAAAAIZqKrUcbtze/K3CUKdchuVXQYkgj6jQfIeMZ3GrtYeEAAzQxAH0AAAAFZAAgAAAAAHN8hyvT1lYrAsdiV5GBdd5jhtrAYE/KnSjw2Ka9hjz9BXMAIAAAAAD794JK7EeXBs+D7yOVK7nWF8SbZ/7U8gZ7nnT9JFNwTAVjACAAAAAAQ4K5cDGLM/2L7KbMt537tsG1eiWrboKMj6pXVfBDIBoAAzQyAH0AAAAFZAAgAAAAAO93bPrq8bsnp1AtNd9ETnXIz0lH/2HYN/vuw9wA3fyFBXMAIAAAAABHlls5fbaF2oAGqptC481XQ4eYxInTC29aElfmVZgDUgVjACAAAAAAe0oLBk+ZaipcPgjjHvACAyA42cLY8i+s+V0EsarulZkAAzQzAH0AAAAFZAAgAAAAAL1YsAZm1SA0ztU6ySIrQgCCA74V6rr0/4iIygCcaJL6BXMAIAAAAADTXWTHWovGmUR1Zg9l/Aqq9H5mOCJQQrb/Dfae7e3wKAVjACAAAAAAAeXpcv0oCp9iY/U81w+WJjFjGn60KLQEURJd/pSoaJgAAzQ0AH0AAAAFZAAgAAAAAEoFAeHk0RZ9kD+cJRD3j7PcE5gzWKnyBrF1I/MDNp5mBXMAIAAAAACgHtc2hMBRSZjKw8RAdDHK+Pi1HeyjiBuAslGVNcW5tAVjACAAAAAAmSJiRfjmuwq5cYfadeYQRkPqbGYYrMNTQeyhBEAYClEAAzQ1AH0AAAAFZAAgAAAAAAW+7DmSN/LX+/0uBVJDHIc2dhxAGz4+ehyyz8fAnNGoBXMAIAAAAAA6Ilw42EvvfLJ3Eq8Afd+FjPoPcQutZO6ltmCLEr8kxQVjACAAAAAAUHZ9EwBIvDI4PUeCOzZCuVN9g9h5Zvq2mSpmejPLBE8AAzQ2AH0AAAAFZAAgAAAAANBdV7M7kuYO3EMoQItAbXv4t2cIhfaT9V6+s4cg9djlBXMAIAAAAABvz4MIvZWxxrcJCL5qxLfFhXiUYB1OLHdKEjco94SgDgVjACAAAAAAvz1koQRh+weAUstLWz/iHxFrLReN4KtQjdEU/zrKOFsAAzQ3AH0AAAAFZAAgAAAAAMoAoiAn1kc79j5oPZtlMWHMhhgwNhLUnvqkqIFvcH1NBXMAIAAAAADcJTW7WiCyW0Z9YDUYwppXhLj4Ac1povpJvcAq+i48MQVjACAAAAAARL0k3Uwe7OUwTejHMoNwK+twNHQznmo1vVUZaH7h8BIAAzQ4AH0AAAAFZAAgAAAAACI3j5QP7dWHpcT6WO/OhsWwRJNASBYqIBDNzW8IorEyBXMAIAAAAABxUpBSjXwCKDdGP9hYU+RvyR+96kChfvyyRC4jZmztqAVjACAAAAAA93/qZqyku1BJePH5hmMWsMfuMlF7TOFZp7z2wLJNdeYAAzQ5AH0AAAAFZAAgAAAAAKsbycEuQSeNrF8Qnxqw3x3og8JmQabwGqnDbqzFRVrrBXMAIAAAAACno/3ef2JZJS93SVVzmOZSN+jjJHT8s0XYq2M46d2sLAVjACAAAAAARUbN9bbz8Balyw8pmBLg3L5dy3aQ9s8IgqpVLeQzTkUAAzUwAH0AAAAFZAAgAAAAAPXIcoO8TiULqlxzb74NFg+I8kWX5uXIDUPnh2DobIoMBXMAIAAAAADR6/drkdTpnr9g1XNvKDwtBRBdKn7c2c4ZNUVK5CThdQVjACAAAAAAnJXYvnjljaE6ajRF+h90FXzJ9EJY26D0oG9t61ZMzqgAAzUxAH0AAAAFZAAgAAAAAEa03ZOJmfHT6/nVadvIw71jVxEuIloyvxXraYEW7u7pBXMAIAAAAADzRlBJK75FLiKjz3djqcgjCLo/e3yntI3MnPS48OORhgVjACAAAAAAbFS6SmTSDF3AsPceQrRwMMRoAnzL/k5avSHlIji5zYIAAzUyAH0AAAAFZAAgAAAAAKx8NLSZUU04pSSGmHa5fh2oLHsEN5mmNMNHL95/tuC9BXMAIAAAAAA59hcXVaN3MNdHoo11OcH1aPRzHCwpVjO9mGfMz4xh3QVjACAAAAAAoIvo/iOb/eXJv7w4KSQo74DOyO4uAIO09Ba7JZw9ousAAzUzAH0AAAAFZAAgAAAAAHNKAUxUqBFNS9Ea9NgCZoXMWgwhP4x0/OvoaPRWMquXBXMAIAAAAABUZ551mnP4ZjX+PXU9ttomzuOpo427MVynpkyq+nsYCQVjACAAAAAAlCTphL00SYotztwI+txbHAFTusjh1nNbiya24rM1dUEAAzU0AH0AAAAFZAAgAAAAALfGXDlyDVcGaqtyHkLT0qpuRhJQLgCxtznazhFtuyn/BXMAIAAAAABipxlXDq14C62pXhwAeen5+syA+/C6bN4rtZYcO4zKwAVjACAAAAAA431CBTW4s3IQde024W2cz5iEnj8EJ7p07esepoVDxmQAAzU1AH0AAAAFZAAgAAAAANoEr8sheJjg4UCfBkuUzarU9NFoy1xwbXjs5ifVDeA9BXMAIAAAAABPoyTf6M+xeZVGES4aNzVlq7LgjqZXJ/QunjYVusGUEAVjACAAAAAAywuLdjJJuXewOXMAr25GMBEif8+P74+pGaENUn+XIB8AAzU2AH0AAAAFZAAgAAAAAKvDiK+xjlBe1uQ3SZTNQl2lClIIvpP/5CHwY6Kb3WlgBXMAIAAAAAANnxImq5MFbWaRBHdJp+yD09bVlcFtiFDYsy1eDZj+iQVjACAAAAAAvwntX1RgeNfp5oiD+r3sAKIbMGy1yEblODDYWec1xuIAAzU3AH0AAAAFZAAgAAAAAF49IlFH9RmSUSvUQpEPUedEksrQUcjsOv44nMkwXhjzBXMAIAAAAADJtWGbk0bZzmk20obz+mNsp86UCu/nLLlbg7ppxYn7PgVjACAAAAAAKW8QTERGXwh6fE4gJsULcmu80B4BMkMaZR9USn/C6RgAAzU4AH0AAAAFZAAgAAAAAOuSJyuvz50lp3BzXlFKnq62QkN2quNU1Gq1IDsnFoJCBXMAIAAAAAAqavH1d93XV3IzshWlMnzznucadBF0ND092/2ApI1AcAVjACAAAAAAmVcLt9hf9/q+2O3K4cvFAsvnCsSofHZ5iTzIaR5YKFIAAzU5AH0AAAAFZAAgAAAAALtgC4Whb4ZdkCiI30zY6fwlsxSa7lEaOAU3SfUXr02XBXMAIAAAAACgdZ6U1ZVgUaZZwbIaCdlANpCw6TZV0bwg3DS1NC/mnAVjACAAAAAAYJOnAwVW0gPl1jkCxAL1ZAhKkJ1+ShfwyaIaipflCegAAzYwAH0AAAAFZAAgAAAAAF6PfplcGp6vek1ThwenMHVkbZgrc/dHgdsgx1VdPqZ5BXMAIAAAAACha3qhWkqmuwJSEXPozDO8y1ZdRLyzt9Crt2vjGnT7AAVjACAAAAAA1JYhGDDvtf8b2Pup5jdzQmy325tGo27n/5thjZ/GI4sAAzYxAH0AAAAFZAAgAAAAAKoLEhLvLjKc7lhOJfx+VrGJCx9tXlOSa9bxQzGR6rfbBXMAIAAAAAAIDK5wNnjRMBzET7x/KAMExL/zi1IumJM92XTgXfoPoAVjACAAAAAAhoVLxo0hXbxAzz2BWbeRxAzk08TbVuHxJkdsbCISswkAAzYyAH0AAAAFZAAgAAAAADoQv6lutRmh5scQFvIW6K5JBquLxszuygM1tzBiGknIBXMAIAAAAADAD+JjW7FoBQ76/rsECmmcL76bmyfXpUU/awqIsZdO+wVjACAAAAAAwLIixR/svwADNhtiOZ9mDF2rUqEvuPx2tUSQbhOpersAAzYzAH0AAAAFZAAgAAAAAJNHUGAgn56KekghO19d11nai3lAh0JAlWfeP+6w4lJBBXMAIAAAAAD9XGJlvz59msJvA6St9fKW9CG4JoHV61rlWWnkdBRLzwVjACAAAAAAKMVXumaH5QOt5WVHFip9xWx9e5I/5Y9uEO0UAX6dy7QAAzY0AH0AAAAFZAAgAAAAAHgYoMGjEE6fAlAhICv0+doHcVX8CmMVxyq7+jlyGrvmBXMAIAAAAAC/5MQZgTHuIr/O5Z3mXPvqrom5JTQ8IeSpQGhO9sB+8gVjACAAAAAAPMgD8Rqnd94atKnMyPjlTwthUQ710MKJVqgtwNXLFWwAAzY1AH0AAAAFZAAgAAAAANpIljbxHOM7pydY877gpRQvYY2TGK7igqgGsavqGPBABXMAIAAAAAAqHyEu9gpurPOulApPnr0x9wrygY/7mXe9rAC+tPK80wVjACAAAAAAezZExYLAbjyMsVuSrWGQ+LsXYEcp6AFMANkQ496mTXcAAzY2AH0AAAAFZAAgAAAAAGR+gEaZTeGNgG9BuM1bX2R9ed4FCxBA9F9QvdQDAjZwBXMAIAAAAABSkrYFQ6pf8MZ1flgmeIRkxaSh/Eep4Btdx4QYnGGnwAVjACAAAAAAQ011358xXtVDOyGPpF2+zGoMdiQ8PGCB1QfDcluYUF4AAzY3AH0AAAAFZAAgAAAAAFNprhQ3ZwIcYbuzLolAT5n/vc14P9kUUQComDu6eFyKBXMAIAAAAAAcx9z9pk32YbPV/sfPZl9ALIEVsqoLXgqWLVK/tP+heAVjACAAAAAA3eqduo9CWE5BePqBq7KCh5++QqXnyjCwybB15Zoeiu4AAzY4AH0AAAAFZAAgAAAAADgyPqQdqQrgfmJjRFAILTHzXbdw5kpKyfeoEcy6YYG/BXMAIAAAAAAE+3XsBQ8VAxAkN81au+f3FDeCD/s7KoZD+fnM1MJSSAVjACAAAAAAWHAiQNo6HBkIhf72fVQxJLaCtNeTqn2OuMmYZjT7PRkAAzY5AH0AAAAFZAAgAAAAAI0CT7JNngTCTUSei1Arw7eHWCD0jumv2rb7imjWIlWABXMAIAAAAABSP8t6ya0SyCphXMwnru6ZUDXWElN0NfBvEOhDvW9bJQVjACAAAAAAbfZdoqMQ71hNIsycNHl6JpSmAFDPSfgzdWkGqFZNoScAAzcwAH0AAAAFZAAgAAAAAD/FIrGYFDjyYmVb7oTMVwweWP7A6F9LnyIuNO4MjBnXBXMAIAAAAACIZgJCQRZu7NhuNMyOqCn1tf+DfU1qm10TPCfj5JYV3wVjACAAAAAAZCaO06/DjOBjNrTxB8jdxM7X4XvNu9QTa2Y00kZJwgEAAzcxAH0AAAAFZAAgAAAAAHIkVuNDkSS1cHIThKc/O0r2/ubaABTOi8Q1r/dvBAsEBXMAIAAAAADdHYqchEiJLM340c3Q4vJABmmth3+MKzwLYlsG6GS7sQVjACAAAAAA4byh4Re83zUZxvEH4iJSsnFei+ohsWxjSpB5YoAPawIAAzcyAH0AAAAFZAAgAAAAAJmoDILNhC6kn3masElfnjIjP1VjsjRavGk1gSUIjh1NBXMAIAAAAAD97Ilvp3XF8T6MmVVcxMPcdL80RgQ09UoC6PnoOvZ1IQVjACAAAAAAx9wkqPvtzrL9EFDmFvktI129ti8IAdHn0oudubGPWAAAAzczAH0AAAAFZAAgAAAAAI5bm3YO0Xgf0VT+qjVTTfvckecM3Cwqj7DTKZXf8/NXBXMAIAAAAAD/m+h8fBhWaHm6Ykuz0WX1xL4Eme3ErLObyEVJf8NCywVjACAAAAAAiGdTXD22l1zDxHeF4NXUTiBnNTsdpzJRwM6riTPuOogAAzc0AH0AAAAFZAAgAAAAANqo4+p6qdtCzcB4BX1wQ6llU7eFBnuu4MtZwp4B6mDlBXMAIAAAAAAGiz+VaukMZ+6IH4jtn4KWWdKK4/W+O+gRioQDrfzpMgVjACAAAAAAl/wlBjSJW/hKkll8HSBCGw4Ce1pJ5rZuhVE09hKq4jQAAzc1AH0AAAAFZAAgAAAAAPrFXmHP2Y4YAm7b/aqsdn/DPoDkv7B8egWkfe23XsM1BXMAIAAAAAAGhwpKAr7skeqHm3oseSbO7qKNhmYsuUrECBxJ5k+D2AVjACAAAAAAKSsxERy2OBhb5MiH9/H2BET2oeU6yVihiAoWi/16FroAAzc2AH0AAAAFZAAgAAAAABzjYxwAjXxXc0Uxv18rH8I3my0Aguow0kTwKyxbrm+cBXMAIAAAAADVbqJVr6IdokuhXkEtXF0C2gINLiAjMVN20lE20Vmp2QVjACAAAAAACJ+VAwl9X88mjC76yzkWeL4K6AamNYjbNkpS9B6fQE4AAzc3AH0AAAAFZAAgAAAAAFMm2feF2fFCm/UC6AfIyepX/xJDSmnnolQIBnHcPmb5BXMAIAAAAABLI11kFrQoaNVZFmq/38aRNImPOjdJh0Lo6irI8M/AaAVjACAAAAAAZFgYh4nV8YN+/AAqe/QhKDkNBPg8KraCG7y3bOzhPV4AAzc4AH0AAAAFZAAgAAAAAJvXB3KyNiNtQko4SSzo/9b2qmM2zU9CQTTDfLSBWMgRBXMAIAAAAAAvjuVP7KsLRDeqVqRziTKpBrjVyqKiIbO9Gw8Wl2wFTAVjACAAAAAARuBn3JdQ8so7Gy0XVH0CtlvtRoJWhSrJP6eRIqbyWh8AAzc5AH0AAAAFZAAgAAAAAPGdcxDiid8z8XYnfdDivNMYVPgBKdGOUw6UStU+48CdBXMAIAAAAAARj6g1Ap0eEfuCZ4X2TsEw+Djrhto3fA5nLwPaY0vCTgVjACAAAAAATxLY6SkcLPaoOBJpQsggEqoxgJgiY9seP3fBQM05PckAAzgwAH0AAAAFZAAgAAAAAP5rGPrYGt3aKob5f/ldP0qrW7bmWvqnKY4QwdDWz400BXMAIAAAAADTQkW2ymaaf/bhteOOGmSrIR97bAnJx+yN3yMj1bTeewVjACAAAAAA6O+wIMt3xMITuCxVrqOCNBPX5F122G+/Is+EYkzUvVYAAzgxAH0AAAAFZAAgAAAAAAlz6wJze5UkIxKpJOZFGCOf3v2KByWyI6NB6JM9wNcBBXMAIAAAAABUC7P/neUIHHoZtq0jFVBHY75tSFYr1Y5S16YN5XxC1QVjACAAAAAANv97jMd9JmZ7lMeCzK7jaZHZYsZJNl6N9g9WXzd2om0AAzgyAH0AAAAFZAAgAAAAAFJ8AtHcjia/9Y5pLEc3qVgH5xKiXw12G9Kn2A1EY8McBXMAIAAAAAAxe7Bdw7eUSBk/oAawa7uicTEDgXLymRNhBy1LAxhDvwVjACAAAAAAtOUZ2NeUWwESpq95O92dhqYBt8RtFnjT43E7k9mQF3oAAzgzAH0AAAAFZAAgAAAAAO8uwQUaKFb6vqR3Sv3Wn4QAonC2exOC9lGG1juqP5DtBXMAIAAAAABZf1KyJgQg8/Rf5c02DgDK2aQu0rNCOvaL60ohDHyY+gVjACAAAAAA5nAWj1Ek8p0MLYZEB3yoVFDfBYZ+/ZpIo71u+W9hprcAAzg0AH0AAAAFZAAgAAAAAE8YtqyRsGCeiR6hhiyisR/hccmK4nZqIMzO4lUBmEFzBXMAIAAAAAC1UYOSKqAeG1UJiKjWFVskRhuFKpj9Ezy+lICZvFlN5AVjACAAAAAA37oP30mTzVftI2FL9Uwyls/jqLqbmRDQk7p7nlx44uYAAzg1AH0AAAAFZAAgAAAAAPhCrMausDx1QUIEqp9rUdRKyM6a9AAx7jQ3ILIu8wNIBXMAIAAAAACmH8lotGCiF2q9VQxhsS+7LAZv79VUAsOUALaGxE/EpAVjACAAAAAAhVIkl8p19VZ0gpg32s++Jda3qsVSVB5tV4CKrtjhE3IAAzg2AH0AAAAFZAAgAAAAAOBi/GAYFcstMSJPgp3VkMiuuUUCrZytvqYaU8dwm8v2BXMAIAAAAACEZSZVyD3pKzGlbdwlYmWQhHHTV5SnNLknl2Gw8IaUTQVjACAAAAAAriBex2kK//RPhyVpCYJDBng4l5w8jD3m8BF7dVAP0p8AAzg3AH0AAAAFZAAgAAAAAIQuup+YGfH3mflzWopN8J1X8o8a0d9CSGIvrA5HOzraBXMAIAAAAADYvNLURXsC2ITMqK14LABQBI+hZZ5wNf24JMcKLW+84AVjACAAAAAAGeUzdG2kQrx5XypXJezZmPVzMYuqYZw7Bhbl4EPT0SMAAzg4AH0AAAAFZAAgAAAAAKsh0ADyOnVocFrOrf6MpTrNvAj8iaiE923DPryu124gBXMAIAAAAADg24a8NVE1GyScc6tmnTbmu5ulzO+896fE92lN08MeswVjACAAAAAAbO+DEBY3STVMQN7CbxmHDUBYrDR+80e797u/VmiK4vcAAzg5AH0AAAAFZAAgAAAAAKkVC2Y6HtRmv72tDnPUSjJBvse7SxLqnr09/Uuj9sVVBXMAIAAAAABYNFUkH7ylPMN+Bc3HWX1e0flGYNbtJNCY9SltJCW/UAVjACAAAAAAHlE3RLKcXpXto7Mr8nRgzEsmhjfGh4vcgPxashCSMg4AAzkwAH0AAAAFZAAgAAAAADDggcwcb/Yn1Kk39sOHsv7BO/MfP3m/AJzjGH506Wf9BXMAIAAAAAAYZIsdjICS0+BDyRUPnrSAZfPrwtuMaEDEn0/ijLNQmAVjACAAAAAA1c/sy3255NofBQrnBNSmVkSzMgsGPaaOUJShddVrnuQAAzkxAH0AAAAFZAAgAAAAAEWY7dEUOJBgjOoWVht1wLehsWAzB3rSOBtLgTuM2HC8BXMAIAAAAAAAoswiHRROurjwUW8u8D5EUT+67yvrgpB/j6PzBDAfVwVjACAAAAAALBvQumG8m7/bzJjGWN2cHSAncdN8jMtOSmEhEhGom24AAzkyAH0AAAAFZAAgAAAAAPZaapeAUUFPA7JTCMOWHJa9lnPFh0/gXfAPjA1ezm4ZBXMAIAAAAACmJvLY2nivw7/b3DOKH/X7bBXjJwoowqb1GtEFO3OYgAVjACAAAAAAGCDHuUJusGHKQ+r9nrFChmUUsRcqZKPGsRiLSk5gbFcAAzkzAH0AAAAFZAAgAAAAAK00u6jadxCZAiA+fTsPVDsnW5p5LCr4+kZZZOTDuZlfBXMAIAAAAAAote4zTEYMDgaaQbAdN8Dzv93ljPLdGjJzvnRn3KXgtQVjACAAAAAApZ6l+OrocOqgFek7WOqOP9JruTWZ+iW+5zdL3DZwzhkAAzk0AH0AAAAFZAAgAAAAAFbgabdyymiEVYYwtJSWa7lfl/oYuj/SukzJeDOR6wPVBXMAIAAAAADAFGFjS1vPbN6mQEhkDYTD6V2V23Ys9gUEUMGNvMPkaAVjACAAAAAAeICKly5Xtwmfd4JFD+5e1UWpu4V3KoRim7jeBICDs+UAAzk1AH0AAAAFZAAgAAAAABNMR6UBv2E627CqLtQ/eDYx7OEwQ7JrR4mSHFa1N8tLBXMAIAAAAAAxH4gucI4UmNVB7625C6hFSVCuIpJO3lusJlPuL8H5EQVjACAAAAAA0/uh1hrAlGGna/njCVaCqBwubxkifzF0zjCDQrIJOtUAAzk2AH0AAAAFZAAgAAAAAG8cd6WBneNunlqrQ2EmNf35W7OGObGq9WL4ePX+LUDmBXMAIAAAAAAjJ2+sX87NSis9hBsgb1QprVRnO7Bf+GObCGoUqyPE4wVjACAAAAAAAoJ4Ufdq45T9Aun5FupHlaBCIUsmUn6dXgV9KorpFikAAzk3AH0AAAAFZAAgAAAAAFWOUGkUpy8yf6gB3dio/aOfRKh7XuhvsUj48iESFJrGBXMAIAAAAAAY7sCDMcrUXvNuL6dO0m11WyijzXZvPIcOKob6IpC4PQVjACAAAAAAO/QFjczoznH95Iu0YEVMsU1GA1yxSGL8bcwSweNzAtkAAzk4AH0AAAAFZAAgAAAAAGUrIdKxOihwNmo6B+aG+Ag1qa0+iqdksHOjQj+Oy9bZBXMAIAAAAABwa5dbI2KmzBDNBTQBEkjZv4sPaeRkRNejcjdVymRFKQVjACAAAAAAUtdJucZoQvvPJiy65RonQrxBCcvtfHslpbgLbtWirCYAAzk5AH0AAAAFZAAgAAAAAOx89xV/hRk64/CkM9N2EMK6aldII0c8smdcsZ46NbP8BXMAIAAAAADBF6tfQ+7q9kTuLyuyrSnDgmrdmrXkdhl980i1KHuGHgVjACAAAAAAVc5njbLX1afpsuG662U/OBo4LanEk06lKbQtd95fswgAAzEwMAB9AAAABWQAIAAAAADJDdC9aEFl4Y8J/awHbnXGHjfP+VXQilPHJg7ewaJI7AVzACAAAAAAE+tqRl6EcBMXvbr4GDiNIYObTsYpa1n6BJk9EjIJVicFYwAgAAAAAITXOaLyGsYLUvOemQXxvnAHBwM/t3sMwfQus2aGoII+AAMxMDEAfQAAAAVkACAAAAAA3F9rjEKhpoHuTULVGgfUsGGwJs3bISrXkFP1v6KoQLgFcwAgAAAAAIBf0tXw96Z/Ds0XSIHX/zk3MzUR/7WZR/J6FpxRWChtBWMAIAAAAABzRshE3O7JzVjSGQSabvFXpen8sGUCAyr8hIIevROrjgADMTAyAH0AAAAFZAAgAAAAAOYIYoWkX7dGuyKfi3XssUlc7u/gWzqrR9KMkikKVdmSBXMAIAAAAABVF2OYjRTGi9Tw8XCAwZWLpX35Yl271TlNWp6N/nROhAVjACAAAAAAyGLbmHhe8eTQC8L2eDRcezUWULLZ9E8DPic7Mfp8/+4AAzEwMwB9AAAABWQAIAAAAACMtPm12YtdEAvqu6Eji1yuRXnu1RJP6h0l7pH3lSH4MwVzACAAAAAAENyCFfyUAh1veQBGx+cxiB7Sasrj41jzCGflZkB5cRMFYwAgAAAAAA92s3DQ3aIVOrRzusqU+xdK7cnQGCDJiyLF+su3F1ZDAAMxMDQAfQAAAAVkACAAAAAAvlI4lDcs6GB1cnm/Tzo014CXWqidCdyE5t2lknWQd4QFcwAgAAAAAD60SpNc4O2KT7J0llKdSpcX1/Xxs97N715a1HsTFkmBBWMAIAAAAABR3y/ZE3VZqBhqfUttX4bzW9wkpDoexfYZIG2fMwftcQADMTA1AH0AAAAFZAAgAAAAAKl8zcHJRDjSjJeV/WvMxulW1zrTFtaeBy/aKKhadc6UBXMAIAAAAADBdWQl5SBIvtZZLIHszePwkO14W1mQ0izUk2Ov21cPNAVjACAAAAAAHvQLJ2X4ncjVv1BsOd/jbVouRPwf4222WlGSzPyAfnsAAzEwNgB9AAAABWQAIAAAAABb6LXDWqCp1beQgQjj8I3sRTtFhlrmiBi+h/+ikmrvugVzACAAAAAA9stpgTecT7uTyaGNs3K9Bp0A7R0QaIAOfscyMXHBPX8FYwAgAAAAANTp7TwMatTSeLH3GvsrB3IOvJo+0B8HRGUFcRzJVesdAAMxMDcAfQAAAAVkACAAAAAA97NTT+81PhDhgptNtp4epzA0tP4iNb9j1AWkiiiKGM8FcwAgAAAAAKPbHg7ise16vxmdPCzksA/2Mn/qST0L9Xe8vnQugVkcBWMAIAAAAACVl3ds8xRdGFPAtZ+WtC4ojC1q5OzB6dSJoOLaJsdhhgADMTA4AH0AAAAFZAAgAAAAAMqpayM2XotEFmm0gwQd9rIzApy0X+7HfOhNk6VU7F5lBXMAIAAAAACJR9+q5T9qFHXFNgGbZnPubG8rkO6cwWhzITQTmd6VgwVjACAAAAAAEEOCUo+ihRGl1kuHlabWBWUFyJPAXSXzpQB4od57cMEAAzEwOQB9AAAABWQAIAAAAADQnslvt6Hm2kJPmqsTVYQHE/wWeZ4bE1XSkt7TKy0r1gVzACAAAAAA8URTA4ZMrhHPvlp53TH6FDCzS+0+61qHm5XK6UiOrKEFYwAgAAAAANSmECEsZgXBpoAzAIwaU3H0K/6HIutCn+ELRGBFzykkAAMxMTAAfQAAAAVkACAAAAAAhujlgFPFczsdCGXtQ/002Ck8YWQHHzvWvUHrkbjv4rwFcwAgAAAAALbV0lLGcSGfE7mDM3n/fgEvi+ifjl7WZ5b3aqjDNvx9BWMAIAAAAACKzGyyRT/3KSmGlKMHpswxj7pNu3rCmOETZ2DUhQsCBgADMTExAH0AAAAFZAAgAAAAABm/6pF96j26Jm7z5KkY1y33zcAEXLx2n0DwC03bs/ixBXMAIAAAAAD01OMvTZI/mqMgxIhA5nLs068mW+GKl3OW3ilf2D8+LgVjACAAAAAAnPa8PTfcaSSAdzNAC54IMTicbShbtt/cSnFHz7u7g8wAAzExMgB9AAAABWQAIAAAAACfw9/te4GkHZAapC9sDMHHHZgmlTrccyJDPFciOMSOcwVzACAAAAAAIIC1ZpHObvmMwUfqDRPl4C1aeuHwujM1G/yJbvybMNAFYwAgAAAAAKeagivKdHk7wAFEPHyDhsm9mDNWH5UPB+oIIlmfbzSOAAMxMTMAfQAAAAVkACAAAAAAkxHJRbnShpPOylLoDdNShfILeA1hChKFQY9qQyZ5VmsFcwAgAAAAAKidrY+rC3hTY+YWu2a7fuMH2RD/XaiTIBW1hrxNCQOJBWMAIAAAAADH8s64PC+lo8Ul4oujBlb/irtJSwu12V0HbvNzj/9qUQADMTE0AH0AAAAFZAAgAAAAAByuYl8dBvfaZ0LO/81JW4hYypeNmvLMaxsIdvqMPrWoBXMAIAAAAABNddwobOUJzm9HOUD8BMZJqkNCUCqstHZkC76FIdNg9AVjACAAAAAA4SEPY+qEZ2dCu/9485IEVybiM3Z7szXYM+izxklNm14AAzExNQB9AAAABWQAIAAAAABxMy7X5hf7AXGDz3Y/POu1ZpkMlNcSvSP92NOO/Gs7wAVzACAAAAAAHJshWo2T5wU2zvqCyJzcJQKQaHFHpCpMc9oWBXkpUPoFYwAgAAAAANeYm2aAT9f6T9uwQyH4sw2DUQyKTpo/CHt+Bb67ao4TAAMxMTYAfQAAAAVkACAAAAAAlqbslixl7Zw3bRlibZbe/WmKw23k8uKeIzPKYEtbIy0FcwAgAAAAAHEKwpUxkxOfef5HYvulXPmdbzTivwdwrSYIHDeNRcpcBWMAIAAAAAASUKCgxGu2U42qfKiyMimLPiZBMurf5v8lQJUSrhAWIAADMTE3AH0AAAAFZAAgAAAAAMXrXx0saZ+5gORmwM2FLuZG6iuO2YS+1IGPoAtDKoKBBXMAIAAAAADIQsxCr8CfFKaBcx8kIeSywnGh7JHjKRJ9vJd9x79y7wVjACAAAAAAPzOTJ088k9QdGUpZ1ubUdkw3pTGkNF8bui4a9wqeo08AAzExOAB9AAAABWQAIAAAAAAm83FA9yDUpwkbKTihe7m53u+DivS9BU2b4vQMtCVQ2AVzACAAAAAAz3m1UB/AbZPa4QSKFDnUgHaT78+6iGOFAtouiBorEgEFYwAgAAAAAHuM0gIDED47c9rdQ4MVtVzpVfn5zTF7eokO4lew4EM+AAMxMTkAfQAAAAVkACAAAAAAJRzYK0PUwr9RPG2/7yID0WgcTJPB2Xjccp5LAPDYunkFcwAgAAAAAIIh24h3DrltAzNFhF+MEmPrZtzr1PhCofhChZqfCW+jBWMAIAAAAAD6LppOeSiLHFI7EOBAz9pZPKU7LWbRWIINTlqw4zmJ5gADMTIwAH0AAAAFZAAgAAAAAHSaHWs/dnmI9sc7nB50VB2Bzs0kHapMHCQdyVEYY30TBXMAIAAAAACkV22lhEjWv/9/DubfHBAcwJggKI5mIbSK5L2nyqloqQVjACAAAAAA1I5pLbnlFf/EfJlhE0RFIioDjzKrWNh4TO8H/ksrbMcAAzEyMQB9AAAABWQAIAAAAAAC/I4TQRtCl12YZmdGz17X4GqSQgfwCPgRBwdHmdwu+QVzACAAAAAAx8f3z2ut/RAZhleari4vCEE+tNIn4ikjoUwzitfQ588FYwAgAAAAADX1qVlsvYru6YDBMtmlQoIBhLSbVykBtft8wn/A+ohJAAMxMjIAfQAAAAVkACAAAAAADGB5yU2XT0fse/MPWgvBvZikVxrl5pf3S5K1hceKWooFcwAgAAAAAIxTmlLHMjNaVDEfJbXvRez0SEPWFREBJCT6qTHsrljoBWMAIAAAAAD+RiUk9IWfaDWXtzLp2NX/vCCeU9amFnQgpJjy56dQXQADMTIzAH0AAAAFZAAgAAAAABmO7QD9vxWMmFjIHz13lyOeV6vHT6mYCsWxF7hb/yOjBXMAIAAAAACT9lmgkiqzuWG24afuzYiCeK9gmJqacmxAruIukd0xEAVjACAAAAAAyiZxtuOZQNSit4wFMJS3jnqLbDzyJ0OtDTKs6r0EO0cAAzEyNAB9AAAABWQAIAAAAAAfPUoy7QyZKhIIURso+mkP9qr1izbjETqF5s22GwjCjAVzACAAAAAAvLMsIDQ/go4VUxeh50UHmsvMvfx51cwyONnRD2odvC0FYwAgAAAAAMwY/KvSIOLoSHOq4TQ1V9ZSCPZc34SdPooPL4gYXa7UAAMxMjUAfQAAAAVkACAAAAAAE3ZqUar0Bq2zWbARE0bAv98jBlK9UJ73/xcwdMWWlSkFcwAgAAAAAK4M+MmC+9sFiFsumMyJZQKxWmmJiuG9H7IzKw083xxkBWMAIAAAAACpywsi9vc979ApgH3BDzph7Y4VIAkQhji97sswzdLAYwADMTI2AH0AAAAFZAAgAAAAAMo8FJiOq63cAmyk2O7eI7GcbQh/1j4RrMTqly3rexftBXMAIAAAAADjVmpd0WiRGTw/gAqEgGolt2EI7Csv14vKdmYoMD0aAgVjACAAAAAAEPmYjDZnMZdkaYlLZLlRgist9kCrSQe0mSuKxPwwYbQAAzEyNwB9AAAABWQAIAAAAACu5IGaIx7A3Jvly/kzlCsSA4s3iJwuIl8jEdRH0k93NwVzACAAAAAA9NRUyxYE+t0Xyosyt6vIfMFW/vBoYg6sR+jBNs4JAxIFYwAgAAAAAKMbsr4JCCodHmkBvfhOe7BJigKiJik95wLeu3PjLSpXAAMxMjgAfQAAAAVkACAAAAAALkRy0GJInXYLA+cgjs6Myb0a+Gu9hgXhHvhLNoGWfckFcwAgAAAAANbALyt9zCSvwnLaWCd2/y2eoB7qkWTvv1Ldu8r40JPuBWMAIAAAAABi0dME7AUSoeMv4yIgnGMgrX9G+Uk6HV+I9/9zzABcZwADMTI5AH0AAAAFZAAgAAAAAGoUK/DSWhT8LZhszSUqDbTrp8cSA7rdqmADKL+MILtTBXMAIAAAAABHnEE9bVa6lvhfhEMkkV2kzSSxH/sMW/FIJuw3CzWs6wVjACAAAAAAagOaxIb7co+HxAXhfI9ahHLUNqmGuN/4JxeR9sm6PdkAAzEzMAB9AAAABWQAIAAAAAC922ZDQE3h2fQKibGMZ9hV0WNlmrPYYSdtaSyYxsWYqgVzACAAAAAAagMovciKK6WVjIc2cCj8nK5O/gVOFFVeVAJpRp89tmQFYwAgAAAAAAMsWoODZkTvKSNWzloogbp/AiFFspENp49RwKjWpMLHAAMxMzEAfQAAAAVkACAAAAAAtK+JqX3K/z2txjAU15DgX4y90DS2YLfIJFolCOkJJJwFcwAgAAAAAMnR5V7gfX7MNqqUdL5AkWlkhyFXaBRVNej+Rcn8lrQkBWMAIAAAAADOmDHuXwsu9uwKYYSN5XIb/TG3K5DB5aci/X1ATKTaSwADMTMyAH0AAAAFZAAgAAAAAAeGrIMK/bac6kPczxbvRYqKMkcpeI2FjdMpD91FDWIvBXMAIAAAAAAix62z1LeS8yvSXCl5gHSIomjyx76fF3S1lp9k900hygVjACAAAAAAUK1Gzlm0meDhYPL7ZgKaCD0qz7Zb5rtnPn1EEW3UZxoAAzEzMwB9AAAABWQAIAAAAACphf298InM0Us4HT8o1W1MGw0D/02vd7Jh+U0h7qaFaQVzACAAAAAAFXtk7YpqsOJxsqGWSIL+YcBE96G3Zz9D31gPqDW94y8FYwAgAAAAAEA5mnfyccI1SjyYftq3qCuORs/NxzzqUA+fxn3FRjVsAAMxMzQAfQAAAAVkACAAAAAATLDS2cuDVM3yDMuWNgk2iGKBTzPpfJMbvxVOSY39ZfcFcwAgAAAAAPT5wRi2cLHIUflXzm6EQB/m7xdThP80ir1VV/JBBqvxBWMAIAAAAABTj7i+CxxNVkbnAkSYga/v2X3/NH3nD/FRiOo2FPkzvAADMTM1AH0AAAAFZAAgAAAAAJNjExiZVX7jfFGfYpQu16qxLN0YPqVU/5CQ/Y67YSinBXMAIAAAAABMpm2+6KrkRUlXzQoMPHrQmIO6dkQz66tYdfTeA3dKqQVjACAAAAAATkNGECGUFzo34ItVnTEmxbe8dbde8QzMgEEdjMhRLz8AAzEzNgB9AAAABWQAIAAAAABlFkYtLCx901X6QVVMkSn6Z7k30UF4xHaA0OZJJ9bdyQVzACAAAAAATez+F9GHcGzTp7jjv4feboUNb8JCkIp4EqcPFisnq7MFYwAgAAAAAOHfn3eVRhSWn61AfZuAnCGleSLluJ3sF9IFGUWrCsBaAAMxMzcAfQAAAAVkACAAAAAA8NJKN0IxZnruhswGQkiruv8Ih0EMwDcSZx/Xasup9dkFcwAgAAAAAKaJZRxzA+Igeydvuk6cSwUHXcrmT4PjhuPu//FslpdnBWMAIAAAAAC3Cs/mKg+sbU/BC9QWFglOau6FWAP1sJqqSZOEOdzh+gADMTM4AH0AAAAFZAAgAAAAABHxHdEClz7hbSSgE58+dWLlSMJnoPz+jFxp4bB1GmLQBXMAIAAAAAD3nSvT6aGD+A110J/NwEfp0nPutlmuB5B+wA3CC3noGAVjACAAAAAA56lpvjMjFzR6NMGiSF1es1X01dwINWqaxyq3UUL8XJ0AAzEzOQB9AAAABWQAIAAAAAC/o8qW/ifk3KuJ01VFkyNLgQafxB5/bGs2G5VyyVafOwVzACAAAAAA1bMqAFGDHSl6BYNLbxApvkAv2K1/oafywiX0MDz1dGUFYwAgAAAAAMjJrrd6E5DyUuXkWZsAqo020Qvom6xqAluQLod5SmtdAAMxNDAAfQAAAAVkACAAAAAAY2V8I1bz3a1AxTtmED6UhdhA09huFkuuEX8R+d/WDPUFcwAgAAAAAPTVoNRiI76tcRKqd+JBBVyy4+YcKST42p0QX2BtmQ2VBWMAIAAAAAD0kQXxOWWOfIzqhJk5Rnvp/h5VXcGxxLZ8HMvVVH++YQADMTQxAH0AAAAFZAAgAAAAAO2kSsW0WGN9AOtK4xK2SHrGhWiaAbMEKT4iZkRpaDN/BXMAIAAAAABKGzQcPM8LT2dwOggxoWjv/1imYWabbG/G4kBw8OWaxAVjACAAAAAAT3sD7PTrAPtOtiSRrG4IKmSNr/uWgX8TvIyZpZzj4wkAAzE0MgB9AAAABWQAIAAAAAAiCwzNEEaH/mDam68IdDftnhthyUFdb+ZCNSBQ91WlHQVzACAAAAAA7tHyHcxCzmbJeFYZyPm4mEgkTGKOvwY4MX82OvH0Jn8FYwAgAAAAAP4A3nd470CwvaGzyJLfzbrw7ePJV35V3Cw6tuiPFlsCAAMxNDMAfQAAAAVkACAAAAAAGuCHVNJSuoVkpPOnS5s89GuA+BLi2IPBUr2Bg1sWEPIFcwAgAAAAAEl1gncS5/xO7bQ/KQSstRV3rOT2SW6nV92ZANeG2SR6BWMAIAAAAADi6/zM3xSBXEfpRpvEdeycRDl08SmwwLey72qgZaY7FwADMTQ0AH0AAAAFZAAgAAAAAMfxz7gEaoCdPvXrubDhCZUS0ARLZc1svgbXgMDlVBPgBXMAIAAAAAB6a5dDA3fuT5Vz2KvAcbUEFX/+B7Nw2p1QqbPoQ5TTuAVjACAAAAAAB4Kp5ewWpFMJ2T+QCrfw2eJV70L4M+GM8khV1JwqOqQAAzE0NQB9AAAABWQAIAAAAACnYsqF/VzmjIImC9+dqrHO1TM6lJ6fRwM0mM6Wf6paOwVzACAAAAAA5tgZzch8uDCR1ky3SllVaKVpxAlbrhvlNDTazZZRZOAFYwAgAAAAALDJDWkmExE4L8hf2CDNLuF+dgivUGXb7ZvBp90EALm+AAMxNDYAfQAAAAVkACAAAAAAEC0sIVmadtW4YMuRXH7RpAhXclsd+3bmqGXCMeaT014FcwAgAAAAABPpXh0uzpsJJB+IRUNajmMB9WGwswfpw5T9xk3Xj6ANBWMAIAAAAABauth7HsI90juToIGY6149TbrxP8Emoa+5Izilj9zeWQADMTQ3AH0AAAAFZAAgAAAAABaIB3n49Xm9cOafSrQsE0WCcYp8rMIO/qVwIlMF5YLRBXMAIAAAAAC9EyWJV3xOu9bzgdJ/yX+ko7qLf1u3AxNMataW2C9EzQVjACAAAAAAy7IAYSgbqP7CyvurHMoEq1eO08TIPNO/XcS1L5RKXHkAAzE0OAB9AAAABWQAIAAAAAA5rZItA/cocRnngYqcJ3nBXQ+l688aKz3EQyLbYYunPAVzACAAAAAAwKyA+L7TgxztPClLrIMk2JXR+w7c04N3ZOqPgjvrIvsFYwAgAAAAABaAwqPDgkTaz4888/3PeF64+vtHbLtAZgFgEurWT5kbAAMxNDkAfQAAAAVkACAAAAAA3htn7oHJ0YYpIrs+Mzyh85Ys67HwAdv5LQl1mCdoMWkFcwAgAAAAAEHjCtNNLenHuSIYux6ezAHsXDaj2DlTF67ToDhDDe6HBWMAIAAAAAAVwUZIMifuPtmiFSEctLt+bOFo1T4fgGiWNsZAP0ddeQADMTUwAH0AAAAFZAAgAAAAAEnt18Km/nqggfIJWxzTr9r3hnXNaueG6XO9A5G11LnGBXMAIAAAAAD7QxzGMN/ard5TfFLecE6uusMmXG2+RBsBR+/NCQHUwAVjACAAAAAAIPTDniUskKj5mEzULdlKtIDquwjcqkwunJyhmBazNNcAAzE1MQB9AAAABWQAIAAAAAAVAKK/GoY8AACu/hyMpO4hdLq6JnEyWNzkyci9sbaD/wVzACAAAAAA2HmeqpMlvvBpV2zQTYIRmsc4MFlfHRwLof0ycJgMg/MFYwAgAAAAACHHCAszhxijRN9Es+XRQxXo7JQ6g2qM6f5sIdMy0VKbAAMxNTIAfQAAAAVkACAAAAAAhHyq1GQC/GiMwpYjcsfkNxolJ10ARKjIjfkW1Wipzi0FcwAgAAAAAD/uaGWxTDq87F8XZ6CrFI+RNa8yMqfSZdqK00Kj833BBWMAIAAAAAD1mJD7i29l2xloVHwS1n0CbkyodWeFfZM1KF1r4HqNIgADMTUzAH0AAAAFZAAgAAAAABAJJxHoZD+MQBWqm9UM9Dd3z5ZohIZGWRaRVRsMptKQBXMAIAAAAADrE/ca+gqj/SH4oao4wE4qn2ovoTydzcMbDbrfnUs3zAVjACAAAAAAAIUpF9mApVCMCckE7S+K9RL6TPtlTTYuzUsj9E6oIpUAAzE1NAB9AAAABWQAIAAAAAAv01wz7VG9mTepjXQi6Zma+7b/OVBaKVkWNbgDLr1mFgVzACAAAAAA0I5sxz8r6wkCp5Tgvr+iL4p6MxSOq5d3e1kZG+0b7NkFYwAgAAAAAKwOaUTAOw6Y1F5vFrbDf8yVua5Fm6hKhkdIrzejuaatAAMxNTUAfQAAAAVkACAAAAAAWXecRwxSon68xaa9THXnRDw5ZfzARKnvvjTjtbae6T0FcwAgAAAAAPh0UfUMEo7eILCMv2tiJQe1bF9qtXq7GJtC6H5Va4fIBWMAIAAAAAASanx14WR2rmomuZ2x/nuD8j75pYzz+ZAt/v7uRcoOEQADMTU2AH0AAAAFZAAgAAAAAEY5WL8/LpX36iAB1wlQrMO/xHVjoO9BePVzbUlBYo+bBXMAIAAAAABoKcpadDXUARedDvTmzUzWPe1jTuvD0z9oIcZmKuiSXwVjACAAAAAAWhdUWP186dYAIDx6RtC0o/lzwYNvYBXm4RWFMbcU3YkAAzE1NwB9AAAABWQAIAAAAADnJnWqsfx0xqNnqfFGCxIplVu8mXjaHTViJT9+y2RuTgVzACAAAAAAWAaSCwIXDwdYxWf2NZTly/iKVfG/KDjHUcA1BokN5sMFYwAgAAAAAPS3GDNsHgCuTgEWTHiEStoY0VMzlopZ8L7wPUquK7ayAAMxNTgAfQAAAAVkACAAAAAAsPG7LaIpJvcwqcbtfFUpIjj+vpNj70Zjaw3eV9T+QYsFcwAgAAAAAJQ71zi0NlCyY8ZQs3IasJ4gB1PmWx57HpnlCf3+hmhqBWMAIAAAAABmDfQAQeyeutCB+wSn4RmErwYEkYpyBeCYA+3iutFzAQADMTU5AH0AAAAFZAAgAAAAAAGiSqKaQDakMi1W87rFAhkogfRAevnwQ41onWNUJKtuBXMAIAAAAAASgiDpXfGh7E47KkOD8MAcX8+BnDShlnU5JAGdnPdqOAVjACAAAAAAucFM6KF1YHEhH9vn16ox+VSqNEykMGaJzhLPsLI7qk8AAzE2MAB9AAAABWQAIAAAAAB7L4EnhjKA5xJD3ORhH2wOA1BvpnQ+7IjRYi+jjVEaJAVzACAAAAAAuhBIm0nL3FJnVJId+7CKDASEo+l2E89Z9/5aWSITK4AFYwAgAAAAALxpb5qDek038/wz4E//KIrwwo0voaqwlB7cTXSQ44EHAAMxNjEAfQAAAAVkACAAAAAAaROn1NaDZFOGEWw724dsXBAm6bgmL5i0cki6QZQNrOoFcwAgAAAAANVT8R6UvhrAlyqYlxtmnvkR4uYK/hlvyQmBu/LP6/3ZBWMAIAAAAAC1ONheOA57vNof7iZM3b82xk1abqT0bppzjQnHCmnUIwADMTYyAH0AAAAFZAAgAAAAADqSR5e0/Th59LrauDA7OnGD1Xr3H3NokfVxzDWOFaN7BXMAIAAAAACt30faNwTWRbvmykDpiDYUOCwA6QDbBBYBFWS7rdOB4AVjACAAAAAAQZlvU/gzOwW2rcr5+W43Q6EkfX8oX1TpRJWEAZAULx4AAzE2MwB9AAAABWQAIAAAAADmtb1ZgpZjSeodPG/hIVlsnS8hoRRwRbrTVx89VwL62AVzACAAAAAAi38e1g6sEyVfSDkzZbaZXGxKI/zKNbMasOl2LYoWrq8FYwAgAAAAAFWkHkxPA28FjeUjeRILC0tX8OJcanhPP68QxM5s1kcMAAMxNjQAfQAAAAVkACAAAAAAf/f7AWVgBxoKjr7YsEQ4w/fqSvuQWV2HMiA3rQ7ur0sFcwAgAAAAADkkeJozP6FFhUdRIN74H4UhIHue+eVbOs1NvbdWYFQrBWMAIAAAAADS3qKdAEzPtGMFpsisEhnOfF0zfxmLXjHKKaNCzX4PhQADMTY1AH0AAAAFZAAgAAAAAI2WEOymtuFpdKi4ctanPLnlQud+yMKKb8p/nfKmIy56BXMAIAAAAADVKrJmhjr1rfF3p+T+tl7UFd1B7+BfJRk0e7a4im7ozgVjACAAAAAAxeqPjcgDwae+AgEXg3hU118dHoy6rcHd6jAJrGik+EcAAzE2NgB9AAAABWQAIAAAAAAuHU9Qd79hjyvKOujGanSGDIQlxzsql8JytTZhEnPw+AVzACAAAAAAjF2gV/4+sOHVgDd/oR5wDi9zL7NGpGD+NsEpGXy/a4QFYwAgAAAAAIFYquIAyUn3D2peptolq3s8oIgSLEIctqBYx6qEeQTxAAMxNjcAfQAAAAVkACAAAAAA7dQDkt3iyWYCT94d7yqUtPPwp4qkC0ddu+HFdHgVKEkFcwAgAAAAANuYvtvZBTEq4Rm9+5eb7VuFopowkrAuv86PGP8Q8/QvBWMAIAAAAABBO8poBKW/RWjdHBARy3Rzghz3frQIZEPE/nSKWYlVPgADMTY4AH0AAAAFZAAgAAAAAAwnZSDhL4tNGYxlHPhKYB8s28dY5ScSwiKZm3UhT8U3BXMAIAAAAABDoY6dhivufTURQExyC9Gx3ocpl09bgbbQLChj3qVGbgVjACAAAAAA4JWOs1XAUgX3rGBBGEDDIC9/i9khJ+FgIcwfvj/SnS0AAzE2OQB9AAAABWQAIAAAAAC2VuRdaC4ZJmLdNOvD6R2tnvkyARteqXouJmI46V306QVzACAAAAAAMn1Z6B35wFTX9mEYAPM+IiJ5hauEwfD0CyIvBrxHg7IFYwAgAAAAAMRQnV65wbGlT+7Wj/HvGPLKg8NBnhkQ8Hx/MIyWvynTAAMxNzAAfQAAAAVkACAAAAAAVerb7qVNy457rNOHOgDSKyWl5ojun7iWrv1uHPXrIZQFcwAgAAAAAIDcYS9j5z+gx0xdJj09L7876r/vjvKTi/d3bXDE3PhyBWMAIAAAAAANDuaZsI2eS6/qiSdG9pCLjcPdKS96xWUJr84V/1La7gADMTcxAH0AAAAFZAAgAAAAAH/E44yLxKCJjuSmU9A8SEhbmkDOx1PqqtYcZtgOzJdrBXMAIAAAAABgLh9v2HjBbogrRoQ82LS6KjZQnzjxyJH4PH+F3jupSAVjACAAAAAAd93miIlZ/uuhzjVBt0BPjzeewxih6TSzkzbsNhpMjA8AAzE3MgB9AAAABWQAIAAAAAAlNUdDL+f/SSQ5074mrq0JNh7CTXwTbbhsQyDwWeDVMwVzACAAAAAANIH2IlSNG0kUw4qz0budjcWn8mNR9cJlYUqPYdonucAFYwAgAAAAAF9OccClBu1j8BVMDmMtJyCxnhWCbg9FuY/8nhuFGJknAAMxNzMAfQAAAAVkACAAAAAASZ+CvUDtlk/R4HAQ3a+PHrKeY/8ifAfh0oXYFqliu80FcwAgAAAAAJelpzPgM65OZFt/mvGGpwibclQ49wH+1gbUGzd9OindBWMAIAAAAAC63uwNXVbd1VP5If++NprVRsHCbomU9Iq3GxCttNAweAADMTc0AH0AAAAFZAAgAAAAAN9fkoUVbvFV2vMNMAkak4gYfEnzwKI3eDM3pnDK5q3lBXMAIAAAAACnDkgVNVNUlbQ9RhR6Aot2nVy+U4km6+GHPkLr631jEAVjACAAAAAA5d2REAVBZI9rUfeqJ9jhePmRXvrGolUbMTFiC78k/OIAAzE3NQB9AAAABWQAIAAAAAASyK3b1nmNCMptVEGOjwoxYLLS9fYWm/Zxilqea0jpEQVzACAAAAAADDHsGrbqlKGEpxlvfyqOJKQJjwJrzsrB7k3HG0AUJbkFYwAgAAAAACZHzWGY3PEL4uPSKPezGGJkyScYw/Vt3bKmX5inVMaOAAMxNzYAfQAAAAVkACAAAAAAlSP9iK31GlcG9MKGbLmq+VXMslURr+As736rrVNXcsUFcwAgAAAAAAvbj0zfq9zzi8XReheKFbCB+h9IsOLgXPPpI5vrEJNZBWMAIAAAAABb9Y2Ox3MeHCfGnMxpR7nk6hwIJg0J8/tT8fZHwxMCBQADMTc3AH0AAAAFZAAgAAAAAOJNORH8Bev97gVU7y6bznOxJ+E6Qoykur1QP76hG1/7BXMAIAAAAAC+C1PtOOrSZgzBAGhr+dPe/kR0JUw9GTwLVNr61xC1aAVjACAAAAAA4rDk/UlRHudzR12i5Ivcb5Pxwn63JX2Sjf2xrlALL7kAAzE3OAB9AAAABWQAIAAAAAAKcHzLUomavInN6upPkyWhAqYQACP/vdVCIYpiy6U6HgVzACAAAAAATsR4KItY6R2+U7Gg6sJdaEcf58gjd1OulyWovIqfxKcFYwAgAAAAAEac2NX3v0n87D/eUM/a3Gj+5Axs896SCidMyOMaOz6zAAMxNzkAfQAAAAVkACAAAAAAqTOLiMpCdR59tLZzzIPqJvbCNvz2XQL9ust0qYaehtcFcwAgAAAAAArefox/3k5xGOeiw2m6NUdzuGxmPwcu5IFcj+jMwHgHBWMAIAAAAABK08kOnYjDWhLJ70iVhd3XEj0Q0srEQttJTawBm6GuOwADMTgwAH0AAAAFZAAgAAAAAIPSqSeVzSRgNVNmrPYHmUMgykCY27NbdDUNhE5kx/SgBXMAIAAAAAAhX90nNfxyXmZe/+btZ7q6xMX4PFyj0paM1ccJ/5IUUQVjACAAAAAA/9XTbq8UVKJbIeYtfNg8pdDrpDqbCwVr5Rq3Tb4dFwwAAzE4MQB9AAAABWQAIAAAAACLn5DxiqAosHGXIAY96FwFKjeqrzXWf3VJIQMwx1fl4gVzACAAAAAAindvU27nveutopdvuHmzdENBbeGFtI3Qcsr07jxmvm8FYwAgAAAAAJ3GMHBeIaCyFV5zBgcUMpjfIDcdoaTYQSyQN2shVJMWAAMxODIAfQAAAAVkACAAAAAA7i2S6rHRSPBwZEn59yxaS7HiYBOmObIkeyCcFU42kf8FcwAgAAAAAGb3RSEyBmgarkTvyLWtOLJcPwCKbCRkESG4RZjVmY4iBWMAIAAAAABKIdcHRSJ3dnevw5Pj0BfULPqmDOA7KBDREMGv5rXUEAADMTgzAH0AAAAFZAAgAAAAAFz+M+H/Z94mdPW5oP51B4HWptp1rxcMWAjnlHvWJDWrBXMAIAAAAACBFEOQyL7ZHu4Cq33QvXkmKuH5ibG/Md3RaED9CtG5HwVjACAAAAAABf2EvIMumZohp2E/sHWEJW4VMU3ez95hwWU9pjKGRCYAAzE4NAB9AAAABWQAIAAAAAAE7c2x3Z3aM1XGfLNk/XQ9jCazNRbGhVm7H8c2NjS5ywVzACAAAAAARJ9h8fdcwA19velF3L/Wcvi2rCzewlKZ2nA0p8bT9uwFYwAgAAAAAPl1vH6JaJGZSJ8au0NK58X4gqleryub8slUhA0HRtzmAAMxODUAfQAAAAVkACAAAAAAVoRt9B9dNVvIMGN+ea5TzRzQC+lqSZ8dd/170zU5o9cFcwAgAAAAAEwM95XZin5mv2yhCI8+ugtKuvRVmNgzzIQN0yi1+9aIBWMAIAAAAAA+rgph1avVrhyHl/6G+HtASJSiJkv7u2UPYj+25fwtLAADMTg2AH0AAAAFZAAgAAAAAKRDkjyWv/etlYT4GyoXrmBED2FgZHnhc+l9Wsl06cH2BXMAIAAAAABohlpm3K850Vndf3NmNE0hHqDlNbSR8/IvMidQ3LnIZAVjACAAAAAAKw6WqWDrI7ZfyndtrftL3uh7BaF/FQxhkh8b0Zl547gAAzE4NwB9AAAABWQAIAAAAAC3DFh5oklLCNLY90bgWm68dFXz65JpAZSp1K99MBTPAQVzACAAAAAAQgZecmxEUZVHoptEQClDwAf8smI3WynQ/i+JBP0g+kQFYwAgAAAAADmUpVNJUwrydIllFvI/aau1703nk6tF2sfzkgFlWsKCAAMxODgAfQAAAAVkACAAAAAAQ5WKvWSB503qeNlOI2Tpjd5blheNr6OBO8pfJfPNstcFcwAgAAAAAKwHgQLSDJ5NwLBQbY5OnblQIsVDpGV7q3RCbFLD1U4/BWMAIAAAAADKOab9GTEiaybo9o4J72Pb9LiQU/CuKoQm6Jtlmo/IeQADMTg5AH0AAAAFZAAgAAAAAGfhFY3RGRm5ZgWRQef1tXxHBq5Y6fXaLAR4yJhrTBplBXMAIAAAAACKEF0ApLoB6lP2UqTFsTQYNc9OdDrs/vziPGzttGVLKQVjACAAAAAAvJcnqBNCZgHe+Q7Cqk+yiAaIuSJIRItXEsAlKy9PES4AAzE5MAB9AAAABWQAIAAAAAAIM73gPcgzgotYHLeMa2zAU4mFsr7CbILUZWfnuKSwagVzACAAAAAAJCSu98uV8xv88f2BIOWzt6p+6EjQStMBdkGPUkgN79cFYwAgAAAAABQqDP10DcaqEY7vxFS7U/9xcadDASONow1+xmVsPZ11AAMxOTEAfQAAAAVkACAAAAAAkWmHCUsiMy1pwZTHxVPBzPTrWFBUDqHNrVqcyyt7nO8FcwAgAAAAAMv2CebFRG/br7USELR98sIdgE9OQCRBGV5JZCO+uPMgBWMAIAAAAABxLEFq6nFVI3WaYhggo1d6oeDsBSm4wCW0T6D0yE/puwADMTkyAH0AAAAFZAAgAAAAAGInUYv0lP/rK7McM8taEHXRefk8Q2AunrvWqdfSV7UaBXMAIAAAAACE+WPxJ3gan7iRTbIxXXx+bKVcaf8kP4JD8DcwU0aL7wVjACAAAAAAiThzC5jAZ5D6xuCIsUD1aLy7KxmT2Fb8ybTkLxvj17MAAzE5MwB9AAAABWQAIAAAAACmHlg2ud3cplXlTsNTpvNnY6Qm1Fce0m899COamoDjaQVzACAAAAAArtJQeJIlepBWRU2aYar7+YGYVQ7dfDc1oxgTmA8r9q0FYwAgAAAAADZpcxtBFv18EdmhxsoxlDs253tNB5zqVY/h+nFD1isIAAMxOTQAfQAAAAVkACAAAAAApzcWSAbZWV/Rq+ylRNqqlJqNVR4fhXrz4633/MQOQgcFcwAgAAAAAN/jz/bsEleiuCl+li83EWlG6UMHA8CyaOMRKCkXkSCPBWMAIAAAAADSTHgALJugYsjIvSK1o0UwG6VizNokXQ/tnPNjOpGB1AAABWUAIAAAAADrmnP3kS2GpCl+gdL2da90KHTkBX46iQ/sZRoj7uPz7BJjbQAAAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgABAAAAAA==",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimal": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-FindOneAndUpdate.json
new file mode 100644
index 00000000000..d0e29677714
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-FindOneAndUpdate.json
@@ -0,0 +1,1930 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Decimal. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimal": {
+ "$numberDecimal": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimal": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mr/laWHUijZT5VT3x2a7crb7wgd/UXOGz8jr8BVqBpM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXVD/HSbBljko0jJcaxJ1nrzs2+pchLQqYR3vywS8SU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VDCpBYsJIxTfcI6Zgf7FTmKMxUffQv+Ys8zt5dlK76I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zYDslUwOUVNwTYkETfjceH/PU3bac9X3UuQyYJ19qK0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rAOmHSz18Jx107xpbv9fYcPOmh/KPAqge0PAtuhIRnc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BFOB1OGVUen7VsOuS0g8Ti7oDsTt2Yj/k/7ta8YAdGM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2fckE5SPs0GU+akDkUEM6mm0EtcV3WDE/sQsnTtodlk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mi9+aNjuwIvaMpSHENvKzKRAmX9cYguo2mXLvOoftHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "K6TWn4VcWWkz/gkUkLmbtwkG7SNeABICmLDnoYJFlLU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z+2/cEtGU0Fq7QJFNGA/0y4aWAsw0ncG6X0LYRqwS3c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rrSIf+lgcNZFbbUkS9BmE045jRWBpcBJXHzfMVEFuzE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KlHL3Kyje1/LMIfgbCqw1SolxffJvvgsYBV5y77wxuA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hzJ1YBoETmYeCh352dBmG8d8Wse/bUcqojTWpWQlgsc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lSdcllDXx8MA+s0GULjDA1lQkcV0L8/aHtZ6dM2pZ2c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "HGr7JLTTA7ksAnlmjSIwwdBVvgr3fv46/FTdiCPYpos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mMr25v1VwOEVZ8xaNUTHJCcsYqV+kwK6RzGYilxPtJ4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "129hJbziPJzNo0IoTU3bECdge0FtaPW8dm4dyNVNwYU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "doiLJ96qoo+v7NqIAZLq6BI5axV8Id8gT5vyJ1ZZ0PM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cW/Lcul3xYmfyvI/0x/+ybN78aQmBK1XIGs1EEU09N8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1aVIwzu9N5EJV9yEES+/g6hOTH7cA2NTcLIc59cu0wU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kw5tyl7Ew0r1wFyrN1mB9FiVW2hK2BxxxUuJDNWjyjQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ADAY2YBrm6RJBDY/eLLcfNxmSJku+mefz74gH66oyco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8gkqB1LojzPrstpFG7RHYmWxXpIlPDTqWnNsXH7XDRU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TESfVQMDQjfTZmHmUeYUE2XrokJ6CcrsKx/GmypGjOw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qFM+HFVQ539S0Ouynd1fBHoemFxtU9PRxE5+Dq7Ljy4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jPiFgUZteSmOg4wf3bsEKCZzcnxmMoILsgp/GaZD+dM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YaWUgJhYgPNN7TkFK16H8SsQS226JguaVhOIQxZwQNQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x90/Qk3AgyaFsvWf2KUCu5XF3j76WFSjt/GrnG01060=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZGWybWL/xlEdMYRFCZDUoz10sywTf7U/7wufsb78lH0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8l4ganN66jIcdxfHAdYLaym/mdzUUQ8TViw3MDRySPc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c8p5XEGTqxqvRGVlR+nkxw9uUdoqDqTB0jlYQ361qMA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1ZGFLlpQBcU3zIUg8MmgWwFKVz/SaA7eSYFrfe3Hb70=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "34529174M77rHr3Ftn9r8jU4a5ztYtyVhMn1wryZSkU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YkQ4pxFWzc49MS0vZM6S8mNo4wAwo21rePBeF3C+9mI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MhOf4mYY00KKVhptOcXf0bXB7WfuuM801MRJg4vXPgc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7pbbD8ihNIYIBJ3tAUPGzHpFPpIeCTAk5L88qCB0/9w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C9Q5PoNJTQo6pmNzXEEXUEqH22//UUWY1gqILcIywec=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AqGVk1QjDNDLYWGRBX/nv9QdGR2SEgXZEhF0EWBAiSE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/sGI3VCbJUKATULJmhTayPOeVW+5MjWSvVCqS77sRbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yOtbL0ih7gsuoxVtRrACMz+4N5uo7jIR7zzmtih2Beo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uA6dkb2Iyg9Su8UNDvZzkPx33kPZtWr/CCuEY+XgzUM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1DoSFPdHIplqZk+DyWAmEPckWwXw/GdB25NLmzeEZhk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OfDVS0T3ZuIXI/LNbTp6C9UbPIWLKiMy6Wx+9tqNl+g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3PZjHXbmG6GtPz+iapKtQ3yY4PoFFgjIy+fV2xQv1YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kaoLN0BoBWsmqE7kKkJQejATmLShd8qffcAmlhsxsGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vpiw9KgQdegGmp7IJnSGX2miujRLU0xzs0ITTqbPW7c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NuXFf7xGUefYjIUTuMxNUTCfVHrF8oL0AT7dPv5Plk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8Tz53LxtfEBJ9eR+d2690kwNsqPV6XyKo2PlqZCbUrc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "e6zsOmHSyV8tyQtSX6BSwui6wK9v1xG3giY/IILJQ2w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2fedFMCxa2DzmIpfbDKGXhQg0PPwbUv6vIWdwwlvhms=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yEJKMFnWXTC8tJUfzCInzQRByNEPjHxpw4L4m8No91Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YbFuWwOiFuQyOzIJXDbOkCWC2DyrG+248TBuVCa1pXU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "w7IkwGdrguwDrar5+w0Z3va5wXyZ4VXJkDMISyRjPGo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YmJUoILTRJPhyIyWyXJTsQ6KSZHHbEpwPVup6Ldm/Ko=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FvMjcwVZJmfh6FP/yBg2wgskK+KHD8YVUY6WtrE8xbg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "h4HCtD4HyYz0nci49IVAa10Z4NJD/FHnRMV4sRX6qro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nC7BpXCmym+a0Is2kReM9cYN2M1Eh5rVo8fjms14Oiw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1qtVWaeVo649ZZZtN8gXbwLgMWGLhz8beODbvru0I7Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Ej+mC0QFyMNIiSjR939S+iGBm7dm+1xObu5IcF/OpbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UQ8LbUG3cMegbr9yKfKanAPQE1EfPkFciVDrNqZ5GHY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4iI3mXIDjnX+ralk1HhJY43mZx2uTJM7hsv9MQzTX7E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0WQCcs3rvsasgohERHHCaBM4Iy6yomS4qJ5To3/yYiw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qDCTVPoue1/DOAGNAlUstdA9Sid8MgEY4e5EzHcVHRk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9F9Mus0UnlzHb8E8ImxgXtz6SU98YXD0JqswOKw/Bzs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pctHpHKVBBcsahQ6TNh6/1V1ZrqOtKSAPtATV6BJqh0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vfR3C/4cPkVdxtNaqtF/v635ONbhTf5WbwJM6s4EXNE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ejP43xUBIex6szDcqExAFpx1IE/Ksi5ywJ84GKDFRrs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jbP4AWYd3S2f3ejmMG7dS5IbrFol48UUoT+ve3JLN6U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CiDifI7958sUjNqJUBQULeyF7x0Up3loPWvYKw9uAuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "e2dQFsiHqd2BFHNhlSxocjd+cPs4wkcUW/CnCz4KNuM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PJFckVmzBipqaEqsuP2mkjhJE4qhw36NhfQ9DcOHyEU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S3MeuJhET/B8VcfZYDR9fvX0nscDj416jdDekhmK11s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CGVHZRXpuNtQviDB2Kj03Q8uvs4w3RwTgV847R7GwPw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yUGgmgyLrxbEpDVy89XN3c2cmFpZXWWmuJ/35zVZ+Jw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "inb6Q97mL1a9onfNTT8v9wsoi/fz7KXKq3p8j90AU9c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CCyYx/4npq9xGO1lsCo8ZJhFO9/tN7DB+/DTE778rYg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LNnYw4fwbiAZu0kBdAHPEm/OFnreS+oArdB5O/l/I98=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "P006SxmUS/RjiQJVYPdMFnNo3827GIEmSzagggkg05Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oyvwY+WsnYV6UHuPki1o0ILJ2jN4uyXf9yaUNtZJyBA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "36Lk3RHWh1wmtCWC/Yj6jNIo17U5y6SofAgQjzjVxD8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vOOo8FqeHnuO9mqOYjIb4vgwIwVyXZ5Y+bY5d9tGFUM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bJiDJjwQRNxqxlGjRm5lLziFhcfTDCnQ/qU1V85qcRg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2Qgrm1n0wUELAQnpkEiIHB856yv76q8jLbpiucetcm0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5ciPOYxTK0WDwwYyfs7yiVymwtYQXDELLxmM4JLl4/o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "31dC2WUSIOKQc4jwT6PikfeYTwi80mTlh7P31T5KNQU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YluTV2Mu53EGCKLcWfHZb0BM/IPW2xJdG3vYlDMEsM4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dh/8lGo2Ek6KukSwutH6Q35iy8TgV0FN0SJqe0ZVHN8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EVw6HpIs3BKen2qY2gz4y5dw1JpXilfh07msZfQqJpc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FYolLla9L8EZMROEdWetozroU40Dnmwwx2jIMrr7c1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8M6k4QIutSIj6CM41vvkQtuFsaGrjoR9SZJVSLbfGKQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9LM0VoddDNHway442MqY+Z7vohB2UHau/cddshhzf40=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "66i8Ytco4Yq/FMl6pIRZazz3CZlu8fO2OI6Pne0pvHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2a/HgX+MjZxjXtSvHgF1yEpHMJBkl8Caee8XrJtn0WM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "frhBM662c4ZVG7mWP8K/HhRjd01lydW/cPcHnDjifqc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6k1T7Q1t668PBqv6fwpVnT1HWh7Am5LtbKvwPJKcpGU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UlJ5Edfusp8S/Pyhw6KTglIejmbr1HO0zUeHn/qFETA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jsxsB+1ECB3assUdoC333do9tYH+LglHmVSJHy4N8Hg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2nzIQxGYF7j3bGsIesECEOqhObKs/9ywknPHeJ3yges=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xJYKtuWrX90JrJVoYtnwP7Ce59XQGFYoalxpNfBXEH0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NLI5lriBTleGCELcHBtNnmnvwSRkHHaLOX4cKboMgTw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hUOQV0RmE5aJdJww1AR9rirJG4zOYPo+6cCkgn/BGvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "h4G2Of76AgxcUziBwCyH+ayMOpdBWzg4yFrTfehSC2c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VuamM75RzGfQpj2/Y1jSVuQLrhy6OAwlZxjuQLB/9Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kn9+hLq7hvw02xr9vrplOCDXKBTuFhfbX7d5v/l85Pg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fAiGqKyLZpGngBYFbtYUYt8LUrJ49vYafiboifTDjxs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BxRILymgfVJCczqjUIWXcfrfSgrrYkxTM5VTg0HkZLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CrFY/PzfPU2zsFkGLu/dI6mEeizZzCR+uYgjZBAHro0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AEbrIuwvXLTtYgMjOqnGQ8y8axUn5Ukrn7UZRSyfQVw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ouWeVH3PEFg+dKWlXc6BmqirJOaVWjJbMzZbCsce4dA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+hd6xFB+EG+kVP7WH4uMd1CLaWMnt5xJRaY/Guuga9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zmpGalfAOL3gmcUMJYcLYIRT/2VDO/1Dw4KdYZoNcng=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2PbHAoM/46J2UIZ/vyksKzmVVfxA7YUyIxWeL/N/vBk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7fD9x+zk5MVFesb59Klqiwwmve7P5ON/5COURXj5smE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tlrNQ4jaq051iaWonuv1sSrYhKkL1LtNZuHsvATha3s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fBodm28iClNpvlRyVq0dOdXQ08S7/N3aDwid+PdWvRo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "O+/nnRqT3Zv7yMMGug8GhKHaWy6u7BfRGtZoj0sdN1c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5AZZ/RTMY4Photnm/cpXZr/HnFRi3eljacMsipkJLHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oFVyo/kgoMxBIk2VE52ySSimeyU+Gr0EfCwapXnTpKA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z8v59DfcnviA0mzvnUk+URVO0UuqAWvtarEgJva/n1c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "P64GOntZ+zBJEHkigoh9FSxSO+rJTqR20z5aiGQ9an4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xMbSuDPfWuO/Dm7wuVl06GnzG9uzTlJJX9vFy7boGlY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kXPB19mRClxdH2UsHwlttS6lLU2uHvzuZgZz7kC45jU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NDVjVYXAw4k0w4tFzvs7QDq39aaU3HQor4I2XMKKnCk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uKw/+ErVfpTO1dGUfd3T/eWfZW3nUxXCdBGdjvHtZ88=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "av0uxEzWkizYWm0QUM/MN1hLibnxPvCWJKwjOV4yVQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ERwUC47dvgOBzIsEESMIioLYbFOxOe8PtJTnmDkKuHM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2gseKlG5Le12fS/vj4eaED4lturF16kAgJ1TpW3HxEE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7Cvg0Y3j/5i2F1TeXxlMmU7xwif5dCmwkZAOrVC5K2Y=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-InsertFind.json
new file mode 100644
index 00000000000..cea03e23fe8
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-InsertFind.json
@@ -0,0 +1,1899 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Decimal. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RGTjNVEsNJb+DG7DpPOam8rQWD5HZAMpRyiTQaw7tk8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I93Md7QNPGmEEGYU1+VVCqBPBEvXdqHPtTJtMOn06Yk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "GecBFQ1PemlECWZWCl7f74vmsL6eB6mzQ9n6tK6FYfs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QpjhZl+O1ORifgtCZuWAdcP6OKL7IZ2cA46v8FJcV28=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RlQWwhU+uVv0a+9IB5cUkEfvHBvOw3B1Sx6WfPWMqes=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubb81XTC7U+4tcNzf1oYvOY6gR5hC2Izqx54f4GuJ0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6M4Q5NMQ9TqNnjzGOxIkiUIY8TEL0I3XD1QnhefQUqU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BtInzk9t2FFMCEY6AQ7zN8jwrrZEs2irSv6q0Q4NaIw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vxXfETu9cuBIpRBo3jUUU04mJIH/aAhLX8K6VI5Xv0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXPCdS+q23zi1bkPnaVG2j0PsVtxdeSLJ//h6J1x8RU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KY3KkfBAsN2l80wbpj41G0gwBR5KmmFnZcagg7D3ENk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI8NFAxXCX4VOnY5X73K6KI/Yspd3aR94KV39MhJlAw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nFxH0UC3mATKA6Vboz+QX/hAjj19kF/SH6H5Cne7qC0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q8hYqIYaIi7nOdG/7qQZYnz8Bsacfi66M1nVku4SH08=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4saA92R4arp4anvD9xFtze+sNcQqTEhPHyl1h70A8NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DbIziOBRRyeQS6RtBR09E37LV+CTKrEjGoRMLSpG6eE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Fv80Plp/7w2gnVqrwawLd6qhJ10G4NCDm3re67cNq4Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "T/T2oiQCBBES4YN7EodzPRdabZSFlYIClHBym+bQUZE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZQgHD3l46Ujqtbnj1VbbeM29C9wJzOhz+yZ/7XdSrxk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ltlFKzWvyZvHxDFOYDd/XXJ6kUiJj0ln2HTCEz2o4Z4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "flW8A7bltC1u8bzx0WJtxosGJdOVsJFfbx33jxnpFGg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SXO+92QbMKwUSG2t27ciunV1c3VvFkUuDmSczpRe008=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+KioGs1GM+xRBzFE67ePTWj04KMSE5/Y6qUF7nJ5kvU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L3xNVbh6YH+RzqABN+5Jgb7T234Efpn766DmUvxIxgg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hPF+60mBYPjh21dEmPlBhKgyc9S2qLtTkypYvnqP2Fc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EletRsETy2HcjaPIm2c8CkT7ch/P3pJJDC8hasepcSU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "r5bMXUaNKqLPxZ+TG9HYTG4aSDgcpim27rN8rQFkM0w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Q7Erdr8+/S0wUEDDIqlS5XjBVWvhZY65K0uUDb6+Ns=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xEcnhXy35hbXNVBPOOt3TUHbxvKfQ48KjA9b6/rbMqQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "T8bEpiQNgsEudXvyKE9SZlSvbpV/LUaslsdqgSFltyo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hIoiaF2YjnxDbODfhFEB+JGZ5nf8suD3Shck5bwQ3N0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qnA6qzejeRJ0rsZaZ0zOvKAaXyxt5lpscKQNYFZNl4k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "anAKCL2DN/le2VaP0n2ucYSEH/DaaEH/8Sa4OqTZsRA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JCZlBJaFm618oWYSnT9Jr1MtwFVw4BZjOzO+5yWgR90=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yxyk4n9762WzcDVGnTn4jCqUnSMIVCrLDIjCX1QVj34=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fDI6fdKvDJwim5/CQwWZEzcrXE3LHgy7FTtffcC7tXE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Vex+gcz5T+WkzsVZQrkqUR2ryyZbnaOGuWpYvjN0zCw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8TLEXz+Gbbp6llHpZXVjLsdlYY9f6hrKpHVpyfDe0RY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7fTyt5BrunypS65TfOzFW2E2qdIuT4SLeDeGlbQoJCs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8fKGrkqN0/KuSjyXgDBmRauDKrSa//JBKRWHEB9xBf4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s4codmG7uN4ss6P357jL21lazEe90M9GOK5WrOknSV0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RkSpua8XF+NUdxVDU90EbLUTTyZFX3tt3atBTroFaRk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LnTCuCDyAHK5B9KXzjtwGmWB+qergQk2OCjnIx9MI2A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cBFh0virAX4pVXf/udIGI2951i0+0aZAdJcBVGtYnT4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "G54X6myQXWZ5fw/G31en3QbdgfXzL9+hFTtJpnWMqDI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EdsiiuezcsFJFnYIyGjCOhnqMj1BOwTB5EFxN+ERUkg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dVH9MXLtk0WTwGQ3xmrhOqfropMUkDW3o6paNPGl3NU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sB3HqXKWY3pKbuEH8BTbfNIGfbY+7/ZbOc3XC+JRNNI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WHyDk62Xhqbo4/iie2aLIM4x2uuAjv6102dJSHI58oM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pNUFuHpeNRDUZ/NrtII2c6sNc9eGR1lIUlIyXKERA+0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UPa+pdCqnN0bfAptdzldQOSd01gidrDKy8KhWrpSKAI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "l+7dOAlo+HUffMqFYXL6pgUFeTbwOM9CjKQLxEoLtc4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SRnDXV/rN6C8xwMutv9E1luv3DOUio3VkgPr8Cpm7Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QcH6gl+gX7xZ7OWhUNQMbndJy0Piz49pDo6RsnLkVSA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "t+uL4DnfsI/Zll/KXWW1cOKX3Hu8WIkm3pt9efCVSAQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "myutHDctku/+Uug/nD8gRbYvmx/IovtoAAC2/fz2oHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6C+cjD0e0nSCP6cPqQYbNG7SlOd6Mfvi8hyfm7Ng+D8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zg01JSoOj9oBKT0S1ldJucXzY5AKgreS+h2xJreWTOs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7qQ80/FjodHl1m1py/Oii0/9C/xWbLdhaRXQ+kkCP10=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YwWMNH07vL6c5Nhg+MRnVByhzUunu8y0VLM9z/XvR5U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dle8bU98+fudAbc14SToZFkwvV3tcYVsjDug0NWljpc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "J+eKL1vPJmlzltvhI6Li5Fz/TJmi3Ng+ehRTcs46API=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB3XzfFygLwC3WHkj0up+VbEd25KKoce1vOpG/5bwK4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vnVnmOnL+z2pqwE+A6cVKS0Iwy4F4/2IiElJca9bUQM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+lG5r/Fpqry3BtFuvY67+RntmHAMDoLVOSGc6ZoXPb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L5MXQertqc6uj7ADe8aWKbd1sYHPCE7P1VYVg9Zc3VI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "imKONuZgopt0bhM3GMX2WVPwQYMTobuUUEdhcLfHs4c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eOkU1J1uVbiVFWBerbXsSIVcF2nqiicTkFy4x7kFHB8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gI0uDhXeoH/UatDQKEf4qo8FHzWZDhb/wuWTqbq/ID4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cOkd5Aa3btYhtojE/smsF/PJnULqQ4NNqTkU6KXTFmo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AWNJMs1MTe294oFipp8Y6P0CjpkZ4qCZoClQF3XcHq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6gJtlzXOFhGYrVbTuRMmvMlDTwXdNtR9aGBlHZPwIMw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LEmwVGA/xsEG7UrcOoYLFu6KCXgijzFznenknuDacm8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mIRFPTXRrGaPtp/Ydij2jgkRe4uoUvAKxW2d8b9zYL0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "B+Uv2u48WALOO0L311z+eryjYQzKJVMfdHMZPhOAFmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "INXXp0wDyVCq+NtfIrrC2ciETmyW/dWB/48/u4yLEZ4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "se7DGo8XrlrQDLEcco1tZrQt9kDe+0RTyl2bw/quG4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vr0m2+Zk9lbN6UgWCyn8xJWJOokU3IDYab5U5q1+CgQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XI+eJ8Gy2JktG1gICgoj1qpsfy1tKmH0kglWbaQH6DA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A+UCuNnuAUqnQzspA6TVqUPRmtZmpSex5HFw7THRxs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xaH2Ehfljd19uo0Fvb3iwkdaiWEVQd2YPoitgEPkhSM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S/iZBJGcc8+qZxyMtab65MMBoSglybwk3x58Nb86gnY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "w14ZE5qqY5YgkS4Zcs9YNbrQbY1XfGOOHNn9bOYnFVQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0MhGd/jEF1vjkKGp+ZMn9SjLK54jkp9W4Hg+Sp/oxaI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "92QZ73e/NRTYgCm4aifaKth6aAsKnLLccBc0zx/qUTY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WOjzemCgFJOiGIp81RSVh/tFlzSTj9eFWcBnsiv2Ycs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DrsP9CmfKPjw5yLL8bnSeAxfNzAwlb+Z8OqCiKgBY7o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lMogqg8veBv6mri3/drMe9afJiKMvevkmGcw9BedfLo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TxqwNcY8Tg2MPpNdkPBwvfpuTttSYRHU26DGECKYQ9o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "l0u1b4b4vYACWIwfnB7PZac4oDEgjQZCzHruNPTgAIY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "iVSGQ+cCfhbWIrY/v/WBORK92elu9gfRKyGhr6r/k00=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yK1forG50diEXte8ECzjfpHeYsPyuQ/dgxbxn/nzY5k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gIfTLCD3VwnOwkC0zPXWTqaITxX6ZplA69PO2a6zolc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "O/Zxlgh3WqpzJ7+Sd8XWMVID4/GXJUUWaSqfgDUi3b0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZQ6yv368zwahUqSUYH/StL0Qgz/TwS1CzlMjVDvCciI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m2rPEYkjwyiKdonMrKlcF7hya4lFOAUwEePJ3SgrNx8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mq0yl5iVKlq71bT/dT/fXOWf2n90bTnXFnOdGDN0JOc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6qDGMXipPLC2O6EAAMjO2F9xx4rdqZso4IkPpH2304U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jvQHRQQa2RIszE2LX2Hv2LbRhYawJ6qmtRt8HZzFQXg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ovJXQrkZlpeHRciKyE/WWNm5O389gRgzx1W+Dw596X4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "a4kgRNvYctGYqyQv9qScL/WkljTYVylJ9pE9KDULlxU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qV4Q48vPiCJMTjljotzYKI/zfExWpkKOSHGcAjGyDig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jtI7zbBF+QW/aYYTkn90zzyHLXLgmy7l1bzgMb2oqic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q0KmJl9txPdn962UNvnfe6UFhdk9YaFZuTm33F+csso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ULNdEqeZJgtmNOhN/Y9INzsE9AnxWYwOMn+pIbRXIFs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "R4oz9+wkdjpKe5tE1jpG7IURAnfvS5fLP4LrD5cZfTE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qG5Z7VhwSu/HT/YFTgDzyAAzJKq51xPw2HeEV5btYC4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OM/1DmIIZ5Qyhtq8TGkHTBEMVKjAnKRZMRXYtTG8ctc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2R5vZbljLXnDFA99YfGuRB7pAdPJVKsT25zLNMC0fUk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OMbavF2EmdAz1fHkLV3ctFEUDfriKhoT2gidwHZ9z1o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MWT4Zrw3/vVvTYMa1Is5Pjr3wEwnBfnEAPPUAHKQhNU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tBkRPfG9yxfKocQx5pAJX0oEHKPL0Tgtr+0UYe09InE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lqxpnDR/H0YgH7RcfKoNoaaRhe1SIazIeMbQ1fu9y3Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "utT1UdR22PWOTrOkZauztX613lAplV4eh/ejTRb7ZSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S+Y2yFyKi/a6FXhih4yGo29X8I8OT6/zwEoX6NMKT4o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QSjVppg29x6oS5yBg8OFjrFt0tuTpWCuKxfIy0k8YnE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y3r6/Xsfvsl3HksXlVYkJgHUqpQGfICxg3x9f8Zw1qM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BSltHzEwDjFN4du9rDHAPvl22atlcTioEtt+gC5L1tk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0arGXjSN0006UnXbrWsGqhvBair569DeFDUME3Df3rA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s/DumaMad08S+PBUUcrS+v42K0z8HgcdiQtrFAEu2Qs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EzJ8Y8N0OQBTlnvrK82PdevDNZZO4E6CNgYVu8Cj6Ks=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VA4vr8jBPI5QdiPrULzzZjBMIUbG3V7Slg5zm0bFcKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YAOvEB2ZLtq9LQiFViBHWaxxWVVonC2rNYj9tN9s3L0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hgaHMo9aAGS+nBwvqnTjZO+YkiQPY1c1XcIYeaYKHyI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YvaoLt3ZpH0atB0tNzwMjpoxRYJXl0DqSjisMJiGVBE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EMmW6CptFsiLoPOi5/uAJQ2FmeLg6mCpuVLLrRWk7Mc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1jQsNMarSnarlYmXEuoFokeBMg/090qUD9wqo1Zn8Gs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hupXNKhRpJxpyDAAP1TgJ5JMZh9lhbMk6s7D7dMS3C8=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Update.json
new file mode 100644
index 00000000000..2f8b991cf72
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Decimal-Update.json
@@ -0,0 +1,1934 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Decimal. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimal": {
+ "$numberDecimal": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedDecimal": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedDecimal": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimal",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimal": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimal": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mr/laWHUijZT5VT3x2a7crb7wgd/UXOGz8jr8BVqBpM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXVD/HSbBljko0jJcaxJ1nrzs2+pchLQqYR3vywS8SU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VDCpBYsJIxTfcI6Zgf7FTmKMxUffQv+Ys8zt5dlK76I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zYDslUwOUVNwTYkETfjceH/PU3bac9X3UuQyYJ19qK0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rAOmHSz18Jx107xpbv9fYcPOmh/KPAqge0PAtuhIRnc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BFOB1OGVUen7VsOuS0g8Ti7oDsTt2Yj/k/7ta8YAdGM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2fckE5SPs0GU+akDkUEM6mm0EtcV3WDE/sQsnTtodlk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mi9+aNjuwIvaMpSHENvKzKRAmX9cYguo2mXLvOoftHQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "K6TWn4VcWWkz/gkUkLmbtwkG7SNeABICmLDnoYJFlLU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z+2/cEtGU0Fq7QJFNGA/0y4aWAsw0ncG6X0LYRqwS3c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rrSIf+lgcNZFbbUkS9BmE045jRWBpcBJXHzfMVEFuzE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KlHL3Kyje1/LMIfgbCqw1SolxffJvvgsYBV5y77wxuA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hzJ1YBoETmYeCh352dBmG8d8Wse/bUcqojTWpWQlgsc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lSdcllDXx8MA+s0GULjDA1lQkcV0L8/aHtZ6dM2pZ2c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "HGr7JLTTA7ksAnlmjSIwwdBVvgr3fv46/FTdiCPYpos=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mMr25v1VwOEVZ8xaNUTHJCcsYqV+kwK6RzGYilxPtJ4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "129hJbziPJzNo0IoTU3bECdge0FtaPW8dm4dyNVNwYU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "doiLJ96qoo+v7NqIAZLq6BI5axV8Id8gT5vyJ1ZZ0PM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cW/Lcul3xYmfyvI/0x/+ybN78aQmBK1XIGs1EEU09N8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1aVIwzu9N5EJV9yEES+/g6hOTH7cA2NTcLIc59cu0wU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kw5tyl7Ew0r1wFyrN1mB9FiVW2hK2BxxxUuJDNWjyjQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ADAY2YBrm6RJBDY/eLLcfNxmSJku+mefz74gH66oyco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8gkqB1LojzPrstpFG7RHYmWxXpIlPDTqWnNsXH7XDRU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TESfVQMDQjfTZmHmUeYUE2XrokJ6CcrsKx/GmypGjOw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qFM+HFVQ539S0Ouynd1fBHoemFxtU9PRxE5+Dq7Ljy4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jPiFgUZteSmOg4wf3bsEKCZzcnxmMoILsgp/GaZD+dM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YaWUgJhYgPNN7TkFK16H8SsQS226JguaVhOIQxZwQNQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x90/Qk3AgyaFsvWf2KUCu5XF3j76WFSjt/GrnG01060=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZGWybWL/xlEdMYRFCZDUoz10sywTf7U/7wufsb78lH0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8l4ganN66jIcdxfHAdYLaym/mdzUUQ8TViw3MDRySPc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c8p5XEGTqxqvRGVlR+nkxw9uUdoqDqTB0jlYQ361qMA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1ZGFLlpQBcU3zIUg8MmgWwFKVz/SaA7eSYFrfe3Hb70=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "34529174M77rHr3Ftn9r8jU4a5ztYtyVhMn1wryZSkU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YkQ4pxFWzc49MS0vZM6S8mNo4wAwo21rePBeF3C+9mI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MhOf4mYY00KKVhptOcXf0bXB7WfuuM801MRJg4vXPgc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7pbbD8ihNIYIBJ3tAUPGzHpFPpIeCTAk5L88qCB0/9w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C9Q5PoNJTQo6pmNzXEEXUEqH22//UUWY1gqILcIywec=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AqGVk1QjDNDLYWGRBX/nv9QdGR2SEgXZEhF0EWBAiSE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/sGI3VCbJUKATULJmhTayPOeVW+5MjWSvVCqS77sRbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yOtbL0ih7gsuoxVtRrACMz+4N5uo7jIR7zzmtih2Beo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uA6dkb2Iyg9Su8UNDvZzkPx33kPZtWr/CCuEY+XgzUM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1DoSFPdHIplqZk+DyWAmEPckWwXw/GdB25NLmzeEZhk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OfDVS0T3ZuIXI/LNbTp6C9UbPIWLKiMy6Wx+9tqNl+g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3PZjHXbmG6GtPz+iapKtQ3yY4PoFFgjIy+fV2xQv1YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kaoLN0BoBWsmqE7kKkJQejATmLShd8qffcAmlhsxsGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vpiw9KgQdegGmp7IJnSGX2miujRLU0xzs0ITTqbPW7c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NuXFf7xGUefYjIUTuMxNUTCfVHrF8oL0AT7dPv5Plk4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8Tz53LxtfEBJ9eR+d2690kwNsqPV6XyKo2PlqZCbUrc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "e6zsOmHSyV8tyQtSX6BSwui6wK9v1xG3giY/IILJQ2w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2fedFMCxa2DzmIpfbDKGXhQg0PPwbUv6vIWdwwlvhms=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yEJKMFnWXTC8tJUfzCInzQRByNEPjHxpw4L4m8No91Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YbFuWwOiFuQyOzIJXDbOkCWC2DyrG+248TBuVCa1pXU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "w7IkwGdrguwDrar5+w0Z3va5wXyZ4VXJkDMISyRjPGo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YmJUoILTRJPhyIyWyXJTsQ6KSZHHbEpwPVup6Ldm/Ko=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FvMjcwVZJmfh6FP/yBg2wgskK+KHD8YVUY6WtrE8xbg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "h4HCtD4HyYz0nci49IVAa10Z4NJD/FHnRMV4sRX6qro=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nC7BpXCmym+a0Is2kReM9cYN2M1Eh5rVo8fjms14Oiw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1qtVWaeVo649ZZZtN8gXbwLgMWGLhz8beODbvru0I7Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Ej+mC0QFyMNIiSjR939S+iGBm7dm+1xObu5IcF/OpbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UQ8LbUG3cMegbr9yKfKanAPQE1EfPkFciVDrNqZ5GHY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4iI3mXIDjnX+ralk1HhJY43mZx2uTJM7hsv9MQzTX7E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0WQCcs3rvsasgohERHHCaBM4Iy6yomS4qJ5To3/yYiw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qDCTVPoue1/DOAGNAlUstdA9Sid8MgEY4e5EzHcVHRk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9F9Mus0UnlzHb8E8ImxgXtz6SU98YXD0JqswOKw/Bzs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pctHpHKVBBcsahQ6TNh6/1V1ZrqOtKSAPtATV6BJqh0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vfR3C/4cPkVdxtNaqtF/v635ONbhTf5WbwJM6s4EXNE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ejP43xUBIex6szDcqExAFpx1IE/Ksi5ywJ84GKDFRrs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jbP4AWYd3S2f3ejmMG7dS5IbrFol48UUoT+ve3JLN6U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CiDifI7958sUjNqJUBQULeyF7x0Up3loPWvYKw9uAuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "e2dQFsiHqd2BFHNhlSxocjd+cPs4wkcUW/CnCz4KNuM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PJFckVmzBipqaEqsuP2mkjhJE4qhw36NhfQ9DcOHyEU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "S3MeuJhET/B8VcfZYDR9fvX0nscDj416jdDekhmK11s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CGVHZRXpuNtQviDB2Kj03Q8uvs4w3RwTgV847R7GwPw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yUGgmgyLrxbEpDVy89XN3c2cmFpZXWWmuJ/35zVZ+Jw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "inb6Q97mL1a9onfNTT8v9wsoi/fz7KXKq3p8j90AU9c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CCyYx/4npq9xGO1lsCo8ZJhFO9/tN7DB+/DTE778rYg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "LNnYw4fwbiAZu0kBdAHPEm/OFnreS+oArdB5O/l/I98=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "P006SxmUS/RjiQJVYPdMFnNo3827GIEmSzagggkg05Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oyvwY+WsnYV6UHuPki1o0ILJ2jN4uyXf9yaUNtZJyBA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "36Lk3RHWh1wmtCWC/Yj6jNIo17U5y6SofAgQjzjVxD8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vOOo8FqeHnuO9mqOYjIb4vgwIwVyXZ5Y+bY5d9tGFUM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bJiDJjwQRNxqxlGjRm5lLziFhcfTDCnQ/qU1V85qcRg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2Qgrm1n0wUELAQnpkEiIHB856yv76q8jLbpiucetcm0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5ciPOYxTK0WDwwYyfs7yiVymwtYQXDELLxmM4JLl4/o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "31dC2WUSIOKQc4jwT6PikfeYTwi80mTlh7P31T5KNQU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YluTV2Mu53EGCKLcWfHZb0BM/IPW2xJdG3vYlDMEsM4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dh/8lGo2Ek6KukSwutH6Q35iy8TgV0FN0SJqe0ZVHN8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EVw6HpIs3BKen2qY2gz4y5dw1JpXilfh07msZfQqJpc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FYolLla9L8EZMROEdWetozroU40Dnmwwx2jIMrr7c1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "8M6k4QIutSIj6CM41vvkQtuFsaGrjoR9SZJVSLbfGKQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9LM0VoddDNHway442MqY+Z7vohB2UHau/cddshhzf40=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "66i8Ytco4Yq/FMl6pIRZazz3CZlu8fO2OI6Pne0pvHU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2a/HgX+MjZxjXtSvHgF1yEpHMJBkl8Caee8XrJtn0WM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "frhBM662c4ZVG7mWP8K/HhRjd01lydW/cPcHnDjifqc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6k1T7Q1t668PBqv6fwpVnT1HWh7Am5LtbKvwPJKcpGU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UlJ5Edfusp8S/Pyhw6KTglIejmbr1HO0zUeHn/qFETA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jsxsB+1ECB3assUdoC333do9tYH+LglHmVSJHy4N8Hg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2nzIQxGYF7j3bGsIesECEOqhObKs/9ywknPHeJ3yges=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xJYKtuWrX90JrJVoYtnwP7Ce59XQGFYoalxpNfBXEH0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NLI5lriBTleGCELcHBtNnmnvwSRkHHaLOX4cKboMgTw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hUOQV0RmE5aJdJww1AR9rirJG4zOYPo+6cCkgn/BGvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "h4G2Of76AgxcUziBwCyH+ayMOpdBWzg4yFrTfehSC2c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VuamM75RzGfQpj2/Y1jSVuQLrhy6OAwlZxjuQLB/9Ss=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kn9+hLq7hvw02xr9vrplOCDXKBTuFhfbX7d5v/l85Pg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fAiGqKyLZpGngBYFbtYUYt8LUrJ49vYafiboifTDjxs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BxRILymgfVJCczqjUIWXcfrfSgrrYkxTM5VTg0HkZLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CrFY/PzfPU2zsFkGLu/dI6mEeizZzCR+uYgjZBAHro0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "AEbrIuwvXLTtYgMjOqnGQ8y8axUn5Ukrn7UZRSyfQVw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ouWeVH3PEFg+dKWlXc6BmqirJOaVWjJbMzZbCsce4dA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+hd6xFB+EG+kVP7WH4uMd1CLaWMnt5xJRaY/Guuga9Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zmpGalfAOL3gmcUMJYcLYIRT/2VDO/1Dw4KdYZoNcng=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2PbHAoM/46J2UIZ/vyksKzmVVfxA7YUyIxWeL/N/vBk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7fD9x+zk5MVFesb59Klqiwwmve7P5ON/5COURXj5smE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tlrNQ4jaq051iaWonuv1sSrYhKkL1LtNZuHsvATha3s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fBodm28iClNpvlRyVq0dOdXQ08S7/N3aDwid+PdWvRo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "O+/nnRqT3Zv7yMMGug8GhKHaWy6u7BfRGtZoj0sdN1c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5AZZ/RTMY4Photnm/cpXZr/HnFRi3eljacMsipkJLHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oFVyo/kgoMxBIk2VE52ySSimeyU+Gr0EfCwapXnTpKA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Z8v59DfcnviA0mzvnUk+URVO0UuqAWvtarEgJva/n1c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "P64GOntZ+zBJEHkigoh9FSxSO+rJTqR20z5aiGQ9an4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xMbSuDPfWuO/Dm7wuVl06GnzG9uzTlJJX9vFy7boGlY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kXPB19mRClxdH2UsHwlttS6lLU2uHvzuZgZz7kC45jU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NDVjVYXAw4k0w4tFzvs7QDq39aaU3HQor4I2XMKKnCk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uKw/+ErVfpTO1dGUfd3T/eWfZW3nUxXCdBGdjvHtZ88=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "av0uxEzWkizYWm0QUM/MN1hLibnxPvCWJKwjOV4yVQY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ERwUC47dvgOBzIsEESMIioLYbFOxOe8PtJTnmDkKuHM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2gseKlG5Le12fS/vj4eaED4lturF16kAgJ1TpW3HxEE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7Cvg0Y3j/5i2F1TeXxlMmU7xwif5dCmwkZAOrVC5K2Y=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Aggregate.json
new file mode 100644
index 00000000000..a3e605d1bbb
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Aggregate.json
@@ -0,0 +1,590 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DecimalPrecision. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mVZb+Ra0EYjQ4Zrh9X//E2T8MRj7NMqm5GUJXhRrBEI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MgwakFvPyBlwqFTbhWUF79URJQWFoJTGotlEVSPPUsQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DyBERpMSD5lEM5Nhpcn4WGgxgn/mkUVJp+PYSLX5jsE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I43iazc0xj1WVbYB/V+uTL/tughN1bBlxh1iypBnNsA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wjOBa/ATMuOywFmuPgC0GF/oeLqu0Z7eK5udzkTPbis=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gRQVwiR+m+0Vg8ZDXqrQQcVnTyobwCXNaA4BCJVXtMc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WUZ6huwx0ZbLb0R00uiC9FOJzsUocUN8qE5+YRenkvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7s79aKEuPgQcS/YPOOVcYNZvHIo7FFsWtFCrnDKXefA=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Correctness.json
new file mode 100644
index 00000000000..9fafc243d66
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Correctness.json
@@ -0,0 +1,1650 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$lt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$lte": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$lt": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be less than the range max"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ },
+ "$lt": {
+ "$numberDecimal": "2.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ },
+ "$lte": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$in": [
+ {
+ "$numberDecimal": "0.0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Insert out of range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "-1"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value must be greater than or equal to the minimum value"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Insert min and max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 200,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {},
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 200,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$lt": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$lte": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$lt": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be less than the range max"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0.0"
+ },
+ "$lt": {
+ "$numberDecimal": "2.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$gte": {
+ "$numberDecimal": "0.0"
+ },
+ "$lte": {
+ "$numberDecimal": "200.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDecimalPrecision": {
+ "$in": [
+ {
+ "$numberDecimal": "0.0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Delete.json
new file mode 100644
index 00000000000..3d7d359af6b
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Delete.json
@@ -0,0 +1,493 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DecimalPrecision. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimalPrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-FindOneAndUpdate.json
new file mode 100644
index 00000000000..b1442c3a3c5
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-FindOneAndUpdate.json
@@ -0,0 +1,612 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DecimalPrecision. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimalPrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": {
+ "$numberInt": "0"
+ },
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": {
+ "$numberInt": "1"
+ },
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "V6knyt7Zq2CG3++l75UtBx2m32iGAPjHiAe439Bf02w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0OKSXELxPP85SBVwDGf3LtMEQCJ8TTkFUl/+6jlkdb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uEw0lpQtBppR3vqV9j9+NQRSBF1BzZukb8c9IhyWvxc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zVhZ7Q59O087ji49oMJvBIgeir2oqvUpnh4p53GcTow=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dowrzKs+qJhRMZyKDbhjXbuX43FbmUKOaw9I8YlOZDw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ep5B6cska6THLIF7Mn3tn3RvV9EiwLSt0eZM/CLRUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "URNp/YmmDh5wIZUfAzzgPyJeMNiVx9PMsz52DZRujGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wlM4IAQhhKQEzoVqS8b1Ddd50GB95OFb9LnzOwyjCP4=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-InsertFind.json
new file mode 100644
index 00000000000..3b8202ff87f
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-InsertFind.json
@@ -0,0 +1,577 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DecimalPrecision. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mVZb+Ra0EYjQ4Zrh9X//E2T8MRj7NMqm5GUJXhRrBEI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MgwakFvPyBlwqFTbhWUF79URJQWFoJTGotlEVSPPUsQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DyBERpMSD5lEM5Nhpcn4WGgxgn/mkUVJp+PYSLX5jsE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I43iazc0xj1WVbYB/V+uTL/tughN1bBlxh1iypBnNsA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wjOBa/ATMuOywFmuPgC0GF/oeLqu0Z7eK5udzkTPbis=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gRQVwiR+m+0Vg8ZDXqrQQcVnTyobwCXNaA4BCJVXtMc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WUZ6huwx0ZbLb0R00uiC9FOJzsUocUN8qE5+YRenkvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7s79aKEuPgQcS/YPOOVcYNZvHIo7FFsWtFCrnDKXefA=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Update.json
new file mode 100644
index 00000000000..3dc6631c617
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DecimalPrecision-Update.json
@@ -0,0 +1,612 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DecimalPrecision. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$numberDecimal": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDecimalPrecision": {
+ "$numberDecimal": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedDecimalPrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDecimalPrecision",
+ "bsonType": "decimal",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDecimal": "0.0"
+ },
+ "max": {
+ "$numberDecimal": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDecimalPrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDecimalPrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "V6knyt7Zq2CG3++l75UtBx2m32iGAPjHiAe439Bf02w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0OKSXELxPP85SBVwDGf3LtMEQCJ8TTkFUl/+6jlkdb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uEw0lpQtBppR3vqV9j9+NQRSBF1BzZukb8c9IhyWvxc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zVhZ7Q59O087ji49oMJvBIgeir2oqvUpnh4p53GcTow=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dowrzKs+qJhRMZyKDbhjXbuX43FbmUKOaw9I8YlOZDw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ep5B6cska6THLIF7Mn3tn3RvV9EiwLSt0eZM/CLRUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "URNp/YmmDh5wIZUfAzzgPyJeMNiVx9PMsz52DZRujGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wlM4IAQhhKQEzoVqS8b1Ddd50GB95OFb9LnzOwyjCP4=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Aggregate.json
new file mode 100644
index 00000000000..3d54be3d188
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Aggregate.json
@@ -0,0 +1,1138 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Double. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$gt": {
+ "$binary": {
+ "base64": "Cq8kAAADcGF5bG9hZAB/JAAABGcAQyQAAAMwAH0AAAAFZAAgAAAAAHgYoMGjEE6fAlAhICv0+doHcVX8CmMVxyq7+jlyGrvmBXMAIAAAAAC/5MQZgTHuIr/O5Z3mXPvqrom5JTQ8IeSpQGhO9sB+8gVjACAAAAAAPMgD8Rqnd94atKnMyPjlTwthUQ710MKJVqgtwNXLFWwAAzEAfQAAAAVkACAAAAAA2kiWNvEc4zunJ1jzvuClFC9hjZMYruKCqAaxq+oY8EAFcwAgAAAAACofIS72Cm6s866UCk+evTH3CvKBj/uZd72sAL608rzTBWMAIAAAAAB7NkTFgsBuPIyxW5KtYZD4uxdgRynoAUwA2RDj3qZNdwADMgB9AAAABWQAIAAAAABkfoBGmU3hjYBvQbjNW19kfXneBQsQQPRfUL3UAwI2cAVzACAAAAAAUpK2BUOqX/DGdX5YJniEZMWkofxHqeAbXceEGJxhp8AFYwAgAAAAAENNdd+fMV7VQzshj6RdvsxqDHYkPDxggdUHw3JbmFBeAAMzAH0AAAAFZAAgAAAAAFNprhQ3ZwIcYbuzLolAT5n/vc14P9kUUQComDu6eFyKBXMAIAAAAAAcx9z9pk32YbPV/sfPZl9ALIEVsqoLXgqWLVK/tP+heAVjACAAAAAA3eqduo9CWE5BePqBq7KCh5++QqXnyjCwybB15Zoeiu4AAzQAfQAAAAVkACAAAAAAODI+pB2pCuB+YmNEUAgtMfNdt3DmSkrJ96gRzLphgb8FcwAgAAAAAAT7dewFDxUDECQ3zVq75/cUN4IP+zsqhkP5+czUwlJIBWMAIAAAAABYcCJA2jocGQiF/vZ9VDEktoK015OqfY64yZhmNPs9GQADNQB9AAAABWQAIAAAAACNAk+yTZ4Ewk1EnotQK8O3h1gg9I7pr9q2+4po1iJVgAVzACAAAAAAUj/LesmtEsgqYVzMJ67umVA11hJTdDXwbxDoQ71vWyUFYwAgAAAAAG32XaKjEO9YTSLMnDR5eiaUpgBQz0n4M3VpBqhWTaEnAAM2AH0AAAAFZAAgAAAAAD/FIrGYFDjyYmVb7oTMVwweWP7A6F9LnyIuNO4MjBnXBXMAIAAAAACIZgJCQRZu7NhuNMyOqCn1tf+DfU1qm10TPCfj5JYV3wVjACAAAAAAZCaO06/DjOBjNrTxB8jdxM7X4XvNu9QTa2Y00kZJwgEAAzcAfQAAAAVkACAAAAAAciRW40ORJLVwchOEpz87Svb+5toAFM6LxDWv928ECwQFcwAgAAAAAN0dipyESIkszfjRzdDi8kAGaa2Hf4wrPAtiWwboZLuxBWMAIAAAAADhvKHhF7zfNRnG8QfiIlKycV6L6iGxbGNKkHligA9rAgADOAB9AAAABWQAIAAAAACZqAyCzYQupJ95mrBJX54yIz9VY7I0WrxpNYElCI4dTQVzACAAAAAA/eyJb6d1xfE+jJlVXMTD3HS/NEYENPVKAuj56Dr2dSEFYwAgAAAAAMfcJKj77c6y/RBQ5hb5LSNdvbYvCAHR59KLnbmxj1gAAAM5AH0AAAAFZAAgAAAAAI5bm3YO0Xgf0VT+qjVTTfvckecM3Cwqj7DTKZXf8/NXBXMAIAAAAAD/m+h8fBhWaHm6Ykuz0WX1xL4Eme3ErLObyEVJf8NCywVjACAAAAAAiGdTXD22l1zDxHeF4NXUTiBnNTsdpzJRwM6riTPuOogAAzEwAH0AAAAFZAAgAAAAANqo4+p6qdtCzcB4BX1wQ6llU7eFBnuu4MtZwp4B6mDlBXMAIAAAAAAGiz+VaukMZ+6IH4jtn4KWWdKK4/W+O+gRioQDrfzpMgVjACAAAAAAl/wlBjSJW/hKkll8HSBCGw4Ce1pJ5rZuhVE09hKq4jQAAzExAH0AAAAFZAAgAAAAAPrFXmHP2Y4YAm7b/aqsdn/DPoDkv7B8egWkfe23XsM1BXMAIAAAAAAGhwpKAr7skeqHm3oseSbO7qKNhmYsuUrECBxJ5k+D2AVjACAAAAAAKSsxERy2OBhb5MiH9/H2BET2oeU6yVihiAoWi/16FroAAzEyAH0AAAAFZAAgAAAAABzjYxwAjXxXc0Uxv18rH8I3my0Aguow0kTwKyxbrm+cBXMAIAAAAADVbqJVr6IdokuhXkEtXF0C2gINLiAjMVN20lE20Vmp2QVjACAAAAAACJ+VAwl9X88mjC76yzkWeL4K6AamNYjbNkpS9B6fQE4AAzEzAH0AAAAFZAAgAAAAAFMm2feF2fFCm/UC6AfIyepX/xJDSmnnolQIBnHcPmb5BXMAIAAAAABLI11kFrQoaNVZFmq/38aRNImPOjdJh0Lo6irI8M/AaAVjACAAAAAAZFgYh4nV8YN+/AAqe/QhKDkNBPg8KraCG7y3bOzhPV4AAzE0AH0AAAAFZAAgAAAAAJvXB3KyNiNtQko4SSzo/9b2qmM2zU9CQTTDfLSBWMgRBXMAIAAAAAAvjuVP7KsLRDeqVqRziTKpBrjVyqKiIbO9Gw8Wl2wFTAVjACAAAAAARuBn3JdQ8so7Gy0XVH0CtlvtRoJWhSrJP6eRIqbyWh8AAzE1AH0AAAAFZAAgAAAAAPGdcxDiid8z8XYnfdDivNMYVPgBKdGOUw6UStU+48CdBXMAIAAAAAARj6g1Ap0eEfuCZ4X2TsEw+Djrhto3fA5nLwPaY0vCTgVjACAAAAAATxLY6SkcLPaoOBJpQsggEqoxgJgiY9seP3fBQM05PckAAzE2AH0AAAAFZAAgAAAAAP5rGPrYGt3aKob5f/ldP0qrW7bmWvqnKY4QwdDWz400BXMAIAAAAADTQkW2ymaaf/bhteOOGmSrIR97bAnJx+yN3yMj1bTeewVjACAAAAAA6O+wIMt3xMITuCxVrqOCNBPX5F122G+/Is+EYkzUvVYAAzE3AH0AAAAFZAAgAAAAAAlz6wJze5UkIxKpJOZFGCOf3v2KByWyI6NB6JM9wNcBBXMAIAAAAABUC7P/neUIHHoZtq0jFVBHY75tSFYr1Y5S16YN5XxC1QVjACAAAAAANv97jMd9JmZ7lMeCzK7jaZHZYsZJNl6N9g9WXzd2om0AAzE4AH0AAAAFZAAgAAAAAFJ8AtHcjia/9Y5pLEc3qVgH5xKiXw12G9Kn2A1EY8McBXMAIAAAAAAxe7Bdw7eUSBk/oAawa7uicTEDgXLymRNhBy1LAxhDvwVjACAAAAAAtOUZ2NeUWwESpq95O92dhqYBt8RtFnjT43E7k9mQF3oAAzE5AH0AAAAFZAAgAAAAAO8uwQUaKFb6vqR3Sv3Wn4QAonC2exOC9lGG1juqP5DtBXMAIAAAAABZf1KyJgQg8/Rf5c02DgDK2aQu0rNCOvaL60ohDHyY+gVjACAAAAAA5nAWj1Ek8p0MLYZEB3yoVFDfBYZ+/ZpIo71u+W9hprcAAzIwAH0AAAAFZAAgAAAAAE8YtqyRsGCeiR6hhiyisR/hccmK4nZqIMzO4lUBmEFzBXMAIAAAAAC1UYOSKqAeG1UJiKjWFVskRhuFKpj9Ezy+lICZvFlN5AVjACAAAAAA37oP30mTzVftI2FL9Uwyls/jqLqbmRDQk7p7nlx44uYAAzIxAH0AAAAFZAAgAAAAAPhCrMausDx1QUIEqp9rUdRKyM6a9AAx7jQ3ILIu8wNIBXMAIAAAAACmH8lotGCiF2q9VQxhsS+7LAZv79VUAsOUALaGxE/EpAVjACAAAAAAhVIkl8p19VZ0gpg32s++Jda3qsVSVB5tV4CKrtjhE3IAAzIyAH0AAAAFZAAgAAAAAOBi/GAYFcstMSJPgp3VkMiuuUUCrZytvqYaU8dwm8v2BXMAIAAAAACEZSZVyD3pKzGlbdwlYmWQhHHTV5SnNLknl2Gw8IaUTQVjACAAAAAAriBex2kK//RPhyVpCYJDBng4l5w8jD3m8BF7dVAP0p8AAzIzAH0AAAAFZAAgAAAAAIQuup+YGfH3mflzWopN8J1X8o8a0d9CSGIvrA5HOzraBXMAIAAAAADYvNLURXsC2ITMqK14LABQBI+hZZ5wNf24JMcKLW+84AVjACAAAAAAGeUzdG2kQrx5XypXJezZmPVzMYuqYZw7Bhbl4EPT0SMAAzI0AH0AAAAFZAAgAAAAAKsh0ADyOnVocFrOrf6MpTrNvAj8iaiE923DPryu124gBXMAIAAAAADg24a8NVE1GyScc6tmnTbmu5ulzO+896fE92lN08MeswVjACAAAAAAbO+DEBY3STVMQN7CbxmHDUBYrDR+80e797u/VmiK4vcAAzI1AH0AAAAFZAAgAAAAAKkVC2Y6HtRmv72tDnPUSjJBvse7SxLqnr09/Uuj9sVVBXMAIAAAAABYNFUkH7ylPMN+Bc3HWX1e0flGYNbtJNCY9SltJCW/UAVjACAAAAAAHlE3RLKcXpXto7Mr8nRgzEsmhjfGh4vcgPxashCSMg4AAzI2AH0AAAAFZAAgAAAAADDggcwcb/Yn1Kk39sOHsv7BO/MfP3m/AJzjGH506Wf9BXMAIAAAAAAYZIsdjICS0+BDyRUPnrSAZfPrwtuMaEDEn0/ijLNQmAVjACAAAAAA1c/sy3255NofBQrnBNSmVkSzMgsGPaaOUJShddVrnuQAAzI3AH0AAAAFZAAgAAAAAEWY7dEUOJBgjOoWVht1wLehsWAzB3rSOBtLgTuM2HC8BXMAIAAAAAAAoswiHRROurjwUW8u8D5EUT+67yvrgpB/j6PzBDAfVwVjACAAAAAALBvQumG8m7/bzJjGWN2cHSAncdN8jMtOSmEhEhGom24AAzI4AH0AAAAFZAAgAAAAAPZaapeAUUFPA7JTCMOWHJa9lnPFh0/gXfAPjA1ezm4ZBXMAIAAAAACmJvLY2nivw7/b3DOKH/X7bBXjJwoowqb1GtEFO3OYgAVjACAAAAAAGCDHuUJusGHKQ+r9nrFChmUUsRcqZKPGsRiLSk5gbFcAAzI5AH0AAAAFZAAgAAAAAK00u6jadxCZAiA+fTsPVDsnW5p5LCr4+kZZZOTDuZlfBXMAIAAAAAAote4zTEYMDgaaQbAdN8Dzv93ljPLdGjJzvnRn3KXgtQVjACAAAAAApZ6l+OrocOqgFek7WOqOP9JruTWZ+iW+5zdL3DZwzhkAAzMwAH0AAAAFZAAgAAAAAFbgabdyymiEVYYwtJSWa7lfl/oYuj/SukzJeDOR6wPVBXMAIAAAAADAFGFjS1vPbN6mQEhkDYTD6V2V23Ys9gUEUMGNvMPkaAVjACAAAAAAeICKly5Xtwmfd4JFD+5e1UWpu4V3KoRim7jeBICDs+UAAzMxAH0AAAAFZAAgAAAAABNMR6UBv2E627CqLtQ/eDYx7OEwQ7JrR4mSHFa1N8tLBXMAIAAAAAAxH4gucI4UmNVB7625C6hFSVCuIpJO3lusJlPuL8H5EQVjACAAAAAA0/uh1hrAlGGna/njCVaCqBwubxkifzF0zjCDQrIJOtUAAzMyAH0AAAAFZAAgAAAAAG8cd6WBneNunlqrQ2EmNf35W7OGObGq9WL4ePX+LUDmBXMAIAAAAAAjJ2+sX87NSis9hBsgb1QprVRnO7Bf+GObCGoUqyPE4wVjACAAAAAAAoJ4Ufdq45T9Aun5FupHlaBCIUsmUn6dXgV9KorpFikAAzMzAH0AAAAFZAAgAAAAAFWOUGkUpy8yf6gB3dio/aOfRKh7XuhvsUj48iESFJrGBXMAIAAAAAAY7sCDMcrUXvNuL6dO0m11WyijzXZvPIcOKob6IpC4PQVjACAAAAAAO/QFjczoznH95Iu0YEVMsU1GA1yxSGL8bcwSweNzAtkAAzM0AH0AAAAFZAAgAAAAAGUrIdKxOihwNmo6B+aG+Ag1qa0+iqdksHOjQj+Oy9bZBXMAIAAAAABwa5dbI2KmzBDNBTQBEkjZv4sPaeRkRNejcjdVymRFKQVjACAAAAAAUtdJucZoQvvPJiy65RonQrxBCcvtfHslpbgLbtWirCYAAzM1AH0AAAAFZAAgAAAAAOx89xV/hRk64/CkM9N2EMK6aldII0c8smdcsZ46NbP8BXMAIAAAAADBF6tfQ+7q9kTuLyuyrSnDgmrdmrXkdhl980i1KHuGHgVjACAAAAAAVc5njbLX1afpsuG662U/OBo4LanEk06lKbQtd95fswgAAzM2AH0AAAAFZAAgAAAAAMkN0L1oQWXhjwn9rAdudcYeN8/5VdCKU8cmDt7BokjsBXMAIAAAAAAT62pGXoRwExe9uvgYOI0hg5tOxilrWfoEmT0SMglWJwVjACAAAAAAhNc5ovIaxgtS856ZBfG+cAcHAz+3ewzB9C6zZoaggj4AAzM3AH0AAAAFZAAgAAAAANxfa4xCoaaB7k1C1RoH1LBhsCbN2yEq15BT9b+iqEC4BXMAIAAAAACAX9LV8Pemfw7NF0iB1/85NzM1Ef+1mUfyehacUVgobQVjACAAAAAAc0bIRNzuyc1Y0hkEmm7xV6Xp/LBlAgMq/ISCHr0Tq44AAzM4AH0AAAAFZAAgAAAAAOYIYoWkX7dGuyKfi3XssUlc7u/gWzqrR9KMkikKVdmSBXMAIAAAAABVF2OYjRTGi9Tw8XCAwZWLpX35Yl271TlNWp6N/nROhAVjACAAAAAAyGLbmHhe8eTQC8L2eDRcezUWULLZ9E8DPic7Mfp8/+4AAzM5AH0AAAAFZAAgAAAAAIy0+bXZi10QC+q7oSOLXK5Fee7VEk/qHSXukfeVIfgzBXMAIAAAAAAQ3IIV/JQCHW95AEbH5zGIHtJqyuPjWPMIZ+VmQHlxEwVjACAAAAAAD3azcNDdohU6tHO6ypT7F0rtydAYIMmLIsX6y7cXVkMAAzQwAH0AAAAFZAAgAAAAAL5SOJQ3LOhgdXJ5v086NNeAl1qonQnchObdpZJ1kHeEBXMAIAAAAAA+tEqTXODtik+ydJZSnUqXF9f18bPeze9eWtR7ExZJgQVjACAAAAAAUd8v2RN1WagYan1LbV+G81vcJKQ6HsX2GSBtnzMH7XEAAzQxAH0AAAAFZAAgAAAAAKl8zcHJRDjSjJeV/WvMxulW1zrTFtaeBy/aKKhadc6UBXMAIAAAAADBdWQl5SBIvtZZLIHszePwkO14W1mQ0izUk2Ov21cPNAVjACAAAAAAHvQLJ2X4ncjVv1BsOd/jbVouRPwf4222WlGSzPyAfnsAAzQyAH0AAAAFZAAgAAAAAFvotcNaoKnVt5CBCOPwjexFO0WGWuaIGL6H/6KSau+6BXMAIAAAAAD2y2mBN5xPu5PJoY2zcr0GnQDtHRBogA5+xzIxccE9fwVjACAAAAAA1OntPAxq1NJ4sfca+ysHcg68mj7QHwdEZQVxHMlV6x0AAzQzAH0AAAAFZAAgAAAAAPezU0/vNT4Q4YKbTbaeHqcwNLT+IjW/Y9QFpIooihjPBXMAIAAAAACj2x4O4rHter8ZnTws5LAP9jJ/6kk9C/V3vL50LoFZHAVjACAAAAAAlZd3bPMUXRhTwLWflrQuKIwtauTswenUiaDi2ibHYYYAAzQ0AH0AAAAFZAAgAAAAAMqpayM2XotEFmm0gwQd9rIzApy0X+7HfOhNk6VU7F5lBXMAIAAAAACJR9+q5T9qFHXFNgGbZnPubG8rkO6cwWhzITQTmd6VgwVjACAAAAAAEEOCUo+ihRGl1kuHlabWBWUFyJPAXSXzpQB4od57cMEAAzQ1AH0AAAAFZAAgAAAAANCeyW+3oebaQk+aqxNVhAcT/BZ5nhsTVdKS3tMrLSvWBXMAIAAAAADxRFMDhkyuEc++WnndMfoUMLNL7T7rWoeblcrpSI6soQVjACAAAAAA1KYQISxmBcGmgDMAjBpTcfQr/oci60Kf4QtEYEXPKSQAAzQ2AH0AAAAFZAAgAAAAAIbo5YBTxXM7HQhl7UP9NNgpPGFkBx871r1B65G47+K8BXMAIAAAAAC21dJSxnEhnxO5gzN5/34BL4von45e1meW92qowzb8fQVjACAAAAAAisxsskU/9ykphpSjB6bMMY+6Tbt6wpjhE2dg1IULAgYAAzQ3AH0AAAAFZAAgAAAAABm/6pF96j26Jm7z5KkY1y33zcAEXLx2n0DwC03bs/ixBXMAIAAAAAD01OMvTZI/mqMgxIhA5nLs068mW+GKl3OW3ilf2D8+LgVjACAAAAAAnPa8PTfcaSSAdzNAC54IMTicbShbtt/cSnFHz7u7g8wAAzQ4AH0AAAAFZAAgAAAAAJ/D3+17gaQdkBqkL2wMwccdmCaVOtxzIkM8VyI4xI5zBXMAIAAAAAAggLVmkc5u+YzBR+oNE+XgLVp64fC6MzUb/Ilu/Jsw0AVjACAAAAAAp5qCK8p0eTvAAUQ8fIOGyb2YM1YflQ8H6ggiWZ9vNI4AAzQ5AH0AAAAFZAAgAAAAAJMRyUW50oaTzspS6A3TUoXyC3gNYQoShUGPakMmeVZrBXMAIAAAAACona2Pqwt4U2PmFrtmu37jB9kQ/12okyAVtYa8TQkDiQVjACAAAAAAx/LOuDwvpaPFJeKLowZW/4q7SUsLtdldB27zc4//alEAAzUwAH0AAAAFZAAgAAAAAByuYl8dBvfaZ0LO/81JW4hYypeNmvLMaxsIdvqMPrWoBXMAIAAAAABNddwobOUJzm9HOUD8BMZJqkNCUCqstHZkC76FIdNg9AVjACAAAAAA4SEPY+qEZ2dCu/9485IEVybiM3Z7szXYM+izxklNm14AAzUxAH0AAAAFZAAgAAAAAHEzLtfmF/sBcYPPdj8867VmmQyU1xK9I/3Y0478azvABXMAIAAAAAAcmyFajZPnBTbO+oLInNwlApBocUekKkxz2hYFeSlQ+gVjACAAAAAA15ibZoBP1/pP27BDIfizDYNRDIpOmj8Ie34FvrtqjhMAAzUyAH0AAAAFZAAgAAAAAJam7JYsZe2cN20ZYm2W3v1pisNt5PLiniMzymBLWyMtBXMAIAAAAABxCsKVMZMTn3n+R2L7pVz5nW804r8HcK0mCBw3jUXKXAVjACAAAAAAElCgoMRrtlONqnyosjIpiz4mQTLq3+b/JUCVEq4QFiAAAzUzAH0AAAAFZAAgAAAAAMXrXx0saZ+5gORmwM2FLuZG6iuO2YS+1IGPoAtDKoKBBXMAIAAAAADIQsxCr8CfFKaBcx8kIeSywnGh7JHjKRJ9vJd9x79y7wVjACAAAAAAPzOTJ088k9QdGUpZ1ubUdkw3pTGkNF8bui4a9wqeo08AAzU0AH0AAAAFZAAgAAAAACbzcUD3INSnCRspOKF7ubne74OK9L0FTZvi9Ay0JVDYBXMAIAAAAADPebVQH8Btk9rhBIoUOdSAdpPvz7qIY4UC2i6IGisSAQVjACAAAAAAe4zSAgMQPjtz2t1DgxW1XOlV+fnNMXt6iQ7iV7DgQz4AAzU1AH0AAAAFZAAgAAAAACUc2CtD1MK/UTxtv+8iA9FoHEyTwdl43HKeSwDw2Lp5BXMAIAAAAACCIduIdw65bQMzRYRfjBJj62bc69T4QqH4QoWanwlvowVjACAAAAAA+i6aTnkoixxSOxDgQM/aWTylOy1m0ViCDU5asOM5ieYAAzU2AH0AAAAFZAAgAAAAAHSaHWs/dnmI9sc7nB50VB2Bzs0kHapMHCQdyVEYY30TBXMAIAAAAACkV22lhEjWv/9/DubfHBAcwJggKI5mIbSK5L2nyqloqQVjACAAAAAA1I5pLbnlFf/EfJlhE0RFIioDjzKrWNh4TO8H/ksrbMcAAzU3AH0AAAAFZAAgAAAAAAL8jhNBG0KXXZhmZ0bPXtfgapJCB/AI+BEHB0eZ3C75BXMAIAAAAADHx/fPa639EBmGV5quLi8IQT600ifiKSOhTDOK19DnzwVjACAAAAAANfWpWWy9iu7pgMEy2aVCggGEtJtXKQG1+3zCf8D6iEkAAzU4AH0AAAAFZAAgAAAAAAxgeclNl09H7HvzD1oLwb2YpFca5eaX90uStYXHilqKBXMAIAAAAACMU5pSxzIzWlQxHyW170Xs9EhD1hURASQk+qkx7K5Y6AVjACAAAAAA/kYlJPSFn2g1l7cy6djV/7wgnlPWphZ0IKSY8uenUF0AAzU5AH0AAAAFZAAgAAAAABmO7QD9vxWMmFjIHz13lyOeV6vHT6mYCsWxF7hb/yOjBXMAIAAAAACT9lmgkiqzuWG24afuzYiCeK9gmJqacmxAruIukd0xEAVjACAAAAAAyiZxtuOZQNSit4wFMJS3jnqLbDzyJ0OtDTKs6r0EO0cAAzYwAH0AAAAFZAAgAAAAAB89SjLtDJkqEghRGyj6aQ/2qvWLNuMROoXmzbYbCMKMBXMAIAAAAAC8sywgND+CjhVTF6HnRQeay8y9/HnVzDI42dEPah28LQVjACAAAAAAzBj8q9Ig4uhIc6rhNDVX1lII9lzfhJ0+ig8viBhdrtQAAzYxAH0AAAAFZAAgAAAAABN2alGq9Aats1mwERNGwL/fIwZSvVCe9/8XMHTFlpUpBXMAIAAAAACuDPjJgvvbBYhbLpjMiWUCsVppiYrhvR+yMysNPN8cZAVjACAAAAAAqcsLIvb3Pe/QKYB9wQ86Ye2OFSAJEIY4ve7LMM3SwGMAAzYyAH0AAAAFZAAgAAAAAL8YB6VAqGBiWD4CBv16IBscg5J7VQCTZu87n6pj+86KBXMAIAAAAAAmxm8e68geeyAdUjSMWBHzUjneVB0pG9TBXIoE6467hAVjACAAAAAA9Kd65vKIUckNPvxl/HHNPJVnFHXyErp4qibmD7BloukAAzYzAH0AAAAFZAAgAAAAAL4yLkCTV5Dmxa5toBu4JT8ge/cITAaURIOuFuOtFUkeBXMAIAAAAAAXoFNQOMGkAj7qEJP0wQafmFSXgWGeorDVbwyOxWLIsgVjACAAAAAAaFrBx0xXIryTe7V/kX+jfPHd0057x7k7MxzDAzi0RpcAAzY0AH0AAAAFZAAgAAAAAEU8DoUp46YtYjNFS9kNXwdYxQ9IW27vCTb+VcqqfnKNBXMAIAAAAADe7vBOgYReE8X78k5ARuUnv4GmzPZzg6SbConf4L2G3wVjACAAAAAAOl/tartywd/fJj5DNRsVH/ml9tJ8KkkCbKObsFe8lHcAAzY1AH0AAAAFZAAgAAAAAPa4yKTtkUtySuWo1ZQsp2QXtPb5SYqzA5vYDnS1P6c0BXMAIAAAAADKnF58R1sXlHlsHIvCBR3YWW/qk54z9CTDhZydkD1cOQVjACAAAAAAfn/jP8K3QUILngCNkydHARyBvBHIFdaJjzV0EXsFruMAAzY2AH0AAAAFZAAgAAAAAN5WJnMBmfgpuQPyonmY5X6OdRvuHw4nhsnGRnFAQ95VBXMAIAAAAACwftzu7KVV1rmGKwXtJjs3cJ1gE3apr8+N0SAg1F2cHwVjACAAAAAAf0XyQQLd/HIYaf9EeAV0o2h12K1AV5piLCpZihznBXoAAzY3AH0AAAAFZAAgAAAAACHvDsaPhoSb6DeGnKQ1QOpGYAgK82qpnqwcmzSeWaJHBXMAIAAAAABRq3C5+dOfnkAHM5Mg5hPB3O4jhwQlBgQWLA7Ph5bhgwVjACAAAAAAm2Ukk5kkQp+PDpBCCefQOqFKKZie4hINim3yvtypsEAAAzY4AH0AAAAFZAAgAAAAAOBePJvccPMJmy515KB1AkXF5Pi8NOG4V8psWy0SPRP+BXMAIAAAAAB3dOJG9xIDtEKCRzeNnPS3bFZepMj8UKBobKpSoCPqpgVjACAAAAAAnu33SngYPOtRgdJ3aBBuxWn80ti3OO6nZJcI6eh0VfQAAzY5AH0AAAAFZAAgAAAAABUvRrDQKEXLMdhnzXRdhiL6AGNs2TojPky+YVLXs+JnBXMAIAAAAAD1kYicbEEcPzD4QtuSYQQWDPq8fuUWGddpWayKn3dT9QVjACAAAAAAUc5dxcbNYY3qMO8+Xm2xis+pH9NjPLrHqHenwDEImAEAAzcwAH0AAAAFZAAgAAAAAOvSnpujeKNen4pqc2HR63C5s5oJ1Vf4CsbKoYQvkwl5BXMAIAAAAACw2+vAMdibzd2YVVNfk81yXkFZP0WLJ82JBxJmXnYE+QVjACAAAAAAnmej008JFQAgdImjk26PYvqdATjRYRufLi+vEVVwtucAAzcxAH0AAAAFZAAgAAAAAAo0xfGG7tJ3GWhgPVhW5Zn239nTD3PadShCNRc9TwdNBXMAIAAAAADZh243oOhenu0s/P/5KZLBDh9ADqKHtSWcXpO9D2sIjgVjACAAAAAAhpNHI4+aRdWHCvZfEjlgpRBz36g05wN9p/hj3NEwc7EAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2FIZh/9N+NeJEQwxYIX5ikQT85xJzulBNReXk8PnG/s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I93Md7QNPGmEEGYU1+VVCqBPBEvXdqHPtTJtMOn06Yk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "GecBFQ1PemlECWZWCl7f74vmsL6eB6mzQ9n6tK6FYfs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QpjhZl+O1ORifgtCZuWAdcP6OKL7IZ2cA46v8FJcV28=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FWXI/yZ1M+2fIboeMCDMlp+I2NwPQDtoM/wWselOPYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uk26nvN/LdRLaBphiBgIZzT0sSpoO1z0RdDWRm/xrSA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hiiYSH1KZovAULc7rlmEU74wCjzDR+mm6ZnsgvFQjMw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hRzvMvWPX0sJme+wck67lwbKDFaWOa+Eyef+JSdc1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PSx5D+zqC9c295dguX4+EobT4IEzfffdfjzC8DWpB5Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QzfXQCVTjPQv2h21v95HYPq8uCsVJ2tPnjv79gAaM9M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XcGDO/dlTcEMLqwcm55UmOqK+KpBmbzZO1LIzX7GPaQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Lf+o4E7YB5ynzUPC6KTyW0lj6Cg9oLIu1Sdd1ODHctA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wAuVn02LAVo5Y+TUocvkoenFYWzpu38k0NmGZOsAjS4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yJGDtveLbbo/0HtCtiTSsvVI/0agg/U1bFaQ0yhK12o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KsEy0zgYcmkM+O/fWF9z3aJGIk22XCk+Aw96HB6JU68=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "p+AnMI5ZxdJMSIEJmXXya+FeH5yubmOdViwUO89j0Rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/jLix56jzeywBtNuGw55lCXyebQoSIhbful0hOKxKDY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fvDvSPomtJsl1S3+8/tzFCE8scHIdJY5hB9CdTEsoFo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oV5hOJzPXxfTuRdKIlF4uYEoMDuqH+G7/3qgndDr0PM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3ALwcvLj3VOfgD6OqXAO13h1ZkOv46R6+Oy6SUKh53I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gxaB9FJj0IM+InhvAjwWaex3UIZ9SAnDiUd5WHSY/l0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "66NPvDygJzKJqddfNuDuNOpvGajjFRtvhkwfUkiYmXw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1dWcQIocRAcO9XnXYqbhl83jc0RgjQpsrWd8dC27trg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "npos0Uf1DT3ztSCjPVY9EImlRnTHB1KLrvmVSqBQ/8E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TEI9qBx/tK1l1H0v1scMG8Srmtwo5VxWHADPBSlWrXk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3wUN2ypQKoj+5ASkeIK9ycxhahVxyTmGopigoUAlyYs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o/oksSnUS+nIq6ozWTbB5bJh+NoaPj8deAA23uxiWCk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KExYPruhA31e8xuSwvfUfDcyY/H2Va6taUd0k4yFgLc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/x+dNfxdd/lkx8Z8VZVfoYl7LPoaZ/iKEzZXBrAtIJc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DE4cmjFLPqZlmRomO0qQiruUBtzoCe8ZdNRcfNH92pU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M6EKNcLPw/iojAChgYUSieaBYWcbsjKtB94SaHOr8vk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+qP49lDPeyhaduTvXJgtJEqHNEYANVu9Bg3Bxz7Td9w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ruMrC2VIS+VKbJwCFb3bfkaLTju9nE+yPONV9s0M0Vo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EbjDlSB5JKnDKff4d8hOmaOwJ7B9Q6NQFisLj+DPC+0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C/yYOTB94edyqAbiQNu8/H7FoG3yRRjHDkMykz4+Mv0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CBxqrejG+qQQq2YTd6iP/06kiu2CxxzBFaZK3Ofb1CM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2ZOQ/fpho+AbDENWBZaln7wRoepIRdhyT648dr8O5cU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EghIgEPz01+myPgj8oid+PgncvobvC7vjvG3THEEQ0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "92CysZYNF8riwAMhdrIPKxfODw9p07cKQy/Snn8XmVY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VO0LeTBQmsEf7sCHzTnZwUPNTqRZ49R8V5E9XnZ/5N4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "exs8BQMJq7U6ZXYgIizT7XN+X/hOmmn4YEuzev9zgSI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qHpS4k1I+gPniNp4CA8TY8lLN36vBYmgbKMFpbYMEqg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+7lWKCKAWFw6gPZdHE6E8KIfI14/fSvtWUmllb5WLi0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YiH/US0q6679hWblFDDKNqUjCgggoU8sUCssTIF1QbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YgwkKElEubNfvXL9hJxzqQUQtHiXN/OCGxNL1MUZZlM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hZFST4INZTTuhvJlGJeMwlUAK270UCOTCDeBAnN4a7g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "24I1Zw35AuGnK3CqJhbCwYb0IPuu5sCRrM5iyeITOLc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vgD12JB4Q1S/kGPSQ1KOgp386KnG1GbM/5+60oRGcGw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+wNE+OL+CB9d4AUJdVxd56jUJCAXmmk9fapuB2TAc4g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uhQh1B2Pe4RkNw/kPEcgaLenuikKoRf1iyfZhpXdodc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eu8gjAUIp8ybO204AgeOq5v1neI1yljqy5v3I6lo1lM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7QG6oVbASBAjrnCPxzzUNnuFSFNlKhbuBafkF8pr7Is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PUS1xb2oHSDTdYltutoSSxBiJ1NjxH3l2kA4P1CZLEs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XPMh/JDC/O93gJJCwwgJDb8ssWZvRvezNmKmyn3nIfk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jWz+KGwMk/GOvFAK2rOxF3OjxeZAWfmUQ1HGJ7icw4A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o7XbW68pc6flYigf3LW4WAGUWxpeqxaQLkHUhUR9RZ8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nqR+g60+5U0okbqJadSqGgnC+j1JcP8rwMcfzOs2ACI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hz43qVK95tSfbYFtaE/8fE97XMk1RiO8XpWjwZHB80o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "noZUWlZ8M6KXU5rkifyo8/duw5IL7/fXbJvT7bNmW9k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WONVHCuPSanXDRQQ/3tmyJ0Vq+Lu/4hRaMUf0g0kSuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UEaj6vQRoIghE8Movd8AGXhtwIOXlP4cBsECIUvE5Y8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "D3n2YcO8+PB4C8brDo7kxKjF9Y844rVkdRMLTgsQkrw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C+YA0G9KjxZVaWwOMuh/dcnHnHAlYnbFrRl0IEpmsY0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rUnmbmQanxrbFPYYrwyQ53x66OSt27yAvF+s48ezKDc=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Correctness.json
new file mode 100644
index 00000000000..b09e966324e
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Correctness.json
@@ -0,0 +1,1160 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$lt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$lte": {
+ "$numberDouble": "1.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ },
+ "$lt": {
+ "$numberDouble": "2.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$in": [
+ {
+ "$numberDouble": "0.0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$lt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$lte": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ },
+ "$lt": {
+ "$numberDouble": "2.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDouble": {
+ "$in": [
+ {
+ "$numberDouble": "0.0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Delete.json
new file mode 100644
index 00000000000..fa09cb87df6
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Delete.json
@@ -0,0 +1,749 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Double. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedDouble": {
+ "$gt": {
+ "$binary": {
+ "base64": "Cq8kAAADcGF5bG9hZAB/JAAABGcAQyQAAAMwAH0AAAAFZAAgAAAAAHgYoMGjEE6fAlAhICv0+doHcVX8CmMVxyq7+jlyGrvmBXMAIAAAAAC/5MQZgTHuIr/O5Z3mXPvqrom5JTQ8IeSpQGhO9sB+8gVjACAAAAAAPMgD8Rqnd94atKnMyPjlTwthUQ710MKJVqgtwNXLFWwAAzEAfQAAAAVkACAAAAAA2kiWNvEc4zunJ1jzvuClFC9hjZMYruKCqAaxq+oY8EAFcwAgAAAAACofIS72Cm6s866UCk+evTH3CvKBj/uZd72sAL608rzTBWMAIAAAAAB7NkTFgsBuPIyxW5KtYZD4uxdgRynoAUwA2RDj3qZNdwADMgB9AAAABWQAIAAAAABkfoBGmU3hjYBvQbjNW19kfXneBQsQQPRfUL3UAwI2cAVzACAAAAAAUpK2BUOqX/DGdX5YJniEZMWkofxHqeAbXceEGJxhp8AFYwAgAAAAAENNdd+fMV7VQzshj6RdvsxqDHYkPDxggdUHw3JbmFBeAAMzAH0AAAAFZAAgAAAAAFNprhQ3ZwIcYbuzLolAT5n/vc14P9kUUQComDu6eFyKBXMAIAAAAAAcx9z9pk32YbPV/sfPZl9ALIEVsqoLXgqWLVK/tP+heAVjACAAAAAA3eqduo9CWE5BePqBq7KCh5++QqXnyjCwybB15Zoeiu4AAzQAfQAAAAVkACAAAAAAODI+pB2pCuB+YmNEUAgtMfNdt3DmSkrJ96gRzLphgb8FcwAgAAAAAAT7dewFDxUDECQ3zVq75/cUN4IP+zsqhkP5+czUwlJIBWMAIAAAAABYcCJA2jocGQiF/vZ9VDEktoK015OqfY64yZhmNPs9GQADNQB9AAAABWQAIAAAAACNAk+yTZ4Ewk1EnotQK8O3h1gg9I7pr9q2+4po1iJVgAVzACAAAAAAUj/LesmtEsgqYVzMJ67umVA11hJTdDXwbxDoQ71vWyUFYwAgAAAAAG32XaKjEO9YTSLMnDR5eiaUpgBQz0n4M3VpBqhWTaEnAAM2AH0AAAAFZAAgAAAAAD/FIrGYFDjyYmVb7oTMVwweWP7A6F9LnyIuNO4MjBnXBXMAIAAAAACIZgJCQRZu7NhuNMyOqCn1tf+DfU1qm10TPCfj5JYV3wVjACAAAAAAZCaO06/DjOBjNrTxB8jdxM7X4XvNu9QTa2Y00kZJwgEAAzcAfQAAAAVkACAAAAAAciRW40ORJLVwchOEpz87Svb+5toAFM6LxDWv928ECwQFcwAgAAAAAN0dipyESIkszfjRzdDi8kAGaa2Hf4wrPAtiWwboZLuxBWMAIAAAAADhvKHhF7zfNRnG8QfiIlKycV6L6iGxbGNKkHligA9rAgADOAB9AAAABWQAIAAAAACZqAyCzYQupJ95mrBJX54yIz9VY7I0WrxpNYElCI4dTQVzACAAAAAA/eyJb6d1xfE+jJlVXMTD3HS/NEYENPVKAuj56Dr2dSEFYwAgAAAAAMfcJKj77c6y/RBQ5hb5LSNdvbYvCAHR59KLnbmxj1gAAAM5AH0AAAAFZAAgAAAAAI5bm3YO0Xgf0VT+qjVTTfvckecM3Cwqj7DTKZXf8/NXBXMAIAAAAAD/m+h8fBhWaHm6Ykuz0WX1xL4Eme3ErLObyEVJf8NCywVjACAAAAAAiGdTXD22l1zDxHeF4NXUTiBnNTsdpzJRwM6riTPuOogAAzEwAH0AAAAFZAAgAAAAANqo4+p6qdtCzcB4BX1wQ6llU7eFBnuu4MtZwp4B6mDlBXMAIAAAAAAGiz+VaukMZ+6IH4jtn4KWWdKK4/W+O+gRioQDrfzpMgVjACAAAAAAl/wlBjSJW/hKkll8HSBCGw4Ce1pJ5rZuhVE09hKq4jQAAzExAH0AAAAFZAAgAAAAAPrFXmHP2Y4YAm7b/aqsdn/DPoDkv7B8egWkfe23XsM1BXMAIAAAAAAGhwpKAr7skeqHm3oseSbO7qKNhmYsuUrECBxJ5k+D2AVjACAAAAAAKSsxERy2OBhb5MiH9/H2BET2oeU6yVihiAoWi/16FroAAzEyAH0AAAAFZAAgAAAAABzjYxwAjXxXc0Uxv18rH8I3my0Aguow0kTwKyxbrm+cBXMAIAAAAADVbqJVr6IdokuhXkEtXF0C2gINLiAjMVN20lE20Vmp2QVjACAAAAAACJ+VAwl9X88mjC76yzkWeL4K6AamNYjbNkpS9B6fQE4AAzEzAH0AAAAFZAAgAAAAAFMm2feF2fFCm/UC6AfIyepX/xJDSmnnolQIBnHcPmb5BXMAIAAAAABLI11kFrQoaNVZFmq/38aRNImPOjdJh0Lo6irI8M/AaAVjACAAAAAAZFgYh4nV8YN+/AAqe/QhKDkNBPg8KraCG7y3bOzhPV4AAzE0AH0AAAAFZAAgAAAAAJvXB3KyNiNtQko4SSzo/9b2qmM2zU9CQTTDfLSBWMgRBXMAIAAAAAAvjuVP7KsLRDeqVqRziTKpBrjVyqKiIbO9Gw8Wl2wFTAVjACAAAAAARuBn3JdQ8so7Gy0XVH0CtlvtRoJWhSrJP6eRIqbyWh8AAzE1AH0AAAAFZAAgAAAAAPGdcxDiid8z8XYnfdDivNMYVPgBKdGOUw6UStU+48CdBXMAIAAAAAARj6g1Ap0eEfuCZ4X2TsEw+Djrhto3fA5nLwPaY0vCTgVjACAAAAAATxLY6SkcLPaoOBJpQsggEqoxgJgiY9seP3fBQM05PckAAzE2AH0AAAAFZAAgAAAAAP5rGPrYGt3aKob5f/ldP0qrW7bmWvqnKY4QwdDWz400BXMAIAAAAADTQkW2ymaaf/bhteOOGmSrIR97bAnJx+yN3yMj1bTeewVjACAAAAAA6O+wIMt3xMITuCxVrqOCNBPX5F122G+/Is+EYkzUvVYAAzE3AH0AAAAFZAAgAAAAAAlz6wJze5UkIxKpJOZFGCOf3v2KByWyI6NB6JM9wNcBBXMAIAAAAABUC7P/neUIHHoZtq0jFVBHY75tSFYr1Y5S16YN5XxC1QVjACAAAAAANv97jMd9JmZ7lMeCzK7jaZHZYsZJNl6N9g9WXzd2om0AAzE4AH0AAAAFZAAgAAAAAFJ8AtHcjia/9Y5pLEc3qVgH5xKiXw12G9Kn2A1EY8McBXMAIAAAAAAxe7Bdw7eUSBk/oAawa7uicTEDgXLymRNhBy1LAxhDvwVjACAAAAAAtOUZ2NeUWwESpq95O92dhqYBt8RtFnjT43E7k9mQF3oAAzE5AH0AAAAFZAAgAAAAAO8uwQUaKFb6vqR3Sv3Wn4QAonC2exOC9lGG1juqP5DtBXMAIAAAAABZf1KyJgQg8/Rf5c02DgDK2aQu0rNCOvaL60ohDHyY+gVjACAAAAAA5nAWj1Ek8p0MLYZEB3yoVFDfBYZ+/ZpIo71u+W9hprcAAzIwAH0AAAAFZAAgAAAAAE8YtqyRsGCeiR6hhiyisR/hccmK4nZqIMzO4lUBmEFzBXMAIAAAAAC1UYOSKqAeG1UJiKjWFVskRhuFKpj9Ezy+lICZvFlN5AVjACAAAAAA37oP30mTzVftI2FL9Uwyls/jqLqbmRDQk7p7nlx44uYAAzIxAH0AAAAFZAAgAAAAAPhCrMausDx1QUIEqp9rUdRKyM6a9AAx7jQ3ILIu8wNIBXMAIAAAAACmH8lotGCiF2q9VQxhsS+7LAZv79VUAsOUALaGxE/EpAVjACAAAAAAhVIkl8p19VZ0gpg32s++Jda3qsVSVB5tV4CKrtjhE3IAAzIyAH0AAAAFZAAgAAAAAOBi/GAYFcstMSJPgp3VkMiuuUUCrZytvqYaU8dwm8v2BXMAIAAAAACEZSZVyD3pKzGlbdwlYmWQhHHTV5SnNLknl2Gw8IaUTQVjACAAAAAAriBex2kK//RPhyVpCYJDBng4l5w8jD3m8BF7dVAP0p8AAzIzAH0AAAAFZAAgAAAAAIQuup+YGfH3mflzWopN8J1X8o8a0d9CSGIvrA5HOzraBXMAIAAAAADYvNLURXsC2ITMqK14LABQBI+hZZ5wNf24JMcKLW+84AVjACAAAAAAGeUzdG2kQrx5XypXJezZmPVzMYuqYZw7Bhbl4EPT0SMAAzI0AH0AAAAFZAAgAAAAAKsh0ADyOnVocFrOrf6MpTrNvAj8iaiE923DPryu124gBXMAIAAAAADg24a8NVE1GyScc6tmnTbmu5ulzO+896fE92lN08MeswVjACAAAAAAbO+DEBY3STVMQN7CbxmHDUBYrDR+80e797u/VmiK4vcAAzI1AH0AAAAFZAAgAAAAAKkVC2Y6HtRmv72tDnPUSjJBvse7SxLqnr09/Uuj9sVVBXMAIAAAAABYNFUkH7ylPMN+Bc3HWX1e0flGYNbtJNCY9SltJCW/UAVjACAAAAAAHlE3RLKcXpXto7Mr8nRgzEsmhjfGh4vcgPxashCSMg4AAzI2AH0AAAAFZAAgAAAAADDggcwcb/Yn1Kk39sOHsv7BO/MfP3m/AJzjGH506Wf9BXMAIAAAAAAYZIsdjICS0+BDyRUPnrSAZfPrwtuMaEDEn0/ijLNQmAVjACAAAAAA1c/sy3255NofBQrnBNSmVkSzMgsGPaaOUJShddVrnuQAAzI3AH0AAAAFZAAgAAAAAEWY7dEUOJBgjOoWVht1wLehsWAzB3rSOBtLgTuM2HC8BXMAIAAAAAAAoswiHRROurjwUW8u8D5EUT+67yvrgpB/j6PzBDAfVwVjACAAAAAALBvQumG8m7/bzJjGWN2cHSAncdN8jMtOSmEhEhGom24AAzI4AH0AAAAFZAAgAAAAAPZaapeAUUFPA7JTCMOWHJa9lnPFh0/gXfAPjA1ezm4ZBXMAIAAAAACmJvLY2nivw7/b3DOKH/X7bBXjJwoowqb1GtEFO3OYgAVjACAAAAAAGCDHuUJusGHKQ+r9nrFChmUUsRcqZKPGsRiLSk5gbFcAAzI5AH0AAAAFZAAgAAAAAK00u6jadxCZAiA+fTsPVDsnW5p5LCr4+kZZZOTDuZlfBXMAIAAAAAAote4zTEYMDgaaQbAdN8Dzv93ljPLdGjJzvnRn3KXgtQVjACAAAAAApZ6l+OrocOqgFek7WOqOP9JruTWZ+iW+5zdL3DZwzhkAAzMwAH0AAAAFZAAgAAAAAFbgabdyymiEVYYwtJSWa7lfl/oYuj/SukzJeDOR6wPVBXMAIAAAAADAFGFjS1vPbN6mQEhkDYTD6V2V23Ys9gUEUMGNvMPkaAVjACAAAAAAeICKly5Xtwmfd4JFD+5e1UWpu4V3KoRim7jeBICDs+UAAzMxAH0AAAAFZAAgAAAAABNMR6UBv2E627CqLtQ/eDYx7OEwQ7JrR4mSHFa1N8tLBXMAIAAAAAAxH4gucI4UmNVB7625C6hFSVCuIpJO3lusJlPuL8H5EQVjACAAAAAA0/uh1hrAlGGna/njCVaCqBwubxkifzF0zjCDQrIJOtUAAzMyAH0AAAAFZAAgAAAAAG8cd6WBneNunlqrQ2EmNf35W7OGObGq9WL4ePX+LUDmBXMAIAAAAAAjJ2+sX87NSis9hBsgb1QprVRnO7Bf+GObCGoUqyPE4wVjACAAAAAAAoJ4Ufdq45T9Aun5FupHlaBCIUsmUn6dXgV9KorpFikAAzMzAH0AAAAFZAAgAAAAAFWOUGkUpy8yf6gB3dio/aOfRKh7XuhvsUj48iESFJrGBXMAIAAAAAAY7sCDMcrUXvNuL6dO0m11WyijzXZvPIcOKob6IpC4PQVjACAAAAAAO/QFjczoznH95Iu0YEVMsU1GA1yxSGL8bcwSweNzAtkAAzM0AH0AAAAFZAAgAAAAAGUrIdKxOihwNmo6B+aG+Ag1qa0+iqdksHOjQj+Oy9bZBXMAIAAAAABwa5dbI2KmzBDNBTQBEkjZv4sPaeRkRNejcjdVymRFKQVjACAAAAAAUtdJucZoQvvPJiy65RonQrxBCcvtfHslpbgLbtWirCYAAzM1AH0AAAAFZAAgAAAAAOx89xV/hRk64/CkM9N2EMK6aldII0c8smdcsZ46NbP8BXMAIAAAAADBF6tfQ+7q9kTuLyuyrSnDgmrdmrXkdhl980i1KHuGHgVjACAAAAAAVc5njbLX1afpsuG662U/OBo4LanEk06lKbQtd95fswgAAzM2AH0AAAAFZAAgAAAAAMkN0L1oQWXhjwn9rAdudcYeN8/5VdCKU8cmDt7BokjsBXMAIAAAAAAT62pGXoRwExe9uvgYOI0hg5tOxilrWfoEmT0SMglWJwVjACAAAAAAhNc5ovIaxgtS856ZBfG+cAcHAz+3ewzB9C6zZoaggj4AAzM3AH0AAAAFZAAgAAAAANxfa4xCoaaB7k1C1RoH1LBhsCbN2yEq15BT9b+iqEC4BXMAIAAAAACAX9LV8Pemfw7NF0iB1/85NzM1Ef+1mUfyehacUVgobQVjACAAAAAAc0bIRNzuyc1Y0hkEmm7xV6Xp/LBlAgMq/ISCHr0Tq44AAzM4AH0AAAAFZAAgAAAAAOYIYoWkX7dGuyKfi3XssUlc7u/gWzqrR9KMkikKVdmSBXMAIAAAAABVF2OYjRTGi9Tw8XCAwZWLpX35Yl271TlNWp6N/nROhAVjACAAAAAAyGLbmHhe8eTQC8L2eDRcezUWULLZ9E8DPic7Mfp8/+4AAzM5AH0AAAAFZAAgAAAAAIy0+bXZi10QC+q7oSOLXK5Fee7VEk/qHSXukfeVIfgzBXMAIAAAAAAQ3IIV/JQCHW95AEbH5zGIHtJqyuPjWPMIZ+VmQHlxEwVjACAAAAAAD3azcNDdohU6tHO6ypT7F0rtydAYIMmLIsX6y7cXVkMAAzQwAH0AAAAFZAAgAAAAAL5SOJQ3LOhgdXJ5v086NNeAl1qonQnchObdpZJ1kHeEBXMAIAAAAAA+tEqTXODtik+ydJZSnUqXF9f18bPeze9eWtR7ExZJgQVjACAAAAAAUd8v2RN1WagYan1LbV+G81vcJKQ6HsX2GSBtnzMH7XEAAzQxAH0AAAAFZAAgAAAAAKl8zcHJRDjSjJeV/WvMxulW1zrTFtaeBy/aKKhadc6UBXMAIAAAAADBdWQl5SBIvtZZLIHszePwkO14W1mQ0izUk2Ov21cPNAVjACAAAAAAHvQLJ2X4ncjVv1BsOd/jbVouRPwf4222WlGSzPyAfnsAAzQyAH0AAAAFZAAgAAAAAFvotcNaoKnVt5CBCOPwjexFO0WGWuaIGL6H/6KSau+6BXMAIAAAAAD2y2mBN5xPu5PJoY2zcr0GnQDtHRBogA5+xzIxccE9fwVjACAAAAAA1OntPAxq1NJ4sfca+ysHcg68mj7QHwdEZQVxHMlV6x0AAzQzAH0AAAAFZAAgAAAAAPezU0/vNT4Q4YKbTbaeHqcwNLT+IjW/Y9QFpIooihjPBXMAIAAAAACj2x4O4rHter8ZnTws5LAP9jJ/6kk9C/V3vL50LoFZHAVjACAAAAAAlZd3bPMUXRhTwLWflrQuKIwtauTswenUiaDi2ibHYYYAAzQ0AH0AAAAFZAAgAAAAAMqpayM2XotEFmm0gwQd9rIzApy0X+7HfOhNk6VU7F5lBXMAIAAAAACJR9+q5T9qFHXFNgGbZnPubG8rkO6cwWhzITQTmd6VgwVjACAAAAAAEEOCUo+ihRGl1kuHlabWBWUFyJPAXSXzpQB4od57cMEAAzQ1AH0AAAAFZAAgAAAAANCeyW+3oebaQk+aqxNVhAcT/BZ5nhsTVdKS3tMrLSvWBXMAIAAAAADxRFMDhkyuEc++WnndMfoUMLNL7T7rWoeblcrpSI6soQVjACAAAAAA1KYQISxmBcGmgDMAjBpTcfQr/oci60Kf4QtEYEXPKSQAAzQ2AH0AAAAFZAAgAAAAAIbo5YBTxXM7HQhl7UP9NNgpPGFkBx871r1B65G47+K8BXMAIAAAAAC21dJSxnEhnxO5gzN5/34BL4von45e1meW92qowzb8fQVjACAAAAAAisxsskU/9ykphpSjB6bMMY+6Tbt6wpjhE2dg1IULAgYAAzQ3AH0AAAAFZAAgAAAAABm/6pF96j26Jm7z5KkY1y33zcAEXLx2n0DwC03bs/ixBXMAIAAAAAD01OMvTZI/mqMgxIhA5nLs068mW+GKl3OW3ilf2D8+LgVjACAAAAAAnPa8PTfcaSSAdzNAC54IMTicbShbtt/cSnFHz7u7g8wAAzQ4AH0AAAAFZAAgAAAAAJ/D3+17gaQdkBqkL2wMwccdmCaVOtxzIkM8VyI4xI5zBXMAIAAAAAAggLVmkc5u+YzBR+oNE+XgLVp64fC6MzUb/Ilu/Jsw0AVjACAAAAAAp5qCK8p0eTvAAUQ8fIOGyb2YM1YflQ8H6ggiWZ9vNI4AAzQ5AH0AAAAFZAAgAAAAAJMRyUW50oaTzspS6A3TUoXyC3gNYQoShUGPakMmeVZrBXMAIAAAAACona2Pqwt4U2PmFrtmu37jB9kQ/12okyAVtYa8TQkDiQVjACAAAAAAx/LOuDwvpaPFJeKLowZW/4q7SUsLtdldB27zc4//alEAAzUwAH0AAAAFZAAgAAAAAByuYl8dBvfaZ0LO/81JW4hYypeNmvLMaxsIdvqMPrWoBXMAIAAAAABNddwobOUJzm9HOUD8BMZJqkNCUCqstHZkC76FIdNg9AVjACAAAAAA4SEPY+qEZ2dCu/9485IEVybiM3Z7szXYM+izxklNm14AAzUxAH0AAAAFZAAgAAAAAHEzLtfmF/sBcYPPdj8867VmmQyU1xK9I/3Y0478azvABXMAIAAAAAAcmyFajZPnBTbO+oLInNwlApBocUekKkxz2hYFeSlQ+gVjACAAAAAA15ibZoBP1/pP27BDIfizDYNRDIpOmj8Ie34FvrtqjhMAAzUyAH0AAAAFZAAgAAAAAJam7JYsZe2cN20ZYm2W3v1pisNt5PLiniMzymBLWyMtBXMAIAAAAABxCsKVMZMTn3n+R2L7pVz5nW804r8HcK0mCBw3jUXKXAVjACAAAAAAElCgoMRrtlONqnyosjIpiz4mQTLq3+b/JUCVEq4QFiAAAzUzAH0AAAAFZAAgAAAAAMXrXx0saZ+5gORmwM2FLuZG6iuO2YS+1IGPoAtDKoKBBXMAIAAAAADIQsxCr8CfFKaBcx8kIeSywnGh7JHjKRJ9vJd9x79y7wVjACAAAAAAPzOTJ088k9QdGUpZ1ubUdkw3pTGkNF8bui4a9wqeo08AAzU0AH0AAAAFZAAgAAAAACbzcUD3INSnCRspOKF7ubne74OK9L0FTZvi9Ay0JVDYBXMAIAAAAADPebVQH8Btk9rhBIoUOdSAdpPvz7qIY4UC2i6IGisSAQVjACAAAAAAe4zSAgMQPjtz2t1DgxW1XOlV+fnNMXt6iQ7iV7DgQz4AAzU1AH0AAAAFZAAgAAAAACUc2CtD1MK/UTxtv+8iA9FoHEyTwdl43HKeSwDw2Lp5BXMAIAAAAACCIduIdw65bQMzRYRfjBJj62bc69T4QqH4QoWanwlvowVjACAAAAAA+i6aTnkoixxSOxDgQM/aWTylOy1m0ViCDU5asOM5ieYAAzU2AH0AAAAFZAAgAAAAAHSaHWs/dnmI9sc7nB50VB2Bzs0kHapMHCQdyVEYY30TBXMAIAAAAACkV22lhEjWv/9/DubfHBAcwJggKI5mIbSK5L2nyqloqQVjACAAAAAA1I5pLbnlFf/EfJlhE0RFIioDjzKrWNh4TO8H/ksrbMcAAzU3AH0AAAAFZAAgAAAAAAL8jhNBG0KXXZhmZ0bPXtfgapJCB/AI+BEHB0eZ3C75BXMAIAAAAADHx/fPa639EBmGV5quLi8IQT600ifiKSOhTDOK19DnzwVjACAAAAAANfWpWWy9iu7pgMEy2aVCggGEtJtXKQG1+3zCf8D6iEkAAzU4AH0AAAAFZAAgAAAAAAxgeclNl09H7HvzD1oLwb2YpFca5eaX90uStYXHilqKBXMAIAAAAACMU5pSxzIzWlQxHyW170Xs9EhD1hURASQk+qkx7K5Y6AVjACAAAAAA/kYlJPSFn2g1l7cy6djV/7wgnlPWphZ0IKSY8uenUF0AAzU5AH0AAAAFZAAgAAAAABmO7QD9vxWMmFjIHz13lyOeV6vHT6mYCsWxF7hb/yOjBXMAIAAAAACT9lmgkiqzuWG24afuzYiCeK9gmJqacmxAruIukd0xEAVjACAAAAAAyiZxtuOZQNSit4wFMJS3jnqLbDzyJ0OtDTKs6r0EO0cAAzYwAH0AAAAFZAAgAAAAAB89SjLtDJkqEghRGyj6aQ/2qvWLNuMROoXmzbYbCMKMBXMAIAAAAAC8sywgND+CjhVTF6HnRQeay8y9/HnVzDI42dEPah28LQVjACAAAAAAzBj8q9Ig4uhIc6rhNDVX1lII9lzfhJ0+ig8viBhdrtQAAzYxAH0AAAAFZAAgAAAAABN2alGq9Aats1mwERNGwL/fIwZSvVCe9/8XMHTFlpUpBXMAIAAAAACuDPjJgvvbBYhbLpjMiWUCsVppiYrhvR+yMysNPN8cZAVjACAAAAAAqcsLIvb3Pe/QKYB9wQ86Ye2OFSAJEIY4ve7LMM3SwGMAAzYyAH0AAAAFZAAgAAAAAL8YB6VAqGBiWD4CBv16IBscg5J7VQCTZu87n6pj+86KBXMAIAAAAAAmxm8e68geeyAdUjSMWBHzUjneVB0pG9TBXIoE6467hAVjACAAAAAA9Kd65vKIUckNPvxl/HHNPJVnFHXyErp4qibmD7BloukAAzYzAH0AAAAFZAAgAAAAAL4yLkCTV5Dmxa5toBu4JT8ge/cITAaURIOuFuOtFUkeBXMAIAAAAAAXoFNQOMGkAj7qEJP0wQafmFSXgWGeorDVbwyOxWLIsgVjACAAAAAAaFrBx0xXIryTe7V/kX+jfPHd0057x7k7MxzDAzi0RpcAAzY0AH0AAAAFZAAgAAAAAEU8DoUp46YtYjNFS9kNXwdYxQ9IW27vCTb+VcqqfnKNBXMAIAAAAADe7vBOgYReE8X78k5ARuUnv4GmzPZzg6SbConf4L2G3wVjACAAAAAAOl/tartywd/fJj5DNRsVH/ml9tJ8KkkCbKObsFe8lHcAAzY1AH0AAAAFZAAgAAAAAPa4yKTtkUtySuWo1ZQsp2QXtPb5SYqzA5vYDnS1P6c0BXMAIAAAAADKnF58R1sXlHlsHIvCBR3YWW/qk54z9CTDhZydkD1cOQVjACAAAAAAfn/jP8K3QUILngCNkydHARyBvBHIFdaJjzV0EXsFruMAAzY2AH0AAAAFZAAgAAAAAN5WJnMBmfgpuQPyonmY5X6OdRvuHw4nhsnGRnFAQ95VBXMAIAAAAACwftzu7KVV1rmGKwXtJjs3cJ1gE3apr8+N0SAg1F2cHwVjACAAAAAAf0XyQQLd/HIYaf9EeAV0o2h12K1AV5piLCpZihznBXoAAzY3AH0AAAAFZAAgAAAAACHvDsaPhoSb6DeGnKQ1QOpGYAgK82qpnqwcmzSeWaJHBXMAIAAAAABRq3C5+dOfnkAHM5Mg5hPB3O4jhwQlBgQWLA7Ph5bhgwVjACAAAAAAm2Ukk5kkQp+PDpBCCefQOqFKKZie4hINim3yvtypsEAAAzY4AH0AAAAFZAAgAAAAAOBePJvccPMJmy515KB1AkXF5Pi8NOG4V8psWy0SPRP+BXMAIAAAAAB3dOJG9xIDtEKCRzeNnPS3bFZepMj8UKBobKpSoCPqpgVjACAAAAAAnu33SngYPOtRgdJ3aBBuxWn80ti3OO6nZJcI6eh0VfQAAzY5AH0AAAAFZAAgAAAAABUvRrDQKEXLMdhnzXRdhiL6AGNs2TojPky+YVLXs+JnBXMAIAAAAAD1kYicbEEcPzD4QtuSYQQWDPq8fuUWGddpWayKn3dT9QVjACAAAAAAUc5dxcbNYY3qMO8+Xm2xis+pH9NjPLrHqHenwDEImAEAAzcwAH0AAAAFZAAgAAAAAOvSnpujeKNen4pqc2HR63C5s5oJ1Vf4CsbKoYQvkwl5BXMAIAAAAACw2+vAMdibzd2YVVNfk81yXkFZP0WLJ82JBxJmXnYE+QVjACAAAAAAnmej008JFQAgdImjk26PYvqdATjRYRufLi+vEVVwtucAAzcxAH0AAAAFZAAgAAAAAAo0xfGG7tJ3GWhgPVhW5Zn239nTD3PadShCNRc9TwdNBXMAIAAAAADZh243oOhenu0s/P/5KZLBDh9ADqKHtSWcXpO9D2sIjgVjACAAAAAAhpNHI4+aRdWHCvZfEjlgpRBz36g05wN9p/hj3NEwc7EAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDouble": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-FindOneAndUpdate.json
new file mode 100644
index 00000000000..59a304166bd
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-FindOneAndUpdate.json
@@ -0,0 +1,1160 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Double. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDouble": {
+ "$numberDouble": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedDouble": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDouble": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "HI88j1zrIsFoijIXKybr9mYubNV5uVeODyLHFH4Ueco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXVD/HSbBljko0jJcaxJ1nrzs2+pchLQqYR3vywS8SU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KhscCh+tt/pp8lxtKZQSPPUU94RvJYPKG/sjtzIa4Ws=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RISnuNrTTVNW5HnwCgQJ301pFw8DOcYrAMQIwVwjOkI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Ra5zukLh2boua0Bh74qA+mtIoixGXlsNsxiJqHtqdTI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eqr0v+NNWXWszi9ni8qH58Q6gw5x737tJvH3lPaNHO4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d42QupriWIwGrFAquXNFi0ehEuidIbHLFZtg1Sm2nN8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2azRVxaaTIJKcgY2FU012gcyP8Y05cRDpfUaMnCBaQU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3nlgkM4K/AAcHesRYYdEu24UGetHodVnVfHzw4yxZBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hqy91FNmAAac2zUaPO6eWFkx0/37rOWGrwXN+fzL0tU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "akX+fmscSDSF9pB5MPj56iaJPtohr0hfXNk/OPWsGv8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1ZvUb10Q7cN4cNLktd5yNjqgtawsYnkbeVBZV6WuY/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "otCwtuKiY4hCyXvYzXvo10OcnzZppebo38KsAlq49QM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mty8EscckeT/dhMfrPFyDbLnmMOcYRUQ3mLK4KTu6V8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tnvgLLkJINO7csREYu4dEVe1ICrBeu7OP+HdfoX3M2E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kOefsHgEVhkJ17UuP7Dxogy6sAQbzf1SFPKCj6XRlrQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F+JQ79xavpaHdJzdhvwyHbzdZJLNHAymc/+67La3gao=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NCZ9zp5rDRceENuSgAfTLEyKg0YgmXAhK0B8WSj7+Pw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wL1CJ7cYR5slx8mHq++uMdjDfkt9037lQTUztEMF56M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "txefkzTMITZE+XvvRFZ7QcgwDT/7m8jNmxRk4QBaoZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jFunW3v1tSYMyZtQQD28eEy9qqDp4Kqo7gMN29N4bfQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QMO915KUiS3X3R1bU1YoafVM2s0NeHo3EjgTA9PnGwY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nwdKJEXdilzvb7494vbuDJ+y6SrfJahza1dYIsHIWVI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vpWMX+T/VXXajFo0UbuYjtp0AEzBU0Y+lP+ih2EQ7mg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1lmzG0J1DhKDRhhq5y5Buygu4G8eV2X0t7kUY90EohM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SiKqpXqO0trwhFvBWK274hMklpCgMhNs/JY84yyn/NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7cPGPYCKPTay+ZR9Gx6oOueduOgaFrSuAXmNDpDHXdI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4THEYvAkjs2Fh7FIe5LC45P4i4N0L7ob67UOVbhp6Nk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "B+UGsChLLZR7iqnt8yq91OgmTgwiUKTJhFxY4NT0O6c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X1uYwBCsCg1H+PnKdwtBqXlt0zKEURi8bOM940GcPfk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xYOgT5l7shlNXCwHlguovmDkcEnF8dXyYlTyYrgZ8GE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vFMTZqV8bh1+gcKzTkXweMddJlgdUnwX0DWzUUaMok4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4HI0y9FrtleZxZ7M6INdNhLelrQ2Rv/+ykWCBl+tMC8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jpJ0bBE474OUkn1vUiLWumIBtYmwc7J5+LQU/nyeLQc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jQTPeXZvdxY/DjtPfYfKUArIDsf0E9MVFy2O26sv1ec=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QLLto0ExR2ZYMGqlyaMZc/hXFFTlwmgtKbiVq/xJIeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yBJNviU1nchbGbhx6InXCVRXa90sEepz1EwbYuKXu2U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jpEf0vHxrPu9gTJutNXSi2g/2Mc4WXFEN7yHonZEb7A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "E09kLFckMYwNuhggMxmPtwndyvIAx+Vl+b2CV6FP75s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "N+ue6/cLPb5NssmJCCeo18LlbKPz6r2z20AsnTKRvOo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yVQNZP8hhsvNGyDph2QP2qTNdXZTiIEVineKg+Qf33o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cSC9uI+9c5S8X+0G7amVyug1p0ZlgBsbEDYYyezBevQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1NpZGjoQzuQtekj80Rifxe9HbE08W07dfwxaFHaVn84=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5Ghuq/8l11Ug9Uf/RTwf9On3OxOwIXUcb9soiy4J7/w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0LWKaEty6ywxLFhDaAqulqfMnYc+tgPfH4apyEeKg80=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OwSthmCBtt6NIAoAh7aCbj82Yr/+9t8U7WuBQhFT3AQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "iYiyg6/1isqbMdvFPIGucu3cNM4NAZNtJhHpGZ4eM+c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "waBgs8jWuGJPIF5zCRh6OmIyfK5GCBQgTMfmKSR2wyY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1Jdtbe2BKJXPU2G9ywOrlODZ/cNYEQlKzAW3aMe1Hy4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xaLEnNUS/2ySerBpb9dN/D31t+wYcKekwTfkwtni0Mc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bIVBrOhOvr6cL55Tr24+B+CC9MiG7U6K54aAr2IXXuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6Cdq5wroGu2TEFnekuT7LhOpd/K/+PcipIljcHU9QL4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "K5l64vI4S/pLviLW6Pl0U3iQkI3ge0xg4RAHcEsyKJo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bzhuvZ0Ls22yIOX+Hz51eAHlSuDbWR/e0u4EhfdpHbc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Qv+fr6uD4o0bZRp69QJCFL6zvn3G82c7L+N1IFzj7H0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XAmISMbD3aEyQT+BQEphCKFNa0F0GDKFuhM9cGceKoQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4VLCokntMfm1AogpUnYGvhV7nllWSo3mS3hVESMy+hA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xiXNLj/CipEH63Vb5cidi8q9X47EF4f3HtJSOH7mfM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4XlCYfYBjI9XA5zOSgTiEBYcZsdwyXL+f5XtH2xUIOc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "k6DfQy7ZYJIkEly2B5hjOZznL4NcgMkllZjJLb7yq7w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZzM6gwWesa3lxbZVZthpPFs2s3GV0RZREE2zOMhBRBo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "US+jeMeeOd7J0wR0efJtq2/18lcO8YFvhT4O3DeaonQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b6iSxiI1FM9SzxuG1bHqGA1i4+3GOi0/SPW00XB4L7o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kn3LsxAVkzIZKK9I6fi0Cctr0yjXOYgaQWMCoj4hLpM=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-InsertFind.json
new file mode 100644
index 00000000000..634230eacad
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-InsertFind.json
@@ -0,0 +1,1129 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Double. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2FIZh/9N+NeJEQwxYIX5ikQT85xJzulBNReXk8PnG/s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I93Md7QNPGmEEGYU1+VVCqBPBEvXdqHPtTJtMOn06Yk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "GecBFQ1PemlECWZWCl7f74vmsL6eB6mzQ9n6tK6FYfs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QpjhZl+O1ORifgtCZuWAdcP6OKL7IZ2cA46v8FJcV28=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FWXI/yZ1M+2fIboeMCDMlp+I2NwPQDtoM/wWselOPYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uk26nvN/LdRLaBphiBgIZzT0sSpoO1z0RdDWRm/xrSA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hiiYSH1KZovAULc7rlmEU74wCjzDR+mm6ZnsgvFQjMw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hRzvMvWPX0sJme+wck67lwbKDFaWOa+Eyef+JSdc1s4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PSx5D+zqC9c295dguX4+EobT4IEzfffdfjzC8DWpB5Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QzfXQCVTjPQv2h21v95HYPq8uCsVJ2tPnjv79gAaM9M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XcGDO/dlTcEMLqwcm55UmOqK+KpBmbzZO1LIzX7GPaQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Lf+o4E7YB5ynzUPC6KTyW0lj6Cg9oLIu1Sdd1ODHctA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wAuVn02LAVo5Y+TUocvkoenFYWzpu38k0NmGZOsAjS4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yJGDtveLbbo/0HtCtiTSsvVI/0agg/U1bFaQ0yhK12o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KsEy0zgYcmkM+O/fWF9z3aJGIk22XCk+Aw96HB6JU68=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "p+AnMI5ZxdJMSIEJmXXya+FeH5yubmOdViwUO89j0Rc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/jLix56jzeywBtNuGw55lCXyebQoSIhbful0hOKxKDY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fvDvSPomtJsl1S3+8/tzFCE8scHIdJY5hB9CdTEsoFo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "oV5hOJzPXxfTuRdKIlF4uYEoMDuqH+G7/3qgndDr0PM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3ALwcvLj3VOfgD6OqXAO13h1ZkOv46R6+Oy6SUKh53I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gxaB9FJj0IM+InhvAjwWaex3UIZ9SAnDiUd5WHSY/l0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "66NPvDygJzKJqddfNuDuNOpvGajjFRtvhkwfUkiYmXw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1dWcQIocRAcO9XnXYqbhl83jc0RgjQpsrWd8dC27trg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "npos0Uf1DT3ztSCjPVY9EImlRnTHB1KLrvmVSqBQ/8E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "TEI9qBx/tK1l1H0v1scMG8Srmtwo5VxWHADPBSlWrXk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3wUN2ypQKoj+5ASkeIK9ycxhahVxyTmGopigoUAlyYs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o/oksSnUS+nIq6ozWTbB5bJh+NoaPj8deAA23uxiWCk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KExYPruhA31e8xuSwvfUfDcyY/H2Va6taUd0k4yFgLc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "/x+dNfxdd/lkx8Z8VZVfoYl7LPoaZ/iKEzZXBrAtIJc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DE4cmjFLPqZlmRomO0qQiruUBtzoCe8ZdNRcfNH92pU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M6EKNcLPw/iojAChgYUSieaBYWcbsjKtB94SaHOr8vk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+qP49lDPeyhaduTvXJgtJEqHNEYANVu9Bg3Bxz7Td9w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ruMrC2VIS+VKbJwCFb3bfkaLTju9nE+yPONV9s0M0Vo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EbjDlSB5JKnDKff4d8hOmaOwJ7B9Q6NQFisLj+DPC+0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C/yYOTB94edyqAbiQNu8/H7FoG3yRRjHDkMykz4+Mv0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CBxqrejG+qQQq2YTd6iP/06kiu2CxxzBFaZK3Ofb1CM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2ZOQ/fpho+AbDENWBZaln7wRoepIRdhyT648dr8O5cU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "EghIgEPz01+myPgj8oid+PgncvobvC7vjvG3THEEQ0M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "92CysZYNF8riwAMhdrIPKxfODw9p07cKQy/Snn8XmVY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VO0LeTBQmsEf7sCHzTnZwUPNTqRZ49R8V5E9XnZ/5N4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "exs8BQMJq7U6ZXYgIizT7XN+X/hOmmn4YEuzev9zgSI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qHpS4k1I+gPniNp4CA8TY8lLN36vBYmgbKMFpbYMEqg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+7lWKCKAWFw6gPZdHE6E8KIfI14/fSvtWUmllb5WLi0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YiH/US0q6679hWblFDDKNqUjCgggoU8sUCssTIF1QbU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YgwkKElEubNfvXL9hJxzqQUQtHiXN/OCGxNL1MUZZlM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hZFST4INZTTuhvJlGJeMwlUAK270UCOTCDeBAnN4a7g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "24I1Zw35AuGnK3CqJhbCwYb0IPuu5sCRrM5iyeITOLc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vgD12JB4Q1S/kGPSQ1KOgp386KnG1GbM/5+60oRGcGw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+wNE+OL+CB9d4AUJdVxd56jUJCAXmmk9fapuB2TAc4g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uhQh1B2Pe4RkNw/kPEcgaLenuikKoRf1iyfZhpXdodc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eu8gjAUIp8ybO204AgeOq5v1neI1yljqy5v3I6lo1lM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7QG6oVbASBAjrnCPxzzUNnuFSFNlKhbuBafkF8pr7Is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "PUS1xb2oHSDTdYltutoSSxBiJ1NjxH3l2kA4P1CZLEs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XPMh/JDC/O93gJJCwwgJDb8ssWZvRvezNmKmyn3nIfk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jWz+KGwMk/GOvFAK2rOxF3OjxeZAWfmUQ1HGJ7icw4A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o7XbW68pc6flYigf3LW4WAGUWxpeqxaQLkHUhUR9RZ8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nqR+g60+5U0okbqJadSqGgnC+j1JcP8rwMcfzOs2ACI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Hz43qVK95tSfbYFtaE/8fE97XMk1RiO8XpWjwZHB80o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "noZUWlZ8M6KXU5rkifyo8/duw5IL7/fXbJvT7bNmW9k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WONVHCuPSanXDRQQ/3tmyJ0Vq+Lu/4hRaMUf0g0kSuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UEaj6vQRoIghE8Movd8AGXhtwIOXlP4cBsECIUvE5Y8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "D3n2YcO8+PB4C8brDo7kxKjF9Y844rVkdRMLTgsQkrw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "C+YA0G9KjxZVaWwOMuh/dcnHnHAlYnbFrRl0IEpmsY0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rUnmbmQanxrbFPYYrwyQ53x66OSt27yAvF+s48ezKDc=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Update.json
new file mode 100644
index 00000000000..cdc9f28e76e
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Double-Update.json
@@ -0,0 +1,1164 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Double. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDouble": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDouble": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedDouble": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDouble": {
+ "$numberDouble": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedDouble": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedDouble": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDouble",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDouble": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDouble": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "HI88j1zrIsFoijIXKybr9mYubNV5uVeODyLHFH4Ueco=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wXVD/HSbBljko0jJcaxJ1nrzs2+pchLQqYR3vywS8SU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "KhscCh+tt/pp8lxtKZQSPPUU94RvJYPKG/sjtzIa4Ws=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RISnuNrTTVNW5HnwCgQJ301pFw8DOcYrAMQIwVwjOkI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Ra5zukLh2boua0Bh74qA+mtIoixGXlsNsxiJqHtqdTI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "eqr0v+NNWXWszi9ni8qH58Q6gw5x737tJvH3lPaNHO4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "d42QupriWIwGrFAquXNFi0ehEuidIbHLFZtg1Sm2nN8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "2azRVxaaTIJKcgY2FU012gcyP8Y05cRDpfUaMnCBaQU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "3nlgkM4K/AAcHesRYYdEu24UGetHodVnVfHzw4yxZBM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hqy91FNmAAac2zUaPO6eWFkx0/37rOWGrwXN+fzL0tU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "akX+fmscSDSF9pB5MPj56iaJPtohr0hfXNk/OPWsGv8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1ZvUb10Q7cN4cNLktd5yNjqgtawsYnkbeVBZV6WuY/I=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "otCwtuKiY4hCyXvYzXvo10OcnzZppebo38KsAlq49QM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Mty8EscckeT/dhMfrPFyDbLnmMOcYRUQ3mLK4KTu6V8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "tnvgLLkJINO7csREYu4dEVe1ICrBeu7OP+HdfoX3M2E=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kOefsHgEVhkJ17UuP7Dxogy6sAQbzf1SFPKCj6XRlrQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F+JQ79xavpaHdJzdhvwyHbzdZJLNHAymc/+67La3gao=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "NCZ9zp5rDRceENuSgAfTLEyKg0YgmXAhK0B8WSj7+Pw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wL1CJ7cYR5slx8mHq++uMdjDfkt9037lQTUztEMF56M=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "txefkzTMITZE+XvvRFZ7QcgwDT/7m8jNmxRk4QBaoZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jFunW3v1tSYMyZtQQD28eEy9qqDp4Kqo7gMN29N4bfQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QMO915KUiS3X3R1bU1YoafVM2s0NeHo3EjgTA9PnGwY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "nwdKJEXdilzvb7494vbuDJ+y6SrfJahza1dYIsHIWVI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vpWMX+T/VXXajFo0UbuYjtp0AEzBU0Y+lP+ih2EQ7mg=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1lmzG0J1DhKDRhhq5y5Buygu4G8eV2X0t7kUY90EohM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SiKqpXqO0trwhFvBWK274hMklpCgMhNs/JY84yyn/NE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7cPGPYCKPTay+ZR9Gx6oOueduOgaFrSuAXmNDpDHXdI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4THEYvAkjs2Fh7FIe5LC45P4i4N0L7ob67UOVbhp6Nk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "B+UGsChLLZR7iqnt8yq91OgmTgwiUKTJhFxY4NT0O6c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X1uYwBCsCg1H+PnKdwtBqXlt0zKEURi8bOM940GcPfk=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xYOgT5l7shlNXCwHlguovmDkcEnF8dXyYlTyYrgZ8GE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "vFMTZqV8bh1+gcKzTkXweMddJlgdUnwX0DWzUUaMok4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4HI0y9FrtleZxZ7M6INdNhLelrQ2Rv/+ykWCBl+tMC8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jpJ0bBE474OUkn1vUiLWumIBtYmwc7J5+LQU/nyeLQc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jQTPeXZvdxY/DjtPfYfKUArIDsf0E9MVFy2O26sv1ec=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "QLLto0ExR2ZYMGqlyaMZc/hXFFTlwmgtKbiVq/xJIeI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yBJNviU1nchbGbhx6InXCVRXa90sEepz1EwbYuKXu2U=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jpEf0vHxrPu9gTJutNXSi2g/2Mc4WXFEN7yHonZEb7A=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "E09kLFckMYwNuhggMxmPtwndyvIAx+Vl+b2CV6FP75s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "N+ue6/cLPb5NssmJCCeo18LlbKPz6r2z20AsnTKRvOo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "yVQNZP8hhsvNGyDph2QP2qTNdXZTiIEVineKg+Qf33o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cSC9uI+9c5S8X+0G7amVyug1p0ZlgBsbEDYYyezBevQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1NpZGjoQzuQtekj80Rifxe9HbE08W07dfwxaFHaVn84=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "5Ghuq/8l11Ug9Uf/RTwf9On3OxOwIXUcb9soiy4J7/w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0LWKaEty6ywxLFhDaAqulqfMnYc+tgPfH4apyEeKg80=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "OwSthmCBtt6NIAoAh7aCbj82Yr/+9t8U7WuBQhFT3AQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "iYiyg6/1isqbMdvFPIGucu3cNM4NAZNtJhHpGZ4eM+c=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "waBgs8jWuGJPIF5zCRh6OmIyfK5GCBQgTMfmKSR2wyY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "1Jdtbe2BKJXPU2G9ywOrlODZ/cNYEQlKzAW3aMe1Hy4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xaLEnNUS/2ySerBpb9dN/D31t+wYcKekwTfkwtni0Mc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bIVBrOhOvr6cL55Tr24+B+CC9MiG7U6K54aAr2IXXuw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6Cdq5wroGu2TEFnekuT7LhOpd/K/+PcipIljcHU9QL4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "K5l64vI4S/pLviLW6Pl0U3iQkI3ge0xg4RAHcEsyKJo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "bzhuvZ0Ls22yIOX+Hz51eAHlSuDbWR/e0u4EhfdpHbc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Qv+fr6uD4o0bZRp69QJCFL6zvn3G82c7L+N1IFzj7H0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "XAmISMbD3aEyQT+BQEphCKFNa0F0GDKFuhM9cGceKoQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4VLCokntMfm1AogpUnYGvhV7nllWSo3mS3hVESMy+hA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "xiXNLj/CipEH63Vb5cidi8q9X47EF4f3HtJSOH7mfM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "4XlCYfYBjI9XA5zOSgTiEBYcZsdwyXL+f5XtH2xUIOc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "k6DfQy7ZYJIkEly2B5hjOZznL4NcgMkllZjJLb7yq7w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ZzM6gwWesa3lxbZVZthpPFs2s3GV0RZREE2zOMhBRBo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "US+jeMeeOd7J0wR0efJtq2/18lcO8YFvhT4O3DeaonQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b6iSxiI1FM9SzxuG1bHqGA1i4+3GOi0/SPW00XB4L7o=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kn3LsxAVkzIZKK9I6fi0Cctr0yjXOYgaQWMCoj4hLpM=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Aggregate.json
new file mode 100644
index 00000000000..f2ea49ad75e
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Aggregate.json
@@ -0,0 +1,586 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DoublePrecision. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mVZb+Ra0EYjQ4Zrh9X//E2T8MRj7NMqm5GUJXhRrBEI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MgwakFvPyBlwqFTbhWUF79URJQWFoJTGotlEVSPPUsQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DyBERpMSD5lEM5Nhpcn4WGgxgn/mkUVJp+PYSLX5jsE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I43iazc0xj1WVbYB/V+uTL/tughN1bBlxh1iypBnNsA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wjOBa/ATMuOywFmuPgC0GF/oeLqu0Z7eK5udzkTPbis=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gRQVwiR+m+0Vg8ZDXqrQQcVnTyobwCXNaA4BCJVXtMc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WUZ6huwx0ZbLb0R00uiC9FOJzsUocUN8qE5+YRenkvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7s79aKEuPgQcS/YPOOVcYNZvHIo7FFsWtFCrnDKXefA=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Correctness.json
new file mode 100644
index 00000000000..e69d9126941
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Correctness.json
@@ -0,0 +1,1650 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$lt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$lte": {
+ "$numberDouble": "1.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$lt": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "200.0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be less than the range max"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ },
+ "$lt": {
+ "$numberDouble": "2.0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ },
+ "$lte": {
+ "$numberDouble": "200.0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$in": [
+ {
+ "$numberDouble": "0.0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Insert out of range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "-1"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value must be greater than or equal to the minimum value"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Insert min and max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 200,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "200.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {},
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 200,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "200.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$lt": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$lte": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$lt": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "200.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be less than the range max"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0.0"
+ },
+ "$lt": {
+ "$numberDouble": "2.0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$gte": {
+ "$numberDouble": "0.0"
+ },
+ "$lte": {
+ "$numberDouble": "200.0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1.0"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedDoublePrecision": {
+ "$in": [
+ {
+ "$numberDouble": "0.0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0.0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Int",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Delete.json
new file mode 100644
index 00000000000..d6a9c4b7e7a
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Delete.json
@@ -0,0 +1,491 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DoublePrecision. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDoublePrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-FindOneAndUpdate.json
new file mode 100644
index 00000000000..0511c2e37ec
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-FindOneAndUpdate.json
@@ -0,0 +1,608 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DoublePrecision. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDoublePrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "V6knyt7Zq2CG3++l75UtBx2m32iGAPjHiAe439Bf02w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0OKSXELxPP85SBVwDGf3LtMEQCJ8TTkFUl/+6jlkdb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uEw0lpQtBppR3vqV9j9+NQRSBF1BzZukb8c9IhyWvxc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zVhZ7Q59O087ji49oMJvBIgeir2oqvUpnh4p53GcTow=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dowrzKs+qJhRMZyKDbhjXbuX43FbmUKOaw9I8YlOZDw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ep5B6cska6THLIF7Mn3tn3RvV9EiwLSt0eZM/CLRUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "URNp/YmmDh5wIZUfAzzgPyJeMNiVx9PMsz52DZRujGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wlM4IAQhhKQEzoVqS8b1Ddd50GB95OFb9LnzOwyjCP4=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-InsertFind.json
new file mode 100644
index 00000000000..616101b4d44
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-InsertFind.json
@@ -0,0 +1,577 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DoublePrecision. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "mVZb+Ra0EYjQ4Zrh9X//E2T8MRj7NMqm5GUJXhRrBEI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "MgwakFvPyBlwqFTbhWUF79URJQWFoJTGotlEVSPPUsQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "DyBERpMSD5lEM5Nhpcn4WGgxgn/mkUVJp+PYSLX5jsE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "I43iazc0xj1WVbYB/V+uTL/tughN1bBlxh1iypBnNsA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wjOBa/ATMuOywFmuPgC0GF/oeLqu0Z7eK5udzkTPbis=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "gRQVwiR+m+0Vg8ZDXqrQQcVnTyobwCXNaA4BCJVXtMc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "WUZ6huwx0ZbLb0R00uiC9FOJzsUocUN8qE5+YRenkvQ=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "7s79aKEuPgQcS/YPOOVcYNZvHIo7FFsWtFCrnDKXefA=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Update.json
new file mode 100644
index 00000000000..300202e2274
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-DoublePrecision-Update.json
@@ -0,0 +1,612 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range DoublePrecision. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$numberDouble": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedDoublePrecision": {
+ "$numberDouble": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedDoublePrecision": {
+ "$gt": {
+ "$binary": {
+ "base64": "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",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedDoublePrecision",
+ "bsonType": "double",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberDouble": "0.0"
+ },
+ "max": {
+ "$numberDouble": "200.0"
+ },
+ "precision": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedDoublePrecision": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedDoublePrecision": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "V6knyt7Zq2CG3++l75UtBx2m32iGAPjHiAe439Bf02w=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "0OKSXELxPP85SBVwDGf3LtMEQCJ8TTkFUl/+6jlkdb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uEw0lpQtBppR3vqV9j9+NQRSBF1BzZukb8c9IhyWvxc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zVhZ7Q59O087ji49oMJvBIgeir2oqvUpnh4p53GcTow=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "dowrzKs+qJhRMZyKDbhjXbuX43FbmUKOaw9I8YlOZDw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ep5B6cska6THLIF7Mn3tn3RvV9EiwLSt0eZM/CLRUDc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "URNp/YmmDh5wIZUfAzzgPyJeMNiVx9PMsz52DZRujGY=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "wlM4IAQhhKQEzoVqS8b1Ddd50GB95OFb9LnzOwyjCP4=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Aggregate.json
new file mode 100644
index 00000000000..536415f3feb
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Aggregate.json
@@ -0,0 +1,490 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Int. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Correctness.json
new file mode 100644
index 00000000000..6abd773da89
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Correctness.json
@@ -0,0 +1,1644 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$lt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$lte": {
+ "$numberInt": "1"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$lt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ },
+ "$lt": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberInt": "0"
+ },
+ "$lte": {
+ "$numberInt": "200"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$in": [
+ {
+ "$numberInt": "0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Insert out of range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "-1"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value must be greater than or equal to the minimum value"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Insert min and max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 200,
+ "encryptedInt": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {},
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 200,
+ "encryptedInt": {
+ "$numberInt": "200"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$lt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$lte": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$lt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ },
+ "$lt": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberInt": "0"
+ },
+ "$lte": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedInt": {
+ "$in": [
+ {
+ "$numberInt": "0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Delete.json
new file mode 100644
index 00000000000..9d5bff1d19f
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Delete.json
@@ -0,0 +1,437 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Int. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedInt": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedInt": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-FindOneAndUpdate.json
new file mode 100644
index 00000000000..4bf57700c94
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-FindOneAndUpdate.json
@@ -0,0 +1,512 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Int. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedInt": {
+ "$numberInt": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedInt": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedInt": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-InsertFind.json
new file mode 100644
index 00000000000..6f6022e7490
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-InsertFind.json
@@ -0,0 +1,481 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Int. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Update.json
new file mode 100644
index 00000000000..17d23b957f8
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Int-Update.json
@@ -0,0 +1,516 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Int. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedInt": {
+ "$numberInt": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gt": {
+ "$numberInt": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedInt": {
+ "$numberInt": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedInt": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedInt": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedInt": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedInt": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Aggregate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Aggregate.json
new file mode 100644
index 00000000000..3f1c723bd29
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Aggregate.json
@@ -0,0 +1,490 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Long. Aggregate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "aggregate": "default",
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "cursor": {},
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "aggregate"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Correctness.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Correctness.json
new file mode 100644
index 00000000000..972388c6c43
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Correctness.json
@@ -0,0 +1,1644 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Find with $gt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gte": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$lt": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$lte": {
+ "$numberLong": "1"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$lt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Find with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ },
+ "$lt": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gte": {
+ "$numberLong": "0"
+ },
+ "$lte": {
+ "$numberLong": "200"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Find with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$in": [
+ {
+ "$numberLong": "0"
+ }
+ ]
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Insert out of range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "-1"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "value must be greater than or equal to the minimum value"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Insert min and max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 200,
+ "encryptedLong": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {},
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 200,
+ "encryptedLong": {
+ "$numberLong": "200"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gte": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt with no results",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": []
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$lt": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lte",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$lte": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $lt below min",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$lt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be greater than the range minimum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt above max",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": {
+ "errorContains": "must be less than the range maximum"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $gt and $lt",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ },
+ "$lt": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with equality",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with full range",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$gte": {
+ "$numberLong": "0"
+ },
+ "$lte": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ },
+ {
+ "$sort": {
+ "_id": 1
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Aggregate with $in",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "aggregate",
+ "arguments": {
+ "pipeline": [
+ {
+ "$match": {
+ "encryptedLong": {
+ "$in": [
+ {
+ "$numberLong": "0"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "result": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Insert Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gte": {
+ "$numberDouble": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Delete.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Delete.json
new file mode 100644
index 00000000000..89e18984065
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Delete.json
@@ -0,0 +1,437 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Long. Delete.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "deleteOne",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "result": {
+ "deletedCount": 1
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "delete": "default",
+ "deletes": [
+ {
+ "q": {
+ "encryptedLong": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "limit": 1
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedLong": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "delete"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-FindOneAndUpdate.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-FindOneAndUpdate.json
new file mode 100644
index 00000000000..59342a343ad
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-FindOneAndUpdate.json
@@ -0,0 +1,512 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Long. FindOneAndUpdate.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "findOneAndUpdate",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedLong": {
+ "$numberLong": "2"
+ }
+ }
+ },
+ "returnDocument": "Before"
+ },
+ "result": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "findAndModify": "default",
+ "query": {
+ "encryptedLong": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedLong": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "command_name": "findAndModify"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-InsertFind.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-InsertFind.json
new file mode 100644
index 00000000000..882e52170d2
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-InsertFind.json
@@ -0,0 +1,481 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Long. Insert and Find.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ "result": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ ]
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "default",
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "find"
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Update.json
new file mode 100644
index 00000000000..92e3e390a5f
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-Long-Update.json
@@ -0,0 +1,516 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "FLE2 Range Long. Update.",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedLong": {
+ "$numberLong": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 1,
+ "encryptedLong": {
+ "$numberLong": "1"
+ }
+ }
+ }
+ },
+ {
+ "name": "updateOne",
+ "arguments": {
+ "filter": {
+ "encryptedLong": {
+ "$gt": {
+ "$numberLong": "0"
+ }
+ }
+ },
+ "update": {
+ "$set": {
+ "encryptedLong": {
+ "$numberLong": "2"
+ }
+ }
+ }
+ },
+ "result": {
+ "matchedCount": 1,
+ "modifiedCount": 1,
+ "upsertedCount": 0
+ }
+ }
+ ],
+ "expectations": [
+ {
+ "command_started_event": {
+ "command": {
+ "listCollections": 1,
+ "filter": {
+ "name": "default"
+ }
+ },
+ "command_name": "listCollections"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "find": "datakeys",
+ "filter": {
+ "$or": [
+ {
+ "_id": {
+ "$in": [
+ {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "keyAltNames": {
+ "$in": []
+ }
+ }
+ ]
+ },
+ "$db": "keyvault",
+ "readConcern": {
+ "level": "majority"
+ }
+ },
+ "command_name": "find"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command": {
+ "insert": "default",
+ "documents": [
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ ],
+ "ordered": true,
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "command_name": "insert"
+ }
+ },
+ {
+ "command_started_event": {
+ "command_name": "update",
+ "command": {
+ "update": "default",
+ "ordered": true,
+ "updates": [
+ {
+ "q": {
+ "encryptedLong": {
+ "$gt": {
+ "$binary": {
+ "base64": "CnEFAAADcGF5bG9hZABBBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVjACAAAAAAKs6X8gaa+AJ6PpxVicsk7iCXpSYIkQ5zB0KnXqlfCWgAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWMAIAAAAABYTWOKsDZ7cgPhiKDR2bE5CFGz4MuEwZbzZ0z46eGzBQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFYwAgAAAAABSqgKlxv5LXoxUO3zNmqGztlZhL2S150WiR/eycv7CWAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVjACAAAAAAfsofSP7nQHv8ic8ZW0aNlWxplS46Z+mywPR4rQk+wcgAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWMAIAAAAADu3L42J/oqNLe/XNYpodf2fhmPdcLhqO4J24o0hiveXwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFYwAgAAAAAAUljtCIvjRnLB2UPTEeRIz11Snl5SOBUNaXMXig4rqKAAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVjACAAAAAAD51NYesiO4Fo7w7iWBfqAFxEqkaDVctpvzZ28nT4SE8AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWMAIAAAAABJDtFhJ2tPbowp1UUmOCN/rqSqHRL1dtMu0c47vIlK4wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FYwAgAAAAAE6kvmXPqTnYIH4EJmNhy8OLVJZFOmdiBXLMorhELjKWAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVjACAAAAAA85AiE+bNFAYQTXQAFexgeczdVhf8FUnf16WzJlI/kmsAAAVlACAAAAAA65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+wSY20AAAAAAAAAAAAAEHBheWxvYWRJZAAAAAAAEGZpcnN0T3BlcmF0b3IAAQAAAAA=",
+ "subType": "06"
+ }
+ }
+ }
+ },
+ "u": {
+ "$set": {
+ "encryptedLong": {
+ "$$type": "binData"
+ }
+ }
+ }
+ }
+ ],
+ "encryptionInformation": {
+ "type": 1,
+ "schema": {
+ "default.default": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedLong",
+ "bsonType": "long",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberLong": "0"
+ },
+ "max": {
+ "$numberLong": "200"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "deleteTokens": {
+ "default.default": {
+ "encryptedLong": {
+ "e": {
+ "$binary": {
+ "base64": "65pz95EthqQpfoHS9nWvdCh05AV+OokP7GUaI+7j8+w=",
+ "subType": "00"
+ }
+ },
+ "o": {
+ "$binary": {
+ "base64": "noN+05JsuO1oDg59yypIGj45i+eFH6HOTXOPpeZ//Mk=",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "$db": "default"
+ }
+ }
+ }
+ ],
+ "outcome": {
+ "collection": {
+ "data": [
+ {
+ "_id": 0,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
+ "subType": "00"
+ }
+ }
+ ]
+ },
+ {
+ "_id": 1,
+ "encryptedLong": {
+ "$$type": "binData"
+ },
+ "__safeContent__": [
+ {
+ "$binary": {
+ "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
+ "subType": "00"
+ }
+ },
+ {
+ "$binary": {
+ "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
+ "subType": "00"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-WrongType.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-WrongType.json
new file mode 100644
index 00000000000..9eddf1c99c1
--- /dev/null
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Range-WrongType.json
@@ -0,0 +1,162 @@
+{
+ "runOn": [
+ {
+ "minServerVersion": "6.2.0",
+ "topology": [
+ "replicaset",
+ "sharded",
+ "load-balanced"
+ ]
+ }
+ ],
+ "database_name": "default",
+ "collection_name": "default",
+ "data": [],
+ "encrypted_fields": {
+ "escCollection": "enxcol_.default.esc",
+ "eccCollection": "enxcol_.default.ecc",
+ "ecocCollection": "enxcol_.default.ecoc",
+ "fields": [
+ {
+ "keyId": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "path": "encryptedInt",
+ "bsonType": "int",
+ "queries": {
+ "queryType": "rangePreview",
+ "contention": {
+ "$numberLong": "0"
+ },
+ "sparsity": {
+ "$numberLong": "1"
+ },
+ "min": {
+ "$numberInt": "0"
+ },
+ "max": {
+ "$numberInt": "200"
+ }
+ }
+ }
+ ]
+ },
+ "key_vault_data": [
+ {
+ "_id": {
+ "$binary": {
+ "base64": "EjRWeBI0mHYSNBI0VniQEg==",
+ "subType": "04"
+ }
+ },
+ "keyMaterial": {
+ "$binary": {
+ "base64": "sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==",
+ "subType": "00"
+ }
+ },
+ "creationDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "updateDate": {
+ "$date": {
+ "$numberLong": "1648914851981"
+ }
+ },
+ "status": {
+ "$numberInt": "0"
+ },
+ "masterKey": {
+ "provider": "local"
+ }
+ }
+ ],
+ "tests": [
+ {
+ "description": "Wrong type: Insert Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "result": {
+ "errorContains": "cannot encrypt element"
+ }
+ }
+ ]
+ },
+ {
+ "description": "Wrong type: Find Double",
+ "clientOptions": {
+ "autoEncryptOpts": {
+ "kmsProviders": {
+ "local": {
+ "key": {
+ "$binary": {
+ "base64": "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk",
+ "subType": "00"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": [
+ {
+ "name": "insertOne",
+ "arguments": {
+ "document": {
+ "_id": 0,
+ "encryptedInt": {
+ "$numberInt": "0"
+ }
+ }
+ }
+ },
+ {
+ "name": "find",
+ "arguments": {
+ "filter": {
+ "encryptedInt": {
+ "$gte": {
+ "$numberDouble": "0"
+ }
+ }
+ },
+ "sort": {
+ "_id": 1
+ }
+ },
+ "result": {
+ "errorContains": "field type is not supported"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Update.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Update.json
index 87830af32dd..090f44f9acd 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Update.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-Update.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-validatorAndPartialFieldExpression.json b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-validatorAndPartialFieldExpression.json
index fab36f75a1e..e70ca7c72d5 100644
--- a/driver-core/src/test/resources/client-side-encryption/legacy/fle2-validatorAndPartialFieldExpression.json
+++ b/driver-core/src/test/resources/client-side-encryption/legacy/fle2-validatorAndPartialFieldExpression.json
@@ -4,7 +4,8 @@
"minServerVersion": "6.0.0",
"topology": [
"replicaset",
- "sharded"
+ "sharded",
+ "load-balanced"
]
}
],
diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java
index 97551fdf74c..adcfcac6e55 100644
--- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java
+++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java
@@ -19,6 +19,7 @@
import com.mongodb.MongoClientException;
import com.mongodb.MongoException;
import com.mongodb.MongoInternalException;
+import com.mongodb.annotations.Beta;
import com.mongodb.client.model.vault.DataKeyOptions;
import com.mongodb.client.model.vault.EncryptOptions;
import com.mongodb.client.model.vault.RewrapManyDataKeyOptions;
@@ -26,12 +27,11 @@
import com.mongodb.crypt.capi.MongoCryptContext;
import com.mongodb.crypt.capi.MongoCryptException;
import com.mongodb.crypt.capi.MongoDataKeyOptions;
-import com.mongodb.crypt.capi.MongoExplicitEncryptOptions;
import com.mongodb.crypt.capi.MongoKeyDecryptor;
import com.mongodb.crypt.capi.MongoRewrapManyDataKeyOptions;
+import com.mongodb.internal.capi.MongoCryptHelper;
import com.mongodb.internal.diagnostics.logging.Logger;
import com.mongodb.internal.diagnostics.logging.Loggers;
-import com.mongodb.internal.capi.MongoCryptHelper;
import com.mongodb.lang.Nullable;
import com.mongodb.reactivestreams.client.MongoClient;
import org.bson.BsonBinary;
@@ -47,6 +47,7 @@
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.crypt.capi.MongoCryptContext.State;
+import static com.mongodb.internal.client.vault.EncryptOptionsHelper.asMongoExplicitEncryptOptions;
/**
* This class is not part of the public API and may be removed or changed at any time
@@ -170,28 +171,25 @@ public Mono encryptExplicitly(final BsonValue value, final EncryptOp
notNull("value", value);
notNull("options", options);
- return executeStateMachine(() -> {
- MongoExplicitEncryptOptions.Builder encryptOptionsBuilder = MongoExplicitEncryptOptions.builder()
- .algorithm(options.getAlgorithm());
-
- if (options.getKeyId() != null) {
- encryptOptionsBuilder.keyId(options.getKeyId());
- }
-
- if (options.getKeyAltName() != null) {
- encryptOptionsBuilder.keyAltName(options.getKeyAltName());
- }
-
- if (options.getContentionFactor() != null) {
- encryptOptionsBuilder.contentionFactor(options.getContentionFactor());
- }
-
- if (options.getQueryType() != null) {
- encryptOptionsBuilder.queryType(options.getQueryType());
- }
+ return executeStateMachine(() ->
+ mongoCrypt.createExplicitEncryptionContext(new BsonDocument("v", value), asMongoExplicitEncryptOptions(options))
+ ).map(result -> result.getBinary("v"));
+ }
- return mongoCrypt.createExplicitEncryptionContext(new BsonDocument("v", value), encryptOptionsBuilder.build());
- }).map(result -> result.getBinary("v"));
+ /**
+ * Encrypts a Match Expression or Aggregate Expression to query a range index.
+ *
+ * @param expression the Match Expression or Aggregate Expression
+ * @param options the options
+ * @return the encrypted expression
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ */
+ @Beta(Beta.Reason.SERVER)
+ public Mono encryptExpression(final BsonDocument expression, final EncryptOptions options) {
+ return executeStateMachine(() ->
+ mongoCrypt.createEncryptExpressionContext(new BsonDocument("v", expression), asMongoExplicitEncryptOptions(options))
+ ).map(result -> result.getDocument("v"));
}
/**
@@ -245,7 +243,7 @@ private Mono executeStateMachine(final Suppliercreate(sink -> executeStateMachineWithSink(cryptContext, databaseName, sink))
- .doOnError(MongoCryptException.class, this::wrapInClientException)
+ .onErrorMap(this::wrapInClientException)
.doFinally(s -> cryptContext.close());
} catch (MongoCryptException e) {
return Mono.error(wrapInClientException(e));
@@ -365,6 +363,9 @@ private void decryptKeys(final MongoCryptContext cryptContext,
}
private Throwable wrapInClientException(final Throwable t) {
+ if (t instanceof MongoClientException) {
+ return t;
+ }
return new MongoClientException("Exception in encryption library: " + t.getMessage(), t);
}
diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/vault/ClientEncryptionImpl.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/vault/ClientEncryptionImpl.java
index 7d8d15b6300..29c94ef4598 100644
--- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/vault/ClientEncryptionImpl.java
+++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/vault/ClientEncryptionImpl.java
@@ -98,6 +98,11 @@ public Publisher encrypt(final BsonValue value, final EncryptOptions
return crypt.encryptExplicitly(value, options);
}
+ @Override
+ public Publisher encryptExpression(final Bson expression, final EncryptOptions options) {
+ return crypt.encryptExpression(expression.toBsonDocument(BsonDocument.class, collection.getCodecRegistry()), options);
+ }
+
@Override
public Publisher decrypt(final BsonBinary value) {
return crypt.decryptExplicitly(value);
diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java
index 4bea2eeb2e8..b65b9a9c4a9 100644
--- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java
+++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java
@@ -16,6 +16,7 @@
package com.mongodb.reactivestreams.client.vault;
+import com.mongodb.annotations.Beta;
import com.mongodb.client.model.vault.DataKeyOptions;
import com.mongodb.client.model.vault.EncryptOptions;
import com.mongodb.client.model.vault.RewrapManyDataKeyOptions;
@@ -77,6 +78,34 @@ public interface ClientEncryption extends Closeable {
*/
Publisher encrypt(BsonValue value, EncryptOptions options);
+ /**
+ * Encrypts a Match Expression or Aggregate Expression to query a range index.
+ *
+ * The expression is expected to be in one of the following forms:
+ *
+ * A Match Expression of this form:
+ * {@code {$and: [{: {$gt: }}, {: {$lt: }}]}}
+ *
+ * An Aggregate Expression of this form:
+ * {@code {$and: [{$gt: [, ]}, {$lt: [, ]}] }}
+ *
+ *
+ * {@code $gt} may also be {@code $gte}. {@code $lt} may also be {@code $lte}.
+ *
+ * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
+ *
Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
+ *
+ * @param expression the Match Expression or Aggregate Expression
+ * @param options the options
+ * @return a Publisher containing the queryable encrypted range expression
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption
+ * @mongodb.driver.manual reference/operator/aggregation/match/ $match
+ */
+ @Beta(Beta.Reason.SERVER)
+ Publisher encryptExpression(Bson expression, EncryptOptions options);
+
/**
* Decrypt the given value.
*
diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientSideEncryptionRangeExplicitEncryptionTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientSideEncryptionRangeExplicitEncryptionTest.java
new file mode 100644
index 00000000000..bd89cd70ff1
--- /dev/null
+++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientSideEncryptionRangeExplicitEncryptionTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ */
+package com.mongodb.reactivestreams.client;
+
+import com.mongodb.ClientEncryptionSettings;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.client.AbstractClientSideEncryptionRangeExplicitEncryptionTest;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.vault.ClientEncryption;
+import com.mongodb.reactivestreams.client.syncadapter.SyncClientEncryption;
+import com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient;
+import com.mongodb.reactivestreams.client.vault.ClientEncryptions;
+
+public class ClientSideEncryptionRangeExplicitEncryptionTest extends AbstractClientSideEncryptionRangeExplicitEncryptionTest {
+ @Override
+ protected MongoClient createMongoClient(final MongoClientSettings settings) {
+ return new SyncMongoClient(MongoClients.create(settings));
+ }
+
+ @Override
+ protected ClientEncryption createClientEncryption(final ClientEncryptionSettings settings) {
+ return new SyncClientEncryption(ClientEncryptions.create(settings));
+ }
+}
diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientEncryption.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientEncryption.java
index 4ac11ea5585..2e43625599a 100644
--- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientEncryption.java
+++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/syncadapter/SyncClientEncryption.java
@@ -56,6 +56,11 @@ public BsonBinary encrypt(final BsonValue value, final EncryptOptions options) {
return requireNonNull(Mono.from(wrapped.encrypt(value, options)).contextWrite(CONTEXT).block(TIMEOUT_DURATION));
}
+ @Override
+ public BsonDocument encryptExpression(final Bson expression, final EncryptOptions options) {
+ return requireNonNull(Mono.from(wrapped.encryptExpression(expression, options)).contextWrite(CONTEXT).block(TIMEOUT_DURATION));
+ }
+
@Override
public BsonValue decrypt(final BsonBinary value) {
return requireNonNull(Mono.from(wrapped.decrypt(value)).contextWrite(CONTEXT).block(TIMEOUT_DURATION));
diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala
index 55076e4ceb0..bf1f7b1ae5b 100644
--- a/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala
+++ b/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala
@@ -16,8 +16,10 @@
package org.mongodb.scala.model
+import com.mongodb.annotations.Beta
import com.mongodb.client.model.vault.{ DataKeyOptions => JDataKeyOptions }
import com.mongodb.client.model.vault.{ EncryptOptions => JEncryptOptions }
+import com.mongodb.client.model.vault.{ RangeOptions => JRangeOptions }
/**
* This package contains options classes for the key vault API
@@ -53,4 +55,16 @@ package object vault {
def apply(algorithm: String): EncryptOptions = new JEncryptOptions(algorithm)
}
+ /**
+ * Range options specifies index options for a Queryable Encryption field supporting "rangePreview" queries.
+ *
+ * @since 4.9
+ */
+ @Beta(Array(Beta.Reason.SERVER))
+ type RangeOptions = JRangeOptions
+
+ object RangeOptions {
+ def apply(): RangeOptions = new JRangeOptions()
+ }
+
}
diff --git a/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala b/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala
index f0a8ef5af17..637ac2103fe 100644
--- a/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala
+++ b/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala
@@ -16,11 +16,12 @@
package org.mongodb.scala.vault
-import java.io.Closeable
+import com.mongodb.annotations.Beta
+import java.io.Closeable
import com.mongodb.reactivestreams.client.vault.{ ClientEncryption => JClientEncryption }
import org.bson.{ BsonBinary, BsonValue }
-import org.mongodb.scala.SingleObservable
+import org.mongodb.scala.{ Document, SingleObservable, ToSingleObservablePublisher }
import org.mongodb.scala.model.vault.{ DataKeyOptions, EncryptOptions }
/**
@@ -65,6 +66,35 @@ case class ClientEncryption(private val wrapped: JClientEncryption) extends Clos
def encrypt(value: BsonValue, options: EncryptOptions): SingleObservable[BsonBinary] =
wrapped.encrypt(value, options)
+ /**
+ * Encrypts a Match Expression or Aggregate Expression to query a range index.
+ *
+ * The expression is expected to be in one of the following forms:
+ *
+ * - A Match Expression of this form:
+ * {{{ {$and: [{: {$gt: }}, {: {$lt: }}]}} }}}
+ * - An Aggregate Expression of this form:
+ * {{{ {$and: [{$gt: [, ]}, {$lt: [, ]}] }} }}}
+ *
+ * `$gt` may also be `$gte`. `$lt` may also be `$lte`.
+ *
+ * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
+ * **Note:** The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
+ *
+ * [[https://www.mongodb.com/docs/manual/core/queryable-encryption/ queryable encryption]]
+ *
+ * @note Requires MongoDB 6.2 or greater
+ * @param expression the Match Expression or Aggregate Expression
+ * @param options the options
+ * @return a Publisher containing the queryable encrypted range expression
+ * @since 4.9
+ */
+ @Beta(Array(Beta.Reason.SERVER)) def encryptExpression(
+ expression: Document,
+ options: EncryptOptions
+ ): SingleObservable[Document] =
+ wrapped.encryptExpression(expression.toBsonDocument, options).map(d => Document(d))
+
/**
* Decrypt the given value.
*
diff --git a/driver-scala/src/test/scala/org/mongodb/scala/model/vault/ClientEncryptionSpec.scala b/driver-scala/src/test/scala/org/mongodb/scala/model/vault/ClientEncryptionSpec.scala
index 03a11618807..dd3ecb8c7c2 100644
--- a/driver-scala/src/test/scala/org/mongodb/scala/model/vault/ClientEncryptionSpec.scala
+++ b/driver-scala/src/test/scala/org/mongodb/scala/model/vault/ClientEncryptionSpec.scala
@@ -16,16 +16,17 @@
package org.mongodb.scala.model.vault
-import java.lang.reflect.Modifier.{ isPublic, isStatic }
-
import com.mongodb.reactivestreams.client.vault.{ ClientEncryption => JClientEncryption }
import org.mockito.ArgumentMatchers.{ any, same }
import org.mockito.Mockito.verify
import org.mongodb.scala.BaseSpec
+import org.mongodb.scala.bson.collection.immutable.Document
import org.mongodb.scala.bson.{ BsonBinary, BsonString }
import org.mongodb.scala.vault.ClientEncryption
import org.scalatestplus.mockito.MockitoSugar
+import java.lang.reflect.Modifier.{ isPublic, isStatic }
+
class ClientEncryptionSpec extends BaseSpec with MockitoSugar {
val wrapped = mock[JClientEncryption]
@@ -64,6 +65,14 @@ class ClientEncryptionSpec extends BaseSpec with MockitoSugar {
verify(wrapped).encrypt(bsonValue, options)
}
+ it should "call encrypt Expression" in {
+ val bsonDocument = Document()
+ val options = EncryptOptions("algorithm").rangeOptions(RangeOptions())
+ clientEncryption.encryptExpression(bsonDocument, options)
+
+ verify(wrapped).encryptExpression(bsonDocument.toBsonDocument, options)
+ }
+
it should "call decrypt" in {
val bsonBinary = BsonBinary(Array[Byte](1, 2, 3))
clientEncryption.decrypt(bsonBinary)
diff --git a/driver-sync/src/main/com/mongodb/client/internal/ClientEncryptionImpl.java b/driver-sync/src/main/com/mongodb/client/internal/ClientEncryptionImpl.java
index 76684f5cbc0..48058389e20 100644
--- a/driver-sync/src/main/com/mongodb/client/internal/ClientEncryptionImpl.java
+++ b/driver-sync/src/main/com/mongodb/client/internal/ClientEncryptionImpl.java
@@ -88,6 +88,11 @@ public BsonBinary encrypt(final BsonValue value, final EncryptOptions options) {
return crypt.encryptExplicitly(value, options);
}
+ @Override
+ public BsonDocument encryptExpression(final Bson expression, final EncryptOptions options) {
+ return crypt.encryptExpression(expression.toBsonDocument(BsonDocument.class, collection.getCodecRegistry()), options);
+ }
+
@Override
public BsonValue decrypt(final BsonBinary value) {
return crypt.decryptExplicitly(value);
diff --git a/driver-sync/src/main/com/mongodb/client/internal/Crypt.java b/driver-sync/src/main/com/mongodb/client/internal/Crypt.java
index 15554ea9e2d..21d1e281ceb 100644
--- a/driver-sync/src/main/com/mongodb/client/internal/Crypt.java
+++ b/driver-sync/src/main/com/mongodb/client/internal/Crypt.java
@@ -19,6 +19,7 @@
import com.mongodb.MongoClientException;
import com.mongodb.MongoException;
import com.mongodb.MongoInternalException;
+import com.mongodb.annotations.Beta;
import com.mongodb.client.MongoClient;
import com.mongodb.client.model.vault.DataKeyOptions;
import com.mongodb.client.model.vault.EncryptOptions;
@@ -27,7 +28,6 @@
import com.mongodb.crypt.capi.MongoCryptContext;
import com.mongodb.crypt.capi.MongoCryptException;
import com.mongodb.crypt.capi.MongoDataKeyOptions;
-import com.mongodb.crypt.capi.MongoExplicitEncryptOptions;
import com.mongodb.crypt.capi.MongoKeyDecryptor;
import com.mongodb.crypt.capi.MongoRewrapManyDataKeyOptions;
import com.mongodb.internal.capi.MongoCryptHelper;
@@ -47,6 +47,7 @@
import static com.mongodb.assertions.Assertions.assertNotNull;
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.crypt.capi.MongoCryptContext.State;
+import static com.mongodb.internal.client.vault.EncryptOptionsHelper.asMongoExplicitEncryptOptions;
/**
* This class is not part of the public API and may be removed or changed at any time
@@ -187,30 +188,29 @@ BsonBinary encryptExplicitly(final BsonValue value, final EncryptOptions options
notNull("value", value);
notNull("options", options);
- try {
- MongoExplicitEncryptOptions.Builder encryptOptionsBuilder = MongoExplicitEncryptOptions.builder()
- .algorithm(options.getAlgorithm());
-
- if (options.getKeyId() != null) {
- encryptOptionsBuilder.keyId(options.getKeyId());
- }
-
- if (options.getKeyAltName() != null) {
- encryptOptionsBuilder.keyAltName(options.getKeyAltName());
- }
-
- if (options.getContentionFactor() != null) {
- encryptOptionsBuilder.contentionFactor(options.getContentionFactor());
- }
+ try (MongoCryptContext encryptionContext = mongoCrypt.createExplicitEncryptionContext(
+ new BsonDocument("v", value), asMongoExplicitEncryptOptions(options))) {
+ return executeStateMachine(encryptionContext, null).getBinary("v");
+ } catch (MongoCryptException e) {
+ throw wrapInClientException(e);
+ }
+ }
- if (options.getQueryType() != null) {
- encryptOptionsBuilder.queryType(options.getQueryType());
- }
+ /**
+ * Encrypts a Match Expression or Aggregate Expression to query a range index.
+ *
+ * @param expression the Match Expression or Aggregate Expression
+ * @param options the options
+ * @return the encrypted expression
+ */
+ @Beta(Beta.Reason.SERVER)
+ BsonDocument encryptExpression(final BsonDocument expression, final EncryptOptions options) {
+ notNull("expression", expression);
+ notNull("options", options);
- try (MongoCryptContext encryptionContext = mongoCrypt.createExplicitEncryptionContext(
- new BsonDocument("v", value), encryptOptionsBuilder.build())) {
- return executeStateMachine(encryptionContext, null).getBinary("v");
- }
+ try (MongoCryptContext encryptionContext = mongoCrypt.createEncryptExpressionContext(
+ new BsonDocument("v", expression), asMongoExplicitEncryptOptions(options))) {
+ return executeStateMachine(encryptionContext, null).getDocument("v");
} catch (MongoCryptException e) {
throw wrapInClientException(e);
}
diff --git a/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java b/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java
index 4f27617d451..822ff83fbac 100644
--- a/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java
+++ b/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java
@@ -16,6 +16,7 @@
package com.mongodb.client.vault;
+import com.mongodb.annotations.Beta;
import com.mongodb.client.FindIterable;
import com.mongodb.client.model.vault.DataKeyOptions;
import com.mongodb.client.model.vault.EncryptOptions;
@@ -77,6 +78,34 @@ public interface ClientEncryption extends Closeable {
*/
BsonBinary encrypt(BsonValue value, EncryptOptions options);
+ /**
+ * Encrypts a Match Expression or Aggregate Expression to query a range index.
+ *
+ * The expression is expected to be in one of the following forms:
+ *
+ * A Match Expression of this form:
+ * {@code {$and: [{: {$gt: }}, {: {$lt: }}]}}
+ *
+ * An Aggregate Expression of this form:
+ * {@code {$and: [{$gt: [, ]}, {$lt: [, ]}] }}
+ *
+ *
+ * {@code $gt} may also be {@code $gte}. {@code $lt} may also be {@code $lte}.
+ *
+ * Only supported when queryType is "rangePreview" and algorithm is "RangePreview".
+ *
Note: The Range algorithm is experimental only. It is not intended for public use. It is subject to breaking changes.
+ *
+ * @param expression the Match Expression or Aggregate Expression
+ * @param options the options
+ * @return the encrypted queryable range expression
+ * @since 4.9
+ * @mongodb.server.release 6.2
+ * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption
+ * @mongodb.driver.manual reference/operator/aggregation/match/ $match
+ */
+ @Beta(Beta.Reason.SERVER)
+ BsonDocument encryptExpression(Bson expression, EncryptOptions options);
+
/**
* Decrypt the given value.
*
diff --git a/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionRangeExplicitEncryptionTest.java b/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionRangeExplicitEncryptionTest.java
new file mode 100644
index 00000000000..efd630fabbb
--- /dev/null
+++ b/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionRangeExplicitEncryptionTest.java
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ */
+
+package com.mongodb.client;
+
+import com.mongodb.AutoEncryptionSettings;
+import com.mongodb.ClientEncryptionSettings;
+import com.mongodb.MongoClientException;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.MongoNamespace;
+import com.mongodb.WriteConcern;
+import com.mongodb.client.model.CreateCollectionOptions;
+import com.mongodb.client.model.DropCollectionOptions;
+import com.mongodb.client.model.Filters;
+import com.mongodb.client.model.Projections;
+import com.mongodb.client.model.Sorts;
+import com.mongodb.client.model.vault.EncryptOptions;
+import com.mongodb.client.model.vault.RangeOptions;
+import com.mongodb.client.vault.ClientEncryption;
+import com.mongodb.test.AfterBeforeParameterResolver;
+import org.bson.BsonArray;
+import org.bson.BsonBinary;
+import org.bson.BsonDateTime;
+import org.bson.BsonDecimal128;
+import org.bson.BsonDocument;
+import org.bson.BsonDouble;
+import org.bson.BsonInt32;
+import org.bson.BsonInt64;
+import org.bson.BsonString;
+import org.bson.BsonValue;
+import org.bson.types.Decimal128;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.mongodb.ClusterFixture.isServerlessTest;
+import static com.mongodb.ClusterFixture.isStandalone;
+import static com.mongodb.ClusterFixture.serverVersionAtLeast;
+import static com.mongodb.client.Fixture.getDefaultDatabase;
+import static com.mongodb.client.Fixture.getDefaultDatabaseName;
+import static com.mongodb.client.Fixture.getMongoClient;
+import static com.mongodb.client.Fixture.getMongoClientSettings;
+import static com.mongodb.client.Fixture.getMongoClientSettingsBuilder;
+import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertIterableEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeFalse;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
+import static util.JsonPoweredTestHelper.getTestDocument;
+
+
+@ExtendWith(AfterBeforeParameterResolver.class)
+public abstract class AbstractClientSideEncryptionRangeExplicitEncryptionTest {
+ private MongoClient encryptedClient;
+ private ClientEncryption clientEncryption;
+ private BsonBinary key1Id;
+ private EncryptOptions encryptOptions;
+ private EncryptOptions encryptQueryOptions;
+ private String encryptedField;
+ private MongoCollection encryptedColl;
+ protected abstract MongoClient createMongoClient(MongoClientSettings settings);
+
+ protected abstract ClientEncryption createClientEncryption(ClientEncryptionSettings settings);
+
+ @BeforeEach
+ public void setUp(final Type type) {
+ assumeTrue(serverVersionAtLeast(6, 2));
+ assumeFalse(isStandalone());
+ assumeFalse(isServerlessTest());
+
+ MongoNamespace dataKeysNamespace = new MongoNamespace("keyvault.datakeys");
+ BsonDocument encryptedFields = bsonDocumentFromPath("range-encryptedFields-" + type.value + ".json");
+ BsonDocument key1Document = bsonDocumentFromPath("keys/key1-document.json");
+ key1Id = key1Document.getBinary("_id");
+
+ MongoDatabase explicitEncryptionDatabase = getDefaultDatabase();
+ explicitEncryptionDatabase.getCollection("explicit_encryption")
+ .drop(new DropCollectionOptions().encryptedFields(encryptedFields));
+ explicitEncryptionDatabase.createCollection("explicit_encryption",
+ new CreateCollectionOptions().encryptedFields(encryptedFields));
+
+ MongoCollection dataKeysCollection = getMongoClient()
+ .getDatabase(dataKeysNamespace.getDatabaseName())
+ .getCollection(dataKeysNamespace.getCollectionName(), BsonDocument.class)
+ .withWriteConcern(WriteConcern.MAJORITY);
+
+ dataKeysCollection.drop();
+ dataKeysCollection.insertOne(key1Document);
+
+ Map> kmsProviders = new HashMap<>();
+ Map localProviderMap = new HashMap<>();
+ localProviderMap.put("key",
+ Base64.getDecoder().decode(
+ "Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZ"
+ + "GJkTXVyZG9uSjFk"));
+ kmsProviders.put("local", localProviderMap);
+
+ clientEncryption = createClientEncryption(ClientEncryptionSettings.builder()
+ .keyVaultMongoClientSettings(getMongoClientSettings())
+ .keyVaultNamespace(dataKeysNamespace.getFullName())
+ .kmsProviders(kmsProviders)
+ .build());
+
+ encryptedClient = createMongoClient(getMongoClientSettingsBuilder()
+ .autoEncryptionSettings(
+ AutoEncryptionSettings.builder()
+ .keyVaultNamespace(dataKeysNamespace.getFullName())
+ .kmsProviders(kmsProviders)
+ .bypassQueryAnalysis(true)
+ .build())
+ .build());
+
+ encryptOptions = new EncryptOptions("RangePreview")
+ .keyId(key1Id)
+ .contentionFactor(0L)
+ .rangeOptions(type.getRangeOptions());
+
+ BsonBinary encryptedValue0 = clientEncryption.encrypt(type.convertNumber(0), encryptOptions);
+ BsonBinary encryptedValue6 = clientEncryption.encrypt(type.convertNumber(6), encryptOptions);
+ BsonBinary encryptedValue30 = clientEncryption.encrypt(type.convertNumber(30), encryptOptions);
+ BsonBinary encryptedValue200 = clientEncryption.encrypt(type.convertNumber(200), encryptOptions);
+
+ encryptQueryOptions = new EncryptOptions("RangePreview")
+ .keyId(key1Id)
+ .queryType("rangePreview")
+ .contentionFactor(0L)
+ .rangeOptions(type.getRangeOptions());
+
+ encryptedColl = encryptedClient.getDatabase(getDefaultDatabaseName())
+ .getCollection("explicit_encryption", BsonDocument.class);
+
+ encryptedField = "encrypted" + type.value;
+ encryptedColl.insertOne(new BsonDocument("_id", new BsonInt32(0)).append(encryptedField, encryptedValue0));
+ encryptedColl.insertOne(new BsonDocument("_id", new BsonInt32(1)).append(encryptedField, encryptedValue6));
+ encryptedColl.insertOne(new BsonDocument("_id", new BsonInt32(2)).append(encryptedField, encryptedValue30));
+ encryptedColl.insertOne(new BsonDocument("_id", new BsonInt32(3)).append(encryptedField, encryptedValue200));
+ }
+
+
+ @AfterEach
+ @SuppressWarnings("try")
+ public void cleanUp() {
+ //noinspection EmptyTryBlock
+ try (ClientEncryption ignored = clientEncryption;
+ MongoClient ignored1 = encryptedClient
+ ) {
+ // just using try-with-resources to ensure they all get closed, even in the case of exceptions
+ }
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 1: can decrypt a payload")
+ @EnumSource(Type.class)
+ void testCanDecryptAPayload(final Type type) {
+ BsonValue originalValue = type.convertNumber(6);
+ BsonBinary insertPayload = clientEncryption.encrypt(originalValue, encryptOptions);
+
+ BsonValue decryptedValue = clientEncryption.decrypt(insertPayload);
+
+ assertEquals(originalValue, decryptedValue);
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 2: can find encrypted range and return the maximum")
+ @EnumSource(Type.class)
+ void testCanFindEncryptedRangeAndReturnTheMaximum(final Type type) {
+ BsonDocument expression = Filters.and(
+ Filters.gte(encryptedField, type.convertNumber(6)),
+ Filters.lte(encryptedField, type.convertNumber(200))).toBsonDocument();
+
+ BsonDocument findPayload = clientEncryption.encryptExpression(expression, encryptQueryOptions);
+
+ List expected = asList(
+ new BsonDocument(encryptedField, type.convertNumber(6)),
+ new BsonDocument(encryptedField, type.convertNumber(30)),
+ new BsonDocument(encryptedField, type.convertNumber(200)));
+
+ List actual = encryptedColl.find(findPayload)
+ .projection(Projections.fields(Projections.excludeId(), Projections.include(encryptedField)))
+ .sort(Sorts.ascending("_id"))
+ .into(new ArrayList<>());
+
+ assertIterableEquals(expected, actual);
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 3: can find encrypted range and return the minimum")
+ @EnumSource(Type.class)
+ void testCanFindEncryptedRangeAndReturnTheMinimum(final Type type) {
+ BsonDocument expression = Filters.and(
+ Filters.gte(encryptedField, type.convertNumber(0)),
+ Filters.lte(encryptedField, type.convertNumber(6))).toBsonDocument();
+
+ BsonDocument findPayload = clientEncryption.encryptExpression(expression, encryptQueryOptions);
+
+ List expected = asList(
+ new BsonDocument(encryptedField, type.convertNumber(0)),
+ new BsonDocument(encryptedField, type.convertNumber(6)));
+
+ List actual = encryptedColl.find(findPayload)
+ .projection(Projections.fields(Projections.excludeId(), Projections.include(encryptedField)))
+ .sort(Sorts.ascending("_id"))
+ .into(new ArrayList<>());
+
+ assertIterableEquals(expected, actual);
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 4: can find encrypted range with an open range query")
+ @EnumSource(Type.class)
+ void testCanFindEncryptedRangeWithAnOpenRangeQuery(final Type type) {
+ BsonDocument expression = Filters.and(
+ Filters.gt(encryptedField, type.convertNumber(30))).toBsonDocument();
+
+ BsonDocument findPayload = clientEncryption.encryptExpression(expression, encryptQueryOptions);
+
+ List expected = singletonList(new BsonDocument(encryptedField, type.convertNumber(200)));
+
+ List actual = encryptedColl.find(findPayload)
+ .projection(Projections.fields(Projections.excludeId(), Projections.include(encryptedField)))
+ .sort(Sorts.ascending("_id"))
+ .into(new ArrayList<>());
+
+ assertIterableEquals(expected, actual);
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 5: can run an aggregation expression inside $expr")
+ @EnumSource(Type.class)
+ void testCanRunAnAggregationExpressionInsideExpr(final Type type) {
+ BsonDocument expression = new BsonDocument("$and",
+ new BsonArray(singletonList(new BsonDocument("$lt",
+ new BsonArray(asList(new BsonString("$" + encryptedField), type.convertNumber(30)))))));
+
+ BsonDocument findPayload = clientEncryption.encryptExpression(expression, encryptQueryOptions);
+
+ List expected = asList(
+ new BsonDocument(encryptedField, type.convertNumber(0)),
+ new BsonDocument(encryptedField, type.convertNumber(6)));
+
+ List actual = encryptedColl.find(new BsonDocument("$expr", findPayload))
+ .projection(Projections.fields(Projections.excludeId(), Projections.include(encryptedField)))
+ .sort(Sorts.ascending("_id"))
+ .into(new ArrayList<>());
+
+ assertIterableEquals(expected, actual);
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 6: encrypting a document greater than the maximum errors")
+ @EnumSource(value = Type.class, mode = EnumSource.Mode.EXCLUDE, names = { "DECIMAL_NO_PRECISION", "DOUBLE_NO_PRECISION" })
+ void testEncryptingADocumentGreaterThanTheMaximumErrors(final Type type) {
+ BsonValue originalValue = type.convertNumber(201);
+
+ assertThrows(MongoClientException.class, () -> clientEncryption.encrypt(originalValue, encryptOptions));
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 7: encrypting a document of a different type errors")
+ @EnumSource(value = Type.class, mode = EnumSource.Mode.EXCLUDE, names = { "DECIMAL_NO_PRECISION", "DOUBLE_NO_PRECISION" })
+ void testEncryptingADocumentOfADifferentTypeErrors(final Type type) {
+ BsonValue originalValue = type == Type.INT ? new BsonDouble(6) : new BsonInt32(6);
+
+ assertThrows(MongoClientException.class, () -> clientEncryption.encrypt(originalValue, encryptOptions));
+ }
+
+ @ParameterizedTest(name = "[{0}] Case 8: setting precision errors if the type is not a double")
+ @EnumSource(value = Type.class, mode = EnumSource.Mode.EXCLUDE,
+ names = {"DECIMAL_PRECISION", "DECIMAL_NO_PRECISION", "DOUBLE_PRECISION", "DOUBLE_NO_PRECISION" })
+ void testSettingPrecisionErrorsIfTheTypeIsNotADouble(final Type type) {
+ BsonValue originalValue = type == Type.INT ? new BsonDouble(6) : new BsonInt32(6);
+
+ EncryptOptions precisionEncryptOptions = new EncryptOptions("RangePreview")
+ .keyId(key1Id)
+ .contentionFactor(0L)
+ .rangeOptions(type.getRangeOptions().precision(2));
+
+ assertThrows(MongoClientException.class, () -> clientEncryption.encrypt(originalValue, precisionEncryptOptions));
+ }
+
+ enum Type {
+ DECIMAL_PRECISION("DecimalPrecision"),
+ DECIMAL_NO_PRECISION("DecimalNoPrecision"),
+ DOUBLE_PRECISION("DoublePrecision"),
+ DOUBLE_NO_PRECISION("DoubleNoPrecision"),
+ DATE("Date"),
+ INT("Int"),
+ LONG("Long");
+ private final String value;
+ Type(final String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ RangeOptions getRangeOptions() {
+ RangeOptions rangeOptions = new RangeOptions().sparsity(1L);
+ switch (this) {
+ case DECIMAL_NO_PRECISION:
+ case DOUBLE_NO_PRECISION:
+ return rangeOptions;
+ case DECIMAL_PRECISION:
+ return rangeOptions.precision(2)
+ .min(new BsonDecimal128(Decimal128.parse("0")))
+ .max(new BsonDecimal128(Decimal128.parse("200")));
+ case DOUBLE_PRECISION:
+ return rangeOptions.precision(2).min(new BsonDouble(0)).max(new BsonDouble(200));
+ case DATE:
+ return rangeOptions.min(new BsonDateTime(0)).max(new BsonDateTime(200));
+ case INT:
+ return rangeOptions.min(new BsonInt32(0)).max(new BsonInt32(200));
+ case LONG:
+ return rangeOptions.min(new BsonInt64(0)).max(new BsonInt64(200));
+ default:
+ throw new UnsupportedOperationException("Unsupported Type " + this);
+ }
+ }
+
+ BsonValue convertNumber(final int number) {
+ switch (this) {
+ case DECIMAL_PRECISION:
+ case DECIMAL_NO_PRECISION:
+ return new BsonDecimal128(new Decimal128(number));
+ case DOUBLE_PRECISION:
+ case DOUBLE_NO_PRECISION:
+ return new BsonDouble(number);
+ case DATE:
+ return new BsonDateTime(number);
+ case INT:
+ return new BsonInt32(number);
+ case LONG:
+ return new BsonInt64(number);
+ default:
+ throw new UnsupportedOperationException("Unsupported Type " + this);
+ }
+ }
+ }
+
+ private static BsonDocument bsonDocumentFromPath(final String path) {
+ try {
+ return getTestDocument(new File(AbstractClientSideEncryptionRangeExplicitEncryptionTest.class
+ .getResource("/client-side-encryption-data/" + path).toURI()));
+ } catch (Exception e) {
+ fail("Unable to load resource", e);
+ return null;
+ }
+ }
+
+}
diff --git a/driver-sync/src/test/functional/com/mongodb/client/ClientSideEncryptionRangeExplicitEncryptionTest.java b/driver-sync/src/test/functional/com/mongodb/client/ClientSideEncryptionRangeExplicitEncryptionTest.java
new file mode 100644
index 00000000000..14c0080fd9f
--- /dev/null
+++ b/driver-sync/src/test/functional/com/mongodb/client/ClientSideEncryptionRangeExplicitEncryptionTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2008-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ */
+package com.mongodb.client;
+
+import com.mongodb.ClientEncryptionSettings;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.client.vault.ClientEncryption;
+import com.mongodb.client.vault.ClientEncryptions;
+
+public class ClientSideEncryptionRangeExplicitEncryptionTest extends AbstractClientSideEncryptionRangeExplicitEncryptionTest {
+
+ @Override
+ protected MongoClient createMongoClient(final MongoClientSettings settings) {
+ return MongoClients.create(settings);
+ }
+
+ @Override
+ protected ClientEncryption createClientEncryption(final ClientEncryptionSettings settings) {
+ return ClientEncryptions.create(settings);
+ }
+}