1. save trained model
# in module file of tfx component trainer
def _apply_preprocessing(raw_features, tft_layer):
transformed_features = tft_layer(raw_features)
if _LABEL_KEY in raw_features:
transformed_label = transformed_features.pop(_LABEL_KEY)
return transformed_features, transformed_label
else:
return transformed_features, None
### return a function which makes inference on raw features,
### it will be specified as signature of model.save().
def _get_serve_tf_examples_fn(model, tf_transform_output):
model.tft_layer = tf_transform_output.transform_features_layer()
### name should be "instances", which is inputs key of
### tensorflow/serving/predict.
@tf.function(input_signature=[
tf.TensorSpec(shape=[None], dtype=tf.string, name='instances')
])
def serve_tf_examples_fn(serialized_tf_examples):
feature_spec = tf_transform_output.raw_feature_spec()
required_feature_spec = {
k: v for k, v in feature_spec.items() if k in _FEATURE_KEYS
}
parsed_features = tf.io.parse_example(serialized_tf_examples,
required_feature_spec)
transformed_features, _ = _apply_preprocessing(parsed_features,
model.tft_layer)
return model(transformed_features)
return serve_tf_examples_fn
def _build_keras_model() -> tf.keras.Model:
_METRICS = [
keras.metrics.BinaryCrossentropy(name='cross entropy'),
keras.metrics.TruePositives(name='tp'),
keras.metrics.FalsePositives(name='fp'),
keras.metrics.TrueNegatives(name='tn'),
keras.metrics.FalseNegatives(name='fn'),
keras.metrics.Precision(name='precision'),
keras.metrics.Recall(name='recall'),
keras.metrics.AUC(name='auc'),
keras.metrics.AUC(name='prc', curve='PR'),
]
inputs = [
keras.layers.Input(shape=(1,), name=key)
for key in _FEATURE_KEYS
]
d = keras.layers.concatenate(inputs)
for _ in range(2):
d = keras.layers.Dense(16, activation='tanh',
kernel_regularizer=keras.regularizers.l2(1e-5))(d)
outputs = keras.layers.Dense(1, activation='sigmoid')(d)
model = keras.Model(inputs=inputs, outputs=outputs)
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
1e-3,
decay_steps=_STEPS_PER_EPOCH*1000,
decay_rate=1,
staircase=False,
)
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=lr_schedule),
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=_METRICS
)
model.summary(print_fn=logging.info)
return model
def run_fn(fn_args: tfx.components.FnArgs):
"""
cluster_dict = {}
#cluster_dict["worker"] = ["dist-strat-example-worker-0:5000", "dist-strat-example-worker-1:5000"]
#cluster_dict["ps"] = ["dist-strat-example-ps-0:5000"]
cluster_dict["worker"] = ["10.105.206.29:5000", "10.102.137.138:5000"]
cluster_dict["ps"] = ["10.105.27.97:5000"]
cluster_spec = tf.train.ClusterSpec(cluster_dict)
cluster_resolver = tf.distribute.cluster_resolver.SimpleClusterResolver(
cluster_spec, rpc_layer="grpc")
strategy = tf.distribute.ParameterServerStrategy(
cluster_resolver,)
"""
tf_transform_output = tft.TFTransformOutput(fn_args.transform_output)
train_dataset = _input_fn(
fn_args.train_files,
fn_args.data_accessor,
tf_transform_output,
batch_size=_TRAIN_BATCH_SIZE,
)
resampled_train_dataset = _resample_train_dataset(train_dataset,
batch_size=_TRAIN_BATCH_SIZE)
#tf.print(f"resampled_train_dataset {resampled_train_dataset.cardinality()}")
val_dataset = _input_fn(
fn_args.eval_files,
fn_args.data_accessor,
tf_transform_output,
batch_size=_EVAL_BATCH_SIZE,
)
val_dataset = val_dataset.repeat()
#tf.print(f"val_dataset cardinality: {val_dataset.cardinality()}")
#with strategy.scope():
# model = _build_keras_model()
model = _build_keras_model()
#log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
#tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir,)
backup_dir = os.path.join("/home/maye/maye_temp", "backup")
callbacks = [
tf.keras.callbacks.BackupAndRestore(backup_dir=backup_dir),
]
trainer_train_history = model.fit(
resampled_train_dataset,
epochs=fn_args.custom_config['epochs'],
steps_per_epoch=fn_args.train_steps,
validation_data=val_dataset,
validation_steps=3,
callbacks=callbacks,
)
#tf.print(f"train_history: \n {train_history.history}")
with open('trainer_train_history.json', 'w') as f:
json.dump(trainer_train_history.history, f)
### argument signatures of model.save() specify the functions
### tensorflow/serving will use.
signatures = {
'serving_default': _get_serve_tf_examples_fn(model, tf_transform_output),
}
"""
fn.args.serving_model_dir of tfx component trainer is os.path.join(<uri-of-artifact-model-of-trainer>, "Format-Serving"), which can not be changed, or other tfx components can not find artifact model.
"""
model.save(fn_args.serving_model_dir, save_format='tf', signatures=signatures)
This creates
SignatureDef: {
value: {
inputs {
key: "instances"
value {
name: "serving_default_examples:0"
dtype: DT_STRING
tensor_shape {
dim {
size: -1
}
}
}
}
method_name: "tensorflow/serving/predict"
}
}
Note:
- Signature specifies what type of model is being exported, and the input/output tensors to bind to when running inference.
The special signature key serving_default specifies the default serving signature. The default serving signature def key, along with other constants related to signatures, are defined as part of SavedModel signature constants.
[1]
2.The saved model has attribute "signatures", which can be called:
wafer_serving_model = tf.keras.models.load_model("/home/maye/maye_temp/wafer/347")
csv_example_train_filepath = 'pipelines/detect_anomolies_on_wafer_tfdv_schema/train_eval_data/train_data'
raw_dataset = tf.data.TFRecordDataset(csv_example_train_filepath)
### example is serialized tf.Example, namely bytes,
### tf.Example is protobuf.
for example in raw_dataset.take(1):
example_infer = wafer_serving_model.signatures['serving_default'](instances=[example.numpy()]
for raw_record in raw_dataset.take(3):
example = tf.train.Example()
example.ParseFromString(raw_record.numpy())
print(example)
### This is tf.Example protobuf, one "features" = one example.
features {
feature {
key: "Class"
value {
int64_list {
value: 0
}
}
}
feature {
key: "feature_1"
value {
int64_list {
value: 40
}
}
}
feature {
key: "feature_10"
value {
int64_list {
value: 0
}
}
}
...
}
2.u
Note:
- When there is only one named input for signature function, specify the value of instances key to be the value of the input:
References:
for example in raw_dataset.take(1):
#print(example.numpy())
#example_base64 = base64.b64encode(example.numpy())
#print(example_base64)
#pay_load = {"instances": [{"b64": example_base64}]}
headers = {"Content-Type": "application/json"}
#print(f"pay_load: {pay_load}")
pay_load = {"instances": [{"b64": "CruPAgoUCgtmZWF0dXJlXzUxNhIFGgMKAQAKFQoMZmVhdHVyZV8xMzY5EgUaAwoBAAoUCgtmZWF0dXJlXzgyOBIFGgMKAQAKFAoLZmVhdHVyZV8yOTESBRoDCgEAChUKDGZlYXR1cmVfMTQ2MhIFGgMKAQAKFAoLZmVhdHVyZV85MDESBRoDCgEAChUKDGZlYXR1cmVfMTA5NRIFGgMKAQAKFAoLZmVhdHVyZV8zMjgSBRoDCgEAChUKDGZlYXR1cmVfMTIxNhIFGgMKAQAKFAoLZmVhdHVyZV85MjYSBRoDCgEAChQKC2ZlYXR1cmVfMTU2EgUaAwoBAAoUCgtmZWF0dXJlXzU3OBIFGgMKAQAKFAoLZmVhdHVyZV82NzUSBRoDCgEAChMKCmZlYXR1cmVfNDMSBRoDCgEAChUKDGZlYXR1cmVfMTMzMxIFGgMKAQAKFQoMZmVhdHVyZV8xMTE0EgUaAwoBAAoUCgtmZWF0dXJlXzY5MxIFGgMKAQAKFAoLZmVhdHVyZV83MjESBRoDCgEAChUKDGZlYXR1cmVfMTMyMxIFGgMKAQAKFQoMZmVhdHVyZV8xMzA0EgUaAwoBAAoVCgxmZWF0dXJlXzEyMjESBRoDCgEAChQKC2ZlYXR1cmVfNDcyEgUaAwoBAAoUCgtmZWF0dXJlXzY0MxIFGgMKAQAKFQoMZmVhdHVyZV8xMzc5EgUaAwoBAAoVCgxmZWF0dXJlXzE0MDASBRoDCgEAChQKC2ZlYXR1cmVfMTc0EgUaAwoBAAoUCgtmZWF0dXJlXzMxMBIFGgMKAQAKFQoMZmVhdHVyZV8xMzQ2EgUaAwoBAAoUCgtmZWF0dXJlXzIzMhIFGgMKAQAKFAoLZmVhdHVyZV8xNTcSBRoDCgEAChQKC2ZlYXR1cmVfNjEzEgUaAwoBAAoUCgtmZWF0dXJlXzI0NxIFGgMKAQAKFAoLZmVhdHVyZV82NzgSBRoDCgEAChUKDGZlYXR1cmVfMTA4NxIFGgMKAQAKFAoLZmVhdHVyZV83NTYSBRoDCgEAChUKDGZlYXR1cmVfMTQ4MhIFGgMKAQAKFQoMZmVhdHVyZV8xNDAxEgUaAwoBAAoUCgtmZWF0dXJlXzM3MRIFGgMKAQAKFAoLZmVhdHVyZV80NTMSBRoDCgEAChQKC2ZlYXR1cmVfNzA2EgUaAwoBAAoUCgtmZWF0dXJlXzU0MBIFGgMKAQAKFAoLZmVhdHVyZV81MTQSBRoDCgEAChQKC2ZlYXR1cmVfMzMyEgUaAwoBAAoUCgtmZWF0dXJlXzYzMRIFGgMKAQAKFAoLZmVhdHVyZV80MzQSBRoDCgEAChMKCmZlYXR1cmVfMTESBRoDCgEAChMKCmZlYXR1cmVfODcSBRoDCgEAChQKC2ZlYXR1cmVfNTQ2EgUaAwoBAAoVCgxmZWF0dXJlXzEyMDISBRoDCgEAChQKC2ZlYXR1cmVfMzc4EgUaAwoBAAoUCgtmZWF0dXJlXzE0MRIFGgMKAQAKFAoLZmVhdHVyZV82MTYSBRoDCgEAChQKC2ZlYXR1cmVfNTgwEgUaAwoBAAoUCgtmZWF0dXJlXzM3MhIFGgMKAQAKFQoMZmVhdHVyZV8xMjQxEgUaAwoBAAoUCgtmZWF0dXJlXzQ0MxIFGgMKAQAKFQoMZmVhdHVyZV8xMDI5EgUaAwoBAAoUCgtmZWF0dXJlXzQ5NBIFGgMKAQAKFQoMZmVhdHVyZV8xNDIwEgUaAwoBAAoUCgtmZWF0dXJlXzY0NhIFGgMKAQAKFQoMZmVhdHVyZV8xNDQxEgUaAwoBAAoVCgxmZWF0dXJlXzE0MTISBRoDCgEAChQKC2ZlYXR1cmVfMzM4EgUaAwoBAAoUCgtmZWF0dXJlXzg1NBIFGgMKAQAKFQoMZmVhdHVyZV8xMTM2EgUaAwoBAAoUCgtmZWF0dXJlXzE5NxIFGgMKAQAKFQoMZmVhdHVyZV8xMTYwEgUaAwoBAAoUCgtmZWF0dXJlXzg2OBIFGgMKAQAKFAoLZmVhdHVyZV81MTMSBRoDCgEAChQKC2ZlYXR1cmVfODI0EgUaAwoBAAoUCgtmZWF0dXJlXzM5OBIFGgMKAQAKFQoMZmVhdHVyZV8xMzk0EgUaAwoBAAoUCgtmZWF0dXJlXzQ4NBIFGgMKAQAKFAoLZmVhdHVyZV85NzYSBRoDCgEAChQKC2ZlYXR1cmVfMjA5EgUaAwoBAAoVCgxmZWF0dXJlXzExMzgSBRoDCgEAChQKC2ZlYXR1cmVfMTg4EgUaAwoBAAoUCgtmZWF0dXJlXzg0NhIFGgMKAQAKFAoLZmVhdHVyZV85NjASBRoDCgEAChQKC2ZlYXR1cmVfNzgxEgUaAwoBAAoVCgxmZWF0dXJlXzExMjQSBRoDCgEAChQKC2ZlYXR1cmVfODYzEgUaAwoBAAoVCgxmZWF0dXJlXzEzOTMSBRoDCgEAChQKC2ZlYXR1cmVfMTU5EgUaAwoBAAoUCgtmZWF0dXJlXzk0MRIFGgMKAQAKFAoLZmVhdHVyZV85MTESBRoDCgEAChUKDGZlYXR1cmVfMTAzOBIFGgMKAQAKFQoMZmVhdHVyZV8xMTc4EgUaAwoBAAoSCglmZWF0dXJlXzQSBRoDCgEAChMKCmZlYXR1cmVfMTcSBRoDCgEAChUKDGZlYXR1cmVfMTExNhIFGgMKAQAKFAoLZmVhdHVyZV8xMzUSBRoDCgEAChQKC2ZlYXR1cmVfODcxEgUaAwoBAAoUCgtmZWF0dXJlXzMxOBIFGgMKAQAKFQoMZmVhdHVyZV8xMDAwEgUaAwoBAAoVCgxmZWF0dXJlXzExNDASBRoDCgEAChUKDGZlYXR1cmVfMTQwNBIFGgMKAQAKFAoLZmVhdHVyZV8yNzQSBRoDCgEAChQKC2ZlYXR1cmVfODc4EgUaAwoBAAoVCgxmZWF0dXJlXzEzMjISBRoDCgEAChQKC2ZlYXR1cmVfNjQ4EgUaAwoBAAoUCgtmZWF0dXJlXzQ5NRIFGgMKAQAKFQoMZmVhdHVyZV8xMDAzEgUaAwoBAAoUCgtmZWF0dXJlXzMyORIFGgMKAQAKFQoMZmVhdHVyZV8xNDczEgUaAwoBAAoVCgxmZWF0dXJlXzEyMTESBRoDCgEAChUKDGZlYXR1cmVfMTA3NRIFGgMKAQAKFAoLZmVhdHVyZV8yMjkSBRoDCgEAChMKCmZlYXR1cmVfNzMSBRoDCgEAChUKDGZlYXR1cmVfMTI4MBIFGgMKAQAKFAoLZmVhdHVyZV8yMjUSBRoDCgEAChQKC2ZlYXR1cmVfNDY4EgUaAwoBAAoUCgtmZWF0dXJlXzQ0MBIFGgMKAQAKFAoLZmVhdHVyZV81MzcSBRoDCgEAChQKC2ZlYXR1cmVfNjkxEgUaAwoBAAoUCgtmZWF0dXJlXzY5OBIFGgMKAQAKFQoMZmVhdHVyZV8xMjM2EgUaAwoBAAoUCgtmZWF0dXJlXzg5OBIFGgMKAQAKFQoMZmVhdHVyZV8xNTMzEgUaAwoBAAoUCgtmZWF0dXJlXzI3OBIFGgMKAQAKFAoLZmVhdHVyZV83NTUSBRoDCgEAChQKC2ZlYXR1cmVfNzUyEgUaAwoBAAoUCgtmZWF0dXJlXzkzNxIFGgMKAQAKFAoLZmVhdHVyZV84NzcSBRoDCgEAChQKC2ZlYXR1cmVfODc1EgUaAwoBAAoUCgtmZWF0dXJlXzE5MRIFGgMKAQAKFQoMZmVhdHVyZV8xMDc4EgUaAwoBAAoUCgtmZWF0dXJlXzk2MhIFGgMKAQAKFAoLZmVhdHVyZV8yNjISBRoDCgEAChUKDGZlYXR1cmVfMTEzNBIFGgMKAQAKEwoKZmVhdHVyZV80NhIFGgMKAQAKFAoLZmVhdHVyZV81OTESBRoDCgEAChUKDGZlYXR1cmVfMTExORIFGgMKAQAKFQoMZmVhdHVyZV8xMjU2EgUaAwoBAAoUCgtmZWF0dXJlXzkzORIFGgMKAQAKFAoLZmVhdHVyZV81MjMSBRoDCgEAChUKDGZlYXR1cmVfMTE4OBIFGgMKAQAKFAoLZmVhdHVyZV82OTcSBRoDCgEAChUKDGZlYXR1cmVfMTM4NxIFGgMKAQAKFAoLZmVhdHVyZV83MDgSBRoDCgEAChQKC2ZlYXR1cmVfNzk5EgUaAwoBAAoVCgxmZWF0dXJlXzE1MjISBRoDCgEAChUKDGZlYXR1cmVfMTQ2NRIFGgMKAQAKFQoMZmVhdHVyZV8xMTg3EgUaAwoBAAoUCgtmZWF0dXJlXzY4NhIFGgMKAQAKFQoMZmVhdHVyZV8xNTM3EgUaAwoBAAoUCgtmZWF0dXJlXzUwOBIFGgMKAQAKFAoLZmVhdHVyZV8zNTUSBRoDCgEAChQKC2ZlYXR1cmVfMTk4EgUaAwoBAAoUCgtmZWF0dXJlXzE0NhIFGgMKAQAKFAoLZmVhdHVyZV8yNzESBRoDCgEAChQKC2ZlYXR1cmVfNzgwEgUaAwoBAAoVCgxmZWF0dXJlXzEyNTgSBRoDCgEAChUKDGZlYXR1cmVfMTA3MhIFGgMKAQAKFQoMZmVhdHVyZV8xMjQ0EgUaAwoBAAoVCgxmZWF0dXJlXzE0NTkSBRoDCgEAChQKC2ZlYXR1cmVfNjE3EgUaAwoBAAoVCgxmZWF0dXJlXzEyNzkSBRoDCgEAChUKDGZlYXR1cmVfMTMyNhIFGgMKAQAKFQoMZmVhdHVyZV8xMjM1EgUaAwoBAAoVCgxmZWF0dXJlXzE0NjYSBRoDCgEAChQKC2ZlYXR1cmVfNDI2EgUaAwoBAAoUCgtmZWF0dXJlXzY1MxIFGgMKAQAKFAoLZmVhdHVyZV84NTcSBRoDCgEAChQKC2ZlYXR1cmVfMjE0EgUaAwoBAAoVCgxmZWF0dXJlXzE0MjgSBRoDCgEAChUKDGZlYXR1cmVfMTE4ORIFGgMKAQAKFAoLZmVhdHVyZV82NDUSBRoDCgEAChQKC2ZlYXR1cmVfMTYzEgUaAwoBAAoUCgtmZWF0dXJlXzY3MBIFGgMKAQAKEgoJZmVhdHVyZV84EgUaAwoBAAoUCgtmZWF0dXJlXzYyMhIFGgMKAQAKFQoMZmVhdHVyZV8xMDcxEgUaAwoBAAoVCgxmZWF0dXJlXzEzNTESBRoDCgEAChQKC2ZlYXR1cmVfMzYzEgUaAwoBAAoVCgxmZWF0dXJlXzE0NDMSBRoDCgEAChQKC2ZlYXR1cmVfOTgzEgUaAwoBAAoVCgxmZWF0dXJlXzEyMTMSBRoDCgEAChUKDGZlYXR1cmVfMTM3NRIFGgMKAQAKFAoLZmVhdHVyZV84MTISBRoDCgEAChQKC2ZlYXR1cmVfMzAyEgUaAwoBAAoVCgxmZWF0dXJlXzEyNzUSBRoDCgEAChUKDGZlYXR1cmVfMTMwMhIFGgMKAQAKFQoMZmVhdHVyZV8xMDQwEgUaAwoBAAoUCgtmZWF0dXJlXzg1MRIFGgMKAQAKFQoMZmVhdHVyZV8xMzEyEgUaAwoBAAoUCgtmZWF0dXJlXzU0MRIFGgMKAQAKFQoMZmVhdHVyZV8xMTM5EgUaAwoBAAoUCgtmZWF0dXJlXzMzMRIFGgMKAQAKFAoLZmVhdHVyZV83MzYSBRoDCgEAChMKCmZlYXR1cmVfOTMSBRoDCgEAChQKC2ZlYXR1cmVfNjkwEgUaAwoBAAoVCgxmZWF0dXJlXzEwODESBRoDCgEAChUKDGZlYXR1cmVfMTIzMBIFGgMKAQAKFAoLZmVhdHVyZV85NDQSBRoDCgEAChQKC2ZlYXR1cmVfMTE2EgUaAwoBAAoVCgxmZWF0dXJlXzE1NTASBRoDCgEAChUKDGZlYXR1cmVfMTE3MhIFGgMKAQAKFAoLZmVhdHVyZV8zOTMSBRoDCgEAChMKCmZlYXR1cmVfOTYSBRoDCgEAChUKDGZlYXR1cmVfMTI3OBIFGgMKAQAKFQoMZmVhdHVyZV8xMjk5EgUaAwoBAAoUCgtmZWF0dXJlXzY0MhIFGgMKAQAKFQoMZmVhdHVyZV8xMTIyEgUaAwoBAAoVCgxmZWF0dXJlXzE1MDcSBRoDCgEAChUKDGZlYXR1cmVfMTIzNBIFGgMKAQAKFAoLZmVhdHVyZV8xNzgSBRoDCgEAChUKDGZlYXR1cmVfMTA4MxIFGgMKAQAKFQoMZmVhdHVyZV8xNTIxEgUaAwoBAAoUCgtmZWF0dXJlXzkxMBIFGgMKAQAKFAoLZmVhdHVyZV81MDASBRoDCgEAChQKC2ZlYXR1cmVfNTcwEgUaAwoBAAoUCgtmZWF0dXJlXzc0OBIFGgMKAQAKFAoLZmVhdHVyZV8zOTcSBRoDCgEAChQKC2ZlYXR1cmVfOTMyEgUaAwoBAAoUCgtmZWF0dXJlXzE1MxIFGgMKAQAKFAoLZmVhdHVyZV84MjcSBRoDCgEAChQKC2ZlYXR1cmVfOTAyEgUaAwoBAAoVCgxmZWF0dXJlXzE0MzYSBRoDCgEAChMKCmZlYXR1cmVfNjkSBRoDCgEAChQKC2ZlYXR1cmVfMjk5EgUaAwoBAAoVCgxmZWF0dXJlXzE1MTMSBRoDCgEAChUKDGZlYXR1cmVfMTA0NRIFGgMKAQAKFQoMZmVhdHVyZV8xMzczEgUaAwoBAAoUCgtmZWF0dXJlXzc2MhIFGgMKAQAKFAoLZmVhdHVyZV8zNzUSBRoDCgEAChQKC2ZlYXR1cmVfNjY3EgUaAwoBAAoVCgxmZWF0dXJlXzE0NDgSBRoDCgEAChUKDGZlYXR1cmVfMTA2NhIFGgMKAQAKEwoKZmVhdHVyZV85MRIFGgMKAQAKFQoMZmVhdHVyZV8xNDg4EgUaAwoBAAoUCgtmZWF0dXJlXzg4MRIFGgMKAQAKFAoLZmVhdHVyZV82ODkSBRoDCgEAChUKDGZlYXR1cmVfMTE3NRIFGgMKAQAKFAoLZmVhdHVyZV8xMzgSBRoDCgEAChQKC2ZlYXR1cmVfNTA0EgUaAwoBAAoUCgtmZWF0dXJlXzY2NBIFGgMKAQAKFQoMZmVhdHVyZV8xNTQ0EgUaAwoBAAoUCgtmZWF0dXJlXzE4ORIFGgMKAQAKFAoLZmVhdHVyZV82ODESBRoDCgEAChUKDGZlYXR1cmVfMTEwMBIFGgMKAQAKFAoLZmVhdHVyZV8zODgSBRoDCgEAChQKC2ZlYXR1cmVfOTU3EgUaAwoBAAoUCgtmZWF0dXJlXzQ1NhIFGgMKAQAKFAoLZmVhdHVyZV8zNDUSBRoDCgEAChQKC2ZlYXR1cmVfNTk2EgUaAwoBAAoUCgtmZWF0dXJlXzY2MRIFGgMKAQAKFAoLZmVhdHVyZV8zNjkSBRoDCgEAChUKDGZlYXR1cmVfMTE5MhIFGgMKAQAKFQoMZmVhdHVyZV8xMDI4EgUaAwoBAAoVCgxmZWF0dXJlXzEwODkSBRoDCgEAChUKDGZlYXR1cmVfMTAyNRIFGgMKAQAKDgoFQ2xhc3MSBRoDCgEAChQKC2ZlYXR1cmVfMTExEgUaAwoBAAoVCgxmZWF0dXJlXzE1MjMSBRoDCgEAChQKC2ZlYXR1cmVfMzYyEgUaAwoBAAoUCgtmZWF0dXJlXzYzMBIFGgMKAQAKFAoLZmVhdHVyZV84MDMSBRoDCgEAChUKDGZlYXR1cmVfMTAxORIFGgMKAQAKFAoLZmVhdHVyZV8yNDESBRoDCgEAChQKC2ZlYXR1cmVfODUzEgUaAwoBAAoTCgpmZWF0dXJlXzg1EgUaAwoBAAoUCgtmZWF0dXJlXzIzMxIFGgMKAQAKFAoLZmVhdHVyZV80ODESBRoDCgEAChUKDGZlYXR1cmVfMTQ1OBIFGgMKAQAKFAoLZmVhdHVyZV82MDISBRoDCgEAChQKC2ZlYXR1cmVfMTc1EgUaAwoBAAoUCgtmZWF0dXJlXzI0OBIFGgMKAQAKFAoLZmVhdHVyZV8xOTkSBRoDCgEAChUKDGZlYXR1cmVfMTA5MBIFGgMKAQAKFQoMZmVhdHVyZV8xNDc2EgUaAwoBAAoVCgxmZWF0dXJlXzExNzkSBRoDCgEAChUKDGZlYXR1cmVfMTI0ORIFGgMKAQAKFQoMZmVhdHVyZV8xMzQ0EgUaAwoBAAoTCgpmZWF0dXJlXzM3EgUaAwoBAAoVCgxmZWF0dXJlXzE0ODUSBRoDCgEAChQKC2ZlYXR1cmVfNzM4EgUaAwoBAAoVCgxmZWF0dXJlXzEwOTESBRoDCgEAChUKDGZlYXR1cmVfMTIzORIFGgMKAQAKFAoLZmVhdHVyZV8yMTgSBRoDCgEAChUKDGZlYXR1cmVfMTUzMRIFGgMKAQAKFQoMZmVhdHVyZV8xMjg0EgUaAwoBAAoUCgtmZWF0dXJlXzY0ORIFGgMKAQAKFAoLZmVhdHVyZV81NzYSBRoDCgEAChQKC2ZlYXR1cmVfODkwEgUaAwoBAAoVCgxmZWF0dXJlXzEwMDQSBRoDCgEAChQKC2ZlYXR1cmVfODQzEgUaAwoBAAoUCgtmZWF0dXJlXzE0NRIFGgMKAQAKFQoMZmVhdHVyZV8xNDk4EgUaAwoBAAoTCgpmZWF0dXJlXzI3EgUaAwoBAAoUCgtmZWF0dXJlXzgzNhIFGgMKAQAKFQoMZmVhdHVyZV8xMzUyEgUaAwoBAAoVCgxmZWF0dXJlXzEzMzgSBRoDCgEAChQKC2ZlYXR1cmVfMjQ1EgUaAwoBAAoVCgxmZWF0dXJlXzE1NDESBRoDCgEAChIKCWZlYXR1cmVfNhIFGgMKAQAKFQoMZmVhdHVyZV8xMjE0EgUaAwoBAAoUCgtmZWF0dXJlXzc3NRIFGgMKAQAKEwoKZmVhdHVyZV8zMBIFGgMKAQAKFQoMZmVhdHVyZV8xMTUwEgUaAwoBAAoVCgxmZWF0dXJlXzEwODUSBRoDCgEAChUKDGZlYXR1cmVfMTQxNBIFGgMKAQAKFQoMZmVhdHVyZV8xMzQ5EgUaAwoBAAoVCgxmZWF0dXJlXzEyMjISBRoDCgEAChQKC2ZlYXR1cmVfNTA5EgUaAwoBAAoVCgxmZWF0dXJlXzEwNDESBRoDCgEAChUKDGZlYXR1cmVfMTQ1NRIFGgMKAQAKFAoLZmVhdHVyZV83MjASBRoDCgEAChMKCmZlYXR1cmVfNDkSBRoDCgEAChQKC2ZlYXR1cmVfNjcxEgUaAwoBAAoVCgxmZWF0dXJlXzEzMjcSBRoDCgEAChQKC2ZlYXR1cmVfMTYyEgUaAwoBAAoUCgtmZWF0dXJlXzUzNhIFGgMKAQAKFAoLZmVhdHVyZV85MDASBRoDCgEAChQKC2ZlYXR1cmVfMTIxEgUaAwoBAAoVCgxmZWF0dXJlXzExMjcSBRoDCgEAChQKC2ZlYXR1cmVfODg0EgUaAwoBAAoVCgxmZWF0dXJlXzE1NDgSBRoDCgEAChQKC2ZlYXR1cmVfODk2EgUaAwoBAAoVCgxmZWF0dXJlXzExNDISBRoDCgEAChUKDGZlYXR1cmVfMTE3MBIFGgMKAQAKFAoLZmVhdHVyZV80NDQSBRoDCgEAChMKCmZlYXR1cmVfODMSBRoDCgEAChUKDGZlYXR1cmVfMTMxNBIFGgMKAQAKFQoMZmVhdHVyZV8xMTcxEgUaAwoBAAoVCgxmZWF0dXJlXzEyNDcSBRoDCgEAChMKCmZlYXR1cmVfNzUSBRoDCgEAChQKC2ZlYXR1cmVfNjE1EgUaAwoBAAoUCgtmZWF0dXJlXzg4NxIFGgMKAQAKFAoLZmVhdHVyZV8xMzESBRoDCgEAChUKDGZlYXR1cmVfMTI4MhIFGgMKAQAKFQoMZmVhdHVyZV8xNDk3EgUaAwoBAAoVCgxmZWF0dXJlXzExNTkSBRoDCgEAChQKC2ZlYXR1cmVfNDQ3EgUaAwoBAAoVCgxmZWF0dXJlXzEyODcSBRoDCgEAChUKDGZlYXR1cmVfMTM1OBIFGgMKAQAKFAoLZmVhdHVyZV80NDISBRoDCgEAChQKC2ZlYXR1cmVfMzQ4EgUaAwoBAAoVCgxmZWF0dXJlXzEyMzESBRoDCgEAChQKC2ZlYXR1cmVfOTE5EgUaAwoBAAoUCgtmZWF0dXJlXzY2NRIFGgMKAQAKFAoLZmVhdHVyZV83OTUSBRoDCgEAChQKC2ZlYXR1cmVfODQyEgUaAwoBAAoVCgxmZWF0dXJlXzE1MTQSBRoDCgEAChUKDGZlYXR1cmVfMTE2OBIFGgMKAQAKFQoMZmVhdHVyZV8xNDM1EgUaAwoBAAoUCgtmZWF0dXJlXzUzMRIFGgMKAQAKFAoLZmVhdHVyZV8xMjYSBRoDCgEAChQKC2ZlYXR1cmVfNDQ2EgUaAwoBAAoVCgxmZWF0dXJlXzExNTYSBRoDCgEAChQKC2ZlYXR1cmVfMjgyEgUaAwoBAAoVCgxmZWF0dXJlXzE1NDUSBRoDCgEAChQKC2ZlYXR1cmVfNTI5EgUaAwoBAAoTCgpmZWF0dXJlXzQ3EgUaAwoBAAoUCgtmZWF0dXJlXzExORIFGgMKAQAKFAoLZmVhdHVyZV82NTcSBRoDCgEAChQKC2ZlYXR1cmVfNzQxEgUaAwoBAAoUCgtmZWF0dXJlXzU5NBIFGgMKAQAKFAoLZmVhdHVyZV80MDYSBRoDCgEAChQKC2ZlYXR1cmVfMjAwEgUaAwoBAAoUCgtmZWF0dXJlXzgwNhIFGgMKAQAKEwoKZmVhdHVyZV8zNRIFGgMKAQAKFAoLZmVhdHVyZV80MTgSBRoDCgEAChUKDGZlYXR1cmVfMTAzMRIFGgMKAQAKFQoMZmVhdHVyZV8xNDU2EgUaAwoBAAoUCgtmZWF0dXJlXzY4NBIFGgMKAQAKFAoLZmVhdHVyZV8yMjMSBRoDCgEAChQKC2ZlYXR1cmVfMzA1EgUaAwoBAAoUCgtmZWF0dXJlXzU4NhIFGgMKAQAKFAoLZmVhdHVyZV8yNzcSBRoDCgEAChQKC2ZlYXR1cmVfMzA5EgUaAwoBAAoTCgpmZWF0dXJlXzc3EgUaAwoBAAoUCgtmZWF0dXJlXzQyNBIFGgMKAQAKFQoMZmVhdHVyZV8xMzI1EgUaAwoBAAoUCgtmZWF0dXJlXzIzORIFGgMKAQAKFQoMZmVhdHVyZV8xMTEyEgUaAwoBAAoUCgtmZWF0dXJlXzIzNhIFGgMKAQAKFAoLZmVhdHVyZV84MzcSBRoDCgEAChQKC2ZlYXR1cmVfNTczEgUaAwoBAAoUCgtmZWF0dXJlXzQ2ORIFGgMKAQAKFAoLZmVhdHVyZV8xNjcSBRoDCgEAChUKDGZlYXR1cmVfMTU1NBIFGgMKAQAKFQoMZmVhdHVyZV8xNDUxEgUaAwoBAAoUCgtmZWF0dXJlXzQxNBIFGgMKAQAKFQoMZmVhdHVyZV8xMzM0EgUaAwoBAAoVCgxmZWF0dXJlXzEwNTESBRoDCgEAChQKC2ZlYXR1cmVfNzk0EgUaAwoBAAoUCgtmZWF0dXJlXzYwNxIFGgMKAQAKFAoLZmVhdHVyZV85MzQSBRoDCgEAChUKDGZlYXR1cmVfMTQ1MhIFGgMKAQAKFAoLZmVhdHVyZV80NTESBRoDCgEAChQKC2ZlYXR1cmVfNDEwEgUaAwoBAAoVCgxmZWF0dXJlXzEwMzASBRoDCgEAChQKC2ZlYXR1cmVfMjU3EgUaAwoBAAoVCgxmZWF0dXJlXzEyMTcSBRoDCgEAChQKC2ZlYXR1cmVfMTgwEgUaAwoBAAoUCgtmZWF0dXJlXzExMBIFGgMKAQAKFAoLZmVhdHVyZV8yODcSBRoDCgEAChQKC2ZlYXR1cmVfNDQ4EgUaAwoBAAoVCgxmZWF0dXJlXzEwOTgSBRoDCgEAChQKC2ZlYXR1cmVfMzM1EgUaAwoBAAoVCgxmZWF0dXJlXzEzNTUSBRoDCgEAChQKC2ZlYXR1cmVfODUwEgUaAwoBAAoUCgtmZWF0dXJlXzcyMxIFGgMKAQAKEwoKZmVhdHVyZV85MhIFGgMKAQAKFAoLZmVhdHVyZV80MzASBRoDCgEAChQKC2ZlYXR1cmVfODYxEgUaAwoBAAoUCgtmZWF0dXJlXzczNRIFGgMKAQAKFQoMZmVhdHVyZV8xMTMyEgUaAwoBAAoUCgtmZWF0dXJlXzk5ORIFGgMKAQAKFQoMZmVhdHVyZV8xNTM2EgUaAwoBAAoVCgxmZWF0dXJlXzExNDkSBRoDCgEAChUKDGZlYXR1cmVfMTQzNBIFGgMKAQAKFAoLZmVhdHVyZV8zMjQSBRoDCgEAChQKC2ZlYXR1cmVfMTcwEgUaAwoBAAoVCgxmZWF0dXJlXzEwMTASBRoDCgEAChMKCmZlYXR1cmVfODQSBRoDCgEAChUKDGZlYXR1cmVfMTU0ORIFGgMKAQAKFQoMZmVhdHVyZV8xMDU5EgUaAwoBAAoVCgxmZWF0dXJlXzE0NDYSBRoDCgEAChUKDGZlYXR1cmVfMTI2ORIFGgMKAQAKFAoLZmVhdHVyZV80ODASBRoDCgEAChQKC2ZlYXR1cmVfMjA4EgUaAwoBAAoUCgtmZWF0dXJlXzQ1MBIFGgMKAQAKFQoMZmVhdHVyZV8xMDQ4EgUaAwoBAAoUCgtmZWF0dXJlXzMyNxIFGgMKAQAKFQoMZmVhdHVyZV8xMDM5EgUaAwoBAAoUCgtmZWF0dXJlXzU2NhIFGgMKAQAKFAoLZmVhdHVyZV81NTQSBRoDCgEAChQKC2ZlYXR1cmVfNzU0EgUaAwoBAAoUCgtmZWF0dXJlXzk3NxIFGgMKAQAKEwoKZmVhdHVyZV81NhIFGgMKAQAKFQoMZmVhdHVyZV8xMjg2EgUaAwoBAAoUCgtmZWF0dXJlXzI2OBIFGgMKAQAKFAoLZmVhdHVyZV8yNTkSBRoDCgEAChQKC2ZlYXR1cmVfNDYyEgUaAwoBAAoVCgxmZWF0dXJlXzExOTcSBRoDCgEAChQKC2ZlYXR1cmVfOTYxEgUaAwoBAAoTCgpmZWF0dXJlXzI2EgUaAwoBAAoUCgtmZWF0dXJlXzkyNxIFGgMKAQAKFAoLZmVhdHVyZV8yMzASBRoDCgEAChUKDGZlYXR1cmVfMTMzNhIFGgMKAQAKFQoMZmVhdHVyZV8xMDM3EgUaAwoBAAoUCgtmZWF0dXJlXzQxMhIFGgMKAQAKFQoMZmVhdHVyZV8xMzgzEgUaAwoBAAoVCgxmZWF0dXJlXzEwMDYSBRoDCgEAChUKDGZlYXR1cmVfMTE1OBIFGgMKAQAKFAoLZmVhdHVyZV83MzcSBRoDCgEAChUKDGZlYXR1cmVfMTE3MxIFGgMKAQAKFAoLZmVhdHVyZV8yOTgSBRoDCgEAChQKC2ZlYXR1cmVfNTUwEgUaAwoBAAoUCgtmZWF0dXJlXzY5NhIFGgMKAQAKFAoLZmVhdHVyZV83NzQSBRoDCgEAChQKC2ZlYXR1cmVfOTMzEgUaAwoBAAoVCgxmZWF0dXJlXzEyNjgSBRoDCgEAChUKDGZlYXR1cmVfMTAxMxIFGgMKAQAKFAoLZmVhdHVyZV81ODQSBRoDCgEAChQKC2ZlYXR1cmVfOTIwEgUaAwoBAAoUCgtmZWF0dXJlXzY3NxIFGgMKAQAKFQoMZmVhdHVyZV8xMDQ3EgUaAwoBAAoUCgtmZWF0dXJlXzU3ORIFGgMKAQAKFAoLZmVhdHVyZV85NTISBRoDCgEAChUKDGZlYXR1cmVfMTQ3MRIFGgMKAQAKFAoLZmVhdHVyZV83MTASBRoDCgEAChQKC2ZlYXR1cmVfNDM2EgUaAwoBAAoUCgtmZWF0dXJlXzUzORIFGgMKAQAKFAoLZmVhdHVyZV85ODcSBRoDCgEAChUKDGZlYXR1cmVfMTUyMBIFGgMKAQAKFAoLZmVhdHVyZV8xNTISBRoDCgEAChQKC2ZlYXR1cmVfODU1EgUaAwoBAAoUCgtmZWF0dXJlXzYzNBIFGgMKAQAKFAoLZmVhdHVyZV84ODYSBRoDCgEAChQKC2ZlYXR1cmVfNTIwEgUaAwoBAAoVCgxmZWF0dXJlXzEzOTcSBRoDCgEAChQKC2ZlYXR1cmVfNjY2EgUaAwoBAAoUCgtmZWF0dXJlXzg0NRIFGgMKAQAKFAoLZmVhdHVyZV8zODYSBRoDCgEAChUKDGZlYXR1cmVfMTQ1NxIFGgMKAQAKFQoMZmVhdHVyZV8xMDgwEgUaAwoBAAoUCgtmZWF0dXJlXzE5NhIFGgMKAQAKFAoLZmVhdHVyZV8yOTUSBRoDCgEAChQKC2ZlYXR1cmVfOTY5EgUaAwoBAAoVCgxmZWF0dXJlXzEzNDgSBRoDCgEAChQKC2ZlYXR1cmVfMTAzEgUaAwoBAAoVCgxmZWF0dXJlXzE1NDASBRoDCgEAChUKDGZlYXR1cmVfMTIyNBIFGgMKAQAKFAoLZmVhdHVyZV84NDESBRoDCgEAChUKDGZlYXR1cmVfMTE2NhIFGgMKAQAKFAoLZmVhdHVyZV8zNjgSBRoDCgEAChUKDGZlYXR1cmVfMTUxMRIFGgMKAQAKFAoLZmVhdHVyZV82ODUSBRoDCgEAChMKCmZlYXR1cmVfMjASBRoDCgEAChQKC2ZlYXR1cmVfNDU3EgUaAwoBAAoUCgtmZWF0dXJlXzUxMRIFGgMKAQAKFQoMZmVhdHVyZV8xMjIzEgUaAwoBAAoVCgxmZWF0dXJlXzEzMDYSBRoDCgEAChQKC2ZlYXR1cmVfODQ3EgUaAwoBAAoTCgpmZWF0dXJlXzU0EgUaAwoBAAoUCgtmZWF0dXJlXzY1NRIFGgMKAQAKFQoMZmVhdHVyZV8xMTQzEgUaAwoBAAoVCgxmZWF0dXJlXzEwNjcSBRoDCgEAChQKC2ZlYXR1cmVfNDEzEgUaAwoBAAoUCgtmZWF0dXJlXzI3MxIFGgMKAQAKFQoMZmVhdHVyZV8xMDg0EgUaAwoBAAoUCgtmZWF0dXJlXzQyNxIFGgMKAQAKFQoMZmVhdHVyZV8xNDc4EgUaAwoBAAoVCgxmZWF0dXJlXzEyOTgSBRoDCgEAChQKC2ZlYXR1cmVfMTEzEgUaAwoBAAoUCgtmZWF0dXJlXzQ2MBIFGgMKAQAKFAoLZmVhdHVyZV8xMjgSBRoDCgEAChQKC2ZlYXR1cmVfODEwEgUaAwoBAAoUCgtmZWF0dXJlXzk5MRIFGgMKAQAKFQoMZmVhdHVyZV8xNDI3EgUaAwoBAAoUCgtmZWF0dXJlXzMxORIFGgMKAQAKFAoLZmVhdHVyZV83MDISBRoDCgEBChQKC2ZlYXR1cmVfMTYxEgUaAwoBAAoTCgpmZWF0dXJlXzk1EgUaAwoBAAoUCgtmZWF0dXJlXzE5NRIFGgMKAQAKFAoLZmVhdHVyZV8yODYSBRoDCgEAChUKDGZlYXR1cmVfMTI2NBIFGgMKAQAKFAoLZmVhdHVyZV81OTMSBRoDCgEAChUKDGZlYXR1cmVfMTUzNRIFGgMKAQAKFAoLZmVhdHVyZV82MzkSBRoDCgEAChQKC2ZlYXR1cmVfMjcyEgUaAwoBAAoVCgxmZWF0dXJlXzExMDcSBRoDCgEAChUKDGZlYXR1cmVfMTA4NhIFGgMKAQAKFQoMZmVhdHVyZV8xNDg3EgUaAwoBAAoUCgtmZWF0dXJlXzU4OBIFGgMKAQAKFQoMZmVhdHVyZV8xMjk2EgUaAwoBAAoUCgtmZWF0dXJlXzUxNxIFGgMKAQAKFAoLZmVhdHVyZV84MDgSBRoDCgEAChUKDGZlYXR1cmVfMTU1MhIFGgMKAQAKFQoMZmVhdHVyZV8xNDgwEgUaAwoBAAoUCgtmZWF0dXJlXzkxNxIFGgMKAQAKFAoLZmVhdHVyZV80MDESBRoDCgEAChQKC2ZlYXR1cmVfODc0EgUaAwoBAAoUCgtmZWF0dXJlXzU0ORIFGgMKAQAKFAoLZmVhdHVyZV83NzASBRoDCgEAChUKDGZlYXR1cmVfMTAyNhIFGgMKAQAKFAoLZmVhdHVyZV84MjISBRoDCgEAChUKDGZlYXR1cmVfMTA1OBIFGgMKAQAKFQoMZmVhdHVyZV8xNDM5EgUaAwoBAAoVCgxmZWF0dXJlXzEwNzMSBRoDCgEAChQKC2ZlYXR1cmVfNTU5EgUaAwoBAAoVCgxmZWF0dXJlXzEzMTASBRoDCgEAChUKDGZlYXR1cmVfMTI2MhIFGgMKAQAKFAoLZmVhdHVyZV8zOTESBRoDCgEAChQKC2ZlYXR1cmVfMTQ0EgUaAwoBAAoUCgtmZWF0dXJlXzU2ORIFGgMKAQAKFAoLZmVhdHVyZV80MjUSBRoDCgEAChUKDGZlYXR1cmVfMTExMRIFGgMKAQAKFAoLZmVhdHVyZV82MzcSBRoDCgEAChUKDGZlYXR1cmVfMTAxMRIFGgMKAQAKFAoLZmVhdHVyZV84MDISBRoDCgEAChUKDGZlYXR1cmVfMTAzNBIFGgMKAQAKFAoLZmVhdHVyZV8yNDQSBRoDCgEAChQKC2ZlYXR1cmVfNjkyEgUaAwoBAAoVCgxmZWF0dXJlXzE0NjMSBRoDCgEAChQKC2ZlYXR1cmVfODY0EgUaAwoBAAoTCgpmZWF0dXJlXzQ0EgUaAwoBAAoUCgtmZWF0dXJlXzkxNBIFGgMKAQAKFAoLZmVhdHVyZV83NDUSBRoDCgEAChUKDGZlYXR1cmVfMTQ2NxIFGgMKAQAKFQoMZmVhdHVyZV8xMzAwEgUaAwoBAAoVCgxmZWF0dXJlXzExMjUSBRoDCgEAChQKC2ZlYXR1cmVfNTI3EgUaAwoBAAoVCgxmZWF0dXJlXzE0MDUSBRoDCgEAChUKDGZlYXR1cmVfMTM3NxIFGgMKAQAKFAoLZmVhdHVyZV80NzESBRoDCgEAChQKC2ZlYXR1cmVfOTI5EgUaAwoBAAoUCgtmZWF0dXJlXzM4NBIFGgMKAQAKFAoLZmVhdHVyZV83NjcSBRoDCgEAChQKC2ZlYXR1cmVfODg5EgUaAwoBAAoVCgxmZWF0dXJlXzE0ODMSBRoDCgEAChQKC2ZlYXR1cmVfNDk2EgUaAwoBAAoTCgpmZWF0dXJlXzI4EgUaAwoBAAoTCgpmZWF0dXJlXzU5EgUaAwoBAAoTCgpmZWF0dXJlXzgwEgUaAwoBAAoVCgxmZWF0dXJlXzEzMjgSBRoDCgEAChQKC2ZlYXR1cmVfMTM0EgUaAwoBAAoUCgtmZWF0dXJlXzEzMhIFGgMKAQAKFAoLZmVhdHVyZV8zMjISBRoDCgEAChQKC2ZlYXR1cmVfODczEgUaAwoBAAoUCgtmZWF0dXJlXzQ3OBIFGgMKAQAKFAoLZmVhdHVyZV8xMjkSBRoDCgEAChUKDGZlYXR1cmVfMTQ4ORIFGgMKAQAKFAoLZmVhdHVyZV8zMDcSBRoDCgEAChMKCmZlYXR1cmVfODkSBRoDCgEAChQKC2ZlYXR1cmVfOTg2EgUaAwoBAAoVCgxmZWF0dXJlXzEwNjASBRoDCgEAChQKC2ZlYXR1cmVfNTgxEgUaAwoBAAoVCgxmZWF0dXJlXzEwNzcSBRoDCgEAChQKC2ZlYXR1cmVfMTQ5EgUaAwoBAAoUCgtmZWF0dXJlXzc4NBIFGgMKAQAKFQoMZmVhdHVyZV8xMDI0EgUaAwoBAAoUCgtmZWF0dXJlXzMxNBIFGgMKAQAKFQoMZmVhdHVyZV8xMDYyEgUaAwoBAAoUCgtmZWF0dXJlXzk3MRIFGgMKAQAKFAoLZmVhdHVyZV8zNTgSBRoDCgEAChQKC2ZlYXR1cmVfNzk4EgUaAwoBAAoSCglmZWF0dXJlXzESBRoDCgFkChUKDGZlYXR1cmVfMTI0MBIFGgMKAQAKFAoLZmVhdHVyZV85NjMSBRoDCgEAChMKCmZlYXR1cmVfNDASBRoDCgEAChQKC2ZlYXR1cmVfNzY4EgUaAwoBAAoUCgtmZWF0dXJlXzM1MhIFGgMKAQAKFQoMZmVhdHVyZV8xMDU2EgUaAwoBAAoUCgtmZWF0dXJlXzY2MhIFGgMKAQAKFQoMZmVhdHVyZV8xMTMzEgUaAwoBAAoVCgxmZWF0dXJlXzEyMzcSBRoDCgEAChUKDGZlYXR1cmVfMTI3NxIFGgMKAQAKFAoLZmVhdHVyZV85NTESBRoDCgEAChUKDGZlYXR1cmVfMTQyNRIFGgMKAQAKFAoLZmVhdHVyZV85MjUSBRoDCgEAChQKC2ZlYXR1cmVfMjYzEgUaAwoBAAoUCgtmZWF0dXJlXzU0OBIFGgMKAQAKFQoMZmVhdHVyZV8xMjcyEgUaAwoBAAoUCgtmZWF0dXJlXzQ4OBIFGgMKAQAKFAoLZmVhdHVyZV8xMjQSBRoDCgEAChUKDGZlYXR1cmVfMTAxNRIFGgMKAQAKEwoKZmVhdHVyZV8yNRIFGgMKAQAKFAoLZmVhdHVyZV8yMDcSBRoDCgEAChQKC2ZlYXR1cmVfMjY2EgUaAwoBAAoTCgpmZWF0dXJlXzg2EgUaAwoBAAoUCgtmZWF0dXJlXzQzORIFGgMKAQAKEwoKZmVhdHVyZV82OBIFGgMKAQAKFQoMZmVhdHVyZV8xNTQ2EgUaAwoBAAoUCgtmZWF0dXJlXzQxORIFGgMKAQAKFAoLZmVhdHVyZV8xMjASBRoDCgEAChQKC2ZlYXR1cmVfODg1EgUaAwoBAAoVCgxmZWF0dXJlXzEyODUSBRoDCgEAChQKC2ZlYXR1cmVfMTE0EgUaAwoBAAoVCgxmZWF0dXJlXzEwNDISBRoDCgEAChQKC2ZlYXR1cmVfMjUzEgUaAwoBAAoVCgxmZWF0dXJlXzExOTASBRoDCgEAChQKC2ZlYXR1cmVfODA1EgUaAwoBAAoVCgxmZWF0dXJlXzExOTkSBRoDCgEAChIKCWZlYXR1cmVfNRIFGgMKAQAKEwoKZmVhdHVyZV8xNRIFGgMKAQAKFAoLZmVhdHVyZV85MjESBRoDCgEAChQKC2ZlYXR1cmVfMzI1EgUaAwoBAAoUCgtmZWF0dXJlXzU5NRIFGgMKAQAKFAoLZmVhdHVyZV80MTcSBRoDCgEAChQKC2ZlYXR1cmVfMzQwEgUaAwoBAAoUCgtmZWF0dXJlXzc3NxIFGgMKAQAKFQoMZmVhdHVyZV8xMzU3EgUaAwoBAAoVCgxmZWF0dXJlXzEzMDkSBRoDCgEAChQKC2ZlYXR1cmVfNzM5EgUaAwoBAAoUCgtmZWF0dXJlXzI2NRIFGgMKAQAKEwoKZmVhdHVyZV83OBIFGgMKAQAKFAoLZmVhdHVyZV84MTkSBRoDCgEAChQKC2ZlYXR1cmVfMTY1EgUaAwoBAAoUCgtmZWF0dXJlXzc2NhIFGgMKAQAKFQoMZmVhdHVyZV8xNDIxEgUaAwoBAAoUCgtmZWF0dXJlXzMzNBIFGgMKAQAKFAoLZmVhdHVyZV81OTASBRoDCgEAChQKC2ZlYXR1cmVfMjY5EgUaAwoBAAoVCgxmZWF0dXJlXzE0MzESBRoDCgEAChQKC2ZlYXR1cmVfODAxEgUaAwoBAAoVCgxmZWF0dXJlXzE1MDQSBRoDCgEAChQKC2ZlYXR1cmVfMzQ2EgUaAwoBAAoUCgtmZWF0dXJlXzQ4ORIFGgMKAQAKFQoMZmVhdHVyZV8xNDAyEgUaAwoBAAoVCgxmZWF0dXJlXzE1MjUSBRoDCgEAChUKDGZlYXR1cmVfMTAzMhIFGgMKAQAKFAoLZmVhdHVyZV8zNzMSBRoDCgEAChQKC2ZlYXR1cmVfMTI3EgUaAwoBAAoVCgxmZWF0dXJlXzEyOTQSBRoDCgEAChUKDGZlYXR1cmVfMTA0NBIFGgMKAQAKFAoLZmVhdHVyZV81NDISBRoDCgEAChQKC2ZlYXR1cmVfNTgyEgUaAwoBAAoUCgtmZWF0dXJlXzM2NhIFGgMKAQAKFAoLZmVhdHVyZV84NzYSBRoDCgEAChUKDGZlYXR1cmVfMTQxMxIFGgMKAQAKFAoLZmVhdHVyZV84MjUSBRoDCgEAChQKC2ZlYXR1cmVfMzAwEgUaAwoBAAoUCgtmZWF0dXJlXzQ1ORIFGgMKAQAKEwoKZmVhdHVyZV84MhIFGgMKAQAKFAoLZmVhdHVyZV80NzYSBRoDCgEAChQKC2ZlYXR1cmVfOTQ5EgUaAwoBAAoUCgtmZWF0dXJlXzM5ORIFGgMKAQAKFAoLZmVhdHVyZV83NjkSBRoDCgEAChUKDGZlYXR1cmVfMTUzOBIFGgMKAQAKFAoLZmVhdHVyZV85ODUSBRoDCgEAChMKCmZlYXR1cmVfMTISBRoDCgEAChQKC2ZlYXR1cmVfMjAxEgUaAwoBAAoUCgtmZWF0dXJlXzU5MhIFGgMKAQAKFAoLZmVhdHVyZV8yNjASBRoDCgEAChQKC2ZlYXR1cmVfMjU2EgUaAwoBAAoUCgtmZWF0dXJlXzQ2NhIFGgMKAQAKFAoLZmVhdHVyZV81ODMSBRoDCgEAChQKC2ZlYXR1cmVfMzg3EgUaAwoBAAoVCgxmZWF0dXJlXzEyMDcSBRoDCgEAChQKC2ZlYXR1cmVfODgzEgUaAwoBAAoUCgtmZWF0dXJlXzU0MxIFGgMKAQAKFAoLZmVhdHVyZV85ODgSBRoDCgEAChMKCmZlYXR1cmVfMTASBRoDCgEAChQKC2ZlYXR1cmVfNzA5EgUaAwoBAAoUCgtmZWF0dXJlXzE2NhIFGgMKAQAKFAoLZmVhdHVyZV82NzkSBRoDCgEAChQKC2ZlYXR1cmVfMTc5EgUaAwoBAAoVCgxmZWF0dXJlXzEwNDYSBRoDCgEAChQKC2ZlYXR1cmVfMTg1EgUaAwoBAAoTCgpmZWF0dXJlXzY0EgUaAwoBAAoTCgpmZWF0dXJlXzYxEgUaAwoBAAoUCgtmZWF0dXJlXzg2MhIFGgMKAQAKFAoLZmVhdHVyZV82NTYSBRoDCgEAChUKDGZlYXR1cmVfMTA1MhIFGgMKAQAKFQoMZmVhdHVyZV8xNTQzEgUaAwoBAAoUCgtmZWF0dXJlXzE3NhIFGgMKAQAKFAoLZmVhdHVyZV8yNDYSBRoDCgEAChQKC2ZlYXR1cmVfOTY3EgUaAwoBAAoUCgtmZWF0dXJlXzU1MRIFGgMKAQAKFAoLZmVhdHVyZV83NDISBRoDCgEAChUKDGZlYXR1cmVfMTUwNhIFGgMKAQAKFQoMZmVhdHVyZV8xMDk5EgUaAwoBAAoVCgxmZWF0dXJlXzEzMzISBRoDCgEAChQKC2ZlYXR1cmVfMzAxEgUaAwoBAAoUCgtmZWF0dXJlXzY0NxIFGgMKAQAKFAoLZmVhdHVyZV81NTISBRoDCgEAChQKC2ZlYXR1cmVfMTM2EgUaAwoBAAoUCgtmZWF0dXJlXzYxMRIFGgMKAQAKFAoLZmVhdHVyZV8yOTASBRoDCgEAChUKDGZlYXR1cmVfMTI5NRIFGgMKAQAKFAoLZmVhdHVyZV85MDMSBRoDCgEAChQKC2ZlYXR1cmVfNzE5EgUaAwoBAAoUCgtmZWF0dXJlXzcyNRIFGgMKAQAKFAoLZmVhdHVyZV81NzcSBRoDCgEAChUKDGZlYXR1cmVfMTIxOBIFGgMKAQAKFQoMZmVhdHVyZV8xMDA4EgUaAwoBAAoVCgxmZWF0dXJlXzExNTISBRoDCgEAChQKC2ZlYXR1cmVfMjg5EgUaAwoBAAoVCgxmZWF0dXJlXzE0NzUSBRoDCgEAChQKC2ZlYXR1cmVfODE2EgUaAwoBAAoVCgxmZWF0dXJlXzE0MTASBRoDCgEAChQKC2ZlYXR1cmVfMTA2EgUaAwoBAAoVCgxmZWF0dXJlXzE0OTkSBRoDCgEAChQKC2ZlYXR1cmVfMzgwEgUaAwoBAAoVCgxmZWF0dXJlXzEzMTUSBRoDCgEAChUKDGZlYXR1cmVfMTI5MhIFGgMKAQAKFAoLZmVhdHVyZV83MzESBRoDCgEAChUKDGZlYXR1cmVfMTM0MRIFGgMKAQAKEwoKZmVhdHVyZV81NxIFGgMKAQAKFAoLZmVhdHVyZV8xOTISBRoDCgEAChUKDGZlYXR1cmVfMTM0NRIFGgMKAQAKFQoMZmVhdHVyZV8xNDE1EgUaAwoBAAoUCgtmZWF0dXJlXzgyMBIFGgMKAQAKFQoMZmVhdHVyZV8xMzY4EgUaAwoBAAoVCgxmZWF0dXJlXzEwNzYSBRoDCgEAChUKDGZlYXR1cmVfMTU1NxIFGgMKAQAKFAoLZmVhdHVyZV8zNzASBRoDCgEAChUKDGZlYXR1cmVfMTExMxIFGgMKAQAKFQoMZmVhdHVyZV8xMzg1EgUaAwoBAAoUCgtmZWF0dXJlXzgyORIFGgMKAQAKEwoKZmVhdHVyZV82MhIFGgMKAQAKFAoLZmVhdHVyZV8zNjQSBRoDCgEAChQKC2ZlYXR1cmVfNDc0EgUaAwoBAAoUCgtmZWF0dXJlXzU1NRIFGgMKAQAKFQoMZmVhdHVyZV8xMTA0EgUaAwoBAAoUCgtmZWF0dXJlXzk0NxIFGgMKAQAKFQoMZmVhdHVyZV8xNDMzEgUaAwoBAAoTCgpmZWF0dXJlXzE0EgUaAwoBAAoUCgtmZWF0dXJlXzU2MBIFGgMKAQAKFQoMZmVhdHVyZV8xMDcwEgUaAwoBAAoVCgxmZWF0dXJlXzExNDUSBRoDCgEAChUKDGZlYXR1cmVfMTE4MxIFGgMKAQAKFAoLZmVhdHVyZV80NTUSBRoDCgEAChUKDGZlYXR1cmVfMTMzMRIFGgMKAQAKFAoLZmVhdHVyZV81ODcSBRoDCgEAChQKC2ZlYXR1cmVfNzc2EgUaAwoBAAoUCgtmZWF0dXJlXzg0OBIFGgMKAQAKFAoLZmVhdHVyZV83NjESBRoDCgEAChQKC2ZlYXR1cmVfNjU4EgUaAwoBAAoTCgpmZWF0dXJlXzE5EgUaAwoBAAoUCgtmZWF0dXJlXzE1MBIFGgMKAQAKFAoLZmVhdHVyZV81NDUSBRoDCgEAChQKC2ZlYXR1cmVfMzc0EgUaAwoBAAoUCgtmZWF0dXJlXzk1MxIFGgMKAQAKFQoMZmVhdHVyZV8xMTMxEgUaAwoBAAoVCgxmZWF0dXJlXzE0MTgSBRoDCgEAChQKC2ZlYXR1cmVfOTk3EgUaAwoBAAoUCgtmZWF0dXJlXzE0OBIFGgMKAQAKFQoMZmVhdHVyZV8xNDg2EgUaAwoBAAoUCgtmZWF0dXJlXzYwNRIFGgMKAQAKFAoLZmVhdHVyZV8yNTASBRoDCgEAChQKC2ZlYXR1cmVfMTg2EgUaAwoBAAoUCgtmZWF0dXJlXzc1MBIFGgMKAQAKFAoLZmVhdHVyZV84NDASBRoDCgEAChQKC2ZlYXR1cmVfMTgzEgUaAwoBAAoVCgxmZWF0dXJlXzE1NDISBRoDCgEAChUKDGZlYXR1cmVfMTE0NBIFGgMKAQAKFAoLZmVhdHVyZV8xMjMSBRoDCgEAChQKC2ZlYXR1cmVfMjE2EgUaAwoBAAoUCgtmZWF0dXJlXzk3MBIFGgMKAQAKFAoLZmVhdHVyZV8zNjESBRoDCgEAChQKC2ZlYXR1cmVfMzI2EgUaAwoBAAoVCgxmZWF0dXJlXzExOTESBRoDCgEAChUKDGZlYXR1cmVfMTI0MxIFGgMKAQAKFAoLZmVhdHVyZV8xNjQSBRoDCgEAChQKC2ZlYXR1cmVfMTcxEgUaAwoBAAoUCgtmZWF0dXJlXzgxNRIFGgMKAQAKFAoLZmVhdHVyZV8yODQSBRoDCgEAChUKDGZlYXR1cmVfMTI0MhIFGgMKAQAKFAoLZmVhdHVyZV82OTQSBRoDCgEAChUKDGZlYXR1cmVfMTU1NhIFGgMKAQAKFAoLZmVhdHVyZV83MDcSBRoDCgEAChUKDGZlYXR1cmVfMTUyORIFGgMKAQAKFAoLZmVhdHVyZV81MDESBRoDCgEAChQKC2ZlYXR1cmVfMTAxEgUaAwoBAAoUCgtmZWF0dXJlXzEwNRIFGgMKAQAKFAoLZmVhdHVyZV81MjgSBRoDCgEAChMKCWZlYXR1cmVfMhIGGgQKAqABChMKCmZlYXR1cmVfNjMSBRoDCgEAChQKC2ZlYXR1cmVfMTg0EgUaAwoBAAoUCgtmZWF0dXJlXzMxMxIFGgMKAQAKFQoMZmVhdHVyZV8xMzI0EgUaAwoBAAoUCgtmZWF0dXJlXzQyMxIFGgMKAQAKFQoMZmVhdHVyZV8xNTAxEgUaAwoBAAoVCgxmZWF0dXJlXzEzNjESBRoDCgEAChUKDGZlYXR1cmVfMTQ2MBIFGgMKAQAKFAoLZmVhdHVyZV85MzYSBRoDCgEAChUKDGZlYXR1cmVfMTAxMhIFGgMKAQAKEwoKZmVhdHVyZV84OBIFGgMKAQAKFAoLZmVhdHVyZV84MTcSBRoDCgEAChUKDGZlYXR1cmVfMTQwNhIFGgMKAQAKFQoMZmVhdHVyZV8xMTI4EgUaAwoBAAoUCgtmZWF0dXJlXzUwNxIFGgMKAQAKFAoLZmVhdHVyZV82NTASBRoDCgEAChQKC2ZlYXR1cmVfOTc4EgUaAwoBAAoVCgxmZWF0dXJlXzEyMjkSBRoDCgEAChQKC2ZlYXR1cmVfMTgyEgUaAwoBAAoUCgtmZWF0dXJlXzYyORIFGgMKAQAKFAoLZmVhdHVyZV85NTUSBRoDCgEAChQKC2ZlYXR1cmVfMjQwEgUaAwoBAAoUCgtmZWF0dXJlXzgwNBIFGgMKAQAKFAoLZmVhdHVyZV84MDkSBRoDCgEAChQKC2ZlYXR1cmVfNzI4EgUaAwoBAAoUCgtmZWF0dXJlXzE3NxIFGgMKAQAKFAoLZmVhdHVyZV82ODgSBRoDCgEAChQKC2ZlYXR1cmVfMzYwEgUaAwoBAAoUCgtmZWF0dXJlXzM1NBIFGgMKAQAKFAoLZmVhdHVyZV81NzQSBRoDCgEAChQKC2ZlYXR1cmVfNTM0EgUaAwoBAAoUCgtmZWF0dXJlXzEyMhIFGgMKAQAKFAoLZmVhdHVyZV81NTYSBRoDCgEAChQKC2ZlYXR1cmVfNjgyEgUaAwoBAAoVCgxmZWF0dXJlXzExOTQSBRoDCgEAChQKC2ZlYXR1cmVfMzg1EgUaAwoBAAoUCgtmZWF0dXJlXzQ3NRIFGgMKAQAKFAoLZmVhdHVyZV85NzkSBRoDCgEAChQKC2ZlYXR1cmVfMjY0EgUaAwoBAAoUCgtmZWF0dXJlXzUwMxIFGgMKAQAKFQoMZmVhdHVyZV8xMTE4EgUaAwoBAAoVCgxmZWF0dXJlXzEwODgSBRoDCgEAChQKC2ZlYXR1cmVfNzQ0EgUaAwoBAAoUCgtmZWF0dXJlXzQzMhIFGgMKAQAKFQoMZmVhdHVyZV8xMDUwEgUaAwoBAAoVCgxmZWF0dXJlXzE1NTUSBRoDCgEAChMKCmZlYXR1cmVfNjASBRoDCgEAChUKDGZlYXR1cmVfMTAwORIFGgMKAQAKFQoMZmVhdHVyZV8xMTAyEgUaAwoBAAoUCgtmZWF0dXJlXzk3NBIFGgMKAQAKFQoMZmVhdHVyZV8xMTg1EgUaAwoBAAoVCgxmZWF0dXJlXzE0MDMSBRoDCgEAChMKCmZlYXR1cmVfMjMSBRoDCgEAChQKC2ZlYXR1cmVfNTMzEgUaAwoBAAoTCgpmZWF0dXJlXzcxEgUaAwoBAAoTCgpmZWF0dXJlXzUzEgUaAwoBAAoUCgtmZWF0dXJlXzY2OBIFGgMKAQAKFQoMZmVhdHVyZV8xMzkwEgUaAwoBAAoUCgtmZWF0dXJlXzc1MxIFGgMKAQAKFQoMZmVhdHVyZV8xMzUwEgUaAwoBAAoUCgtmZWF0dXJlXzg5ORIFGgMKAQAKFAoLZmVhdHVyZV82MDYSBRoDCgEAChUKDGZlYXR1cmVfMTE5NhIFGgMKAQAKFAoLZmVhdHVyZV80OTESBRoDCgEAChUKDGZlYXR1cmVfMTM5MhIFGgMKAQAKFAoLZmVhdHVyZV80MjESBRoDCgEAChUKDGZlYXR1cmVfMTI3MxIFGgMKAQAKFAoLZmVhdHVyZV85MDcSBRoDCgEAChQKC2ZlYXR1cmVfNTY4EgUaAwoBAAoTCgpmZWF0dXJlXzE4EgUaAwoBAAoVCgxmZWF0dXJlXzEzMTkSBRoDCgEAChQKC2ZlYXR1cmVfMTA3EgUaAwoBAAoUCgtmZWF0dXJlXzYwORIFGgMKAQAKEwoKZmVhdHVyZV8zOBIFGgMKAQAKFAoLZmVhdHVyZV85MjMSBRoDCgEAChMKCmZlYXR1cmVfNDUSBRoDCgEAChQKC2ZlYXR1cmVfNDAyEgUaAwoBAAoUCgtmZWF0dXJlXzU2NxIFGgMKAQAKFAoLZmVhdHVyZV83NjUSBRoDCgEAChQKC2ZlYXR1cmVfNDE1EgUaAwoBAAoVCgxmZWF0dXJlXzE1MjcSBRoDCgEAChQKC2ZlYXR1cmVfNjE4EgUaAwoBAAoUCgtmZWF0dXJlXzI3ORIFGgMKAQAKFAoLZmVhdHVyZV83MjQSBRoDCgEAChMKCmZlYXR1cmVfOTkSBRoDCgEAChUKDGZlYXR1cmVfMTQ0MBIFGgMKAQAKFAoLZmVhdHVyZV82ODASBRoDCgEAChQKC2ZlYXR1cmVfNzAzEgUaAwoBAAoVCgxmZWF0dXJlXzE0OTISBRoDCgEAChQKC2ZlYXR1cmVfOTE2EgUaAwoBAAoUCgtmZWF0dXJlXzQ1NBIFGgMKAQAKFAoLZmVhdHVyZV80MDQSBRoDCgEAChQKC2ZlYXR1cmVfODMxEgUaAwoBAAoUCgtmZWF0dXJlXzE3MxIFGgMKAQAKFAoLZmVhdHVyZV81NjISBRoDCgEAChQKC2ZlYXR1cmVfMjQyEgUaAwoBAAoUCgtmZWF0dXJlXzk1NBIFGgMKAQAKFAoLZmVhdHVyZV8yMDYSBRoDCgEAChUKCWZlYXR1cmVfMxIIEgYKBM3MzD8KFAoLZmVhdHVyZV81OTgSBRoDCgEAChUKDGZlYXR1cmVfMTMyORIFGgMKAQAKFQoMZmVhdHVyZV8xMTY5EgUaAwoBAAoUCgtmZWF0dXJlXzQ3ORIFGgMKAQAKFQoMZmVhdHVyZV8xMDIwEgUaAwoBAAoUCgtmZWF0dXJlXzEwMBIFGgMKAQAKFAoLZmVhdHVyZV81NTMSBRoDCgEAChUKDGZlYXR1cmVfMTQyMxIFGgMKAQAKFAoLZmVhdHVyZV84MTMSBRoDCgEAChUKDGZlYXR1cmVfMTQ1NBIFGgMKAQAKEwoKZmVhdHVyZV84MRIFGgMKAQAKFAoLZmVhdHVyZV8xNDASBRoDCgEAChUKDGZlYXR1cmVfMTM3MBIFGgMKAQAKFAoLZmVhdHVyZV81NzESBRoDCgEAChUKDGZlYXR1cmVfMTA1MxIFGgMKAQAKFQoMZmVhdHVyZV8xNTA5EgUaAwoBAAoVCgxmZWF0dXJlXzEyMzgSBRoDCgEAChUKDGZlYXR1cmVfMTA2NBIFGgMKAQAKFAoLZmVhdHVyZV82NzISBRoDCgEAChQKC2ZlYXR1cmVfNDkwEgUaAwoBAAoVCgxmZWF0dXJlXzEyNzASBRoDCgEAChQKC2ZlYXR1cmVfMjg1EgUaAwoBAAoUCgtmZWF0dXJlXzYwOBIFGgMKAQAKFAoLZmVhdHVyZV8yMjYSBRoDCgEAChUKDGZlYXR1cmVfMTM2NhIFGgMKAQAKFQoMZmVhdHVyZV8xMzg2EgUaAwoBAAoUCgtmZWF0dXJlXzM0MxIFGgMKAQAKFQoMZmVhdHVyZV8xMzM3EgUaAwoBAAoUCgtmZWF0dXJlXzY0NBIFGgMKAQAKFAoLZmVhdHVyZV8yODMSBRoDCgEAChUKDGZlYXR1cmVfMTEzNRIFGgMKAQAKFQoMZmVhdHVyZV8xMzQwEgUaAwoBAAoVCgxmZWF0dXJlXzE1MTYSBRoDCgEAChUKDGZlYXR1cmVfMTQ5MxIFGgMKAQAKFAoLZmVhdHVyZV84MDASBRoDCgEAChQKC2ZlYXR1cmVfOTY1EgUaAwoBAAoUCgtmZWF0dXJlXzM5MBIFGgMKAQAKFAoLZmVhdHVyZV8yNjESBRoDCgEAChQKC2ZlYXR1cmVfMjE1EgUaAwoBAAoVCgxmZWF0dXJlXzEzMjASBRoDCgEAChQKC2ZlYXR1cmVfNDQ5EgUaAwoBAAoUCgtmZWF0dXJlXzc4MxIFGgMKAQAKFAoLZmVhdHVyZV85NjQSBRoDCgEAChQKC2ZlYXR1cmVfMTE4EgUaAwoBAAoVCgxmZWF0dXJlXzEzNjASBRoDCgEAChQKC2ZlYXR1cmVfMjkyEgUaAwoBAAoUCgtmZWF0dXJlXzk0MBIFGgMKAQAKFAoLZmVhdHVyZV8xMjUSBRoDCgEAChUKDGZlYXR1cmVfMTA2NRIFGgMKAQAKFQoMZmVhdHVyZV8xMTc0EgUaAwoBAAoUCgtmZWF0dXJlXzMxNhIFGgMKAQAKFAoLZmVhdHVyZV84ODISBRoDCgEAChQKC2ZlYXR1cmVfODc5EgUaAwoBAAoUCgtmZWF0dXJlXzM1MBIFGgMKAQAKFAoLZmVhdHVyZV84NzISBRoDCgEAChQKC2ZlYXR1cmVfNTIxEgUaAwoBAAoVCgxmZWF0dXJlXzE0ODQSBRoDCgEAChQKC2ZlYXR1cmVfNTU3EgUaAwoBAAoUCgtmZWF0dXJlXzU2MRIFGgMKAQAKFAoLZmVhdHVyZV85ODASBRoDCgEAChQKC2ZlYXR1cmVfMzA0EgUaAwoBAAoUCgtmZWF0dXJlXzY0MBIFGgMKAQAKFQoMZmVhdHVyZV8xMjAwEgUaAwoBAAoUCgtmZWF0dXJlXzc1NxIFGgMKAQAKFAoLZmVhdHVyZV8zNDISBRoDCgEAChUKDGZlYXR1cmVfMTEwNRIFGgMKAQAKEwoKZmVhdHVyZV81MBIFGgMKAQAKFQoMZmVhdHVyZV8xMTQ3EgUaAwoBAAoUCgtmZWF0dXJlXzk2OBIFGgMKAQAKFAoLZmVhdHVyZV82NjASBRoDCgEAChQKC2ZlYXR1cmVfODY1EgUaAwoBAAoVCgxmZWF0dXJlXzE0NDISBRoDCgEAChQKC2ZlYXR1cmVfNDczEgUaAwoBAAoUCgtmZWF0dXJlXzgyMRIFGgMKAQAKFAoLZmVhdHVyZV85NDUSBRoDCgEAChQKC2ZlYXR1cmVfODY5EgUaAwoBAAoVCgxmZWF0dXJlXzEyMDQSBRoDCgEAChUKDGZlYXR1cmVfMTUwMhIFGgMKAQAKFAoLZmVhdHVyZV8yNzYSBRoDCgEAChQKC2ZlYXR1cmVfOTU2EgUaAwoBAAoUCgtmZWF0dXJlXzI1NRIFGgMKAQAKFAoLZmVhdHVyZV85MjgSBRoDCgEAChQKC2ZlYXR1cmVfMzM3EgUaAwoBAAoUCgtmZWF0dXJlXzI3NRIFGgMKAQAKFAoLZmVhdHVyZV81MDISBRoDCgEAChQKC2ZlYXR1cmVfOTIyEgUaAwoBAAoUCgtmZWF0dXJlXzQyMhIFGgMKAQAKFQoMZmVhdHVyZV8xMTU3EgUaAwoBAAoVCgxmZWF0dXJlXzEyNTQSBRoDCgEAChQKC2ZlYXR1cmVfMTMzEgUaAwoBAAoVCgxmZWF0dXJlXzE1NDcSBRoDCgEAChUKDGZlYXR1cmVfMTEyMBIFGgMKAQAKFAoLZmVhdHVyZV83MjkSBRoDCgEAChUKDGZlYXR1cmVfMTM3MRIFGgMKAQAKFAoLZmVhdHVyZV83MTYSBRoDCgEAChUKDGZlYXR1cmVfMTM2MhIFGgMKAQAKFAoLZmVhdHVyZV85NDISBRoDCgEAChQKC2ZlYXR1cmVfNjI0EgUaAwoBAAoVCgxmZWF0dXJlXzE0OTASBRoDCgEAChMKCmZlYXR1cmVfOTQSBRoDCgEAChQKC2ZlYXR1cmVfNTQ3EgUaAwoBAAoVCgxmZWF0dXJlXzE0MjISBRoDCgEAChMKCmZlYXR1cmVfOTASBRoDCgEAChUKDGZlYXR1cmVfMTQxNxIFGgMKAQAKFQoMZmVhdHVyZV8xMzU2EgUaAwoBAAoUCgtmZWF0dXJlXzM4MhIFGgMKAQAKFAoLZmVhdHVyZV8zMDYSBRoDCgEAChUKDGZlYXR1cmVfMTIyNRIFGgMKAQAKFAoLZmVhdHVyZV82MzUSBRoDCgEAChQKC2ZlYXR1cmVfMjExEgUaAwoBAAoVCgxmZWF0dXJlXzExMDESBRoDCgEAChUKDGZlYXR1cmVfMTA5NBIFGgMKAQAKFQoMZmVhdHVyZV8xNDExEgUaAwoBAAoTCgpmZWF0dXJlXzIyEgUaAwoBAAoVCgxmZWF0dXJlXzE0NzQSBRoDCgEAChQKC2ZlYXR1cmVfMTA0EgUaAwoBAAoUCgtmZWF0dXJlXzc2NBIFGgMKAQAKFAoLZmVhdHVyZV8zOTUSBRoDCgEAChQKC2ZlYXR1cmVfOTM1EgUaAwoBAAoUCgtmZWF0dXJlXzYwMRIFGgMKAQAKFQoMZmVhdHVyZV8xMTA5EgUaAwoBAAoVCgxmZWF0dXJlXzEwMTYSBRoDCgEAChQKC2ZlYXR1cmVfOTY2EgUaAwoBAAoUCgtmZWF0dXJlXzMxMhIFGgMKAQAKFAoLZmVhdHVyZV84MTgSBRoDCgEAChQKC2ZlYXR1cmVfMjQzEgUaAwoBAAoVCgxmZWF0dXJlXzEwNjgSBRoDCgEAChQKC2ZlYXR1cmVfNTI2EgUaAwoBAAoUCgtmZWF0dXJlXzY3NhIFGgMKAQAKFAoLZmVhdHVyZV8yNTESBRoDCgEAChUKDGZlYXR1cmVfMTEyMxIFGgMKAQAKFAoLZmVhdHVyZV83OTcSBRoDCgEAChQKC2ZlYXR1cmVfOTA0EgUaAwoBAAoUCgtmZWF0dXJlXzQ5NxIFGgMKAQAKFAoLZmVhdHVyZV83MzISBRoDCgEAChQKC2ZlYXR1cmVfMTkwEgUaAwoBAAoUCgtmZWF0dXJlXzg5NxIFGgMKAQAKFQoMZmVhdHVyZV8xNTEwEgUaAwoBAAoUCgtmZWF0dXJlXzIxMhIFGgMKAQAKFAoLZmVhdHVyZV84MzUSBRoDCgEAChQKC2ZlYXR1cmVfMzc5EgUaAwoBAAoVCgxmZWF0dXJlXzEzNTQSBRoDCgEAChQKC2ZlYXR1cmVfNDk4EgUaAwoBAAoUCgtmZWF0dXJlXzU1OBIFGgMKAQAKFAoLZmVhdHVyZV84OTUSBRoDCgEAChQKC2ZlYXR1cmVfNjIwEgUaAwoBAAoVCgxmZWF0dXJlXzEwMjESBRoDCgEAChQKC2ZlYXR1cmVfNzgyEgUaAwoBAAoUCgtmZWF0dXJlXzE0MhIFGgMKAQAKFAoLZmVhdHVyZV85NDMSBRoDCgEAChQKC2ZlYXR1cmVfMzQ5EgUaAwoBAAoUCgtmZWF0dXJlXzc0MBIFGgMKAQAKFQoMZmVhdHVyZV8xMTY0EgUaAwoBAAoUCgtmZWF0dXJlXzY0MRIFGgMKAQAKFAoLZmVhdHVyZV83OTYSBRoDCgEAChUKDGZlYXR1cmVfMTIwMxIFGgMKAQAKFQoMZmVhdHVyZV8xNTUzEgUaAwoBAAoVCgxmZWF0dXJlXzE1NTgSBRoDCgEAChUKDGZlYXR1cmVfMTQ0ORIFGgMKAQAKFAoLZmVhdHVyZV83OTESBRoDCgEAChQKC2ZlYXR1cmVfNTc1EgUaAwoBAAoUCgtmZWF0dXJlXzc4NRIFGgMKAQAKFAoLZmVhdHVyZV8zNDQSBRoDCgEAChUKDGZlYXR1cmVfMTM4MBIFGgMKAQAKFAoLZmVhdHVyZV83MzASBRoDCgEAChQKC2ZlYXR1cmVfNDg2EgUaAwoBAAoUCgtmZWF0dXJlXzcxNxIFGgMKAQAKFAoLZmVhdHVyZV8zNTYSBRoDCgEAChUKDGZlYXR1cmVfMTA0ORIFGgMKAQAKFAoLZmVhdHVyZV85ODISBRoDCgEAChQKC2ZlYXR1cmVfMzY1EgUaAwoBAAoUCgtmZWF0dXJlXzgzOBIFGgMKAQAKFAoLZmVhdHVyZV82MzISBRoDCgEAChQKC2ZlYXR1cmVfNjUyEgUaAwoBAAoTCgpmZWF0dXJlXzMzEgUaAwoBAAoUCgtmZWF0dXJlXzQ2MxIFGgMKAQAKFAoLZmVhdHVyZV85OTgSBRoDCgEAChUKDGZlYXR1cmVfMTI2MxIFGgMKAQAKFQoMZmVhdHVyZV8xMDE3EgUaAwoBAAoUCgtmZWF0dXJlXzQzMxIFGgMKAQAKFAoLZmVhdHVyZV84MzMSBRoDCgEAChQKC2ZlYXR1cmVfMzgxEgUaAwoBAAoUCgtmZWF0dXJlXzgyNhIFGgMKAQAKFQoMZmVhdHVyZV8xNDc3EgUaAwoBAAoVCgxmZWF0dXJlXzE0NjQSBRoDCgEAChUKDGZlYXR1cmVfMTI0NhIFGgMKAQAKFQoMZmVhdHVyZV8xNTAwEgUaAwoBAAoVCgxmZWF0dXJlXzEyNzQSBRoDCgEAChQKC2ZlYXR1cmVfOTQ4EgUaAwoBAAoUCgtmZWF0dXJlXzgwNxIFGgMKAQAKFQoMZmVhdHVyZV8xMDgyEgUaAwoBAAoUCgtmZWF0dXJlXzg1NhIFGgMKAQAKFQoMZmVhdHVyZV8xMzUzEgUaAwoBAAoVCgxmZWF0dXJlXzEzOTgSBRoDCgEAChQKC2ZlYXR1cmVfMzkyEgUaAwoBAAoUCgtmZWF0dXJlXzY4NxIFGgMKAQAKFAoLZmVhdHVyZV82MjgSBRoDCgEAChQKC2ZlYXR1cmVfNzIyEgUaAwoBAAoVCgxmZWF0dXJlXzExMDYSBRoDCgEAChQKC2ZlYXR1cmVfODQ0EgUaAwoBAAoVCgxmZWF0dXJlXzEwMTQSBRoDCgEAChUKDGZlYXR1cmVfMTQ2MRIFGgMKAQAKFQoMZmVhdHVyZV8xNTI0EgUaAwoBAAoUCgtmZWF0dXJlXzQwMxIFGgMKAQAKFQoMZmVhdHVyZV8xNDA3EgUaAwoBAAoVCgxmZWF0dXJlXzE1MTkSBRoDCgEAChQKC2ZlYXR1cmVfNzEzEgUaAwoBAAoUCgtmZWF0dXJlXzk4ORIFGgMKAQAKFQoMZmVhdHVyZV8xMDAxEgUaAwoBAAoUCgtmZWF0dXJlXzQ0NRIFGgMKAQAKFQoMZmVhdHVyZV8xMzg4EgUaAwoBAAoVCgxmZWF0dXJlXzEwNDMSBRoDCgEAChQKC2ZlYXR1cmVfNzEyEgUaAwoBAAoVCgxmZWF0dXJlXzEyMjYSBRoDCgEAChUKDGZlYXR1cmVfMTAwMhIFGgMKAQAKFQoMZmVhdHVyZV8xMzQzEgUaAwoBAAoVCgxmZWF0dXJlXzEzMzkSBRoDCgEAChUKDGZlYXR1cmVfMTQzMhIFGgMKAQAKFAoLZmVhdHVyZV81MTUSBRoDCgEAChQKC2ZlYXR1cmVfNDkyEgUaAwoBAAoVCgxmZWF0dXJlXzEwNjkSBRoDCgEAChQKC2ZlYXR1cmVfNTQ0EgUaAwoBAAoVCgxmZWF0dXJlXzExMjkSBRoDCgEAChUKDGZlYXR1cmVfMTE4MRIFGgMKAQAKEwoKZmVhdHVyZV83MBIFGgMKAQAKFAoLZmVhdHVyZV8yOTQSBRoDCgEAChQKC2ZlYXR1cmVfMjIxEgUaAwoBAAoVCgxmZWF0dXJlXzExODASBRoDCgEAChQKC2ZlYXR1cmVfODk0EgUaAwoBAAoUCgtmZWF0dXJlXzI2NxIFGgMKAQAKFAoLZmVhdHVyZV8yOTYSBRoDCgEAChQKC2ZlYXR1cmVfMzM5EgUaAwoBAAoUCgtmZWF0dXJlXzY4MxIFGgMKAQAKFAoLZmVhdHVyZV83MTgSBRoDCgEAChQKC2ZlYXR1cmVfMzk2EgUaAwoBAAoUCgtmZWF0dXJlXzY2ORIFGgMKAQAKFAoLZmVhdHVyZV81ODkSBRoDCgEAChMKCmZlYXR1cmVfNDESBRoDCgEAChQKC2ZlYXR1cmVfNDA5EgUaAwoBAAoVCgxmZWF0dXJlXzEyNzESBRoDCgEAChQKC2ZlYXR1cmVfMTg3EgUaAwoBAAoUCgtmZWF0dXJlXzIyNxIFGgMKAQEKFQoMZmVhdHVyZV8xMzQyEgUaAwoBAAoUCgtmZWF0dXJlXzQzOBIFGgMKAQAKFQoMZmVhdHVyZV8xMzgyEgUaAwoBAAoUCgtmZWF0dXJlXzY2MxIFGgMKAQAKFQoMZmVhdHVyZV8xMTQ4EgUaAwoBAAoUCgtmZWF0dXJlXzE4MRIFGgMKAQAKFAoLZmVhdHVyZV8zODMSBRoDCgEAChQKC2ZlYXR1cmVfMzMwEgUaAwoBAAoTCgpmZWF0dXJlXzM0EgUaAwoBAAoUCgtmZWF0dXJlXzIxORIFGgMKAQAKFAoLZmVhdHVyZV80MDcSBRoDCgEAChQKC2ZlYXR1cmVfMjAyEgUaAwoBAAoVCgxmZWF0dXJlXzEwNzQSBRoDCgEAChQKC2ZlYXR1cmVfMzAzEgUaAwoBAAoUCgtmZWF0dXJlXzI1NBIFGgMKAQAKFQoMZmVhdHVyZV8xMjU5EgUaAwoBAAoUCgtmZWF0dXJlXzc4NhIFGgMKAQAKFAoLZmVhdHVyZV85MzASBRoDCgEAChQKC2ZlYXR1cmVfODUyEgUaAwoBAQoVCgxmZWF0dXJlXzEzODQSBRoDCgEAChQKC2ZlYXR1cmVfNTEwEgUaAwoBAAoUCgtmZWF0dXJlXzI4MRIFGgMKAQAKFAoLZmVhdHVyZV8zMjMSBRoDCgEAChUKDGZlYXR1cmVfMTUyNhIFGgMKAQAKFAoLZmVhdHVyZV8zMTESBRoDCgEAChQKC2ZlYXR1cmVfNDM3EgUaAwoBAAoVCgxmZWF0dXJlXzEzNjUSBRoDCgEAChQKC2ZlYXR1cmVfNDE2EgUaAwoBAAoVCgxmZWF0dXJlXzExNjcSBRoDCgEAChQKC2ZlYXR1cmVfOTU4EgUaAwoBAAoTCgpmZWF0dXJlXzU1EgUaAwoBAAoUCgtmZWF0dXJlXzc3OBIFGgMKAQAKFQoMZmVhdHVyZV8xMTk4EgUaAwoBAAoVCgxmZWF0dXJlXzEyOTcSBRoDCgEAChQKC2ZlYXR1cmVfMTkzEgUaAwoBAAoUCgtmZWF0dXJlXzUzMhIFGgMKAQAKFAoLZmVhdHVyZV8yMTMSBRoDCgEAChUKDGZlYXR1cmVfMTE3NhIFGgMKAQAKFQoMZmVhdHVyZV8xMjgxEgUaAwoBAAoVCgxmZWF0dXJlXzEyNjYSBRoDCgEAChMKCmZlYXR1cmVfMTMSBRoDCgEAChQKC2ZlYXR1cmVfMzE3EgUaAwoBAAoUCgtmZWF0dXJlXzk1MBIFGgMKAQAKFAoLZmVhdHVyZV8xNTUSBRoDCgEAChQKC2ZlYXR1cmVfNDgzEgUaAwoBAAoVCgxmZWF0dXJlXzEyNTISBRoDCgEAChQKC2ZlYXR1cmVfNDI4EgUaAwoBAAoUCgtmZWF0dXJlXzc3ORIFGgMKAQAKFAoLZmVhdHVyZV8xNzISBRoDCgEAChQKC2ZlYXR1cmVfMzIwEgUaAwoBAAoUCgtmZWF0dXJlXzk0NhIFGgMKAQAKFAoLZmVhdHVyZV85OTISBRoDCgEAChQKC2ZlYXR1cmVfMjMxEgUaAwoBAAoUCgtmZWF0dXJlXzYyMxIFGgMKAQAKFQoMZmVhdHVyZV8xMzg5EgUaAwoBAAoVCgxmZWF0dXJlXzEyNDUSBRoDCgEAChQKC2ZlYXR1cmVfMjM0EgUaAwoBAAoVCgxmZWF0dXJlXzExNDESBRoDCgEAChUKDGZlYXR1cmVfMTI5MBIFGgMKAQAKFAoLZmVhdHVyZV83MDASBRoDCgEAChQKC2ZlYXR1cmVfNjU5EgUaAwoBAAoUCgtmZWF0dXJlXzE2MBIFGgMKAQAKFAoLZmVhdHVyZV81NjMSBRoDCgEAChQKC2ZlYXR1cmVfNDMxEgUaAwoBAAoVCgxmZWF0dXJlXzEwMDUSBRoDCgEAChQKC2ZlYXR1cmVfNzUxEgUaAwoBAAoUCgtmZWF0dXJlXzk4MRIFGgMKAQAKEwoKZmVhdHVyZV8yNBIFGgMKAQAKFQoMZmVhdHVyZV8xMjI4EgUaAwoBAAoVCgxmZWF0dXJlXzExNDYSBRoDCgEAChQKC2ZlYXR1cmVfNTEyEgUaAwoBAAoUCgtmZWF0dXJlXzc4NxIFGgMKAQAKFQoMZmVhdHVyZV8xNDE2EgUaAwoBAAoUCgtmZWF0dXJlXzkxNRIFGgMKAQAKFQoMZmVhdHVyZV8xNDM4EgUaAwoBAAoUCgtmZWF0dXJlXzEzMBIFGgMKAQAKFAoLZmVhdHVyZV8zNTkSBRoDCgEAChQKC2ZlYXR1cmVfNzU5EgUaAwoBAQoVCgxmZWF0dXJlXzE0NzASBRoDCgEAChUKDGZlYXR1cmVfMTI5MRIFGgMKAQAKFQoMZmVhdHVyZV8xMTU1EgUaAwoBAAoVCgxmZWF0dXJlXzEzNzQSBRoDCgEAChQKC2ZlYXR1cmVfMjgwEgUaAwoBAAoUCgtmZWF0dXJlXzg3MBIFGgMKAQAKFAoLZmVhdHVyZV83NDkSBRoDCgEAChQKC2ZlYXR1cmVfNjk5EgUaAwoBAAoVCgxmZWF0dXJlXzExMTASBRoDCgEAChQKC2ZlYXR1cmVfMjU4EgUaAwoBAAoUCgtmZWF0dXJlXzE1OBIFGgMKAQAKFQoMZmVhdHVyZV8xMDkyEgUaAwoBAAoVCgxmZWF0dXJlXzE0MjYSBRoDCgEAChMKCmZlYXR1cmVfNjYSBRoDCgEAChQKC2ZlYXR1cmVfNTE4EgUaAwoBAAoUCgtmZWF0dXJlXzM1MxIFGgMKAQAKEgoJZmVhdHVyZV85EgUaAwoBAAoVCgxmZWF0dXJlXzEyOTMSBRoDCgEAChQKC2ZlYXR1cmVfNzYzEgUaAwoBAAoUCgtmZWF0dXJlXzE5NBIFGgMKAQAKFQoMZmVhdHVyZV8xMjUwEgUaAwoBAAoVCgxmZWF0dXJlXzE0MzASBRoDCgEAChUKDGZlYXR1cmVfMTAxOBIFGgMKAQAKFQoMZmVhdHVyZV8xMTYyEgUaAwoBAAoUCgtmZWF0dXJlXzkwNhIFGgMKAQAKFAoLZmVhdHVyZV80NjQSBRoDCgEAChQKC2ZlYXR1cmVfNjU0EgUaAwoBAAoUCgtmZWF0dXJlXzUzNRIFGgMKAQAKFQoMZmVhdHVyZV8xNTI4EgUaAwoBAAoUCgtmZWF0dXJlXzk1ORIFGgMKAQAKFQoMZmVhdHVyZV8xNDM3EgUaAwoBAAoUCgtmZWF0dXJlXzkwORIFGgMKAQAKFAoLZmVhdHVyZV8zMzYSBRoDCgEAChUKDGZlYXR1cmVfMTA2MRIFGgMKAQAKFQoMZmVhdHVyZV8xNTEyEgUaAwoBAAoVCgxmZWF0dXJlXzEwNTcSBRoDCgEAChQKC2ZlYXR1cmVfNDQxEgUaAwoBAAoUCgtmZWF0dXJlXzc0MxIFGgMKAQAKFQoMZmVhdHVyZV8xMTMwEgUaAwoBAAoUCgtmZWF0dXJlXzM4ORIFGgMKAQAKEwoKZmVhdHVyZV8zMRIFGgMKAQAKEwoKZmVhdHVyZV8zORIFGgMKAQAKFQoMZmVhdHVyZV8xMjA1EgUaAwoBAAoUCgtmZWF0dXJlXzIyMBIFGgMKAQAKFAoLZmVhdHVyZV80MzUSBRoDCgEAChUKDGZlYXR1cmVfMTAyMhIFGgMKAQAKFQoMZmVhdHVyZV8xMjYxEgUaAwoBAAoVCgxmZWF0dXJlXzExMzcSBRoDCgEAChUKDGZlYXR1cmVfMTE4NBIFGgMKAQAKEwoKZmVhdHVyZV80OBIFGgMKAQAKFAoLZmVhdHVyZV84ODgSBRoDCgEAChQKC2ZlYXR1cmVfNTIyEgUaAwoBAAoUCgtmZWF0dXJlXzUwNhIFGgMKAQAKFAoLZmVhdHVyZV84MzISBRoDCgEAChQKC2ZlYXR1cmVfOTA4EgUaAwoBAAoVCgxmZWF0dXJlXzEyMTASBRoDCgEAChQKC2ZlYXR1cmVfNzQ2EgUaAwoBAAoVCgxmZWF0dXJlXzE0MDkSBRoDCgEAChUKDGZlYXR1cmVfMTM3NhIFGgMKAQAKEwoKZmVhdHVyZV83MhIFGgMKAQAKFAoLZmVhdHVyZV80NTgSBRoDCgEAChUKDGZlYXR1cmVfMTI0OBIFGgMKAQAKFAoLZmVhdHVyZV8yMjQSBRoDCgEAChQKC2ZlYXR1cmVfMTUxEgUaAwoBAAoUCgtmZWF0dXJlXzQwMBIFGgMKAQAKFAoLZmVhdHVyZV80ODISBRoDCgEAChMKCmZlYXR1cmVfNjUSBRoDCgEAChUKDGZlYXR1cmVfMTI1MRIFGgMKAQAKFQoMZmVhdHVyZV8xNDkxEgUaAwoBAAoUCgtmZWF0dXJlXzczMxIFGgMKAQAKFQoMZmVhdHVyZV8xNDUzEgUaAwoBAAoVCgxmZWF0dXJlXzEyNjcSBRoDCgEAChUKDGZlYXR1cmVfMTE2MxIFGgMKAQAKFAoLZmVhdHVyZV85OTYSBRoDCgEAChUKDGZlYXR1cmVfMTQ0NxIFGgMKAQAKFQoMZmVhdHVyZV8xNTAzEgUaAwoBAAoVCgxmZWF0dXJlXzE1MDgSBRoDCgEAChUKDGZlYXR1cmVfMTQ5NhIFGgMKAQAKFQoMZmVhdHVyZV8xMjIwEgUaAwoBAAoSCglmZWF0dXJlXzcSBRoDCgEAChQKC2ZlYXR1cmVfNzI2EgUaAwoBAAoTCgpmZWF0dXJlXzMyEgUaAwoBAAoUCgtmZWF0dXJlXzIzNRIFGgMKAQAKFAoLZmVhdHVyZV84NjASBRoDCgEAChQKC2ZlYXR1cmVfODU4EgUaAwoBAAoTCgpmZWF0dXJlXzc2EgUaAwoBAAoVCgxmZWF0dXJlXzExMTcSBRoDCgEAChQKC2ZlYXR1cmVfNjMzEgUaAwoBAAoUCgtmZWF0dXJlXzY3MxIFGgMKAQAKFAoLZmVhdHVyZV83NDcSBRoDCgEAChQKC2ZlYXR1cmVfMzMzEgUaAwoBAAoUCgtmZWF0dXJlXzc3MxIFGgMKAQAKEwoKZmVhdHVyZV82NxIFGgMKAQAKFQoMZmVhdHVyZV8xNTUxEgUaAwoBAAoUCgtmZWF0dXJlXzE2OBIFGgMKAQAKFQoMZmVhdHVyZV8xMDYzEgUaAwoBAAoUCgtmZWF0dXJlXzExMhIFGgMKAQAKFQoMZmVhdHVyZV8xNTMyEgUaAwoBAAoTCgpmZWF0dXJlXzk4EgUaAwoBAAoUCgtmZWF0dXJlXzIzNxIFGgMKAQAKFQoMZmVhdHVyZV8xMjI3EgUaAwoBAAoUCgtmZWF0dXJlXzkxMhIFGgMKAQAKFAoLZmVhdHVyZV8yMjISBRoDCgEAChQKC2ZlYXR1cmVfNTY0EgUaAwoBAAoUCgtmZWF0dXJlXzM5NBIFGgMKAQAKFQoMZmVhdHVyZV8xMzExEgUaAwoBAAoUCgtmZWF0dXJlXzIxNxIFGgMKAQAKFAoLZmVhdHVyZV83NzISBRoDCgEAChQKC2ZlYXR1cmVfMjkzEgUaAwoBAAoUCgtmZWF0dXJlXzkzOBIFGgMKAQAKFAoLZmVhdHVyZV85ODQSBRoDCgEAChUKDGZlYXR1cmVfMTMwOBIFGgMKAQAKFAoLZmVhdHVyZV85MzESBRoDCgEAChQKC2ZlYXR1cmVfNjc0EgUaAwoBAAoUCgtmZWF0dXJlXzEwMhIFGgMKAQAKFAoLZmVhdHVyZV80NTISBRoDCgEAChUKDGZlYXR1cmVfMTUxOBIFGgMKAQAKFAoLZmVhdHVyZV84NDkSBRoDCgEAChUKDGZlYXR1cmVfMTE5MxIFGgMKAQAKFAoLZmVhdHVyZV8yNzASBRoDCgEAChQKC2ZlYXR1cmVfMzU3EgUaAwoBAAoUCgtmZWF0dXJlXzcwNRIFGgMKAQAKFAoLZmVhdHVyZV85NzISBRoDCgEAChUKDGZlYXR1cmVfMTIxMhIFGgMKAQAKFAoLZmVhdHVyZV8xMDkSBRoDCgEAChQKC2ZlYXR1cmVfNTk5EgUaAwoBAAoUCgtmZWF0dXJlXzE2ORIFGgMKAQAKFQoMZmVhdHVyZV8xNDI5EgUaAwoBAAoUCgtmZWF0dXJlXzUwNRIFGgMKAQAKFAoLZmVhdHVyZV85OTMSBRoDCgEAChUKDGZlYXR1cmVfMTIwORIFGgMKAQAKFAoLZmVhdHVyZV8yOTcSBRoDCgEAChUKDGZlYXR1cmVfMTMwMRIFGgMKAQAKFAoLZmVhdHVyZV85NzMSBRoDCgEAChQKC2ZlYXR1cmVfNzI3EgUaAwoBAAoVCgxmZWF0dXJlXzEzOTUSBRoDCgEAChUKDGZlYXR1cmVfMTM3OBIFGgMKAQAKFAoLZmVhdHVyZV85MTMSBRoDCgEAChQKC2ZlYXR1cmVfMjA1EgUaAwoBAAoUCgtmZWF0dXJlXzEzORIFGgMKAQAKFQoMZmVhdHVyZV8xMDMzEgUaAwoBAAoUCgtmZWF0dXJlXzQwNRIFGgMKAQAKFQoMZmVhdHVyZV8xMjAxEgUaAwoBAAoVCgxmZWF0dXJlXzE0NzkSBRoDCgEAChUKDGZlYXR1cmVfMTEyMRIFGgMKAQAKFAoLZmVhdHVyZV83OTMSBRoDCgEAChUKDGZlYXR1cmVfMTIzMhIFGgMKAQAKFAoLZmVhdHVyZV84OTESBRoDCgEAChQKC2ZlYXR1cmVfMjA0EgUaAwoBAAoUCgtmZWF0dXJlXzQwOBIFGgMKAQAKFQoMZmVhdHVyZV8xMTA4EgUaAwoBAAoUCgtmZWF0dXJlXzM0NxIFGgMKAQAKFAoLZmVhdHVyZV83ODgSBRoDCgEAChUKDGZlYXR1cmVfMTA1NRIFGgMKAQAKFQoMZmVhdHVyZV8xMzM1EgUaAwoBAAoVCgxmZWF0dXJlXzExODISBRoDCgEAChQKC2ZlYXR1cmVfMzc2EgUaAwoBAAoUCgtmZWF0dXJlXzY1MRIFGgMKAQAKFQoMZmVhdHVyZV8xMjYwEgUaAwoBAAoVCgxmZWF0dXJlXzEzMzASBRoDCgEAChUKDGZlYXR1cmVfMTQ2ORIFGgMKAQAKFQoMZmVhdHVyZV8xNDI0EgUaAwoBAAoUCgtmZWF0dXJlXzI1MhIFGgMKAQAKFQoMZmVhdHVyZV8xNDk1EgUaAwoBAAoUCgtmZWF0dXJlXzgzORIFGgMKAQAKFAoLZmVhdHVyZV8zMTUSBRoDCgEAChUKDGZlYXR1cmVfMTM2NBIFGgMKAQAKFQoMZmVhdHVyZV8xNDUwEgUaAwoBAAoUCgtmZWF0dXJlXzIzOBIFGgMKAQAKFAoLZmVhdHVyZV80NzASBRoDCgEAChUKDGZlYXR1cmVfMTQ4MRIFGgMKAQAKFQoMZmVhdHVyZV8xMjA2EgUaAwoBAAoUCgtmZWF0dXJlXzYyMRIFGgMKAQAKFAoLZmVhdHVyZV8yMjgSBRoDCgEAChQKC2ZlYXR1cmVfMTM3EgUaAwoBAAoUCgtmZWF0dXJlXzg1ORIFGgMKAQAKFQoMZmVhdHVyZV8xMjg4EgUaAwoBAAoUCgtmZWF0dXJlXzg2NhIFGgMKAQAKFQoMZmVhdHVyZV8xNDE5EgUaAwoBAAoUCgtmZWF0dXJlXzcxMRIFGgMKAQAKFQoMZmVhdHVyZV8xNDQ0EgUaAwoBAAoVCgxmZWF0dXJlXzE0MDgSBRoDCgEAChUKDGZlYXR1cmVfMTIxORIFGgMKAQAKFAoLZmVhdHVyZV81NjUSBRoDCgEAChQKC2ZlYXR1cmVfODMwEgUaAwoBAAoTCgpmZWF0dXJlXzc5EgUaAwoBAAoUCgtmZWF0dXJlXzc5MhIFGgMKAQAKFAoLZmVhdHVyZV8zNzcSBRoDCgEAChQKC2ZlYXR1cmVfMTA4EgUaAwoBAAoTCgpmZWF0dXJlXzUxEgUaAwoBAAoUCgtmZWF0dXJlXzc5MBIFGgMKAQAKFAoLZmVhdHVyZV83MzQSBRoDCgEAChUKDGZlYXR1cmVfMTEyNhIFGgMKAQAKEwoKZmVhdHVyZV81OBIFGgMKAQAKFAoLZmVhdHVyZV82MDASBRoDCgEAChQKC2ZlYXR1cmVfOTk1EgUaAwoBAAoVCgxmZWF0dXJlXzE1MTUSBRoDCgEAChQKC2ZlYXR1cmVfODE0EgUaAwoBAAoTCgpmZWF0dXJlXzQyEgUaAwoBAAoVCgxmZWF0dXJlXzEyMDgSBRoDCgEAChMKCmZlYXR1cmVfMjkSBRoDCgEAChQKC2ZlYXR1cmVfODkyEgUaAwoBAAoTCgpmZWF0dXJlXzUyEgUaAwoBAAoVCgxmZWF0dXJlXzExNjESBRoDCgEAChQKC2ZlYXR1cmVfNDk5EgUaAwoBAAoVCgxmZWF0dXJlXzE1MTcSBRoDCgEAChUKDGZlYXR1cmVfMTA1NBIFGgMKAQAKFAoLZmVhdHVyZV82MDMSBRoDCgEAChUKDGZlYXR1cmVfMTA5NhIFGgMKAQAKFAoLZmVhdHVyZV82MTkSBRoDCgEAChUKDGZlYXR1cmVfMTE1NBIFGgMKAQAKEwoKZmVhdHVyZV83NBIFGgMKAQAKEwoKZmVhdHVyZV8yMRIFGgMKAQAKFAoLZmVhdHVyZV82MDQSBRoDCgEAChUKDGZlYXR1cmVfMTQ5NBIFGgMKAQAKFQoMZmVhdHVyZV8xMDM2EgUaAwoBAAoTCgpmZWF0dXJlXzM2EgUaAwoBAAoUCgtmZWF0dXJlXzExNxIFGgMKAQAKFAoLZmVhdHVyZV8yMTASBRoDCgEAChUKDGZlYXR1cmVfMTI4MxIFGgMKAQAKFQoMZmVhdHVyZV8xMzgxEgUaAwoBAAoUCgtmZWF0dXJlXzk5MBIFGgMKAQAKFQoMZmVhdHVyZV8xMzkxEgUaAwoBAAoVCgxmZWF0dXJlXzEwOTcSBRoDCgEAChUKDGZlYXR1cmVfMTI2NRIFGgMKAQAKFQoMZmVhdHVyZV8xMDM1EgUaAwoBAAoVCgxmZWF0dXJlXzExNTMSBRoDCgEAChQKC2ZlYXR1cmVfNzg5EgUaAwoBAAoVCgxmZWF0dXJlXzEwMjMSBRoDCgEAChQKC2ZlYXR1cmVfNjk1EgUaAwoBAAoUCgtmZWF0dXJlXzIwMxIFGgMKAQAKFQoMZmVhdHVyZV8xNTMwEgUaAwoBAAoUCgtmZWF0dXJlXzM0MRIFGgMKAQAKFQoMZmVhdHVyZV8xNDQ1EgUaAwoBAAoVCgxmZWF0dXJlXzEyMzMSBRoDCgEAChQKC2ZlYXR1cmVfNzU4EgUaAwoBAAoVCgxmZWF0dXJlXzEzNDcSBRoDCgEAChUKDGZlYXR1cmVfMTM3MhIFGgMKAQAKFAoLZmVhdHVyZV82MTISBRoDCgEAChUKDGZlYXR1cmVfMTE3NxIFGgMKAQAKFAoLZmVhdHVyZV80MjASBRoDCgEAChUKDGZlYXR1cmVfMTI3NhIFGgMKAQAKFAoLZmVhdHVyZV8xMTUSBRoDCgEAChUKDGZlYXR1cmVfMTEwMxIFGgMKAQAKFAoLZmVhdHVyZV81MjQSBRoDCgEAChUKDGZlYXR1cmVfMTMxNxIFGgMKAQAKFQoMZmVhdHVyZV8xNDcyEgUaAwoBAAoUCgtmZWF0dXJlXzQ3NxIFGgMKAQAKFAoLZmVhdHVyZV85MDUSBRoDCgEAChQKC2ZlYXR1cmVfMzA4EgUaAwoBAAoUCgtmZWF0dXJlXzQ4NRIFGgMKAQAKEwoKZmVhdHVyZV85NxIFGgMKAQAKFQoMZmVhdHVyZV8xMzYzEgUaAwoBAAoVCgxmZWF0dXJlXzEwOTMSBRoDCgEAChQKC2ZlYXR1cmVfNTE5EgUaAwoBAAoVCgxmZWF0dXJlXzEzNjcSBRoDCgEAChUKDGZlYXR1cmVfMTMyMRIFGgMKAQAKFAoLZmVhdHVyZV81MzASBRoDCgEAChQKC2ZlYXR1cmVfOTI0EgUaAwoBAAoUCgtmZWF0dXJlXzM1MRIFGgMKAQAKFAoLZmVhdHVyZV85NzUSBRoDCgEAChQKC2ZlYXR1cmVfNjI1EgUaAwoBAAoVCgxmZWF0dXJlXzEwMjcSBRoDCgEAChQKC2ZlYXR1cmVfODM0EgUaAwoBAAoUCgtmZWF0dXJlXzU5NxIFGgMKAQAKFAoLZmVhdHVyZV84ODASBRoDCgEAChQKC2ZlYXR1cmVfNzA0EgUaAwoBAAoVCgxmZWF0dXJlXzEyNTMSBRoDCgEAChQKC2ZlYXR1cmVfODIzEgUaAwoBAAoUCgtmZWF0dXJlXzgxMRIFGgMKAQAKFQoMZmVhdHVyZV8xNTA1EgUaAwoBAQoVCgxmZWF0dXJlXzEzMTYSBRoDCgEAChUKDGZlYXR1cmVfMTI1NRIFGgMKAQAKFQoMZmVhdHVyZV8xMTUxEgUaAwoBAAoUCgtmZWF0dXJlXzk5NBIFGgMKAQAKFQoMZmVhdHVyZV8xMTY1EgUaAwoBAAoVCgxmZWF0dXJlXzEzMTgSBRoDCgEAChQKC2ZlYXR1cmVfNjI3EgUaAwoBAAoTCgpmZWF0dXJlXzE2EgUaAwoBAAoUCgtmZWF0dXJlXzM2NxIFGgMKAQAKFAoLZmVhdHVyZV84NjcSBRoDCgEAChQKC2ZlYXR1cmVfNzAxEgUaAwoBAAoUCgtmZWF0dXJlXzcxNBIFGgMKAQAKFAoLZmVhdHVyZV83MTUSBRoDCgEAChUKDGZlYXR1cmVfMTIxNRIFGgMKAQAKFAoLZmVhdHVyZV80MjkSBRoDCgEAChUKDGZlYXR1cmVfMTAwNxIFGgMKAQAKFQoMZmVhdHVyZV8xMTk1EgUaAwoBAAoUCgtmZWF0dXJlXzU4NRIFGgMKAQAKFQoMZmVhdHVyZV8xMzk2EgUaAwoBAAoUCgtmZWF0dXJlXzU3MhIFGgMKAQAKFAoLZmVhdHVyZV8zMjESBRoDCgEAChQKC2ZlYXR1cmVfNjM4EgUaAwoBAAoUCgtmZWF0dXJlXzI4OBIFGgMKAQAKFAoLZmVhdHVyZV80ODcSBRoDCgEAChUKDGZlYXR1cmVfMTMxMxIFGgMKAQAKFAoLZmVhdHVyZV83NzESBRoDCgEAChQKC2ZlYXR1cmVfNjEwEgUaAwoBAAoVCgxmZWF0dXJlXzExMTUSBRoDCgEAChQKC2ZlYXR1cmVfNDExEgUaAwoBAAoUCgtmZWF0dXJlXzQ2MRIFGgMKAQAKFAoLZmVhdHVyZV8xNDMSBRoDCgEAChUKDGZlYXR1cmVfMTMwNxIFGgMKAQAKFQoMZmVhdHVyZV8xMzAzEgUaAwoBAAoVCgxmZWF0dXJlXzE0NjgSBRoDCgEAChQKC2ZlYXR1cmVfNjI2EgUaAwoBAAoVCgxmZWF0dXJlXzEyODkSBRoDCgEAChUKDGZlYXR1cmVfMTE4NhIFGgMKAQAKFQoMZmVhdHVyZV8xMzU5EgUaAwoBAAoUCgtmZWF0dXJlXzI0ORIFGgMKAQAKFAoLZmVhdHVyZV83NjASBRoDCgEAChUKDGZlYXR1cmVfMTUzNBIFGgMKAQAKFAoLZmVhdHVyZV80NjUSBRoDCgEAChQKC2ZlYXR1cmVfMTU0EgUaAwoBAAoVCgxmZWF0dXJlXzEwNzkSBRoDCgEAChQKC2ZlYXR1cmVfNjE0EgUaAwoBAAoUCgtmZWF0dXJlXzUzOBIFGgMKAQAKFAoLZmVhdHVyZV85MTgSBRoDCgEAChQKC2ZlYXR1cmVfNDkzEgUaAwoBAAoUCgtmZWF0dXJlXzUyNRIFGgMKAQAKFAoLZmVhdHVyZV80NjcSBRoDCgEAChUKDGZlYXR1cmVfMTMwNRIFGgMKAQAKFQoMZmVhdHVyZV8xMjU3EgUaAwoBAAoVCgxmZWF0dXJlXzEzOTkSBRoDCgEAChUKDGZlYXR1cmVfMTUzORIFGgMKAQAKFAoLZmVhdHVyZV8xNDcSBRoDCgEAChQKC2ZlYXR1cmVfODkzEgUaAwoBAAoUCgtmZWF0dXJlXzYzNhIFGgMKAQA="}]}
print(f"type(pay_load): {type(pay_load)}")
pay_load_jsons = json.dumps(pay_load)
#print(f"type(pay_load_jsons): {type(pay_load_jsons)}")
response = requests.post('http://10.4.0.9:8501/v1/models/wafer:predict', headers=headers, data=pay_load_jsons)
print(response.json())
#example_infer = wafer_serving_model.signatures['serving_default'](instances=[example])
#print(example_infer)
train_examples_file_path = os.path.join('pipelines/detect_anomolies_on_wafer_tfdv_schema/CsvExampleGen/examples/19', 'Split-train/data_tfrecord-00000-of-00001.gz')
raw_dataset = tf.data.TFRecordDataset(train_examples_file_path, compression_type='GZIP')
(base) maye@maye-Inspiron-5547:~/github_repository/tensorflow_serving$ sudo nerdctl run -t --rm -p 8500:8500 -p 8501:8501 -v "/home/maye/maye_temp/wafer:/models/wafer" -e MODEL_NAME=wafer tensorflow/serving
[sudo] password for maye:
2024-02-16 07:16:23.531943: I tensorflow_serving/model_servers/server.cc:74] Building single TensorFlow model file config: model_name: half_plus_two model_base_path: /models/half_plus_two
2024-02-16 07:16:23.617629: I tensorflow_serving/model_servers/server_core.cc:467] Adding/updating models.
2024-02-16 07:16:23.617750: I tensorflow_serving/model_servers/server_core.cc:596] (Re-)adding model: half_plus_two
2024-02-16 07:16:23.824056: I tensorflow_serving/core/basic_manager.cc:739] Successfully reserved resources to load servable {name: half_plus_two version: 123}
2024-02-16 07:16:23.824111: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: half_plus_two version: 123}
2024-02-16 07:16:23.824140: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: half_plus_two version: 123}
2024-02-16 07:16:23.841445: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:83] Reading SavedModel from: /models/half_plus_two/00000123
2024-02-16 07:16:23.848473: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:51] Reading meta graph with tags { serve }
2024-02-16 07:16:23.848516: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:146] Reading SavedModel debug info (if present) from: /models/half_plus_two/00000123
2024-02-16 07:16:23.883025: I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-02-16 07:16:24.032082: I external/org_tensorflow/tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:382] MLIR V1 optimization pass is not enabled
2024-02-16 07:16:24.090038: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:233] Restoring SavedModel bundle.
2024-02-16 07:16:25.306378: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:217] Running initialization op on SavedModel bundle at path: /models/half_plus_two/00000123
2024-02-16 07:16:25.328697: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:316] SavedModel load for tags { serve }; Status: success: OK. Took 1487618 microseconds.
2024-02-16 07:16:25.329046: I tensorflow_serving/servables/tensorflow/saved_model_warmup_util.cc:80] No warmup data file found at /models/half_plus_two/00000123/assets.extra/tf_serving_warmup_requests
2024-02-16 07:16:25.429497: I tensorflow_serving/core/loader_harness.cc:95] Successfully loaded servable version {name: half_plus_two version: 123}
2024-02-16 07:16:25.430402: I tensorflow_serving/model_servers/server_core.cc:488] Finished adding/updating models
2024-02-16 07:16:25.430447: I tensorflow_serving/model_servers/server.cc:118] Using InsecureServerCredentials
2024-02-16 07:16:25.430496: I tensorflow_serving/model_servers/server.cc:383] Profiler service is enabled
2024-02-16 07:16:25.491575: I tensorflow_serving/model_servers/server.cc:409] Running gRPC ModelServer at 0.0.0.0:8500 ...
2024-02-16 07:16:25.499873: I tensorflow_serving/model_servers/server.cc:430] Exporting HTTP/REST API at:localhost:8501 ...
[evhttp_server.cc : 245] NET_LOG: Entering the event loop ...