{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parametric Extended Kalman Filter(EKF) for GPS triangulation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a simple implementation of an Extended Kalman Filter for GPS triangulation. The filter is implemented in Python and tested with simulated data. The filter is able to estimate the position and velocity of a moving object given the GPS measurements with a certain accuracy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## State Definition\n",
"The state of the system is defined as follows:\n",
"$$\n",
"\\begin{align}\n",
"\\mathbf{x} &= \\begin{bmatrix} x \\\\ \\dot{x} \\\\ y \\\\ \\dot{y} \\\\ z \\\\ \\dot{z} \\\\ cdt \\\\ c\\dot{dt}\\end{bmatrix}\n",
"\\end{align}\n",
"$$\n",
"where $x,y,z$ are the position of the object in the ECEF frame, $v_x,v_y,v_z$ are the velocity of the object in the ECEF frame, $cdt$ is the reciever clock bias and $c\\dot{dt}$ is the reciever clock drift in units of meters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## State transition function:\n",
"Assuming constant velocity model, the state transition function $F$ can be calculated by using the unit time step model:\n",
"$$\n",
"A = \\begin{bmatrix} 1 & \\Delta t \\\\ 0 & 1 \\end{bmatrix}\n",
"$$\n",
"Now the state transition function can be calculated as:\n",
"$$\n",
"F = \\begin{bmatrix} A & 0 & 0 & 0 \\\\ 0 & A & 0 & 0 \\\\ 0 & 0 & A & 0 \\\\ 0 & 0 & 0 & A \\end{bmatrix}\n",
"$$\n",
"which is and 8x8 matrix which maps the state at time $t$ to the state at time $t+1$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Process noise\n",
"The continuous time process noise matrix $Q$ is defined as:\n",
"$$\n",
"Q = \\int_{0}^{\\Delta t} F(t)Q_cF^T(t) dt\n",
"$$\n",
"where $Q_c$ is the continuous process noise matrix. This is the projection of the continuous noise onto the discrete time model. Defining $Q_c$ as:\n",
"$$\n",
"Q_c = \\begin{bmatrix} 0 & 0 \\\\ 0 & 1 \\end{bmatrix} \\cdot \\Phi_{B}^2\n",
"$$\n",
"where $\\Phi_{B}$ is the spectral density of the process noise.\n",
"\n",
"Now we can project the continuous time process noise onto the discrete time model:\n",
"$$\n",
"Q_p = \\int_{0}^{\\Delta t} F(t)Q_cF^T(t) dt = \\begin{bmatrix} \\frac{1}{3}\\Delta t^3 & \\frac{1}{2}\\Delta t^2 \\\\ \\frac{1}{2}\\Delta t^2 & \\Delta t \\end{bmatrix} \\cdot \\Phi_{B}^2\n",
"$$\n",
"The clock covariance can be modelled by a random walk process defined by $S_p$ the white noise spectral density leading to random walk velocity error, and $S_g$ the white noise spectral density leading to random walk clock drift error. The process noise matrix $Q_c$ is then defined as:\n",
"$$\n",
"Q_c = \\begin{bmatrix} S_f \\Delta t +\\frac{S_g\\Delta t^3}{3}, S_g\\frac{\\Delta t^2}{2} \\\\ S_g\\frac{\\Delta t^2}{2} , S_g \\Delta t \\end{bmatrix}\n",
"$$\n",
"\n",
"So the final process noise matrix $Q$ is defined as:\n",
"$$\n",
"Q = \\begin{bmatrix} Q_p, 0, 0, 0 \\\\ 0, Q_p, 0, 0 \\\\ 0, 0, Q_p, 0 \\\\ 0, 0, 0, Q_c \\end{bmatrix}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Measurement covariance\n",
"The measurement covariance matrix is defined to be a diagonal matrix with uncorrected standard deviation $\\sigma_r$ of the measurements. The measurement covariance matrix is defined as:\n",
"$$\n",
"R = \\begin{bmatrix} \\sigma_r^2, 0, 0 , 0 \\\\ 0, \\sigma_r^2, 0 , 0\\\\ 0, 0, \\sigma_r^2 ,0 \\\\ 0, 0, 0, \\sigma_r^2 \\end{bmatrix}\n",
"$$\n",
"where $\\sigma_r$ is the standard deviation of the pseudorange measurements. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Measurement function\n",
"The measurement function $h$ to convert the state to the measurement space. To convert the state vector to the measurement space, we need to calculate the distance between the reciever and the GPS satellites plus the reciever clock offset error. Hence, the measurement function $h$ is defined as:\n",
"$$\n",
"h(x_s , s_i) = \\sqrt {(x_s - x_i)^2 + (y_s - y_i)^2 + (z_s - z_i)^2} + cdt\n",
"$$\n",
"This is a non-linear function and hence a non-linear filter is required to estimate the state of the system."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Processing 2022-11-19 23:59:30: 100%|██████████| 2880/2880 [00:05<00:00, 488.79it/s]\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"from navigator.epoch import Epoch, from_rinex_files, EpochCollection\n",
"from pathlib import Path\n",
"\n",
"\n",
"obsPath = Path(\"data/JPLM00USA_R_20223230000_01D_30S_MO.crx.gz\")\n",
"navPath = Path(\"data/JPLM00USA_R_20223230000_01D_GN.rnx.gz\")\n",
"\n",
"epoches = list(from_rinex_files(\n",
" observation_file=obsPath,\n",
" navigation_file=navPath,\n",
" profile=Epoch.DUAL\n",
"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since these are the collection of continouos epoches, we wrap the list of the Epoches into an epoches collection."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"collection = EpochCollection(\n",
" epochs=epoches,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not to run the EKF, we need a continuoius visiblily of the tracked satellites. This continuous visiblity allows us to run the extended kalman filter to filter the states."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"ctg0 = collection.track(mode=EpochCollection.VISIBILITY)[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's set up the WLS, PEKF and EKF traingulation algorathim for testing"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from navigator.core import IterativeTriangulationInterface\n",
"import torch\n",
"CODE_ONLY = False\n",
"z, sv_pos = IterativeTriangulationInterface.epoches_to_timeseries(\n",
" epoches=ctg0,\n",
" sv_filter=ctg0[0].common_sv,\n",
" code_only=CODE_ONLY\n",
")\n",
"\n",
"# Convert to torch tensor\n",
"z = torch.tensor(z, dtype=torch.float64)\n",
"sv_pos = torch.tensor(sv_pos, dtype=torch.float64)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Triangulating: 100%|██████████| 171/171 [00:21<00:00, 8.14it/s]\n"
]
}
],
"source": [
"from navigator.core import ExtendedKalmanInterface, Triangulate, IterativeTriangulationInterface\n",
"\n",
"# Define the Iterative Triangulation Interface to compare with the EKF\n",
"tri_wls = Triangulate(\n",
" interface=IterativeTriangulationInterface(\n",
" code_only=CODE_ONLY\n",
"\n",
" )\n",
")\n",
"\n",
"df_wls = tri_wls.triangulate_time_series(epoches=ctg0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's define the state and measurement dimensions and necessary variables."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from navigator.neural import (\n",
" ParametricExtendedInterface,\n",
" SymmetricPositiveDefiniteMatrix,\n",
" DiagonalSymmetricPositiveDefiniteMatrix,\n",
" TransitionModel,\n",
" ObservationModel,\n",
" discretized_process_noise_matrix,\n",
" BiasedObservationModel)\n",
"from navigator.core import ExtendedKalmanInterface, Triangulate, IterativeTriangulationInterface\n",
"import numpy as np\n",
"\n",
"\n",
"# Define the state dimension and measurement dimension\n",
"DIM_STATE = 8\n",
"DIM_MEASUREMENT = len(ctg0[0]) if CODE_ONLY else 2 * len(ctg0[0]) # Length of the satellites in first epoch\n",
"DT = 30.0\n",
"# Define the initial state\n",
"x0 = torch.zeros(DIM_STATE)\n",
"P0 = torch.eye(DIM_STATE) * 1e5\n",
"\n",
"# Define the process noise\n",
"Q_AUT = torch.eye(DIM_STATE) * 1e-6\n",
"Q = discretized_process_noise_matrix(dt=DT, Q_0=Q_AUT)\n",
"R = torch.eye(DIM_MEASUREMENT) * 64\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets set up the classical EKF first and get the estimation. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Define the Extend Kalman Interface\n",
"eki = ExtendedKalmanInterface(\n",
" dt=30.0, # This data is in 30s interval\n",
" num_sv=DIM_MEASUREMENT, # Number of satellites\n",
" x0=x0.numpy(), # Prior state\n",
" P0=P0.numpy(), # Prior covariance\n",
" R=R.numpy(), # Measurement noise\n",
" Q_0=Q_AUT.numpy(), # Process noise\n",
" log_innovation=True, # Log the innovation\n",
" code_only=True, # Genrally num_sv and dim measuremnt is different if using phase measurements, but we already adjusted that in dim_measurements\n",
"\n",
")\n",
"\n",
"ekf_state, ekf_resudials = eki.fixed_interval_smoothing(\n",
" x0=x0.numpy(),\n",
" P0=P0.numpy(),\n",
" z=z.numpy(),\n",
" sv_pos=sv_pos.numpy()\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's set up the PEKF for training and hyperparameter estimation"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"\n",
"# Define the noise models\n",
"q_module = SymmetricPositiveDefiniteMatrix(M=Q, trainable=True)\n",
"r_module = DiagonalSymmetricPositiveDefiniteMatrix(M=R, trainable=True)\n",
"\n",
"# Define the transition model\n",
"transistion_model = TransitionModel(\n",
" dt=DT,\n",
" learnable=False,\n",
")\n",
"observation_model = ObservationModel(\n",
" trainable=False,\n",
" dim_measurement=DIM_MEASUREMENT,\n",
")\n",
"\n",
"pekf = ParametricExtendedInterface(\n",
" dt=DT,\n",
" dim_z=DIM_MEASUREMENT,\n",
" f=transistion_model,\n",
" h=observation_model,\n",
" Q=q_module,\n",
" R=r_module,\n",
" objective=ParametricExtendedInterface.NEGATIVE_LOG_LIKELIHOOD,\n",
").to(torch.float64)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's preprocess the tensors to computational format i.e range_measurements, satellite positions which will apply all the preprocessing given in epoch profile"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"import torch.optim as optim\n",
"\n",
"TUNING_LENGTH = 50\n",
"MAX_EPOCHES = 100\n",
"\n",
"z_tune = z[:TUNING_LENGTH]\n",
"sv_pos_tune = sv_pos[:TUNING_LENGTH]\n",
"\n",
"\n",
"# Set the learning rate for the optimizer\n",
"LR_Q = 1e-3\n",
"LR_R = 1e-3\n",
"LR_H = 1e-5\n",
"LR_F = 1e-5\n",
"\n",
"GAMMA = (1/100) ** (1/MAX_EPOCHES)\n",
"\n",
"params = [\n",
" {'params': q_module.parameters(), 'lr': LR_Q }, # L2 Regularization\n",
" {'params': r_module.parameters(), 'lr': LR_R,}, # L2 Regularization\n",
" {'params': transistion_model.parameters(), 'lr': LR_F},\n",
" {'params': observation_model.parameters(), 'lr': LR_H},\n",
"]\n",
"\n",
"optimizer = optim.Adam(params, lr=1e-3)\n",
"\n",
"explrs = optim.lr_scheduler.ExponentialLR(optimizer, gamma=GAMMA)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's tune the PEKF on the tuning dataset"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0: Loss = 27038360064.2245, Q_grad_norm = 3968671806.196714, R_grad_norm = 73814684.66811484, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 1: Loss = 14107759806.863756, Q_grad_norm = 5427325854.641763, R_grad_norm = 57393183.098413624, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 2: Loss = 11258521373.270433, Q_grad_norm = 1142424715.2717113, R_grad_norm = 52620834.22234754, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 3: Loss = 9990074199.231567, Q_grad_norm = 741224403.505499, R_grad_norm = 45512246.20947275, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 4: Loss = 9379591952.420927, Q_grad_norm = 109591670.42726618, R_grad_norm = 44240649.808141544, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 5: Loss = 9188403904.928392, Q_grad_norm = 34569096.39256566, R_grad_norm = 43809336.85934101, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 6: Loss = 9055900159.286354, Q_grad_norm = 19697835.02483456, R_grad_norm = 43200877.29420602, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 7: Loss = 8919655606.221231, Q_grad_norm = 14468083.481402045, R_grad_norm = 42270765.88222693, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 8: Loss = 8768895808.666277, Q_grad_norm = 11727206.844378693, R_grad_norm = 41053096.55266218, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 9: Loss = 8602960199.455137, Q_grad_norm = 9796163.238875085, R_grad_norm = 39609970.34157556, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 10: Loss = 8423994027.050131, Q_grad_norm = 8266764.492912107, R_grad_norm = 38005464.442452624, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 11: Loss = 8234973347.414517, Q_grad_norm = 7011646.733540471, R_grad_norm = 36298405.17560213, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 12: Loss = 8038969393.125875, Q_grad_norm = 5971698.336797704, R_grad_norm = 34539476.216455996, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 13: Loss = 7838828058.864831, Q_grad_norm = 5107861.629157683, R_grad_norm = 32770222.856757324, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 14: Loss = 7637034406.189409, Q_grad_norm = 4389393.379750947, R_grad_norm = 31023182.700174958, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 15: Loss = 7435669768.402222, Q_grad_norm = 3790829.1217356743, R_grad_norm = 29322672.16482941, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 16: Loss = 7236419522.635701, Q_grad_norm = 3291004.7662997334, R_grad_norm = 27685912.744935658, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 17: Loss = 7040605548.214679, Q_grad_norm = 2872480.9824708966, R_grad_norm = 26124260.038254924, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 18: Loss = 6849230792.23733, Q_grad_norm = 2521010.3039658023, R_grad_norm = 24644397.47555266, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 19: Loss = 6663026643.204123, Q_grad_norm = 2225012.5433521424, R_grad_norm = 23249407.57018774, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 20: Loss = 6482499291.135314, Q_grad_norm = 1975087.8314740174, R_grad_norm = 21939688.336816207, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 21: Loss = 6307971694.342197, Q_grad_norm = 1763590.2305525464, R_grad_norm = 20713705.947683364, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 22: Loss = 6139620828.9814005, Q_grad_norm = 1584271.4400774112, R_grad_norm = 19568595.187601577, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 23: Loss = 5977509226.006213, Q_grad_norm = 1431991.708373743, R_grad_norm = 18500624.100254975, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 24: Loss = 5821611507.736794, Q_grad_norm = 1302490.991483885, R_grad_norm = 17505547.35433697, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 25: Loss = 5671836131.463947, Q_grad_norm = 1192210.5912873638, R_grad_norm = 16578866.094658688, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 26: Loss = 5528042864.119204, Q_grad_norm = 1098155.7019640987, R_grad_norm = 15716015.589517664, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 27: Loss = 5390056926.198083, Q_grad_norm = 1017790.681189338, R_grad_norm = 14912496.66445456, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 28: Loss = 5257680004.818107, Q_grad_norm = 948959.4386432016, R_grad_norm = 14163963.357392084, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 29: Loss = 5130698949.96082, Q_grad_norm = 889824.7074157381, R_grad_norm = 13466279.450027293, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 30: Loss = 5008892402.180165, Q_grad_norm = 838821.1917955762, R_grad_norm = 12815550.821556894, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 31: Loss = 4892035928.739513, Q_grad_norm = 794618.3535918841, R_grad_norm = 12208141.150565067, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 32: Loss = 4779905734.126259, Q_grad_norm = 756089.8999135436, R_grad_norm = 11640675.60164148, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 33: Loss = 4672281542.946666, Q_grad_norm = 722287.7495524728, R_grad_norm = 11110036.430303894, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 34: Loss = 4568948595.152737, Q_grad_norm = 692419.0796441452, R_grad_norm = 10613353.281645585, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 35: Loss = 4469699027.90784, Q_grad_norm = 665825.6094055086, R_grad_norm = 10147990.315745607, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 36: Loss = 4374332823.454965, Q_grad_norm = 641964.8863599034, R_grad_norm = 9711530.982719215, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 37: Loss = 4282658406.7676897, Q_grad_norm = 620393.1109334312, R_grad_norm = 9301762.871843401, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 38: Loss = 4194492864.0040264, Q_grad_norm = 600749.8059972642, R_grad_norm = 8916661.514112946, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 39: Loss = 4109662115.730308, Q_grad_norm = 582743.8619216436, R_grad_norm = 8554375.311739963, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 40: Loss = 4028000779.2145195, Q_grad_norm = 566141.4186487757, R_grad_norm = 8213210.618420382, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 41: Loss = 3949352083.028952, Q_grad_norm = 550755.2202965793, R_grad_norm = 7891618.255915522, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 42: Loss = 3873567550.690697, Q_grad_norm = 536435.3712707654, R_grad_norm = 7588180.349597303, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 43: Loss = 3800506693.08533, Q_grad_norm = 523061.53160780115, R_grad_norm = 7301598.547757609, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 44: Loss = 3730036717.7085285, Q_grad_norm = 510536.46131617343, R_grad_norm = 7030683.222352857, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 45: Loss = 3662032179.813398, Q_grad_norm = 498780.5211108988, R_grad_norm = 6774343.518224294, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 46: Loss = 3596374567.9867682, Q_grad_norm = 487727.37172854337, R_grad_norm = 6531578.189808527, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 47: Loss = 3532951983.156283, Q_grad_norm = 477320.48627165105, R_grad_norm = 6301467.572205095, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 48: Loss = 3471658745.957352, Q_grad_norm = 467510.5226759343, R_grad_norm = 6083165.956096881, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 49: Loss = 3412395102.257381, Q_grad_norm = 458253.33131496806, R_grad_norm = 5875895.106150232, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 50: Loss = 3355066823.8598933, Q_grad_norm = 449508.52772947995, R_grad_norm = 5678938.007223504, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 51: Loss = 3299584947.929803, Q_grad_norm = 441238.587641148, R_grad_norm = 5491633.448285461, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 52: Loss = 3245865405.637994, Q_grad_norm = 433408.24362437584, R_grad_norm = 5313371.064820745, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 53: Loss = 3193828786.1809406, Q_grad_norm = 425984.2457569391, R_grad_norm = 5143586.8833352765, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 54: Loss = 3143400040.1781535, Q_grad_norm = 418935.2201503746, R_grad_norm = 4981759.276420607, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 55: Loss = 3094508189.4978027, Q_grad_norm = 412231.7802174723, R_grad_norm = 4827405.230433204, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 56: Loss = 3047086134.3128977, Q_grad_norm = 405846.57228937553, R_grad_norm = 4680077.18830024, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 57: Loss = 3001070379.112437, Q_grad_norm = 399754.47757433157, R_grad_norm = 4539359.936384947, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 58: Loss = 2956400835.7441974, Q_grad_norm = 393932.6672256611, R_grad_norm = 4404867.94926156, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 59: Loss = 2913020610.6253324, Q_grad_norm = 388360.71802662464, R_grad_norm = 4276242.918153062, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 60: Loss = 2870875814.7719646, Q_grad_norm = 383020.6313337291, R_grad_norm = 4153151.5381404418, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 61: Loss = 2829915381.301838, Q_grad_norm = 377896.7367209831, R_grad_norm = 4035283.4751066156, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 62: Loss = 2790090903.9950395, Q_grad_norm = 372975.66386389325, R_grad_norm = 3922349.5407393924, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 63: Loss = 2751369560.7543535, Q_grad_norm = 368139.7175257958, R_grad_norm = 3814097.984747661, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 64: Loss = 2713775864.312582, Q_grad_norm = 362837.77258403064, R_grad_norm = 3710368.508006495, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 65: Loss = 2677176683.397008, Q_grad_norm = 357813.70642072445, R_grad_norm = 3610798.6361605227, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 66: Loss = 2641533906.6203136, Q_grad_norm = 353048.86314685503, R_grad_norm = 3515170.5281538353, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 67: Loss = 2606811253.7254066, Q_grad_norm = 348526.7985007457, R_grad_norm = 3423280.257893774, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 68: Loss = 2572974161.460669, Q_grad_norm = 344232.9597482138, R_grad_norm = 3334936.735632529, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 69: Loss = 2539989688.7265816, Q_grad_norm = 340154.37452536135, R_grad_norm = 3249960.77005987, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 70: Loss = 2507826447.653602, Q_grad_norm = 336279.36643346597, R_grad_norm = 3168184.25178519, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 71: Loss = 2476454483.768415, Q_grad_norm = 332597.389366387, R_grad_norm = 3089449.2681438685, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 72: Loss = 2445845235.6738324, Q_grad_norm = 329098.8120321471, R_grad_norm = 3013607.469568211, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 73: Loss = 2415971449.2755365, Q_grad_norm = 325774.8064807266, R_grad_norm = 2940519.3384909625, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 74: Loss = 2386819837.927515, Q_grad_norm = 322529.56547849544, R_grad_norm = 2870068.8164014313, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 75: Loss = 2358397147.370074, Q_grad_norm = 319145.5552865029, R_grad_norm = 2802168.9732474466, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 76: Loss = 2330629054.380563, Q_grad_norm = 315966.108735716, R_grad_norm = 2736642.511588301, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 77: Loss = 2303493516.9822807, Q_grad_norm = 312977.3776587466, R_grad_norm = 2673380.6100964085, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 78: Loss = 2276969441.1998596, Q_grad_norm = 310166.93910768616, R_grad_norm = 2612280.5989281763, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 79: Loss = 2251036588.7847815, Q_grad_norm = 307523.6928067692, R_grad_norm = 2553245.468947392, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 80: Loss = 2225675557.848583, Q_grad_norm = 305037.7349573418, R_grad_norm = 2496183.549086136, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 81: Loss = 2200918853.6372986, Q_grad_norm = 302385.84707083297, R_grad_norm = 2441064.440481936, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 82: Loss = 2176693209.2516255, Q_grad_norm = 299909.4981363322, R_grad_norm = 2387743.838112871, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 83: Loss = 2152980789.455838, Q_grad_norm = 297603.5202610562, R_grad_norm = 2336143.470019785, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 84: Loss = 2129765699.3625336, Q_grad_norm = 295456.2184043212, R_grad_norm = 2286190.531728606, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 85: Loss = 2107032648.9468656, Q_grad_norm = 293457.4119986033, R_grad_norm = 2237815.992665105, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 86: Loss = 2084766910.147102, Q_grad_norm = 291598.2478090113, R_grad_norm = 2190954.347540627, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 87: Loss = 2062989946.7840197, Q_grad_norm = 289670.24337831285, R_grad_norm = 2145580.2525428073, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 88: Loss = 2041664724.794162, Q_grad_norm = 287804.2255310878, R_grad_norm = 2101609.5663072676, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 89: Loss = 2020760769.6023047, Q_grad_norm = 286090.6805651594, R_grad_norm = 2058968.2173610283, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 90: Loss = 2000265975.3543732, Q_grad_norm = 284519.3082772663, R_grad_norm = 2017603.5596954026, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 91: Loss = 1980168633.3083196, Q_grad_norm = 283081.1803825348, R_grad_norm = 1977465.4875788363, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 92: Loss = 1960469553.9755368, Q_grad_norm = 281704.76252735365, R_grad_norm = 1938518.2108050925, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 93: Loss = 1941173970.8321483, Q_grad_norm = 280301.3160763746, R_grad_norm = 1900731.6729639717, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 94: Loss = 1922238767.2888656, Q_grad_norm = 279036.5241686112, R_grad_norm = 1864030.3217370787, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 95: Loss = 1903654176.7994034, Q_grad_norm = 277901.20522878424, R_grad_norm = 1828373.4026978405, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 96: Loss = 1885438128.7445185, Q_grad_norm = 276750.5698946697, R_grad_norm = 1793747.9537637352, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 97: Loss = 1867561395.88332, Q_grad_norm = 275681.2066710509, R_grad_norm = 1760097.266519884, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 98: Loss = 1850004074.344493, Q_grad_norm = 274741.0811140182, R_grad_norm = 1727375.4196005904, f_grad_norm = 0.0, h_grad_norm = 0.0\n",
"Epoch 99: Loss = 1832757908.9235291, Q_grad_norm = 273921.7783331637, R_grad_norm = 1695548.9407187204, f_grad_norm = 0.0, h_grad_norm = 0.0\n"
]
}
],
"source": [
"output = pekf.tune(\n",
" z=z_tune,\n",
" x0=x0,\n",
" P0=P0,\n",
" sv_pos=sv_pos_tune,\n",
" lr_scheduler=None,\n",
" max_epochs=MAX_EPOCHES,\n",
" clip_grad_norm=1000,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot the log likelihood of the data"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Loss vs Epoch')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAHfCAYAAACyMgsqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABUfklEQVR4nO3dd3hUZd7/8c/01EkhBUJCVUI3FOmLio2IvesqIhYeV3TFx3Vxn7WuP3XX3XUFXQuCBbuua0FAXURQYFVAiiAKJEAKJJDey8z8/kgyEIOQkEnmzPB+XVeumTnnzMx3vE345M733Mfk8Xg8AgAAAIKU2d8FAAAAAB2JwAsAAICgRuAFAABAUCPwAgAAIKgReAEAABDUCLwAAAAIagReAAAABDUCLwAAAIIagRcAAABBjcALAAgos2fP1rBhw/xdBoAAQuAFgEbvvfeeUlNTtXnzZn+X4lezZ89WamrqYb+GDBni7/IAoM2s/i4AAGA8drtdDz/8cIvtFovFD9UAQPsQeAEALVitVl1wwQX+LgMAfIKWBgBoo61bt+rGG2/U8OHDNWzYMF133XXasGFDs2Pq6ur01FNP6ayzztKQIUM0evRoXXXVVVq1apX3mP379+uee+7RxIkTNXjwYE2YMEG33HKLsrOzf/G958+fr9TUVOXk5LTY97e//U2DBw9WSUmJJGnXrl267bbbNH78eA0ZMkQTJ07UrFmzVFZW5pP/Dk0tIN9++63uu+8+jR49WsOHD9fdd9/treFQr732mqZMmeL9rA8++KBKS0tbHLdx40bddNNNOvnkk5WWlqbzzjtPL7/8covj8vLy9Jvf/EbDhg3TmDFj9Oc//1kul8snnw1AcGGGFwDaYPv27fr1r3+t8PBw3XjjjbJarXrrrbd07bXX6tVXX9VJJ50kSXrqqaf03HPP6bLLLtPQoUNVXl6u77//Xlu2bNH48eMlSbfddpt27Niha665Rt27d1dhYaFWrVqlvXv3Kjk5+bDvn56erscff1xLlizRjTfe2GzfkiVLNH78eEVFRam2tlY33HCDamtrdc011yguLk55eXn64osvVFpaqsjIyKN+1sLCwhbb7Ha7IiIimm176KGH5HQ6NXPmTGVmZuqNN95Qbm6uFi5cKJPJJEmaO3eunnrqKY0bN05XXXWV97jNmzfrjTfekM1mkyStWrVKM2bMUEJCgqZOnaq4uDjt3LlTX3zxha677jrve7pcLt1www0aOnSo7r77bq1Zs0YLFixQSkqKrr766qN+NgDHFwJvK+zevVvz58/Xxo0btX37dvXp00eLFi1q8+sUFhbqn//8pzZu3KgffvhBNptN33333WGP/fzzz/WPf/xDmZmZSkpK0s0336xLLrmkvR8FQDv94x//UF1dnd544w2lpKRIki688EJNnjxZjz/+uF599VVJ0hdffKFTTjlFf/rTnw77OqWlpfruu+90991364YbbvBunzFjxhHfPykpSWlpaVq8eHGzwLtp0yZlZWVp5syZkqSdO3cqOztbTz75pCZPnuw9rmn/0VRWVmrs2LEttk+YMEHz589vts1ms+mll17yhtakpCQ9/vjj+vzzz3X66aersLBQzz33nCZMmKB58+bJbG7442KfPn300EMP6cMPP9Qll1wil8ul++67TwkJCXr//ffldDq97+HxeJq9Z01NjdLT03XrrbdKkq666ipddNFFevfddwm8AFqgpaEVtm/frhUrVqhnz57q27fvMb9OXl6eFi9erC5dumjw4MG/eNzatWs1c+ZMpaWlad68eUpPT9f//d//aenSpcf83gDaz+VyadWqVTrjjDO8YVeSEhISdO6552rdunUqLy+XJDmdTm3fvl27du067GuFhITIZrPpm2++Oeyf/48kPT1dW7Zs0Z49e7zblixZIrvdrjPOOEOSvLOwX331laqqqtr0+pLkcDj04osvtvi66667Whx7xRVXeMOu1BA+rVarVqxYIUlavXq16urqNHXqVG/YlaTLLrtMERER3uO2bt2q7OxsTZ06tVnYleSdKT7UVVdd1ezxiBEjjtgOAuD4ReBthUmTJmnFihWaM2eOBg0adMyvk5qaqtWrV+vZZ5/1/knzcJ555hkNHTpUDz30kMaMGaM77rhDU6ZM0Zw5c475vQG0X2FhoaqqqtS7d+8W+/r27Su32629e/dKkm6//XaVlZXp7LPP1nnnnac///nP2rZtm/d4u92uu+66SytXrtT48eP161//WvPmzdP+/fuPWsfkyZNlNpu1ePFiSQ2zn0uXLtXEiRO9QTclJUXXX3+93nnnHY0ZM0Y33HCDXnvttVb371osFo0bN67F14ABA1oc27Nnz2aPw8PDFR8f7+0zzs3NldQwo3sou92ulJQU73FZWVmSpH79+h21PofDodjY2GbboqKi2vzLA4DjA4G3FQ6dkfglHo9H8+fP19lnn63Bgwfr9NNP10svvdTm16mtrdXXX3/d7E+QknTOOed4/0QJwPhOPvlkffbZZ3rkkUd04okn6t1339XFF1+sd955x3vMtGnT9Mknn+jOO++Uw+HQk08+qXPOOUdbt2494msnJiZq5MiRWrJkiSRpw4YNys3N1TnnnNPsuNmzZ+vDDz/UjBkzVF1drYcfflhTpkzRvn37fP+BOxnLowFoCwKvj/y///f/NGfOHF144YV6/vnnddFFF+mvf/2r3njjjTa9zp49e1RXV9diJqSplSIjI8NnNQNom9jYWIWGhiozM7PFvoyMDJnNZnXr1s27LTo6Wpdccon+/ve/64svvlBqaqrmzp3b7Hk9evTQ9OnTtWDBAi1atEh1dXVasGDBUWtJT0/Xtm3blJGRocWLFys0NFSnnXZai+NSU1P1m9/8Rq+99ppee+015eXltfnn0tHs3r272eOKigrt379f3bt3l9TQ0yu1/PlVW1ur7Oxs73FNbSI//fSTT+sDAAKvD+zZs0evvvqq/vCHP+iWW27RuHHjNHPmTE2bNk1PP/203G53q1+r6c9xP+9fa3rMn+sA/7FYLBo/fryWLVvW7K8tBw4c0KJFizRixAhvS0FRUVGz54aHh6tHjx6qra2VJFVVVammpqbZMT169FB4eLj3mCM5++yzZbFY9PHHH2vp0qU69dRTFRYW5t1fXl6u+vr6Zs/p16+fzGZzq16/Ld566y3V1dV5H7/xxhuqr6/XxIkTJUnjxo2TzWbTwoULm5189u6776qsrEynnHKKJGnQoEFKTk7WK6+80mK5sp+ftAYAbcEqDT6wevVqSdJZZ53V7B+YcePGad68edq7d693BgOA8f3rX//Sl19+2WL71KlTdccdd2j16tW6+uqrdfXVV8tiseitt95SbW2tfve733mPnTJlikaNGqVBgwYpOjpamzdv1ieffKJrrrlGUsMaudOmTdPkyZN1wgknyGKx6D//+Y8OHDigKVOmHLXGLl26aPTo0XrxxRdVUVHRop3hv//9rx566CFNnjxZvXr1ksvl0gcffCCLxaKzzz77qK9fX1+vDz744LD7zjzzzGbhuq6uTtOmTVN6eroyMzP1+uuva8SIETr99NMlNcyMz5gxQ089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agReAAAABDUCLwAAAIIagRcAAABBjcALAACAoEbgBQAAQFAj8AIAACCoEXgBAAAQ1Ewej8fj7yKMyuPxyO3uvP88FotZLpe7094PHYNxDA6MY3BgHIMD4xj4OmoMzWaTTCbTUY8j8AIAACCo0dIAAACAoEbgBQAAQFAj8AIAACCoEXgBAAAQ1Ai8AAAACGoEXgAAAAQ1Ai8AAACCGoEXAAAAQY3ACwAAgKBG4AUAAEBQI/ACAAAgqBF4AQAAENQIvAAAAAhqBF4/27lzp66//nqlpaVp/Pjx+stf/qLa2lp/l4VfsGTJEt1yyy2aOHGi0tLSdMEFF+jdd9+Vx+Npdtw777yjs88+W0OGDNH555+v5cuX+6litEZFRYUmTpyo1NRUbd68udk+xtL4/v3vf+vCCy/UkCFDNHr0aN14442qrq727v/88891/vnna8iQITr77LP1r3/9y4/V4nCWLVumyy67TMOGDdOECRP029/+VllZWS2O4/vROHbv3q377rtPF1xwgQYOHKhzzz33sMe1ZszKysr0hz/8QaNGjdKwYcN0++23Kz8/36f1Enj9qKSkRNddd53q6uo0d+5czZo1S2+//bYee+wxf5eGX/DSSy8pNDRUs2fP1jPPPKOJEyfq3nvv1dNPP+095uOPP9a9996r9PR0zZs3T2lpaZo5c6Y2bNjgv8JxRP/85z/lcrlabGcsje+ZZ57Rn/70J51zzjmaP3++HnroISUnJ3vHc+3atZo5c6bS0tI0b948paen6//+7/+0dOlSP1eOJl9//bVmzpypE044QU8//bT+8Ic/aNu2bZo+fXqzX1z4fjSW7du3a8WKFerZs6f69u172GNaO2Z33HGHVq1apQceeEB//etflZmZqZtuukn19fW+K9gDv3n22Wc9aWlpnqKiIu+2N9980zNgwADPvn37/FcYflFBQUGLbX/84x89w4cP97hcLo/H4/GcddZZnjvvvLPZMVdccYXnxhtv7JQa0TY7duzwpKWled544w1Pv379PJs2bfLuYyyNbefOnZ6BAwd6vvjii188Zvr06Z4rrrii2bY777zTk56e3tHloZXuvfdez6RJkzxut9u7bc2aNZ5+/fp5vv32W+82vh+NpenfPI/H4/n973/vmTJlSotjWjNm69ev9/Tr18/z5Zdferft3LnTk5qa6vn44499Vi8zvH60cuVKjR07VtHR0d5t6enpcrvdWrVqlf8Kwy+KjY1tsW3AgAEqLy9XZWWlsrKytGvXLqWnpzc75pxzztGaNWtoVzGghx9+WFdeeaV69+7dbDtjaXzvvfeekpOTdcoppxx2f21trb7++mtNnjy52fZzzjlHO3fuVHZ2dmeUiaOor69XeHi4TCaTd1tkZKQkedvF+H40HrP5yBGytWO2cuVKOZ1OjR8/3ntMnz59NGDAAK1cudJ39frsldBmGRkZ6tOnT7NtTqdT8fHxysjI8FNVaKt169YpMTFRERER3nH7eXjq27ev6urqDtuTBv9ZunSpfvrpJ916660t9jGWxrdx40b169dP//znPzV27FgNHjxYV155pTZu3ChJ2rNnj+rq6lr8nG368ys/Z43h4osv1s6dO/Xaa6+prKxMWVlZ+vvf/66BAwdq+PDhkvh+DEStHbOMjAz17t272S88UkPo9eX3KIHXj0pLS+V0Oltsj4qKUklJiR8qQlutXbtWixcv1vTp0yXJO24/H9emx4yrcVRVVemxxx7TrFmzFBER0WI/Y2l8+/fv11dffaUPPvhA999/v55++mmZTCZNnz5dBQUFjGGAGDlypJ566in97W9/08iRI3XGGWeooKBA8+bNk8VikcT3YyBq7ZiVlpZ6Z/QP5essROAFjtG+ffs0a9YsjR49WlOnTvV3OWijZ555Rl26dNEll1zi71JwjDwejyorK/Xkk09q8uTJOuWUU/TMM8/I4/Ho1Vdf9Xd5aKX169fr7rvv1uWXX66XX35ZTz75pNxut26++eZmJ60B7UHg9SOn06mysrIW20tKShQVFeWHitBapaWluummmxQdHa25c+d6e5maxu3n41paWtpsP/wrJydHCxYs0O23366ysjKVlpaqsrJSklRZWamKigrGMgA4nU5FR0erf//+3m3R0dEaOHCgduzYwRgGiIcfflhjxozR7NmzNWbMGE2ePFnPP/+8tm7dqg8++EASP1sDUWvHzOl0qry8vMXzfZ2FCLx+dLj+lLKyMu3fv79FzxmMo7q6WjNmzFBZWZleeOGFZn+KaRq3n49rRkaGbDabUlJSOrVWHF52drbq6up088036+STT9bJJ5+s//mf/5EkTZ06Vddffz1jGQBOOOGEX9xXU1OjHj16yGazHXYMJfFz1iB27tzZ7JcWSeratatiYmK0Z88eSfxsDUStHbM+ffooMzOzxXr2mZmZPv0eJfD60cSJE7V69WrvbztSw0k0ZrO52dmKMI76+nrdcccdysjI0AsvvKDExMRm+1NSUtSrV68Wa3wuXrxYY8eOld1u78xy8QsGDBigV155pdnXPffcI0l68MEHdf/99zOWAeC0005TcXGxfvjhB++2oqIibdmyRYMGDZLdbtfo0aP1ySefNHve4sWL1bdvXyUnJ3d2yTiMpKQkbd26tdm2nJwcFRUVqXv37pL42RqIWjtmEydOVElJidasWeM9JjMzU1u3btXEiRN9Vo/VZ6+ENrvyyiu1cOFC3XrrrZoxY4by8vL0l7/8RVdeeWWLIAVjePDBB7V8+XLNnj1b5eXlzRbPHjhwoOx2u2677Tbddddd6tGjh0aPHq3Fixdr06ZN9BQaiNPp1OjRow+7b9CgQRo0aJAkMZYGd8YZZ2jIkCG6/fbbNWvWLDkcDj3//POy2+26+uqrJUm33HKLpk6dqgceeEDp6en6+uuvtWjRIj3xxBN+rh5NrrzySj3yyCN6+OGHNWnSJBUXF3t77A9d0orvR2OpqqrSihUrJDX8glJeXu4Nt6NGjVJsbGyrxqzp6np/+MMf9Pvf/14Oh0NPPPGEUlNTddZZZ/msXpPn53PI6FQ7d+7Un/70J3333XcKDw/XBRdcoFmzZvHbqkFNmjRJOTk5h923bNky74zRO++8o3nz5ik3N1e9e/fWnXfeqdNOO60zS0Ubff3115o6dareffddDRkyxLudsTS2wsJCPfroo1q+fLnq6uo0cuRI3XPPPc3aHZYtW6Z//OMfyszMVFJSkm6++WZdeumlfqwah/J4PHrzzTf1xhtvKCsrS+Hh4UpLS9OsWbNaXMGL70fjyM7O1umnn37Yfa+88op3UqE1Y1ZWVqZHH31Un332merr6zVhwgT98Y9/9OnkH4EXAAAAQY0eXgAAAAQ1Ai8AAACCGoEXAAAAQY3ACwAAgKBG4AUAAEBQI/ACAAAgqBF4AQAAENQIvACAVnnvvfeUmpqqzZs3+7sUAGgTLi0MAAby3nvv6Z577vnF/W+99ZbS0tI6ryAACAIEXgAwoNtvv917qepD9ejRww/VAEBgI/ACgAFNnDhRQ4YM8XcZABAU6OEFgACTnZ2t1NRUzZ8/Xy+99JJOO+00DR06VNdcc41++umnFsevWbNGV199tdLS0jRy5Ejdcsst2rlzZ4vj8vLy9Ic//EETJkzQ4MGDNWnSJN1///2qra1tdlxtba0effRRjRkzRmlpabr11ltVWFjYYZ8XANqLGV4AMKDy8vIWIdJkMikmJsb7+P3331dFRYWuvvpq1dTUaOHChbruuuv00UcfKS4uTpK0evVq3XTTTUpOTtbMmTNVXV2tV199VVdddZXee+89b9tEXl6eLr30UpWVlenyyy9Xnz59lJeXp08++UTV1dWy2+3e93344YfldDo1c+ZM5eTk6OWXX9ZDDz2kf/zjHx3/HwYAjgGBFwAMaNq0aS222e32Zisk7NmzR59++qkSExMlNbRBXHbZZZo3b573xLe//OUvioqK0ltvvaXo6GhJ0hlnnKGLLrpIc+fO1Z///GdJ0t///ncdOHBAb7/9drNWit/+9rfyeDzN6oiOjtaCBQtkMpkkSW63WwsXLlRZWZkiIyN99t8AAHyFwAsABnTfffepd+/ezbaZzc270M444wxv2JWkoUOH6qSTTtKKFSt0zz33KD8/Xz/88INuvPFGb9iVpP79+2vcuHFasWKFpIbA+p///EennXbaYfuGm4Jtk8svv7zZtpEjR+qll15STk6O+vfvf8yfGQA6CoEXAAxo6NChRz1prWfPni229erVS0uWLJEk5ebmSlKL4CxJffv21VdffaXKykpVVlaqvLxcJ554YqtqS0pKavbY6XRKkkpLS1v1fADobJy0BgBok5/PNDf5eesDABgFM7wAEKB2797dYtuuXbvUvXt3SQdnYjMzM1scl5GRoZiYGIWFhSkkJEQRERHavn17xxYMAH7CDC8ABKj//Oc/ysvL8z7etGmTNm7cqIkTJ0qSEhISNGDAAL3//vvN2g1++uknrVq1SqeccoqkhhnbM844Q8uXLz/sZYOZuQUQ6JjhBQADWrlypTIyMlpsHz58uPeEsR49euiqq67SVVddpdraWr3yyiuKjo7WjTfe6D3+7rvv1k033aQrrrhCl156qXdZssjISM2cOdN73J133qlVq1bp2muv1eWXX66+fftq//79Wrp0qV5//XVvny4ABCICLwAY0Jw5cw67/dFHH9WoUaMkSRdeeKHMZrNefvllFRQUaOjQobr33nuVkJDgPX7cuHF64YUXNGfOHM2ZM0dWq1Unn3yyfve73yklJcV7XGJiot5++209+eST+uijj1ReXq7ExERNnDhRISEhHfthAaCDmTz8rQoAAkp2drZOP/103X333brhhhv8XQ4AGB49vAAAAAhqBF4AAAAENQIvAAAAgho9vAAAAAhqzPACAAAgqBF4AQAAENQIvAAAAAhqBF4AAAAENQIvAAAAghqBFwAAAEGNwAsAAICgRuAFAABAUCPwAgAAIKj9f2z3iO5odjjvAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 800x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the loss\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"sns.set_theme(\n",
" style=\"darkgrid\"\n",
")\n",
"loss_plt , ax = plt.subplots(\n",
" figsize=(8, 5)\n",
")\n",
"\n",
"# Plot the loss\n",
"ax.plot(output['losses'])\n",
"\n",
"# Set the labels\n",
"ax.set_xlabel(\"Epoch\")\n",
"ax.set_ylabel(\"Loss\")\n",
"\n",
"# Set the title\n",
"ax.set_title(\"Loss vs Epoch\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's predict using PEKF"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"with torch.no_grad():\n",
" outs = pekf.batch_smoothing(\n",
" z=z,\n",
" x0=x0,\n",
" P0=P0,\n",
" sv_pos=sv_pos,\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows the autocorreleation function of the residuals"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1YAAAHHCAYAAAC8+cmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABSeElEQVR4nO3de1xVVeL///c+XASRw6XUvKY4RVKSdvGShmaaQU520dImtbxkjWVmPmbUyjFzypyaZsTvr7R0cpopuzdpqPkpR9PU6aI5Nl1F07RQQzmAXM/evz+AI0dAgc3mAL6ejwzO2mvvtTYszuHN2nsdw7IsSwAAAACAWnMFugMAAAAA0NgRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAA3GwIEDNWPGjEB3o96kpqYqPj6+WnXj4+OVmprqaH9Gjx6t0aNHO9oGADRVBCsAaGDeeustxcfH67///W+gu+KIzz//XKmpqfJ4PIHuik/Z17zsX0JCgq688krNmDFDGRkZge5eg+X1etWvXz/Fx8drw4YNp6y7bt06TZgwQb169dJFF12kfv366f7779eWLVt8dbZt2+b3fSj/74EHHnD6dADAluBAdwAAcGbZvn27Fi1apBtvvFFut9tv25o1a2QYRoB6Jk2ZMkXt27dXYWGhduzYobffflufffaZVq1apWbNmtV5e/fcc4/uuuuuOj9ufdm6dasOHz6sdu3aaeXKlerfv3+FOpZladasWXrrrbeUkJCgO++8U2effbYOHz6sdevW6Y477tArr7yiSy65xLfP6NGj1a1bN7/jtGvXzvHzAQA7CFYAgAYjNDQ0oO0nJSX5fqEfMWKEYmJi9Pzzz+uDDz5QSkpKnbcXHBys4ODG+1L87rvv6sILL9QNN9ygZ555RsePH1fz5s396ixbtkxvvfWWxo4dq5kzZ/oF53vuuUfvvPNOha/BZZddpmuvvbZezgEA6gqXAgJAIzBjxgz16NFDGRkZ+u1vf6sePXqod+/eevLJJ+X1en31fvzxR8XHx2vp0qV69dVXNWjQIF100UW6+eabtXPnzgrH3bJli2677TZ1795dl112me655x7t3r3bt33NmjWKj4/Xf/7znwr7rlixQvHx8fr2228lSV9//bVmzJihq6++Wt26dVPfvn01c+ZMHT161LdPamqqFixYIEm6+uqrfZd5/fjjj5Iqv8dq//79mjJlinr27KmLL75Yt9xyi/7973/71Sm7hCwtLU3PPvusLyCNHTtWP/zwQw2/2idcdtllvj6Ut3v3bl+funXrpptuukkffPCBX52ioiItWrRI11xzjbp166ZevXpp1KhR2rx5s9/X4+R7rAoLC/X444+rd+/e6tGjh+6++279/PPPFfo2Y8YMDRw4sEJ5Zcd88803NWbMGPXp00cXXXSRUlJS9PLLL9fsi3GS/Px8rVu3TikpKUpOTlZ+fn6Fr0F+fr6WLFmiuLg4/f73v690NvKGG25QYmKirb4AQEPQeP9MBgBnGK/Xq/HjxysxMVG/+93vtGXLFi1btkwdOnTQbbfd5ld31apVys3N1a233irDMPTCCy/ovvvu0//93/8pJCREkvTxxx9r4sSJat++ve69917l5+frH//4h0aNGqW33npL7du314ABA9S8eXOtXr1aPXv29GsjLS1N5513ns4//3zf8fbv36+bbrpJLVu21HfffafXXntN33//vV577TUZhqHBgwdr7969WrVqlWbOnKmYmBhJUmxsbKXnfOTIEY0cOVJ5eXkaPXq0YmJi9Pbbb+uee+7RwoULNXjwYL/6zz//vAzD0Lhx45STk6MXXnhB06dP1+uvv16rr/mBAwckye+Sxe+++06jRo1S69atNXHiRN/XZ/LkyUpNTfX1adGiRVq8eLFGjBihxMRE5eTkaNeuXfryyy/Vt2/fKtt86KGH9O6772ro0KG65JJLtHXrVtuXC77yyis677zzNHDgQAUHB2v9+vV69NFHZVmWfvOb39TqmB9++KGOHz+u6667Ti1btlTPnj21cuVK/frXv/bV+eyzz3Ts2DGNGTNGQUFB1T52bm6uMjMz/cqio6PlcvH3YAANF8EKABqJgoICJScna/LkyZKkUaNG6cYbb9Qbb7xRIVgdPHhQ77//vqKioiRJnTt31m9/+1tt2rRJV111lSRpwYIFioqK0quvvqro6GhJ0qBBg3TjjTcqNTVVTz75pMLCwjRw4ECtXbtWDz/8sO+X48OHD+uTTz7Rvffe62vztttu07hx4/z60b17d02bNk2fffaZLrvsMl1wwQVKSEjQqlWrNGjQILVv3/6U57xkyRIdOXJE//znP32zRyNGjND111+vJ554QldffbXfL9sFBQV65513fJcUut1u/fGPf9S3337rC4CnkpOTo8zMTBUWFuqLL77QokWLFBoa6vuaSdIf//hHtWnTRm+++aavndtuu02jRo3SU0895QtW//73v9W/f3899thjp223zNdff613331Xt912m/7whz9Ikn7zm9/owQcf1DfffFPt45zsH//4h8LCwnyPb7/9do0fP15/+9vfah2s3n33XfXo0UNt2rSRJF133XV69NFHlZmZ6QvKZbOf1V35sMysWbMqlH3wwQenHS8AEEj86QcAGpFRo0b5Pb700kt9l9GVl5KS4gtVUsVL2g4dOqSvvvpKN954oy9USdIFF1ygK664wm+Ft+TkZP3yyy9+lwOuXbtWpmn63XdU/hf3goICZWZm6uKLL5Ykffnll7U5XW3YsEGJiYm+/ktSRESEbr31Vh04cEDff/+9X/2bbrrJ7z6tqi7lq8odd9yhPn36qH///poyZYrCw8P17LPP6pxzzpEkHTt2TFu3blVycrIvhGVmZuro0aPq16+f9u7d61tF0O1267vvvtPevXtrdL6SKix5Pnbs2GofozLlvzfZ2dnKzMxUz549tX//fmVnZ9f4eEePHtWmTZs0dOhQX9k111wjwzC0evVqX1lOTo6kku9ZTUyePFl/+9vf/P61bNmyxv0EgPrEjBUANBLNmjWrcMlcVFSUsrKyKtQtm0UoX0+Sb4nzgwcPSiqZyTpZly5dtGnTJt9CBElJSYqMjFRaWpr69OkjqeQywK5du/rtf+zYMS1atEhpaWn65Zdf/I5Zm1/ey/pZFs7Ki4uL820vPxPVtm1bv3pll/BVd2n32bNnq3PnzsrOztabb76pTz75xC+o7du3T5Zl6a9//av++te/VnqMX375Ra1bt9aUKVP029/+VkOGDNH555+vfv36adiwYbrggguqbP/AgQNyuVzq2LFjpedbW5999plSU1O1Y8cO5eXl+W3Lzs5WZGRkjY6XlpamoqIide3a1e8etsTERK1cudI3C9aiRQtJJZf21cT555+vK664okb7AECgEawAoJGoyT0qVdW1LKvG7YaGhmrQoEFat26d/vCHP+iXX37R559/rmnTpvnVmzp1qrZv367x48era9euat68uUzT1IQJE2rVbm1UdQ9OddtPTEz0rQo4aNAg3XbbbXrwwQe1Zs0aRUREyDRNSdK4ceN05ZVXVnqMslB0+eWXa926dfrggw+0efNmvfHGG1q+fLkeffRRjRgxoqanVkFVy9KXX8xEKgmDd9xxh+Li4jRjxgy1adNGISEh2rBhg1588UXfOdXEypUrJVWcQS2zf/9+dejQwRcIv/nmGw0aNKjG7QBAY0KwAoAzUNnMzp49eypsS09PV0xMjN+y2cnJyXr77be1ZcsW7d69W5ZlKTk52bc9KytLW7Zs0X333ed331Vll8HV5H2q2rZtW2Ufy5+HE4KCgjRt2jSNGTNG//znP3XXXXepQ4cOkqSQkJBqzahER0fr5ptv1s0336zc3FzdfvvtSk1NrTJYtWvXTqZpat++fX6zVGXnW57b7a50Jq5sNrLMhx9+qMLCQj377LN+X69t27adtv+V2b9/v7Zv367bb79dl19+ud820zT1u9/9TitXrtRvf/tbXXrppYqKitJ7772nu+++u0Z/HACAxoZ7rADgDNSqVSt17dpV77zzjt8v599++602b95c4Y1er7jiCkVHRystLU2rV69WYmKiL2RIVc+QLV++vEJZeHi4pOpdHti/f3/t3LlT27dv95UdP35cr732mtq1a6df/epXpz2GHb169VJiYqKWL1+ugoICnXXWWerZs6deffVVHTp0qEL98ivZlV9mXiq5z6hjx44qLCyssr2kpCRJ0ksvveRXXtnXsWPHjsrOztbXX3/tKzt06JDWrVvnV6/se1N+1q7sUsfaKJutmjBhgq699lq/fykpKb7VAaWS7/WECRO0e/duPfXUU5XOHP7rX/+q9K0AAKCxYcYKAM5Qv/vd7zRx4kTdeuutGj58uG+59cjISL9ZJ6lkhmbw4MF67733lJeXp9///vd+21u0aKHLL79cL7zwgoqKitS6dWtt3ry50oU1LrzwQknSM888o5SUFIWEhOiqq66q8MayknTXXXfpvffe08SJEzV69GhFRUXpnXfe0Y8//qjU1NR6WX57/Pjxuv/++/XWW29p1KhR+sMf/qDbbrtNv/71r3XLLbeoQ4cOOnLkiHbs2KGff/5Z7777rqSSVfJ69uypCy+8UNHR0frvf/+rtWvX6vbbb6+yra5du2ro0KF6+eWXlZ2drR49emjr1q2VvhdXSkqKnnrqKd17770aPXq08vPz9corr6hz585+i4X07dtXISEhuvvuuzVy5Ejl5ubq9ddf11lnnaXDhw/X+OuxcuVKde3atcJ9fGUGDhyoxx57TF9++aUuvPBCTZgwQd9//72WLVumbdu2aciQITr77LN15MgR/d///Z927typFStW1LgfANDQMGMFAGeoK664Qi+88IKio6O1cOFCLVu2TBdffLFeeeUVv9moMikpKTp+/Lgk+V0GWObpp59Wv3799PLLL+vPf/6zgoOD9fzzz1eol5iYqPvvv19ff/21Zs6cqWnTplV4z6IyZ599tlasWKErrrhC//jHP/TnP/9ZISEheu655yq8h5VTrrnmGnXs2FHLli2T1+vVr371K7355psaMGCA3n77bc2dO1crVqyQy+XyLYUvlazsd+DAAS1ZskTz5s3TJ598oqlTp1YIpSd7/PHHNXr0aH300Ud66qmnVFRUpCVLllSoFxMTo0WLFik8PFx/+tOf9Pbbb2vatGl+S8NLJQtfLFy4UIZh6Mknn9SKFSt0yy23aMyYMTX+Wnz55ZdKT0+v0EZ5ZdvKAqbL5dKCBQu0cOFCxcTEaNmyZZo9e7ZeeukltW/fXi+99JJ69OhR474AQENjWPV1RzEAAAAANFHMWAEAAACATY4Hqx9++EGzZ8/WsGHDlJCQ4PdmgqdiWZaWLFmiAQMGKDExUbfeeqt27NhRoV5GRobuu+8+9ejRQz179tRDDz3ke0NCAAAAAKgPjger7777Ths2bNC5556rLl26VHu/559/XgsXLtQdd9yhxYsXq2XLlho3bpz279/vq1NUVKQJEyZo7969evrppzVnzhxt2rRJDz74oBOnAgAAAACVcnxVwIEDB/reFHDGjBnatWvXafcpKCjQ4sWLNW7cON1xxx2SpEsvvVTXXnutli5dqjlz5kiS1q5dq++++05paWm+9/twu90aP368du7cqcTEREfOCQAAAADKc3zGqjZL4X7++efKycnxW3UqNDRUgwcP1saNG31lGzduVHx8vN+bKPbt21fR0dHasGGDvY4DAAAAQDU1yMUryt5hvnxgkqQuXbro4MGDys/P99U7uY5hGOrcuXOl71IPAAAAAE5okMHK4/EoNDRUzZo18yt3u92yLEtZWVm+epGRkRX2j4qK8tUBAAAAAKc5fo9VY2VZlgzDCEjbeVmZCjaLqtxe7ApReFRsPfYIAAAAwKk0yGDldrtVWFiogoICv1krj8cjwzAUFRXlq1fZ0upZWVlq06aNrT6YpiWP57itY9TW5yteVMdfPlaQUfG9m72WoX1nXaFLRk4KQM/QVAQFueR2h8vjyZPXawa6O2giGFdwAuMKTmBcoSbc7nAFBZ3+Qr8GGazK7pvas2ePLrjgAl95enq62rZtq7CwMF+9b7/91m9fy7K0Z88e9e3b13Y/iosD84N2zuWDZazZLMuSyk+aWZZkyNI5vQYHrG9oWrxek7GEOse4ghMYV3AC4wp1qUHeY3XJJZeoRYsWWr16ta+sqKhI77//vpKSknxlSUlJ+vrrr7V3715f2ZYtW3Ts2DH179+/Prtcp1qd20k/dhkuSyUzVKZlyGsZsiT92GW4WnXoFOAeAgAAACjP8RmrvLw839LnBw4cUE5OjtasWSNJ6tmzp2JjYzV27FgdPHhQ69atkyQ1a9ZMkyZNUmpqqmJjY3X++efrlVde0bFjxzR+/HjfsYcMGaLFixfrvvvu07Rp05SXl6cFCxZowIABjf49rC4cNFR7O1ygz9e8o1hXjqJat1G7PkN0IaEKAAAAaHAcD1a//PKL7r//fr+yssd///vf1atXL5mmKa/X61dn4sSJsixLy5YtU2Zmprp27aqlS5eqQ4cOvjohISF64YUXNG/ePE2bNk3BwcEaPHiwZs2a5fRp1YvY9h21Ku8SSdKi65PUPKxBXrkJAAAAnPEMy7IqrpAAeb2mMjNzA9oHT26hpqZukiQtmkqwQt0JDnYpJiZCR4/mcm056gzjCk5gXMEJjCvURGxsRLUWr2iQ91gBAAAAQGNCsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgU3B9NLJ7927NmzdP27dvV0REhIYNG6apU6cqNDS0yn22bdumMWPGVLqtc+fOWrNmzSnrpaSk6JlnnqmbEwAAAACAU3A8WGVlZWns2LHq1KmTUlNTlZGRofnz5ys/P1+zZ8+ucr8LL7xQr776ql9ZTk6OJk6cqKSkpAr1n3jiCcXFxfkex8TE1N1JAAAAAMApOB6sVqxYodzcXC1atEjR0dGSJK/Xq0cffVSTJk1S69atK92vRYsW6t69u1/ZW2+9JdM0NXTo0Ar1zzvvPHXr1q2uuw8AAAAAp+X4PVYbN25Unz59fKFKkpKTk2WapjZv3lyjY61atUqdOnVSYmJiHfcSAAAAAGrP8WCVnp7ud4meJLndbrVs2VLp6enVPs6RI0e0devWSmerJOmuu+5S165dlZSUpCeffFL5+fm2+g0AAAAA1eX4pYAej0dut7tCeVRUlLKysqp9nLS0NHm93grBKjIyUhMmTNDll1+uZs2aaevWrVq2bJnS09O1ePFiW30PDg7soonBQSfadwUZAe8Pmo6g0rEVFMSYQt1hXMEJjCs4gXEFJ9TLqoB1YeXKlbrwwgvVuXNnv/KEhAQlJCT4Hvfp00etWrXS3LlztXPnzlpfNuhyGYqJibDVZ7uM4CDf55GRYYqODAtgb9AUud3hge4CmiDGFZzAuIITGFeoS44HK7fbrezs7ArlWVlZioqKqtYx9u3bp507d2rmzJnVqp+cnKy5c+dq165dtQ5WpmnJ4zleq33riien0Pd5dna+rGJvAHuDpiQoyCW3O1weT568XjPQ3UETwbiCExhXcALjCjXhdodXa3bT8WAVFxdX4V6q7OxsHT58uMK9V1VZuXKlXC6XUlJSnOhilYqLA/uDVlzuB930WgHvD5oer9dkXKHOMa7gBMYVnMC4Ql1y/MLSpKQkffzxx/J4PL6yNWvWyOVyqW/fvtU6xnvvvaeePXuqVatW1a4vieXXAQAAANQLx2esRo4cqZdeekmTJ0/WpEmTlJGRoQULFmjkyJF+72E1duxYHTx4UOvWrfPb/3//+592796tO++8s9LjT58+Xeeee64SEhJ8i1e8+OKLGjRoEMEKAAAAQL1wPFhFRUVp+fLleuyxxzR58mRFRERo+PDheuCBB/zqmaYpr7fiPUQrV65UaGiohgwZUunxzzvvPK1cuVLLli1TUVGR2rVrp7vvvlt33XWXI+cDAAAAACczLMuyAt2JhsjrNZWZmRvQPnhyCzU1dZMkadHUJDUPazSLOKKBCw52KSYmQkeP5nJtOeoM4wpOYFzBCYwr1ERsbES1Fq9g8X4AAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2BRcH43s3r1b8+bN0/bt2xUREaFhw4Zp6tSpCg0NPeV+AwcO1IEDByqU79y5U82aNfM9zsjI0Lx587Rp0yaFhIRo8ODBmjlzplq0aFHn5wIAAAAAJ3M8WGVlZWns2LHq1KmTUlNTlZGRofnz5ys/P1+zZ88+7f5DhgzRuHHj/MrKB7KioiJNmDBBkvT0008rPz9fTz75pB588EEtXry4bk8GAAAAACrheLBasWKFcnNztWjRIkVHR0uSvF6vHn30UU2aNEmtW7c+5f5nn322unfvXuX2tWvX6rvvvlNaWpri4uIkSW63W+PHj9fOnTuVmJhYV6cCAAAAAJVy/B6rjRs3qk+fPr5QJUnJyckyTVObN2+uk+PHx8f7QpUk9e3bV9HR0dqwYYPt4wMAAADA6Tg+Y5Wenq6bb77Zr8ztdqtly5ZKT08/7f4rV67Ua6+9ppCQEF122WWaPn264uPj/Y5fPlRJkmEY6ty5c7WOfyrBwYFd2yM46ET7riAj4P1B0xFUOraCghhTqDuMKziBcQUnMK7gBMeDlcfjkdvtrlAeFRWlrKysU+47cOBAJSYmqm3bttq/f7+ee+453XbbbXrnnXfUoUMH3/EjIyNrdfxTcbkMxcRE1Hr/umAEB/k+j4wMU3RkWAB7g6bI7Q4PdBfQBDGu4ATGFZzAuEJdqpdVAWvr4Ycf9n1+2WWXqW/fvkpOTtbSpUs1Z84cR9s2TUsez3FH2zgdT06h7/Ps7HxZxd4A9gZNSVCQS253uDyePHm9ZqC7gyaCcQUnMK7gBMYVasLtDq/W7Kbjwcrtdis7O7tCeVZWlqKiomp0rFatWunSSy/Vl19+6Xf8nJycSo/fpk2bmne4nOLiwP6gFZf7QTe9VsD7g6bH6zUZV6hzjCs4gXEFJzCuUJccv7A0Li6uwr1O2dnZOnz4cIV7o+rq+JZlac+ePXVyfAAAAAA4HceDVVJSkj7++GN5PB5f2Zo1a+RyudS3b98aHSsjI0OfffaZunXr5nf8r7/+Wnv37vWVbdmyRceOHVP//v1t9x8AAAAATsfxSwFHjhypl156SZMnT9akSZOUkZGhBQsWaOTIkX7vYTV27FgdPHhQ69atkyStWrVK69evV//+/dWqVSvt379fS5YsUVBQkO68807ffkOGDNHixYt13333adq0acrLy9OCBQs0YMAA3sMKAAAAQL1wPFhFRUVp+fLleuyxxzR58mRFRERo+PDheuCBB/zqmaYpr/fE4gzt27fXoUOH9Pjjjys7O1uRkZHq3bu3pkyZ4lsRUJJCQkL0wgsvaN68eZo2bZqCg4M1ePBgzZo1y+lTAwAAAABJkmFZlhXoTjREXq+pzMzcgPbBk1uoqambJEmLpiapeViDXsQRjUhwsEsxMRE6ejSXm3ZRZxhXcALjCk5gXKEmYmMjqrUqIO+KBgAAAAA2EawAAAAAwCaCFQAAAADYxE07qCAj87g+2vmTjmTl6eyocF2Z2EatY5sHulsAAABAg0Wwgp+Pdh7Ui6u/liHJkmRIWr3tB92Z3FX9EtsEuHcAAABAw8SlgPDJyDyuF1d/LcuSTEt+H/+2+itlHD0e6C4CAAAADRLBCj4f7fxJRhXbDEkfffFTfXYHAAAAaDQIVvA5kpWnqt7UzCrdDgAAAKAighV8zo4KP+WM1dlR4fXZHQAAAKDRIFjB58rENqecsbryYhavAAAAACpDsIJP69jmujO5q4xy01YuQzIM6c7krmodw5LrAAAAQGVYbh1++iW20bmtI/WHv/1HkjT4sg4acEk7QhUAAABwCgQrVNAq5sS9VDdcGadmoUEB7A0AAADQ8HEpIAAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADApuBAdwANj+XJ0NDwzxXrylHxZ0cUkpAkV9Q5ge4WAAAA0GARrOCn6JuPVLRxmQaGSYYkc9c+5e5arbCkcQqJvzLQ3QMAAAAaJC4FhI+Z9bPyNy6TLEtBhiWXYUmWKVmW8jcuk5mVEeguAgAAAA0SwQo+Rd98pJJ5qsoYKvpmY312BwAAAGg0CFbwMbOPSLKq2GqVbgcAAABwMoIVfFyRZ+tUM1Yl2wEAAACcrF6C1e7du3XnnXeqe/fu6tu3rxYsWKDCwsJT7nPo0CEtWLBAw4YNU48ePZSUlKQHH3xQBw4c8Ku3bds2xcfHV/j3wAMPOHlKTVLJ4hRWFXNWlkLik+q3QwAAAEAj4fiqgFlZWRo7dqw6deqk1NRUZWRkaP78+crPz9fs2bOr3O/LL7/UunXrdPPNN+viiy/W0aNH9eyzz2rEiBFatWqVYmNj/eo/8cQTiouL8z2OiYlx7JyaKlfUOQpLGqe8DcvktUrmrgyXIUOWwpLGyRXVOtBdBAAAABokx4PVihUrlJubq0WLFik6OlqS5PV69eijj2rSpElq3bryX9YvvfRSrV69WsHBJ7p4ySWXaMCAAXrnnXc0btw4v/rnnXeeunXr5th5nClC4q9UXlRnffjqCsW6cnRJjwsU0e0qQhUAAABwCo5fCrhx40b16dPHF6okKTk5WaZpavPmzVXu53a7/UKVJJ1zzjmKjY3VoUOHnOouJCmylVblXaK/5yZJPW4iVAEAAACn4fiMVXp6um6++Wa/MrfbrZYtWyo9Pb1Gx9qzZ49++eUXdenSpcK2u+66S8eOHVPLli113XXX6f7771dYWJitvgcHB3Ztj+CgE+27gox660/5doODXAH/OqDuBZV+j4OC+N6i7jCu4ATGFZzAuIITHA9WHo9Hbre7QnlUVJSysrKqfRzLsjRv3jy1atVK1113na88MjJSEyZM0OWXX65mzZpp69atWrZsmdLT07V48eJa99vlMhQTE1Hr/euCERzk+zwyMkzRkfaCYm3ajYoOr7d2Uf/c7vBAdwFNEOMKTmBcwQmMK9Qlx4NVXUlNTdXWrVv1wgsvqHnz5r7yhIQEJSQk+B736dNHrVq10ty5c7Vz504lJibWqj3TtOTxHLfdbzs8OSdWTszOzpdV7K33drOO5dVbu6g/QUEuud3h8njy5PWage4OmgjGFZzAuIITGFeoCbc7vFqzm44HK7fbrezs7ArlWVlZioqKqtYxXnvtNf2///f/9Mc//lF9+vQ5bf3k5GTNnTtXu3btqnWwkqTi4sD+oBWX+0E3vVa99ad8u8VeM+BfBzjHy/cXDmBcwQmMKziBcYW65PiFpXFxcRXupcrOztbhw4f9lkevyrp16zRnzhxNmTJFw4cPd6qbAAAAAFBrjgerpKQkffzxx/J4PL6yNWvWyOVyqW/fvqfcd9u2bZo2bZpGjBihyZMnV7vN9957T5JYfh0AAABAvXD8UsCRI0fqpZde0uTJkzVp0iRlZGRowYIFGjlypN97WI0dO1YHDx7UunXrJEm7d+/W5MmT1alTJw0bNkw7duzw1Y2NjVXHjh0lSdOnT9e5556rhIQE3+IVL774ogYNGkSwAgAAAFAvHA9WUVFRWr58uR577DFNnjxZERERGj58uB544AG/eqZpyus9sUjCF198oezsbGVnZ2vUqFF+dW+88UbNnz9fUskbA69cuVLLli1TUVGR2rVrp7vvvlt33XWX06cGAAAAAJLqaVXALl266MUXXzxlnZdeesnv8U033aSbbrrptMeeNGmSJk2aZKd7AAAAAGAL74oGAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGBTvawKCDRmhuH3qJKyk+uVfGLJkmVZskzJkko+L9kgS5JpWb7PLcuhzlchyLTkyilQXqFXXm89N44mi3EFJzCu4ATGVcNnGFLzZkGN6vtDsEKDYRiSUVliKbe93KMK261y6aQk1JSve+KxL+CUVCz/wbfNsiTTtHxlZSHILN1mWZZMs+SYZul2y7RKP5es0m2WyoensuP597e+Q5UkBQUZatGiSDk5+Y3qCQsNG+MKTmBcwQmMq4YvPCxYHVtH6sRvaQ0fwQqOKwlEhi8YGYYh0zJlmpLXsmR6LXlNS16vqWLTktdr+YKRpbIZn9KAYvmHpvJBqHxaKpsZkk76cSwfqk4Ulfu8fNix/GaTThWEDEMyZKj0v5JzNYzSz0/MchmGIZeh0nouSWYlEfFkJQ1WWa/8hiqfe/w3BAVJoS5TYSGWvK7G84SFho1xBScwruAExlXDFx5infIP7g0RwQq2lJ9lMozSmR5L8pqmTNOS15SKTVNeb0lwKvKaKi42Vew1fbNCZTNCZTNAJx+/Qptl6cWvrOIDo5KCU4UTQ4YMw/Cdk1G+XGZpNUtGaRgySh/LMlU6JyXDKn1sWSXbZJZ8QUxLlmVKpilZpizLlGV6S2ezrBr+MabyytXMVCXn4ZLMsFAZ+YUyzJq0DVSNcQUnMK7gBMZVwxfUIlzG2VGB7kaNEKxwSi7DkMtlVDrLVGyapR8tFZcGJq9Zeklc2axSucvgfLM3pWHFZVgKDiqp5JL0S1a+Pv/uFx3NKVBMi1Bdel6sznY3U7kL9Xz9MiqbNvKftvKbWjoRqMrvV76DpY9NS5ZpyrK8ZdcDln5eNjtWMm1mlk5lnSgrndGyTsy2lW1viIJcksswVZBXIC8vKKgjjCs4gXEFJzCuGr7mzZsFugs1RrA6A508yySVzTKVzBwVlbvW2JNXqCLf5XolYcMqnXWRacmSWXbTkSRTwSfP2JTOzsgsN1tTLriU3a/06d48/WtHdtntUJIhbfzvYV1/cYR6dAiVVNkleCfuXzplmVWhRmBubAIAAECTRbBq4oKDDZler0zLlOU15TVNWV5v6WV6XnmLvCXbzbLL00zl5Bb69j9+aJ9coa7SmRvLb9am7LFvNqf8jI1pVTvAZOaa+teOXL/7oso+vvtFrtpFSrERvDMAAAAAGi6CVRPmckl5x47o2KHDMr3eknuZvCX3Ppml4adstTxfKLIs5RScmBM/nuWRq5mzoWbHgaITM1UnM0q2Dzy/8U0HAwAA4MxBsDoD5HpySpYLb6CO5ZlVr7xglW4HAAAAGjCCFQIuOtwlGVJLw6Nezb5XrCtHmWYLbSv4lY5Y7pLtAAAAQANGsELAdW8XIu+B/2lkxMeyShZTlyXp6rBdWpF7hbq3uzjQXQQAAABOiakABFzLII9GtdgilyEFGZZchqUgo2R59lEttujsIE+guwgAAACcEsEKARd2+KtKy8uWgg+vYjsAAADQUBCsEHCuwmxb2wEAAIBAI1gh4MzQSFvbAQAAgEAjWCHg8lt2lVRxxfWyx3ml2wEAAICGimCFgPOGRSu781WSDHktQ6ZlqGTpCkPZna+SGRYd4B4CAAAAp8Zy62gQCs7uqqzQc/T1jp2KdeWoS/sYec9JIFQBAACgUSBYocEobhalVXmXSJKmtolQi2ZMqAIAAKBx4DdXAAAAALCJGSsgQILyjyns8FdyFWbLDI1Ufsuu8nLpIwAAQKNEsAICoNnhrxS5d71fWfjP25Xd+SoVnM0qiAAAAI0NlwIC9Swo/5gi965XydqHJ/5JliL3rJcr/1iguwgAAIAaIlgB9Szs8FeVlhulH8Or2A4AAICGi2AF1DNXYbat7QAAAGh4CFZAPTNDI21tBwAAQMNDsALqWX7LksUprJPKyx7ntWTxCgAAgMaGYAXUM29YtLI7XyXJkNcyZFoly1dIhrI7XyWTJdcBAAAaHZZbBwKg4OyuOh7eRv/97AvFunJ0fscYFbZKIFQBAAA0UgQrIEC8zaK0Ku8SSdLv2rZQaLBxmj0AAADQUNXLpYC7d+/WnXfeqe7du6tv375asGCBCgsLT7ufZVlasmSJBgwYoMTERN16663asWNHhXoZGRm677771KNHD/Xs2VMPPfSQcnJyHDgTAAAAAKjI8RmrrKwsjR07Vp06dVJqaqoyMjI0f/585efna/bs2afc9/nnn9fChQs1ffp0xcfH65///KfGjRunf/3rX+rQoYMkqaioSBMmTJAkPf3008rPz9eTTz6pBx98UIsXL3b69ABUU2auqR0HinQsz1R0uEvd24UoNsL5v+1kZ2Yq/8f/KbTIo8IQt8LaJygyNpZ2HWi34Mf/qVlxtgqCI9XsDDhf2mVcNZV2g/KPKezwV3IVZssMjVR+y67y1sOl6YFsN/zIVwrx5kpBEco7u37aRdPneLBasWKFcnNztWjRIkVHR0uSvF6vHn30UU2aNEmtW7eudL+CggItXrxY48aN0x133CFJuvTSS3Xttddq6dKlmjNnjiRp7dq1+u6775SWlqa4uDhJktvt1vjx47Vz504lJiY6fYpArRw9bvo+3/B9gS7tEFpvQaO+f1HZcaBI2/53SL2bfa/zXDnKzGqh13/4lXontNLF7UIca/fQd7vU9egGWTJkSLK8kvH9F/oqpr9anXcR7TrVbvEZdr60Wz/tMq4c0ezwV4rcu95vpdrwn7cru/NVKjjbuVVqG0q7zSSF/eR8u1JggvOZ9keCQHM8WG3cuFF9+vTxhSpJSk5O1h/+8Adt3rxZN910U6X7ff7558rJyVFycrKvLDQ0VIMHD9a6dev8jh8fH+8LVZLUt29fRUdHa8OGDbUOVqZpyZN7+ssVnZR9/ET7nuOFKvaap6hdkcuQCo4XKafAlGmdvLh31Y4XmpV+7rRAtRsIX/5UpHXfnPj+bvuhSNt+KNLg+FBd2Ma5oJG150slejZW+EVlpztJUZ0vdKTNo8dNHf52l2ZFfXyiXUkDw3bplW+v0I/Nuym6ed0HyuPHjqrr0Q1yGVL5xe0tS+p6dIO+ymij5tExtEu7tEu7Z2y7wQXHdPbe9Spbm7Z8u5F71isr9BwVN4ui3TpQ4fXX6/zrbyDarMt2g/OL1SynUMXFXsf6Wl3R0c0VFHT6eo4Hq/T0dN18881+ZW63Wy1btlR6evop95PkF5gkqUuXLlq+fLny8/MVFham9PT0CnUMw1Dnzp1PefzT+cWTr6mpm2q9f12btWRrQNpd8nHeGdVuoK37ptAvcNWlli6PZkVtrPSFO9GzUX/cGKsjptuhdj+utN1RER/rj5+2cqTdoeG7dEFYWYw7wTAk0zJ08JtdvsVDaJd2aZd2z8x2/6u2YVLQSWsnGYbktaSvd+yk3ToQiNffwL7m11W7uZJ+qvM+1sbzswbpnLMiTlvP8euOPB6P3O6KX8CoqChlZWWdcr/Q0FA1a9bMr9ztdsuyLN++Ho9HkZGRNT4+cKbp1ez7k/5GV8IwJEuGejf7vkm1G+vKqaTV0rZLt9Mu7dIu7dIu7TrdbiBeB8+01/yGguXWq3CWO0yLpiYFuhtyBRmKjAxTdna+TG/1L+eTJMMl5WX9op/3/iCrBpcCnmmOF5p6dlPJDNk9/cLVPNTZvzes2pWvbw5VPa0d3ypIQy8Kq/N2C77IlVHFFZaGpE7Nc/Vgn9P/NaamzF25Moqqbve8SGfazf7SLauKyT9LUlgLtx7sRbu0S7u0e+a2e+SLSFlVvC5YkoywSNqtA4F4/Q3Ua35dthsVE6WWnc+Ttzjwv8OeFVW938scD1Zut1vZ2dkVyrOyshQVVfV1rG63W4WFhSooKPCbtfJ4PDIMw7ev2+2udGn1rKwstWnTptb9drkMNQ8LfO4MDnYpOjJMVrFXxcU1vMfKJQUXBssT4qrRPVZnmvK3rjULdik8xNlgdVZEkAzDq8q+JYZRst2JPuSEumXlV77NklQU6la0A+26oqJlHam63cioaJkOtFvc8UIZ3++UZZV8XX1tWpIhS+HnXuTI15l2aZd2abextPtTxAXqnv3fKtv9KeICdaBd2wLx+huo1/y6bDeiWZBahIeqqCjw91i5jKrmOk+q53A/FBcXV+Fep+zsbB0+fLjCvVEn7ydJe/bs8StPT09X27ZtFRYWVuXxLcvSnj17Tnl8IFC6tws5+TL6E6zS7Q4Ia58gQ1aFQFf2ghLWwZkbWY22CXIZqrRdlyGpbYIj7UbGxuqrmP6yJHktQ6ZlyGsZsiR9FdNfkTF1fyM47dIu7dJuY2r3Vx3P1orcKyptd0XuFfpVx7Nptw4E4vU3UK/5gWq3oXB8SiYpKUnPPfec371Wa9askcvlUt++favc75JLLlGLFi20evVqXXDBBZJK3rPq/fffV1LSiUv0kpKS9O6772rv3r3q1KmTJGnLli06duyY+vfv79yJAbUUG+HS0IvCtGpXvnxL5JV+HHpRmGNLrpe9cHc9ukGmZZRr2ipZztehF25vWLSyO1+lyD3rVX7O1TCk7M5XyXTwvUNanXeR9h5tp/z9X55Y8rXDhY6d65nebsH+L08s438GnC/tMq4ae7uxES61Ov8iPf6/Vurd7HvFunKUabbQ1oKSt8Nw6vXoTGs3EK+/gXrND1S7DYVhOXzzTVZWlq677jp17txZkyZN8r1B8K9//Wu/NwgeO3asDh486LeU+pIlS5Samqrp06fr/PPP1yuvvKJNmzZVeIPgsiXbp02bpry8PC1YsEDx8fG23iDY6zWVmZlb6/3rSnCwSzExETp6NLdWlwIWeH7Rge/3cCngKeQUmPrLv0u+11MHRKhFM+ffS0oK4BvmHj1a4RcVp/4aWp4r/5jCy70RZF7Lro6GKtS/IJcU3ryZ8o4XqIbvDgFUiXHlvEC9HgWy3S8OFimnUGoRKl3ctv5ef08Ozk6//gaizbpqN+asaLXqckGDuBQwNjZCQUGnHyOOBytJ2r17tx577DFt375dERERGjZsmB544AGFhob66owePVoHDhzQhx9+6CuzLEtLlizRyy+/rMzMTHXt2lUzZ85Ujx49/I6fkZGhefPmadOmTQoODtbgwYM1a9YstWjRotZ9JlidOQIVrAKJX1TgBMYVnMC4ghMYVw0fwaoJIVidOQhWge4NmgrGFZzAuIITGFcNX2MMVk3/N0gAAAAAcBjBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANgUHugNwVlBomFp37CBvcbGKvcUyvaZMb7FkmvJ6zZKPliXLsmRZkmWZkqXSx5ZkWbJUsk1lZQAAAAD8EKyaMNOUgsNaKCQ8Ui6XJBnymqYsSZYpFXtNWaZXpmnKNE0Ve70lwavYWxKsTK8sy5RlmpJplYYu0/dRZsm/kjre0uCl0vBlyTLLQpnlv80X5AhpAAAAaBoIVk2caZaEHK+34rZglyEjKFiSIcMoKTMMQ5Yseb2WTNOSWfa5ZclrSl6vqWKvKa9Zsr0kHBmlgaksdFlySXLJkqGScsmSYZkljVimDMuSVFJXZkl4syxvSVgrPYalk4KX5ftf+U+rKCtXfnKZVf6RpRDLlJRb8jUJDlFQsFG6X7kQWPFAAAAAgA/B6gxnlaYR66SQYkgKchkKkqEQl0qDV0kAK/vca5oyLUumKRV7rZJZL7MkiBV5vSouNlVUXBLOLL+AUtKuYUiGy5BKj28YhkoPXfJRZWmvrKNWuXLL11/Dr8gqt6clQ4bv8zLGibOXZCkkr1jSUUlS6Flt1Sw8qJIQWD44lpvBM8vP4p00Y+e7nLJ8GYENAACgKSJYoVqqCmAuGXK5Sme/DJdONfvltUo+95qmvKZKg5dXRV6zZHbMtGRakmmVn1WyyuelChNSJ89qVcwopwothiRDuQUnolZWoUveoOCTQl7pOZUGwfLnZ6g0aBpGaRgrmaUr+UpYMmSWHKcsGFYW2FRWdoquVlB5ZcuqYptVPlBKRpAU3ixURnihyroE2GW4pPAwxhXqFuMKTmBcNXyusMYXUxpfj9FgVWf2S0GSYQTpVLNfZQGr5JgnQoJVehlfWRyRddJjlQtW5WfHSo9z4nHpzFHpx+DgE5EjsnmImoeFlLRfuo91Ul/K9i3rpO9xWR4sd+zyC2+Wzcr5Pi8XQn1fKJ3icclXrWJhLQQFGXKFh+m4N19eLzNmqBuMKziBcQUnMK4aPiskuPSWlsaDYIV6d7rZL7mqDg/GKXOF/8ZT1z0hIvTEj0G7syPlbhFa2s+Se8sko/SjVXL7V+llh2Uza2bZKoqyTgSystxlWb7tZtk/0yq9mrDkcSD+UhYUZMjlMhQc5Cq5Dw6oA4wrOIFxBScwrho+byMLVRLBCo3MqW9HOt1lgZUzy1X0li1Df9JxS+adjBMTUL4bu/z5hzmjkrLy9crd7VXP91kFB7vkdofL48lTcTHXQKBuMK7gBMYVnMC4ahyYsQLOYBVWIKxQVnF7IJimJcMwfPe2AXWBcQUnMK7gBMYVnOA6fRWgaTt89Ljv85Wb9ygj8/gpagMAAAAVEaxwRvto50H98R+f+x5/+PkBzXp+qzbt/CmAvQIAAEBjw6WAOGNlZB7Xi6u/VkuXR72afa9YV44yzRbaVvAr/W31VzqvQ5RaxzQPdDcBAADQCBCscMb6aOdP6hX6vW5t/nHpWwmX3PV0ddgurTh+hT764lwNH9Al0N0EAABAI8ClgDhjFfxyULc2/1guQwoyLLkMS0GGJUPSyOYfK/+Xg4HuIgAAABqJeglWH374oa6//np169ZNQ4YM0ZtvvnnafXbu3KmZM2dq8ODBuvjii3XNNdfo6aef1vHj/gsLpKamKj4+vsK/V155xanTQRNxkfmVrCqWTLdkqJv5VQB6BQAAgMbI8UsBP/30U917770aPny4Zs2apa1bt+qhhx5SRESErr322ir3W716tX744QdNmDBBnTp10vfff6+FCxfqiy++0N///ne/umFhYVq+fLlfWYcOHRw5HzQdHVsUysisfJtRuh0AAACoDseD1bPPPqvExETNnTtXktS7d2/t379fCxcuPGWwmjhxomJjY32Pe/XqJbfbrenTp2vXrl266KKLfNtcLpe6d+/u2DmgaWp+VmsV7C+7s8qfYZRsBwAAAKrD0UsBCwsLtW3btgoBKiUlRbt379aPP/5Y5b7lQ1WZhIQESdKhQ4fqtqM4I4XEXynDsCrEKkslwSokPikQ3QIAAEAj5OiM1b59+1RUVKS4uDi/8i5dSlZaS09PV/v27at9vM8++0ySKhwvPz9fvXv3lsfjUadOnXTHHXfolltusdl7KTg48Gt7BAW5/D6iDp3VVtZVE3R8/QuSb01AQ4YsNb9qgkLPahPgDjqHcQUnMK7gBMYVnMC4ghMcDVZZWVmSJLfb7Vde9rhse3VkZmYqNTVVV199tTp16uQr79ixo6ZPn66EhAQVFBRo5cqVeuSRR5Sdna3x48fXuu8ul6GYmIha71/X3O7wQHehaepzrYriL1b2Fx+o6NghhUS3UuTFVysktumGqvIYV3AC4wpOYFzBCYwr1KUaB6vs7OxqXYpXl4tHFBUVadq0aZKkOXPm+G0bNmyY3+MBAwaoqKhIzz77rMaMGaOQkJBatWmaljye46ev6LCgIJfc7nB5PHnyes1Ad6dpMtwyut+o0NKHOZJ0NDeAHXIe4wpOYFzBCYwrOIFxhZpwu8OrNbtZ42C1Zs0aPfzww6etl5aWpqioKEklYaw8j8cjSb7tp2JZlmbNmqWdO3fq5ZdfVqtWrU67T3JystauXat9+/b5LjusjeLihvOD5vWaDao/aBoYV3AC4wpOYFzBCYwr1KUaB6sRI0ZoxIgR1apbWFiokJAQpaen68orr/SVp6enS6p4r1RlnnzySa1evVrPP/+8Lrjggpp2FwAAAAAc5+gde6GhoerVq5fWrl3rV56WlqYuXbqcduGKJUuW6MUXX9T8+fPVp0+fareblpYmt9utjh071qrfAAAAAFATjr+P1T333KMxY8Zozpw5Sk5O1rZt27Rq1So988wzfvUSEhJ0ww036PHHH5ckrVy5Uk8//bSuv/56tW/fXjt27PDV7dixo2859ptuukk33HCD4uLilJ+fr5UrV+r999/XrFmzan1/FQAAAADUhOPB6rLLLlNqaqr+8pe/6I033lDbtm01b948JScn+9Xzer0yzRPXuG7evFmS9O677+rdd9/1q/vEE0/opptuklQSsl588UUdOXJEhmHo/PPP15/+9Cddf/31Dp8ZAAAAAJQwLMs6+f1RoZKbGTMzA78yXHCwSzExETp6NJebK1FnGFdwAuMKTmBcwQmMK9REbGxEtVYF5F3RAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAm+olWH344Ye6/vrr1a1bNw0ZMkRvvvnmaff58ccfFR8fX+HfLbfcUqHu559/rltvvVWJiYm66qqrtGTJElmW5cSpAAAAAEAFwU438Omnn+ree+/V8OHDNWvWLG3dulUPPfSQIiIidO211552/2nTpqlXr16+xxEREX7bf/jhB40fP159+/bV1KlT9c033+ipp55SUFCQxo8fX+fnAwAAAAAnczxYPfvss0pMTNTcuXMlSb1799b+/fu1cOHCagWrc889V927d69y+9KlSxUTE6M///nPCg0NVZ8+fZSZmannnntOo0ePVmhoaF2dCgAAAABUytFLAQsLC7Vt27YKASolJUW7d+/Wjz/+aLuNjRs36uqrr/YLUCkpKfJ4PNq+fbvt4wMAAADA6TgarPbt26eioiLFxcX5lXfp0kWSlJ6eftpjzJkzR127dlWfPn308MMP69ixY75tx48f108//VTh+HFxcTIMo1rHBwAAAAC7HL0UMCsrS5Lkdrv9yssel22vTGhoqEaNGqV+/frJ7Xbriy++0HPPPaddu3bp9ddfV0hIiLKzsys9fmhoqMLDw095/OoIDg78oolBQS6/j0BdYFzBCYwrOIFxBScwruCEGger7OxsHTp06LT1OnToUKsOlWnVqpXmzJnje9yzZ0+dd955mjRpktatW6eUlBRbxz8dl8tQTEzE6SvWE7c7PNBdQBPEuIITGFdwAuMKTmBcoS7VOFitWbNGDz/88GnrpaWlKSoqSpJ8M0tlPB6PJPm2V1f//v3VvHlzffnll0pJSVFkZGSlxy8sLFReXl6Nj1+eaVryeI7Xev+6EhTkktsdLo8nT16vGejuoIlgXMEJjCs4gXEFJzCuUBNud3i1ZjdrHKxGjBihESNGVKtuYWGhQkJClJ6eriuvvNJXXnbv08n3RtVU8+bN1aZNmwr3Uu3Zs0eWZdk+fnFxw/lB83rNBtUfNA2MKziBcQUnMK7gBMYV6pKjF5aGhoaqV69eWrt2rV95WlqaunTpovbt29foeOvXr9fx48fVrVs3X1lSUpI++OADFRUV+R3f7XarR48e9k4AAAAAAKrB8fexuueeezRmzBjNmTNHycnJ2rZtm1atWqVnnnnGr15CQoJuuOEGPf7445Kk+fPnyzAMde/eXW63Wzt37tTixYt10UUXadCgQb79xo8fr5UrV+rBBx/UqFGj9O2332rp0qV64IEHeA8rAAAAAPXC8WB12WWXKTU1VX/5y1/0xhtvqG3btpo3b56Sk5P96nm9XpnmianYLl266JVXXtFrr72m/Px8tW7dWsOHD9eUKVMUHHyi2+eee66WLl2q+fPn66677lJsbKymTJmicePGOX1qAAAAACBJMizLsgLdiYbI6zWVmZkb6G4oONilmJgIHT2ayzXAqDOMKziBcQUnMK7gBMYVaiI2NqJai1eweD8AAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGBTvQSrDz/8UNdff726deumIUOG6M033zztPqmpqYqPj6/03+zZs09b75VXXnHylAAAAADAJ9jpBj799FPde++9Gj58uGbNmqWtW7fqoYceUkREhK699toq9xsxYoSuvPJKv7JPPvlETz31lJKSkvzKw8LCtHz5cr+yDh061N1JAAAAAMApOB6snn32WSUmJmru3LmSpN69e2v//v1auHDhKYPVOeeco3POOcevbMWKFYqKiqoQrFwul7p3717nfQcAAACA6nD0UsDCwkJt27atQoBKSUnR7t279eOPP1b7WAUFBVq3bp2GDBmi0NDQuu4qAAAAANSao8Fq3759KioqUlxcnF95ly5dJEnp6enVPtb69euVk5OjoUOHVtiWn5+v3r17KyEhQSkpKXrttdfsdRwAAAAAasDRSwGzsrIkSW6326+87HHZ9upYtWqVWrdurcsvv9yvvGPHjpo+fboSEhJUUFCglStX6pFHHlF2drbGjx9vq//BwYFfNDEoyOX3EagLjCs4gXEFJzCu4ATGFZxQ42CVnZ2tQ4cOnbZeXS4e4fF4tGHDBt1+++1yufx/AIYNG+b3eMCAASoqKtKzzz6rMWPGKCQkpFZtulyGYmIiat3nuuZ2hwe6C2iCGFdwAuMKTmBcwQmMK9SlGgerNWvW6OGHHz5tvbS0NEVFRUkqCWPleTweSfJtP521a9eqsLBQv/71r6tVPzk5WWvXrtW+fft8lx3WlGla8niO12rfuhQU5JLbHS6PJ09erxno7qCJYFzBCYwrOIFxBScwrlATbnd4tWY3axysRowYoREjRlSrbmFhoUJCQpSenu63dHrZvVUn33tVlVWrVikuLk4JCQk17a4txcUN5wfN6zUbVH/QNDCu4ATGFZzAuIITGFeoS45eWBoaGqpevXpp7dq1fuVpaWnq0qWL2rdvf9pjHDp0SP/5z38qXbSiKmlpaXK73erYsWON+wwAAAAANeX4+1jdc889GjNmjObMmaPk5GRt27ZNq1at0jPPPONXLyEhQTfccIMef/xxv/K0tDSZplnlZYA33XSTbrjhBsXFxSk/P18rV67U+++/r1mzZtX6/ioAAAAAqAnHg9Vll12m1NRU/eUvf9Ebb7yhtm3bat68eUpOTvar5/V6ZZoVp2JXrlypxMTEKmefOnbsqBdffFFHjhyRYRg6//zz9ac//UnXX3+9I+cDAAAAACczLMuyAt2JhsjrNZWZmRvobig42KWYmAgdPZrLNcCoM4wrOIFxBScwruAExhVqIjY2olqLV7B4PwAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYBPBCgAAAABsIlgBAAAAgE0EKwAAAACwiWAFAAAAADYRrAAAAADAJoIVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGwiWAEAAACATQQrAAAAALCJYAUAAAAANhGsAAAAAMAmghUAAAAA2ESwAgAAAACbCFYAAAAAYJPjwWrz5s168MEHNWjQIMXHx2vu3LnV3jc7O1uzZs1Sz5491aNHD02ZMkWHDh2qUO/zzz/XrbfeqsTERF111VVasmSJLMuqy9MAAAAAgCo5Hqw++ugjff3117r88svldrtrtO/UqVO1efNmzZkzR0899ZT27NmjiRMnqri42Ffnhx9+0Pjx49WyZUstXrxYY8eO1cKFC7Vs2bK6PhUAAAAAqFSw0w387ne/04wZMyRJ27Ztq/Z+27dv16ZNm7R06VL169dPktS5c2elpKTo/fffV0pKiiRp6dKliomJ0Z///GeFhoaqT58+yszM1HPPPafRo0crNDS07k8KAAAAAMpxfMbK5apdExs3bpTb7Vbfvn19ZXFxceratas2btzoV+/qq6/2C1ApKSnyeDzavn177TsOAAAAANXUYBevSE9PV+fOnWUYhl95XFyc0tPTJUnHjx/XTz/9pLi4uAp1DMPw1QMAAAAAJzl+KWBteTweRUZGViiPiorSrl27JJUsbiGpwr1boaGhCg8PV1ZWVq3bd7kMxcZG1Hr/ulKWK6OiwsV6HKgrjCs4gXEFJzCu4ATGFWrC5TJOX0m1CFbZ2dmVrsx3sg4dOjTq+5sMw1BQUPW+iPWhtpdUAqfCuIITGFdwAuMKTmBcoS7VOFitWbNGDz/88GnrpaWlqUuXLrXqlFQyC/Xzzz9XKM/KylJUVJQk+Wa0ymauyhQWFiovL89XDwAAAACcVONgNWLECI0YMcKJvviJi4vTli1bZFmW331We/bs0fnnny9Jat68udq0aVPhXqo9e/bIsqwK914BAAAAgBMa7PxnUlKSsrKytGXLFl/Znj179L///U9JSUl+9T744AMVFRX5ytLS0uR2u9WjR4967TMAAACAM5PjwerAgQNas2aN1qxZo7y8PO3bt8/3uLyEhATNmjXL97hHjx7q16+fZs2apdWrV+vDDz/UlClTFB8fr2uuucZXb/z48crMzNSDDz6oLVu2aPny5Vq6dKnuvvvuRn2PFwAAAIDGw7AsZ9dCeeuttzRz5sxKt33zzTe+z+Pj43XjjTdq/vz5vrLs7Gw98cQTWrdunYqLi9WvXz89/PDDat26td9xPv/8c82fP19fffWVYmNj9Zvf/EYTJ06ssFQ7AAAAADjB8WAFAAAAAE1dg73HCgAAAAAaC4IVAAAAANhEsAIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlg1UDt3r1bd955p7p3766+fftqwYIFKiwsDHS30Ii99dZbio+Pr/DvqaeeCnTX0Ij88MMPmj17toYNG6aEhAQNHTq00nqvv/66hgwZom7duun666/X+vXr67mnaEyqM65Gjx5d6XPY7t27A9BjNHSrV6/WPffco6SkJHXv3l3Dhg3TG2+8oZPfvpXnKtSl4EB3ABVlZWVp7Nix6tSpk1JTU5WRkaH58+crPz9fs2fPDnT30Mi98MILioyM9D1u3bp1AHuDxua7777Thg0bdPHFF8s0zQq/pEjSe++9p0ceeUR33323evfurbS0NN1777365z//qe7du9d/p9HgVWdcSdIll1yi3//+935l7du3r48uopF58cUX1a5dO82YMUMxMTH6+OOP9cgjj+jnn3/WvffeK4nnKtQ9w6rq2QsBs3jxYj333HNav369oqOjJUmvvvqqHn30Ua1fv55fhFErb731lmbOnKktW7YoNjY20N1BI2WaplyukosdZsyYoV27dmnVqlV+dYYMGaKLLrpITz/9tK9s5MiRioyM1PPPP1+v/UXjUJ1xNXr0aDVv3lyLFy8ORBfRyGRmZlZ4rXvkkUeUlpamTz75RC6Xi+cq1DkuBWyANm7cqD59+vhClSQlJyfLNE1t3rw5cB0DcMYr++W3Kvv379fevXuVnJzsV56SkqItW7ZwSTMqdbpxBdRUZX9A7Nq1q3JycnT8+HGeq+AInskaoPT0dMXFxfmVud1utWzZUunp6QHqFZqKoUOHqmvXrrr66qu1ePFieb3eQHcJTUjZc1Tnzp39yrt06aKioiLt378/EN1CE/Gf//xH3bt3V7du3XT77bfrk08+CXSX0Ih89tlnat26tVq0aMFzFRzBPVYNkMfjkdvtrlAeFRWlrKysAPQITUHLli1133336eKLL5ZhGPrwww/1l7/8RRkZGdy7hzpT9hx18nNY2WOew1Bbl19+uYYNG6ZOnTrp0KFDWrp0qe6880699NJL6tGjR6C7hwbu008/VVpamu8ePZ6r4ASCFXCGuPLKK3XllVf6Hvfr10/NmjXT8uXLdffdd6tVq1YB7B0AnNqUKVP8Hg8YMEBDhw7V//f//X/cD4NT+vnnn/XAAw+oV69eGjNmTKC7gyaMSwEbILfbrezs7ArlWVlZioqKCkCP0FQlJyfL6/Xqq6++CnRX0ESUPUed/Bzm8Xj8tgN2NW/eXP3799eXX34Z6K6gAfN4PJo4caKio6OVmprqu5+P5yo4gWDVAMXFxVW4lyo7O1uHDx+ucO8VADQkZc9RJz+HpaenKyQkRB06dAhEtwCcgfLz8zVp0iRlZ2dXeKsRnqvgBIJVA5SUlKSPP/7Y91cTSVqzZo1cLpf69u0bwJ6hqUlLS1NQUJASEhIC3RU0ER06dFCnTp20Zs0av/K0tDT16dNHoaGhAeoZmprjx4/r3//+t7p16xborqABKi4u1tSpU5Wenq4XXnihwlvV8FwFJ3CPVQM0cuRIvfTSS5o8ebImTZqkjIwMLViwQCNHjuQ9rFBr48ePV69evRQfHy9J+uCDD/Taa69pzJgxatmyZYB7h8YiLy9PGzZskCQdOHBAOTk5vl9MevbsqdjYWN13332aPn26OnbsqF69eiktLU07d+7UP/7xj0B2HQ3Y6cZV2S/HgwcPVrt27XTo0CH97W9/0+HDh/XXv/41kF1HA1X23p8zZsxQTk6OduzY4duWkJCg0NBQnqtQ53iD4AZq9+7deuyxx7R9+3ZFRERo2LBheuCBB/gLCmpt3rx5+uijj/Tzzz/LNE116tRJI0aM0OjRo2UYRqC7h0bixx9/1NVXX13ptr///e/q1auXJOn111/X888/r4MHD6pz586aNm2arrrqqvrsKhqR042rc845R3PnztU333yjY8eOKTw8XD169NC9996rxMTEeu4tGoOBAwfqwIEDlW774IMP1L59e0k8V6FuEawAAAAAwCbusQIAAAAAmwhWAAAAAGATwQoAAAAAbCJYAQAAAIBNBCsAAAAAsIlgBQAAAAA2EawAAAAAwCaCFQAAAADYRLACAAAAAJsIVgAAAABgE8EKAAAAAGz6/wGB4A+hQTOoswAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Import plot afc function\n",
"from statsmodels.graphics.tsaplots import plot_acf\n",
"import matplotlib.pyplot as plt\n",
"\n",
"afc_plot , ax = plt.subplots(1, 1, figsize=(10, 5))\n",
"\n",
"plot_acf(\n",
" x=outs[\"innovation_residual\"][:, 0], ax=ax\n",
");\n",
"plot_acf(\n",
" x=ekf_resudials[\"innovation_residual\"][:, 0], ax=ax,\n",
");\n",
"\n",
"ax.set_title(\"Innovation Residual ACF\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see the error plots"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"pekf_states = pd.DataFrame(outs[\"x_smoothed\"], columns=ParametricExtendedInterface.STATE_NAMES)\n",
"ekf_states = pd.DataFrame(ekf_state, columns=ParametricExtendedInterface.STATE_NAMES)\n",
"wls_states = pd.DataFrame(df_wls, columns=ParametricExtendedInterface.STATE_NAMES)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We know the real coordinates since this is the IGS station."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"realCoords = pd.DataFrame(\n",
" data=Epoch.IGS_NETWORK.get_xyz(station=\"JPLM00USA\").reshape(1,-1).repeat(len(ctg0), axis=0),\n",
" columns=[\"x\", \"y\", \"z\"]\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calcualte the ENU error from this triangulation."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from navigator.core import Triangulate\n",
"\n",
"\n",
"enuError_PEKF = Triangulate.enu_error(\n",
" predicted=pekf_states,\n",
" actual=realCoords\n",
")\n",
"enuError_EKF = Triangulate.enu_error(\n",
" predicted=ekf_states,\n",
" actual=realCoords\n",
")\n",
"\n",
"enuError_WLS = Triangulate.enu_error(\n",
" predicted=wls_states,\n",
" actual=realCoords\n",
")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The boxen plot of the ENU error by model is shown below:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAJICAYAAADxUwLTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACSKklEQVR4nOzdd3wUdf4/8NfM1vReSEJoIQklBJAiRUGKgkhX7MphQRG73ql3pz/v9Cynfk8hoFIURU9QUAEBBaVI71V6qIGE9L672f3M74+QPUIS2GzKbHk9Hw8emtnZ2fdsndfMp0iKoiggIiIiIiJygKx2AURERERE5D4YIIiIiIiIyGEMEERERERE5DAGCCIiIiIichgDBBEREREROYwBgoiIiIiIHMYAQUREREREDmOAICIiIiIihzFAEBERERGRwxggiIi8zPr16zF69GikpKQgKSkJRUVFapdUzbRp05CUlFRtmdVqxbvvvosBAwYgOTkZU6ZMAQCUlpbir3/9K/r164ekpCS8+eabapTsUWp7/h310ksvYdCgQY1cERG5Gq3aBRCR91m8eDFefvnlOm9fsGABunbtCgD2A5m//OUvmDRpUq3b+e6775CSkgKg8gDm559/xu7du2vddrdu3XDLLbfg7bffvmqNVzuAuvPOO/GPf/zjqvd3Vfn5+XjmmWfQvn17vPrqq9Dr9fDx8Wmyx7vytdbr9QgKCkJSUhIGDBiAcePGwd/f/5rbWbRoEebMmYMHH3wQHTt2RExMDADgk08+wffff48pU6agZcuWaNeuXZPtS0MtXboUubm5mDhxokPrDxo0CBkZGejTpw8+//zzGrcvXLgQf//73wGg2meAiKipMUAQkWqeeuopxMXF1VgeHx9fY9mcOXNw9913N+nB7pX69euH0aNH11jepk2bZquhse3fvx+lpaV4+umn0bdv32Z73KrX2mq1IicnB9u2bcO//vUvfP7555gxYwaSk5Pt6z7++ON49NFHq91/y5YtiIqKwiuvvFJjeWpqKqZOndos+9EQy5Ytw7FjxxwOEABgMBiwdetWZGdnIyIiotptS5cuhcFggNlsbuRKiYiujgGCiFRz4403OnTWtEOHDjh06BC++eYb/OlPf2qGyiq1bt261gBxLeXl5bUGHavVCiEE9Hq90zWVlZXB19fX6fvn5eUBAAICApzexpUcqenK13ry5MnYvHkzHnvsMUyZMgXLly+H0WgEAGi1Wmi11X+ecnNzERgYWGO7ubm5SEhIaIS9qCSEQEVFBQwGQ6NtsyG6d++O/fv3Y/ny5XjwwQftyzMzM7Fjxw4MHToUP//8s4oVEpE3Yh8IInJ53bt3x/XXX4/Zs2fDZDKpXU41999/P2677TYcOHAA9957L1JTU/HBBx/g3LlzSEpKwpw5c/D5559jyJAhSElJwYkTJwAAmzdvxj333IOuXbuiR48eePzxx+23Valqi378+HE8//zz6NmzJ+655x4AQHZ2Nl5++WXceOON6Ny5M/r374/HH38c586du2qtf/nLXwAAt99+O5KSkvDSSy/Zb1+xYgXGjRuHLl26oHfv3njhhReQlZVVbRsvvfQSunXrhjNnzuCRRx5Bt27d8MILLzj13PXp0wdTpkxBRkYGlixZUmO/Adifx61bt+LYsWNISkqy/52UlIRz585h7dq19uVV+2+xWPDRRx9h6NCh6Ny5MwYMGIB3330XFoulWg1JSUn4xz/+gSVLlmDEiBFISUnB77//DgDIysrCyy+/jL59+6Jz584YMWIEvvvuu2r3r6pj+fLlmDlzpj0oPfjggzh9+nS1537t2rXIyMiw1+pIXwGDwYCbb74Zy5Ytq7Z82bJlCAwMRP/+/Wu9nyPvLwDYsWMHxo8fj5SUFAwZMgTffPNNnbX8+OOP9vdHr1698Oyzz+LChQvX3IeffvoJ48aNQ7du3dC9e3eMHDkS8+bNu+b9iMh18QoEEammpKTEfka8iiRJCAkJqbHuk08+iXvvvRf//e9/m+0qhNlsrlEfAPj7+1e7ilBQUIBHHnkEI0aMwKhRoxAWFma/bfHixTCbzZgwYYK9/f+mTZvwyCOPIC4uDlOnToXJZML8+fNx9913Y/HixTWadT399NNo1aoVnn32WSiKAqDy+Th+/Djuu+8+xMbGIi8vDxs3bsSFCxdqbRYGAI899hjatGmDBQsW2JsUVTUXq+qrkJKSgueeew65ubn44osvsGvXLvzwww/Vzv5brVY89NBDuO666/CXv/zFfuXAGaNHj8YHH3yADRs2YMKECTVuDw0NxbvvvouPP/4YZWVleO655wAA7dq1w7vvvou33noL0dHR9vdEaGgohBB4/PHHsXPnTkyYMAHt2rXD0aNHMW/ePJw6dQozZsyo9hhbtmzBihUrcO+99yIkJASxsbHIycnBhAkTIEkS7r33XoSGhmL9+vX461//ipKSkhrNkGbNmgVJkjBp0iSUlJRg9uzZeOGFF/Dtt9/an/vi4mJkZmba+4T4+fk59BzddtttmDRpEs6cOWN/vZYtW4ZbbrmlxpUaAA6/v44cOYKHHnoIoaGhePLJJ2G1WjFt2rRq798qM2fOxIcffojhw4fj9ttvR15eHubPn4977723xvvjchs3bsRzzz2HPn362INmeno6du3aVe2KChG5FwYIIlJNbW3B9Xo99u/fX2N5jx490Lt3b3tfiIYctDrqu+++q3HGGQA++OADjBgxwv53dnY2Xn/9ddx11132ZVVnwjMzM7Fq1SqEhobab5syZQqCgoKwYMECBAcHAwCGDBmCsWPHYtq0aXjnnXeqPV5ycjLef/99+99FRUXYvXs3/vznP+Ohhx6yL588efJV96dfv37IysrCggULqjUpqqiowHvvvYfExER89dVX9uY71113HSZPnozPP/8cTz31lH07FosFw4YNw/PPP3/Vx3NEdHQ0AgICcPbs2Vpv9/X1xejRo/Hdd98hPz+/WpOy0aNH48MPP0RUVFS15T/++CM2bdqEL7/8Ej169LAvb9++PV577TXs2rUL3bt3ty8/efIkli5dWq0p1F//+lfYbDYsXbrUHmjvvvtuPPfcc5g+fTruuuuuau9Bs9mMH374wR4sAwMD8eabb+Lo0aNITExEv3798MUXX6CoqKjezeKuv/56REREYNmyZZgyZQpOnDiBQ4cO4a9//Wutz9u7777r0Pvro48+gqIo+Oqrr+yd0m+55RaMHDmy2vYyMjIwbdo0PPPMM3jsscfsy2+++WaMHTsWX3/9dbXll1u7di38/f0xZ84caDSaeu03EbkuNmEiItW8+uqr+Oyzz6r9mzVrVp3rP/nkk8jOzr5qM4vGNHjw4Br1ffbZZ+jdu3e19fR6PcaNG1frNm6++eZq4eHixYs4dOgQxo4daz+4AypDQt++fbFu3boa27g8mACA0WiETqfDtm3bUFhY2IA9rHTgwAHk5ubi7rvvrtb2f+DAgWjbti3Wrl1b4z533313gx+3iq+vL0pLSxtteytXrkS7du3Qtm1b5OXl2f9df/31ACqbHV2uZ8+e1cKDoij45ZdfMGjQICiKUm0b/fv3R3FxMQ4ePFhtG+PGjat2VaoquNQVjOpDo9Fg2LBh+OmnnwAAS5YsQYsWLaqFoyqOvr9sNhs2bNiAIUOG2MMDUHll58pmUatWrYIQAsOHD6/2XISHh6NVq1Y1ns/LBQYGory8HBs3bmzIU0BELoZXIIhINV26dKnX0JM9e/ZE7969MXv27BoH1fUhSZJD60VHRzs0UlFUVFSdHaOvbE50/vx5ALWP5NSuXTts2LChRqfkK7eh1+vxwgsv4J133kG/fv2QmpqKgQMHYsyYMTVG6nHE1Wpq27Ytdu7cWW2ZVqtFdHR0vR+nLmVlZbU2m3HW6dOnceLECfTp06fW23Nzc6v9feXzm5eXh6KiIixYsAALFiyodRtXNm27/CAcgL1JT2PNsTFy5Eh8+eWXOHz4MJYtW4Zbb7211vexo++v0tJSmEwmtGrVqsZ6bdq0qRZkT506BUVRcPPNN9daW23NqKrcc889WLFiBR555BFERUWhX79+GD58OG688cZr7jMRuS4GCCJyK1OnTsX999+Pb775ptZ213q9HhaLBYqi1DjAUhQFZrO5QaMg1eZqzakao6lVbSMCTZw4EYMGDcLq1auxYcMGfPjhh/j0008xb948dOzYscGPeTV6vR6y3DgXsDMzM1FcXFzr0L3OEkIgMTGxzrlGrgw/V75GQggAwKhRozB27Nhat3HlPCF1PR9VfVYaKjU1FfHx8XjzzTdx7ty5Gs2MmpIQApIkYdasWbU2Q7raCFxhYWH44YcfsGHDBqxfvx7r16/H4sWLMWbMmBpN9YjIfTBAEJFb6dWrF3r16oXZs2fbZyO+XGxsLKxWK86cOVPj7Orp06dhs9kQGxvbXOXWUHWm+uTJkzVuS09PR0hIiMPDtMbHx2PSpEmYNGkSTp06hTFjxmDu3Ll47733nK7pyrP2J0+erHF2vTH9+OOPAFDnaELOiI+Px+HDh9GnTx+HrzZdLjQ0FH5+fhBCNOpcGc7UcrkRI0Zg5syZaNeuHTp06FDrOo6+vwwGA4xGY7WRoqpced/4+HgoioK4uDin5kDR6/UYNGgQBg0aBCEE/t//+39YsGABpkyZUusVECJyfewDQURup6ovxMKFC2vcVtU0Yv78+TVu++qrr6qto4bIyEh06NABP/zwQ7XmLUePHsXGjRsxYMCAa26jvLy8xuRh8fHx8PPzqzFMqSM6d+6MsLAwfPPNN9Xuv27dOpw4cQIDBw6s9zYdsXnzZsyYMQNxcXEYNWpUo213+PDhyMrKqvX9YTKZUFZWdtX7azQa3HLLLfj5559x9OjRGrfXNjKXI3x8fFBcXOzUfQHgjjvuwNSpU+1D8dbG0feXRqNB//79sXr1anuzJwA4ceIENmzYUG2bN998MzQaDaZPn17jioqiKMjPz6+znitvk2XZfvXGmfcqEbkGXoEgItWsX78e6enpNZZ3794dLVu2rPN+VVchtm3bVuO2Dh064I477sAXX3yB06dP288gb9q0CevWrcMdd9xRbdbjqzl16pT9DPnlwsPD0a9fP4e2UZs///nPeOSRR3DnnXfi9ttvtw+zGRAQ4NCMyqdOncLEiRMxbNgwJCQkQKPRYPXq1cjJyak2OpSjdDodXnjhBbz88su47777MGLECPswrrGxsfWaObkuVa+1zWZDTk4Otm7dio0bNyImJgYzZ85s1InbRo8ejRUrVuC1117D1q1b0b17d9hsNqSnp2PlypWYPXv2NfvePP/889i6dSsmTJiAO+64AwkJCSgsLMTBgwexefPmWt9719KpUycsX74cb731FlJSUuDr6+vQXBBVYmNj8eSTT15zPUffX08++SR+//133Hvvvbj77rths9kwf/58JCQk4MiRI/b14uPj8cwzz+D9999HRkYGhgwZAj8/P5w7dw6rV6/GhAkTqo0Gdrm//e1vKCwsxPXXX4+oqCicP38e8+fPR4cOHdCuXTuH952IXAsDBBGp5qOPPqp1+VtvvXXVAAFU9oV44IEHar3tH//4BxITE7Fo0SJ88MEHACo7hv7tb3/Dvffe63B9GzdurHX0mF69ejUoQPTt2xezZ8/GRx99hI8++gharRY9e/bEiy++eM39Birb8I8YMQKbN2/GkiVLoNFo0LZtW/znP//BLbfc4lRN48aNg9FoxKxZs/Dee+/B19cXQ4YMwYsvvljnGP/1UfVa63Q6BAcHIzExEa+88grGjRsHf3//Bm//crIsIy0tDZ9//jl+/PFHrFq1Cj4+PoiLi8P999/vUDOc8PBwfPvtt0hLS8OqVavw3//+F8HBwUhISHB64rx77rkHhw4dwuLFi/H5558jNja2XgHCUY6+v5KTkzFnzhy89dZb+OijjxAdHW2/und5gACARx99FK1bt8bnn3+OtLQ0AJXvw379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AWqXR0RERETk9VwqQBQUFKBLly64//77ERwcjGPHjmHatGk4duwY5s6dq3Z5RERERERez6UCxOjRo6v93bt3b+j1evz9739HVlYWoqKiVKqMiIiIiIgAJwKE2WzGggUL0KFDB/Ts2bMpaqomODgYAFBRUdHkj0VE3uXyeVbqq2q+FUURzT5igaLUnPOlvjhHDBEROaveAcJgMOC9997D3/72tyYLEDabDVarFcePH0daWhoGDRqEuLi4JnksIvJOQgg88cTDMJtN1165ThIOrVOreWX1OV/qy2AwIi2Nc8SQe3LX8G9/XDh/AqAhJw6IGotTTZjat2/v1KRyjrrpppuQlZUFALjhhhvw/vvvN3ibWq07/kg2Ts1areyi++8aNan3/Hj7/qvLahUwm03wT7odkJzb/6oDAbVITtYNRaDkyHeQZXf9biRvJoTA44+7c/ivfPyGnAAg7+YKv9tOBYhnn30Wzz//PHr37o2+ffs2dk349NNPUV5ejuPHj2PmzJl47LHH8Nlnn0GjcXwOhMvJsoSQEL9GrrLpNdZZhpAQP2i1LtXdBYDrnEVR6/nx9v1Xm/35l2SnD8SdPoBXWdVUlN762pN7s1qtbh/+Aee/PxRhRenRxY1cDbkTV/judurR58+fj+DgYDz00EOIi4tDXFwcDAZDtXUkScLMmTOdKio5ORkA0K1bN6SkpGD06NFYtWoVhg0b5tT2hFBQVFTm1H3V1FgHmPn5paq/0WrjKgfQaj0/3r7/anOV519N3vrak3vz5vAPAIob106No6m+uwMDfaDROPb+curRjx49CgBo0aIFbDYbTp8+XWMdSZKc2XQNSUlJ0Ol0OHPmTIO2Y7Wqf7ahvhqr5srtuN7+u8protbz4+37rzZXef7V5K2vPbk3fnbJ27nCd7dTAeK3335r7DrqtHfvXlRUVLATNRERERGRC3Cpa9dTp05F586dkZSUBKPRiMOHD2POnDlISkrCkCFD1C6PiIiIiMjrNShAbNu2DWvXrsX58+cBADExMRg4cCB69erl1Pa6dOmC5cuX49NPP4WiKIiNjcUdd9yBhx56CHq9viGlEhERERFRI3AqQFgsFjz//PNYvXo1FEVBYGAgAKCoqAifffYZhg4divfffx86na5e23300Ufx6KOPOlMSERERERE1A6e68qelpWHVqlX405/+hA0bNmDb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/rW4Sv2kLmffP2rj+9f9P/tqvfe8ff/V5irPv9qcef1d5bnjZ9f9P7suFSCsViueeeYZpKen46uvvkJUVJTaJRERERER0WVcKkC8/vrrWLNmDV566SWUlJRgz5499ts6duwIvV6vXnFERERERORaAWLjxo0AgLfffrvGbb/++ivi4uKauyQiIiIiIrqMSwWI3377Te0SiIiIiIjoKtx7EFoiIiIiImpWLnUFgoiImo+zQxpW3c8mFKgxkkjl4zZsSEZZllWdxZqIyJ0xQBAReRlFEZAATJkyyeltSBLw2pLdjVeUE4/fkPqNBgOmp81hiCAicgIDBBGRF1IAvNI3EhrJufsLRYGiNGpJ9SJJgCw5V7xNAf616SIsFkuDJtJTVLoCo/AKDBGpjAGCiMhLaSRAIzt3EK6Bk8nDBQibABp4BQMSsG/e5sYryonHb0j9BqMBadN5BYaInMMAQUREXkVRAChA6KjWgJMBSlGUyss4apEAyckrMBAK8pacghCCAYKInMIAQURE3kmWIDkZICQ3vgKjZu4hIs/AUw9EREREROQwBggiIiIiInIYAwQRERERETmMAYKIiIiIiBzGAEFERERERA5jgCAiIiIiIocxQBARERERkcMYIIiIiIiIyGEMEERERERE5DAGCCIiIiIicphW7QKIiFSlCChq19DcFKF2BURE5MYYIIjIK8myDIPBiJIj36ldChERkVthgCAiryTLMtLSZkMI587GW61WTJkyCck3TIQkNW9rUEUROPz755gxYy602vp/jVfVTkRE5AwGCCLyWrIsQ5YbdvAva7SQZE0jVeQYRdgAAFqt1qkAQURE1BDsRE1ERERERA7jqasGEkI0qAkEUNkcASr0aVQudaSsqqO+nL0fEREREbkvBogGEELgiScehtlsasBWJBxaN7fRanLm8dkWmoiIiIgcxQDRAEIImM0m+CfdDjjZiVJxgeEUne0AqggrSo8ubuRqiIiIiMiVMUA0Bkl2+iC8uUdvaUyKG9dORERERM7hESARERERETmMAYKIiIiIiBzGAEFERERERA5jgCAiIiIiIocxQBARERERkcMYIIiIiIiIyGEMEERERERE5DAGCCIiIiIichgDBBEREREROYwBgoiIiIiIHMYAQUREREREDmOAICIiIiIihzFAEBERERGRwxggiIiIiIjIYVq1CyAi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I0deCg31c88A8cknn+Djjz/GunXr7H0hvv32W7z22mtYs2aN08O4emKA8GZHjvyBX375yT42tU6nQ79+A9C7dz+VK2see/bsxIYNa1FaWgKgcvSWIUOGITa2pcqVEV2bEALnz5+D2WxCZGQL+9DM3sBkMmHv3p04ceIYFKVyHojU1Ovg6+urdmlERO4bIAoLCzFixAi0adMGkydPtk8kN3LkyAZNJMcA4ZnMZjOEEPYx1b2JEALFxUXQaLTw9/dXuxwiIiJyc24bIADgxIkT+Oc//4ndu3fDz88Po0ePxrPPPgu9Xu/0NhkgiIiIiIjq5tYBoikwQBARERER1a0+AYLjPRIRERERkcMYIIiIiIiIyGEMEERERERE5DAGCCIiIiIichgDBBEREREROYwBgoiIiIiIHMYAQUREREREDmOAICIiIiIihzFAEBERERGRwxggiIiIiIjIYQwQRERERETkMAYIIiIiIiJyGAMEERERERE5jAGCiIiIiIgcJimKoqhdRFNTFAVCePxuEhERERE5RZYlSJLk0LpeESCIiIiIiKhxsAkTERERERE5jAGCiIiIiIgcxgBBREREREQOY4AgIiIiIiKHMUAQEREREZHDGCCIiIiIiMhhDBBEREREROQwBggiIiIiInIYAwQRERERETmMAYKIiIiIiBzGAEFERERERA5jgCAiIiIiIocxQJDqpk2bhqSkpFr/ffrpp432OKtXr8ZXX33VaNsj8iZVn9N77723xm1vvvkmBg0a1CiPs3XrVnz88ce1Pn63bt0a5TGIqHYvvfQSbrvttlpva8zPObk/rdoFEAGA0WjEvHnzaixv0aJFoz3G6tWrceDAgVoPgIjIMTt27MDWrVvRu3fvJtn+tm3bMHfuXDz22GNNsn0iImo4BghyCbIso2vXrmqXQURX4evri4SEBMyYMaPRA4TFYoFWy58kIiJ3wCZM5Bbmzp2L8ePH47rrrkOfPn0wefJknDx5sto6x/5/e/ceVFX1/nH8fQ6B5JDczQmEQcYQRTCREE0M8paXUMZETfE2CJqZqVN5yVIxzZLygooIymiONgaJhrdyRplUMh3TqSQvSYkpiQIhI6Lw/cOf5/c9HaxjfhHFz+u//ay193kWM+cMz95rrX3yJHFxcYSGhhIUFETPnj1JTU0Fbj2WzcrK4uTJk6bpUW+//XZ9DEXk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VFdXU1BQgK+vryl+6dIlysrK8PDwqLPPdnJy4vnnn2fr1q3069ePI0eOMH369Fr7FhQUmB3X1NRQUFCAn58fAM2bNwfAwcGBTp061VnOIiINkSZ3ioiI1bp27QpARkaGWXzNmjVm7XUlKiqKU6dOsXDhQmxsbOjTp0+t/b744gvKy8tNxzt27OCPP/4gPDwcgICAALy8vEhPT+fq1asW5/919yoREfl/egIhItJA7du3jzNnzljE27dvb7oDf7datWrFgAED2LRpE2VlZYSEhHD8+HGysrLo1q2b2QLqutC1a1ecnJzYsWMH4eHhuLq61trP0dGRoUOHEh0dbdrG1dvbm0GDBgG3FpMnJiYSFxdH3759iY6O5sknn+TixYvk5eXh4ODAypUr63QsIiIPKxUQIiIN1JIlS2qNz58//18XEACJiYl4enqSlZXFV199hZubG/Hx8UyYMOFfX9NadnZ29O7dmw0bNvztW6oTEhLIz89n1apVXL16lbCwMN59910ef/xxU5/Q0FA2bdrE8uXLWb9+PRUVFbi7uxMYGEhMTEydj0VE5GFlqLm9kkxEROQh8P7777N582a++eYbs4IAbr2JOjY2lsWLF9OrV696ylBEpGHTGggREXloVFZWkp2dTc+ePS2KBxERuT80hUlERB54xcXF7N+/n507d1JSUkJsbGx9pyQi8shSASEiIg+8U6dOMXXqVFxdXZk5c+Yd390gIiJ1T2sgRERERETEaloDISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVlMBISIiIiIiVvsPPbI+O3wtu8kAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = Triangulate.enu_boxen_plot(\n",
" error_dict={\n",
" \"PEKF\": enuError_PEKF[20:],\n",
" \"EKF\": enuError_EKF[20:],\n",
" \"WLS\": enuError_WLS[20:]\n",
" }\n",
");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the total error associated with the model"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"totalError = pd.DataFrame(\n",
"{\n",
" \"PEKF\": enuError_PEKF.apply(np.linalg.norm, axis=1),\n",
" \"EKF\": enuError_EKF.apply(np.linalg.norm, axis=1),\n",
" \"WLS\": enuError_WLS.apply(np.linalg.norm, axis=1)\n",
"}\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot the total error distribution."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAHfCAYAAAC8viJsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB2xklEQVR4nO3dd3hUZd7G8XsmPUBCQgmQhCoJgRASQIoICMIiCCI21BVRkKKCZdW1rLKu61pYLHSpiiAgKqAioggIigjSkd4hCR3SSM857x9s5mVIgCTMZCbh+7kuLp3ntN+ZcnLuU55jMU3TFAAAAADgmlhdXQAAAAAAlAeEKwAAAABwAMIVAAAAADgA4QoAAAAAHIBwBQAAAAAOQLgCAAAAAAcgXAEAAACAAxCuAAAAAMABCFcAAAAA4ACEK6CcioyM1NixY4s0bufOnfXSSy85tZ6XXnpJnTt3duoyUP648/dm7NixioyM1NmzZ11dClCq1q5dq8jISK1du9bVpQBux9PVBQDXg/nz5+vll1+2vfb29latWrXUrl07PfHEE6patarTa9i4caNWr16t/v37KyAgwOnLcyf9+vXTunXrCh1Wr149LVmypJQrKrqsrCzNmTNH3333nQ4cOKDs7Gzbd6dfv36qV6+eq0uEA3377bc6c+aMHnnkEVeX4hRr167Vww8/bHvt6empGjVqqEWLFho+fLjCw8MlSfHx8br11lsvO5/nnntOgwcPlnTh933u3DktWrTIbpw1a9Zo6NChql+/vj7++GNVrlxZnTt3VkJCQqHz3Lp1q3x8fIq1PkXdtuT/Dfjyyy/VtGlT2zipqal69NFHtXv3bo0fP14dOnTQ2LFjNW7cuELn+frrr+uBBx4oVo2usnjxYj377LMaN26cunbtajfsjjvu0O7duzVjxgy1adPGbtgtt9yiGjVqaO7cuZIuHPxr2LChJk2adMXlLV++XNOnT9f+/fuVnp6uqlWrKjo6Wnfffbc6dOjg2JUDroBwBZSip556SmFhYcrOztaGDRs0Z84crVy5UosWLZKfn59Dl7V161Z5eHjYXm/atEnjxo1Tnz59CoSrJUuWyGKxOHT5l/r3v/8t0zSduowrqVGjhv72t78VaK9UqZILqimas2fP6rHHHtP27dvVqVMn9ezZU/7+/jp48KAWL16sefPm6c8//3R1mU7l6u9NaVu0aJH27t1bbsNVvn79+qlp06bKzc3Vjh079Pnnn2vlypX65ptvFBISYhuvZ8+ehe4YN27c+Irzzw9W9erVswWrfFFRUXr00UcLTOPl5VWidSnptiUtLU0DBgzQ7t27NW7cuALr+frrr8vf39+urVmzZiWq0RVatGghSdqwYYNduEpLS9PevXvl6empjRs32oWrY8eO6dixY+rRo0exljVt2jSNHDlSrVq10pAhQ+Tr66vDhw9rzZo1Wrx4MeEKpYpwBZSiDh062I5a3nvvvapcubI+/vhjLVu2TD179nTosopzBNbb29uhyy5MSXdcHKVSpUrq3bt3sadLT08vsIMjSaZpKisrS76+viWuKSsrS15eXrJaC79C++WXX9bOnTs1ZswYdevWzW7YM888ow8++KDEy3Z3+e+7q783cI6WLVvqtttukyTdfffdqlu3rt58800tXLhQQ4YMsY3XuHHjYv9u161bp8cff1x169YtEKwkKSQkpETbgsspybYlLS1NAwcO1M6dOzVu3Dh17NixwDjdunVTcHCwo8osdSEhIQoLC9OGDRvs2jdt2iTTNHXbbbcVGJb/Oj+YFUVubq4mTJigdu3aafr06QWGnzlzpgTVAyXHPVeAC+UfsYuPj5d04Y/E+PHj1aVLF0VHR6tz5856//33lZ2dbTfdtm3bNHDgQLVu3VoxMTHq3Lmz3WWHkv09V2PHjtXIkSMlSbfeeqsiIyMVGRlpW25h91wdPXpUTz31lFq1aqVmzZrpvvvu088//2w3Tv5194sXL9bEiRNt4bF///46fPiw3biX3jsTHx+vyMhITZs2TZ9//rltne+++25t3bq1wHv1/fffq0ePHmratKl69uyppUuXOvx+nPx7aPbt26fnnntON954ox588EFJF96jIUOG6JdfftFdd92lmJgY22UrxXmvvvvuO33wwQdq3769mjVrprS0tEJr2bJli37++Wfdc889BYKVdCEQv/jii3Zta9as0YMPPqjY2Fi1bNlSjz/+uPbv31/oOh48eFDPP/+8WrRooTZt2ujDDz+UaZo6duyYHn/8cTVv3rzQnZWLP/P3339f7dq1U2xsrIYOHapjx47Zjbt+/Xo99dRTuuWWWxQdHa2OHTvqrbfeUmZmpt14L730kuLi4nTkyBENGjRIcXFxev75523DLv2Mv/vuO911112Ki4tT8+bN1atXL82YMcNuHEd/f6/k3Llzevrpp9W8eXO1bt1ab775prKysgqM9/XXX9u+O61atdKzzz5r957169dPP//8sxISEmy/0c6dO8s0TbVu3Vpvv/22bVzDMNSyZUtFRUUpJSXF1j558mQ1btxY58+ft7Xt37/f9l40bdpUd911l5YtW1agvpSUFP3nP/9Rx44dFR0dra5du2ry5MkyDMM2TnF/t0V16bawpNavX68hQ4aodu3a+vjjjxUUFHRN83OG8+fP285Ijx07VrfccovD5v3TTz9p8ODBuvnmmxUdHa0uXbpo/PjxysvLsxuvX79+6tmzp/bt26d+/fqpWbNmat++vaZMmVJgnsePH9cTTzyh2NhYtW3bVm+99VaBv0mX06JFC+3cudPuN79x40Y1bNhQ7du315YtW+y+Xxs3bpTFYlHz5s2LvM7nzp1TWlraZaepUqVKkecFOAJnrgAXOnLkiCTZjqy++uqrWrBggbp166ZHH31UW7du1aRJk7R//36NHz9e0oWjcAMHDlRQUJAGDx6sgIAAxcfHa+nSpZddTteuXXXo0CEtWrRIL7/8sm2H43JHRU+fPq37779fGRkZ6tevn4KCgrRgwQI9/vjjGjNmTIHr56dMmSKLxaIBAwYoLS1NU6dO1fPPP68vvvjiqu/BokWLdP78efXt21cWi0VTp07V8OHD9dNPP9nOWvz888969tlnFRERoeeee07Jycn6xz/+YXf50NXk5eUV2vGAr69vgTNTTz/9tOrUqaNnn33W7pK0gwcP6rnnnlPfvn113333qV69esV+ryZMmCAvLy8NHDhQ2dnZlz0zs3z5ckkq8hHx3377TYMGDVJYWJiGDRumzMxMzZo1Sw888IDmz5+vsLAwu/GfffZZNWjQQM8995xWrlypiRMnqnLlypo7d67atGmj559/Xt9++63effddNW3aVDfeeKPd9BMnTpTFYtGgQYN05swZzZgxQ4888oi+/vpr29m8JUuWKDMzUw888IAqV66srVu3atasWTp+/LjGjBljN7/c3FwNHDhQLVq00IsvvnjZM4KrV6/W3/72N7Vt29YWwA4cOKCNGzeqf//+kkr3+ytdOIsYGhqq5557Tps3b9bMmTOVkpJiO6CR/36NHj1a3bt31z333KOzZ89q1qxZ+utf/6qFCxcqICBAQ4cOVWpqqo4fP247WFKhQgXbzuYff/xhm9/u3buVmpoqq9WqjRs32nbQN2zYoKioKFWoUEGStHfvXj3wwAMKCQnRoEGD5O/vr++//15PPvmkxo4da3svMjIy9NBDD+nEiRO6//77VbNmTW3atEnvv/++Tp06pX/84x9261yU321xXLotzJeRkVHo7zYgIECenva7MBs2bLD9Bj755JPLbt9yc3MLzNPPz6/El2YXZ9uSkZGhQYMG6c8//9To0aPVqVOny843OTnZ7rWHh4cCAwOvWMuCBQvk7++vRx99VP7+/vr99981ZswYpaWlFTgYk5ycrMcee0xdu3ZV9+7d9cMPP2jUqFGKiIiwnUnLzMxU//79dezYMfXr10/Vq1fX119/rd9///2KdeRr0aKFvv76a23ZskWtW7eWdCFA5R8YSU1N1Z49e9SoUSPbsPr16xcrFFepUkW+vr5avny5HnrooQLfIaDUmQCc7quvvjIjIiLM3377zTxz5ox57Ngx87vvvjNbtWplxsTEmMePHzd37txpRkREmP/4xz/spn3nnXfMiIgIc82aNaZpmubSpUvNiIgIc+vWrVdcZkREhDlmzBjb66lTp5oRERHm0aNHC4zbqVMn88UXX7S9/s9//mNGRESYf/zxh60tLS3N7Ny5s9mpUyczLy/PNE3T/P33382IiAize/fuZlZWlm3cGTNmmBEREebu3bttbS+++KLZqVMn2+ujR4+aERERZqtWrcykpCRb+08//WRGRESYy5cvt7X17NnT7NChg5mWlmZrW7t2rRkREWE3z8t56KGHzIiIiEL/vfbaa7bxxowZY0ZERJh/+9vfCn2PIiIizFWrVtm1F/e9uvXWW82MjIyr1vzkk0+aERERZnJy8lXHNU3T7N27t9m2bVvz3LlztradO3eajRo1Mv/+978XWMeL1zs3N9fs0KGDGRkZaU6aNMnWnpycbMbExNh9N/LXo3379mZqaqqtffHixWZERIQ5Y8YMW1th6zlp0iQzMjLSTEhIsLW9+OKLZkREhDlq1KgC41/6vXnzzTfN5s2bm7m5uZd9L5zx/S1M/ns5dOhQu/bXX3/djIiIMHfu3GmapmnGx8ebUVFR5sSJE+3G2717t9m4cWO79sGDBxf6nZ46daoZFRVle88//fRTs1OnTuY999xj/ve//zVN0zTz8vLMli1bmm+99ZZtuv79+5s9e/a0Wz/DMMy+ffuaf/nLX2xt48ePN2NjY82DBw/aLXfUqFFmVFSUmZiYaJpm8X63hcl/z7/88kvzzJkz5okTJ8yff/7Z7NSpkxkZGWnbruUv53L/Nm3aZJvnQw89ZLZq1cqMi4szb7/9dvPMmTOXXX7+7/jSfxdvK4ujqNuW/L8BnTp1Mps0aWIuXbr0svPM/15d+q8o27rCfnOvvfaa2axZM7vvQH7dCxYssLVlZWWZ7dq1M4cPH25r++STT8yIiAhz8eLFtrb09HSza9euZkREhPn7779fsZ69e/eaERER5vjx403TNM2cnBwzNjbWttybbrrJnDVrlmmappmammpGRUWZr776qt08OnXqZA4ePPiKyxk9erQZERFhxsbGmo899pg5ceJE888//7ziNICzcOYKKEWX3qQeGhqqUaNGKSQkRAsXLpSkAjdaDxgwQNOnT9fKlSvVpk0b203SP//8sxo1auSUe1JWrlypmJgYtWzZ0tZWoUIF9e3bV++995727duniIgI27C77rrL7r6t/OmOHj1qN15hevToYXc09uJpJenEiRPas2ePhg4dajsaL0mtWrVSRESE3eVPVxIaGqo333yzQHthZ7/uv//+QucRFham9u3b27UV97268847i3SfVv7lghev8+WcPHlSO3fu1GOPPWZ31LZRo0a66aabtHLlygLT3HPPPbb/9/DwUHR0tI4fP27XHhAQoHr16tk+i4vdeeedqlixou31bbfdpmrVqmnlypW23uAuXs/09HRlZmYqLi5Opmlqx44dqlWrlt08i9ILWkBAgDIyMrR69erL3qRemt9fSfrrX/9q9/qhhx7S7NmztWrVKjVq1EhLly6VYRjq3r273RmOqlWrqk6dOlq7dq2GDh16xWW0bNlSeXl52rRpk9q3b6/169erRYsWqlq1qtavXy9J2rNnj1JSUmz1JyUl6ffff9dTTz1V4PLTm2++WWPHjtWJEycUEhKiJUuWqEWLFgoICLCr8aabbtLkyZP1xx9/6I477rC1X+13ezWvvPKK3evg4GC98847dj3pSVLfvn1t92Zd7IYbbrB7nZ6eruzsbFWpUsXue1mYZs2a6ZlnnrFry++lsCSKs205ffq0vL29VbNmzavOd+zYsXbrUpT7aC/+zaWlpSk7O1stW7bU559/rgMHDtjOEEmSv7+/3Zlxb29vNW3a1O4zXLVqlapVq2b3Gfj5+em+++7Tf//736vW06BBA1WuXNl2L9WuXbuUnp6uuLg4SVJcXJw2btyov/71r9q8ebPy8vKKdb9Vvqeeekr169fX7Nmz9euvv2rVqlX64IMP1LhxY40aNUoNGjQo9jyBkiJcAaVoxIgRqlevnjw8PFS1alXVq1fP1plBQkKCrFarateubTdNtWrVFBAQYOs+uFWrVurWrZvGjRunTz75RK1atVKXLl3Uq1cvh3VMkZiYWGivVPXr17cNv3in89Kd5PzeCC++F+RyLt3JyN9hy582MTFRkgq8L5JUp04d7dix46rLkC7sSNx0001FGvfSS+iu1F7c9+py875U/k7V+fPnr9p1fv57VFi37A0aNNCvv/5aoGOOSz+zSpUqycfHp8ClVJUqVVJSUlKB+dapU8futcViUZ06dey6uU5MTNSYMWO0fPnyApc4Xbqzn98l99U8+OCD+v777zVo0CCFhISoXbt26t69u13QKs3vr1Twvahdu7asVqvt/qFDhw7JNE395S9/KXT6Sy9vK0zjxo3l5+en9evXq3379tqwYYOGDx+uqlWraubMmcrKyirQGcCRI0dkmqZGjx6t0aNHFzrfM2fOKCQkRIcPH9bu3bvVtm3bQse79LK3q/1ur+bJJ59Uy5YtZbVaFRQUpAYNGhT6PtSpU6dIv9s6deqod+/eGjVqlP72t79p9OjRdr2lXiwoKKjI24KiKM625Y033tDbb7+txx57TJ999pntO1mYli1bFrtDi7179+rDDz/U77//XuA3lpqaave6Ro0aBXqJDQwM1O7du22vExISVKdOnQLjFfUREBaLRXFxcVq/fr0Mw9DGjRtVpUoV228mLi5On332maQLlwRKxevM4mI9e/ZUz549lZaWpi1btmj+/PlatGiRhg4dqkWLFhW7m32gpAhXQCmKiYkpcGT2UlfrEt1isWjMmDHavHmzVqxYoV9++UWvvPKKPv74Y33++edFOtPhaJfr7c4sQhfal9sBKsq0znK5P8LX0jNgceeRv9O1Z88euzMwjlLYZ+bIzyIvL0+PPvqo7b6O+vXry9/fXydOnNBLL71kdxO7dOGo+eW+RxerUqWKFi5caDs6vWrVKs2fP1933nmn3n333WLXKV3b97cwl/6GDcOQxWLRlClTCn2PC+uN8lJeXl6KiYnR+vXrdfjwYZ06dUotW7ZUlSpVlJubqy1btmj9+vWqX7++bYc8/z0eMGBAgTOu+fIPWhiGoXbt2umxxx4rdLy6devavb7W70pERIRDA44kDRo0SElJSZo6dapeffVVvfXWW05/xERxNWjQQFOmTFH//v01YMAAzZkzp0hnsYoiJSVFDz30kCpWrKinnnpKtWvXlo+Pj7Zv365Ro0YV+M1d7jN0tBYtWmjFihXas2eP7X6rfHFxcRo5cqROnDihDRs2qHr16td0FlG6cGCqXbt2ateunby8vLRgwQJt2bJFrVq1utZVAYqEcAW4idDQUBmGocOHD9tdwnD69GmlpKQoNDTUbvzY2FjFxsbq2Wef1bfffqvnn39eixcv1r333lvo/Iuzk1GrVi0dPHiwQPuBAwdsw0tL/rLyb3i/WHF6dHMWZ71XnTp10qRJk/TNN99cNVzlL+NydQQFBRVpB744Ln3vTdPU4cOHFRkZKelCKDx06JDeffdd3XnnnbbxVq9efc3L9vb2VufOndW5c2cZhqHXX39dn3/+uZ544gnVqVOn1L+/hw8fttshPHz4sAzDsJ2lrF27tkzTVFhY2FWP+F/pd9qyZUtNmTJFv/32m4KCglS/fn1ZLBY1bNhQ69ev1/r16+06SMivycvL66pBpnbt2kpPT3d44CltL7zwgpKTk/XFF18oMDCwQC+o7iAmJkYTJkzQ4MGD9eijj2r27NkO6XJ93bp1SkpK0rhx4+w6oLmWHhhDQ0O1Z88emaZp990s7Pd1ORc/7+rijmckKTo6Wt7e3lq7dq22bt3q8OdRRUdHa8GCBTp16pRD5wtcCV2xA24iv3emS7uU/vjjj+2GJycnFzg6HBUVJUlX7B43vyesSy8NuVwtW7du1aZNm2xt6enpmjdvnkJDQwvc7+BMISEhioiI0MKFC+3ur1q3bp327NlTanVcjrPeq7i4OLVv315ffPGFfvrppwLDs7OzbWdqqlevrqioKC1cuNDusqw9e/Zo9erVhT5D51otXLjQ7rKjJUuW6NSpU7ado/yzQRd/V03T1KeffnpNyz137pzda6vVagt0+d//0v7+5l/WlG/WrFmSZHsv/vKXv8jDw0Pjxo0r8Ns1TdNunfz8/C77G23ZsqWys7M1Y8YMtWjRwrazm98j28mTJ+0uqapSpYpatWqlzz//XCdPniwwv4sv9evevbs2bdqkX375pcB4KSkpys3NveJ74E7eeOMNdevWTR9//LEmTJjg6nIK1bZtW73//vs6cuSIHnvsscs+kqE4CvvNZWdna/bs2SWeZ4cOHXTy5EktWbLE1paRkaF58+YVeR7R0dHy8fHRt99+qxMnTtidufL29laTJk00e/Zspaenl+iSwIyMDLvf+sVWrVolqeiXMQKOwJkrwE00atRIffr00eeff66UlBTdeOON2rZtmxYsWKAuXbrYngOzYMECzZkzR126dFHt2rV1/vx5zZs3TxUrVrziUb8mTZpIkj744AP16NFDXl5e6tSpU6FnNAYPHqzvvvtOgwYNUr9+/RQYGKiFCxcqPj5eY8eOLdLlW4707LPP6oknntADDzygu+66SykpKfrss8+K1aFFamqqvv7660KHXcsDRZ35Xo0cOVIDBgzQsGHD1KlTJ7Vt21Z+fn46fPiwFi9erJMnT9q6V/773/+uQYMGqW/fvrrnnntsXbFXqlRJw4YNK3ENlxMYGKgHH3xQd911l60r9jp16ui+++6TdOGyxtq1a+vdd9/ViRMnVLFiRf3www9Fvifncl599VUlJyerTZs2CgkJUWJiombNmqWoqCjbGd/S/v7Gx8dr6NChat++vTZv3qxvvvlGPXv2tHUeULt2bT3zzDN67733lJCQoC5duqhChQqKj4/XTz/9pPvuu08DBw6UdOF3unjxYr399ttq2rSp/P39bc/5io2Nlaenpw4ePKi+ffvaln/jjTdqzpw5klTgLOc///lPPfjgg+rVq5fuu+8+hYeH6/Tp09q8ebOOHz+ub775RpI0cOBALV++XEOHDlWfPn3UpEkTZWRkaM+ePfrhhx+0bNkylzzQdseOHYX+bmvXrm23k34xq9WqUaNGKS0tTaNHj1ZgYGCBTkeuJjIyUq1atdLMmTOvOm5Jty1du3bVv//9b73yyit6/PHHNXXq1Gu6LyguLs52tq5fv36yWCz6+uuvr+kS6/vuu0+fffaZXnzxRW3fvl3VqlWze9xCUeR3lLF+/Xp5e3srOjq6QN35z9O7XLg6fPhwoUG5cePGiomJ0f3336/Y2Fi1b99eNWrUUGpqqn766SetX79eXbp0UePGjYux1sC1IVwBbuTNN99UWFiYFixYoJ9++klVq1bVkCFD7HaOW7VqpW3btmnx4sU6ffq0KlWqpJiYGI0aNeqK16rHxMTo6aef1ty5c/XLL7/IMAwtW7as0HBVtWpVzZ07V//97381a9YsZWVlKTIyUh999JFDH3hZVPkPUx47dqzee+891a1bV2+//bYWLlyovXv3Fmkex48f19///vdCh11LuHLmexUcHKy5c+dq9uzZWrx4sT744APl5OQoNDRUnTt3tvXKJ13o1W3q1KkaM2aMxowZI09PT91444164YUXrvkehsIMHTpUu3fv1uTJk3X+/Hm1bdtW//znP21nSL28vPTRRx/pzTff1KRJk+Tj46OuXbvqr3/96zW933fccYfmzZun2bNnKyUlRdWqVVP37t01fPhwW2gq7e/vhx9+qNGjR+u9996Tp6enHnrooQLftcGDB6tu3br65JNPbM+sq1Gjhtq1a2f3kOQHH3xQO3fu1Pz58/XJJ5/YPmvpwr1ZUVFR2rZtm91OaH6gqlmzZoHLh2+44QZ99dVXGjdunBYsWKCkpCQFBwercePGevLJJ23j+fn5aebMmZo0aZKWLFmihQsXqmLFiqpbt66GDx9u66W0tC1atEiLFi0q0N6nT5/Lhivpwg79uHHj9Oijj+rNN99UQECAevXqVaRl5h+wqVatWpHGv5Zty913363k5GS9++67evrppzVu3LgiLbMwQUFB+uijj/Tuu+/qww8/VEBAgO644w61bdvWFt6Ly8/PT5988on+/e9/a9asWfL19VWvXr3UoUOHy96fV5gWLVpo/fr1atKkSYGOl5o3b67p06erQoUKdr0ZXuzgwYOFdspyzz336Oabb9abb76pn3/+WfPnz9epU6fk4eGhevXq6e9//7v69etXvJUGrpHFdOVd4wBwDXr37q3g4GDbpZNwvrVr1+rhhx/W6NGjC+0iGyjrVq5cqSFDhujrr7+2XXIKAEXFPVcA3F5OTk6Bez7Wrl2rXbt20QMUAIf6/fffdfvttxOsAJQIlwUCcHsnTpzQo48+qjvuuEPVq1fXgQMHNHfuXFWrVu2yD/wFgJLIv48RAEqCcAXA7QUGBqpJkyb64osvdPbsWfn7+6tjx456/vnnFRQU5OryAAAAJHHPFQAAAAA4BPdcAQAAAIADEK4AAAAAwAEIVwAAAADgAHRocQWmacowuCUNAAAAuJ5ZrRZZLJarjke4ugLDMHX27HlXlwEAAADAhYKDK8jD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GMrMzNA9A16+YujJzkzX3i3L1SgqWsE16srTy0dJp44qPfWsake2UotO9191OV9Of1uGYRCuAAAArjNut/e3ZMkS7dmzR08++WSxpvv2228VHR2tuLg4DRo0SLt373ZShSjLrFarrB4el/3nW6GSIpt3UWDVWjqTuF/HDm6T1cNTDWI6qkrNelec1urhQaACAAC4jhX7zFVWVpY+//xzRUVF6cYbb3RoMRkZGXrnnXf07LPPqmLFikWernPnzoqJiVGtWrV09OhRffTRR3rwwQe1cOFChYeHX1NNnp7sLJcPRf8cvX0rqHbkjaodWfLvt6enle8OioHvCnAtys82tzysA+Aa7rIdKHa48vHx0ahRo/Tqq686PFxNnDhRVapUKXY376+++qrt/1u2bKl27dqpe/fumjZtml5//fUS12O1WhQUVKHE08N9XK0TCkcLCqrAA4dRZKX9/QTKm/KyzWVbAJScu2wHSlRBw4YNlZDg2C6pExISNH36dI0fP16pqamSpPT0dNt/z58/rwoVihZ0qlevrhYtWmj79u3XVJNhmEpJSb+mecA9lPYfrHPnzrvFDxxlAztUwLUpL9tctgVAyTl7OxAQ4CcPj6ufGStRBc8++6yee+45tW7dWjfddFNJZlFAfHy8cnJyNHjw4ALDHn74YTVr1kzz5s1zyLKKIzf3yl13o2wo7c/xwvL47qBo2M4A16a8bHPZFgAl5y7bgRKFq1mzZqly5coaOHCgwsLCFBYWJh8fH7txLBaLJk6cWOR5RkVF6dNPP7Vr27lzp95++23961//UtOmTYs8rxMnTmjDhg3q3bt3kacBAAAAgGtRonC1Z88eSRee/ZOXl6fDhw8XGMdisRRrngEBAWrdunWhw5o0aaImTZpIkvr376/ExEQtXbpUkrRo0SKtWLFCHTt2VPXq1XX06FFNnjxZHh4eevTRR4tVAwAAAACUVInC1fLlyx1dR5EZhmH3cNewsDCdPHlSb731llJTU1WpUiW1adNGTz311DX3FAgAAAAAReXWd3+2bt26wPOqZs6cafc6Nja2QBsAAAAAlLZrClfr1q3Tzz//rMTERElSrVq1dMstt6hVq1YOKQ4AAAAAyooShavs7Gw999xz+umnn2SapgICAiRJKSkp+vjjj9W1a1e999578vLycmixQD7DMGQYRe8RJr972+JMUxL58y9ud7pWq1VWq+sffAcAAICSK1G4Gj9+vJYuXaoBAwZowIABqlq1qiTpzJkzmj59uqZNm6bx48frmWeecWStgKQLAebJYY8pKzOzWNNZLBZ9Of1tJ1Vlv5wnnhhQrGl8fH01ftxUAhYAAEAZVqJw9e2336pPnz76+9//btdepUoVvfDCCzpz5oy++eYbwhWcwjAMZWVmqtPdT8tSjDBimoZM03RiZRdYLBZZLMWoyzC04qvRMgyDcAUAAFCGlShcnTp1SjExMZcdHhMTo++++67ERQFFYbFaZbV6FGOK4oxbelz/uDsAAAA4QokOk9eoUUPr1q277PA//vhDNWrUKHFRAAAAAFDWlChc3Xnnnfr+++81YsQIHThwQHl5eTIMQwcOHNA///lPLVmyRH369HF0rQAAAADgtkp0WeDQoUN19OhRzZs3T1988YXtPhHDuHBPS58+fTR06FCHFgoAAAAA7qxE4crDw0PvvPOOHnnkEa1atUoJCQmSpNDQUHXo0EGNGjVyaJEAAAAA4O6KHa4yMjL017/+Vffee68eeOABghQAAAAAqAT3XPn5+Sk+Pl4Wi8UZ9QAAAABAmVSiDi3at2+vX3/91dG1AAAAAECZVaJw9cQTT+jQoUN64YUXtH79ep04cUJJSUkF/gEAAADA9aJEHVrcfvvtkqR9+/Zp0aJFlx1v586dJasKAAAAAMqYEoWrJ598knuuAMDBTqfnysPKthUoqjzDdHUJAGCn2OEqJydHXbt2VeXKlVWjRg1n1AQA16WJm866ugQAAHANih2urFar7r77br344ot6+OGHnVETAFyXHo8L5swVUAx5hslBCQBupdjhysPDQ7Vq1VJ2drYz6gGA61ZVf0/CFVAMXBYIwN2UqLfAhx56SPPmzaNHQAAAAAD4nxJ1aGEYhry9vdW1a1d169ZNoaGh8vX1tRvHYrHokUcecUSNAAAAAOD2ShSu3n33Xdv/f/nll4WOQ7gCAAAAcD0pUbhatmyZo+sAAAAAgDKtROEqNDTU0XUAAABAUl5qtix0bgMUielmHdsUOVxt3bpVtWvXVuXKla867tGjR7Vhwwbdeeed11AayirDMGQYhtPmn5ubK0kyDUPOW0rpMf/3XuWvlzNZrVZZrSXqxwYAUEqSlyW4ugQAJVTkcNW3b1+NHDlSvXr1kiQlJSWpY8eOmjJlilq1amU37qZNm/Tyyy8Trq5DhmHoyScfU1ZWpnMXZLFoxVejnbuM0mSx6IknBjh9MT4+vho/fioBCwDcWOCtoZy5AorINEy3OiBR5HBlmmaB11lZWcrLy3N4USi7DMNQVlamojoOkMXivB140zQk9zoLfG0scur7JV14z3aunC7DMAhXAODGPCp5E66AIiqzlwUCxWGxWGWxejhv/nLevMut8nANJQAAgBvj8DUAAAAAOADhCgAAAAAcoFiXBSYkJGj79u2SpNTUVEnS4cOHFRAQYDdefHy8g8oDAAAAgLKhWOFq9OjRGj3avoe2f/3rXwXGM01TFgs3YgIAAAC4fhQ5XL399tvOrAMAAAAAyrQih6s+ffo4sw4AAAAAKNPo0AIAAAAAHIBwBQAAAAAO4Lbh6vz58+rQoYMiIyO1bdu2K45rmqYmT56sW265RTExMerbt682b95cOoUCAAAAgNw4XE2YMEF5eXlFGnfKlCkaM2aMHnnkEU2aNEnVqlXTgAEDdPToUSdXCQAAAAAXuGW42r9/v2bPnq3hw4dfddysrCxNmjRJAwYM0COPPKK2bdvq/fffV+XKlTVt2rRSqBYAAAAA3DRcvfnmm7r//vtVr169q467ceNGpaWlqXv37rY2b29vde3aVatWrXJmmQAAAABgU6Su2P/4448SzfzGG28s9jRLlizRnj17NHbsWG3fvv2q4x84cECSVL9+fbv2Bg0aaMaMGcrMzJSvr2+x6wAAAACA4ihSuOrXr58sFkuRZ2qapiwWi3bu3FmsYjIyMvTOO+/o2WefVcWKFYs0TUpKiry9veXj42PXHhAQINM0lZycfE3hytPTLU/uuTHeL3fn6Wnle+12+DyAa1F+tmvlYR0A13CX7UCRwtWnn37q7DokSRMnTlSVKlV09913l8ryrsZqtSgoqIKryyhTcnNzXV0CriIoqII8PYv8/HCUAn43wLUpL9s1tgVAybnLdqBIFbRq1crZdSghIUHTp0/X+PHjlZqaKklKT0+3/ff8+fOqUKFg0AkICFB2draysrLszl6lpKTIYrEoMDCwxDUZhqmUlPQST3894g+D+zt37rxbbHzw//jdANemvGzX2BYAJefs7UBAgJ88PK5+ZsxttkTx8fHKycnR4MGDCwx7+OGH1axZM82bN6/AsPx7rQ4ePKhGjRrZ2g8cOKBatWpd8/1WubnGNU1/veH9cn8XPiM+J3fC7wa4NuVlu8a2ACg5d9kOlDhcZWVl6YcfftCOHTuUmpoqw7BfGYvForfeeqvI84uKiipw+eHOnTv19ttv61//+peaNm1a6HTNmzdXxYoV9f3339vCVU5Ojn788Ud16NChmGsFAAAAACVTonCVkJCghx9+WAkJCQoICFBqaqoCAwOVmpqqvLw8BQUFyd/fv1jzDAgIUOvWrQsd1qRJEzVp0kSS1L9/fyUmJmrp0qWSJB8fHw0ZMkRjx45VcHCwIiIiNGfOHCUlJWngwIElWT0AAAAAKLYShauRI0cqLS1N8+bNU1hYmG666SZ98MEHatGihT799FN99tlnTnuAr2EYysvLs2sbNGiQTNPU9OnTdfbsWUVFRWnatGkKDw93Sg2OZhhGgTN/ZVX+9eKmabjDmVlcxDQvfCDl6Zp+q9Uqq9X1PQMBAABIJQxXv//+ux544AHFxMQoKSnJ1u7t7a3HHntM+/fv11tvvaXJkydfU3GtW7fW7t277dpmzpxZYDyLxaIhQ4ZoyJAh17Q8VzAMQ08++ZiysjJdXYoDWbRz5XRXF4FCWfTEEwNcXYTD+Pj4avz4qQQsAADgFkoUrjIzMxUaGipJqlixoiwWi62HP0mKi4vTu+++65gKyznDMJSVlamKkfdIlvKxg5h/hgTuyVJOvmcyDaXt/lKGYRCuAACAWyhRuKpZs6ZOnDhxYQaengoJCdHmzZv1l7/8RZK0b9++Ag/1xVVYrOVmp7e8rAfcm+nqAgAAAC5RonDVpk0bLVu2TMOGDZMk9enTR5MnT1ZKSooMw9A333yj3r17O7RQAAAAAHBnJQpXgwcP1rZt25SdnS1vb28NHTpUJ0+e1A8//CCr1aqePXvqpZdecnStAAAAAOC2ShSuatWqpVq1atle+/j46D//+Y/+85//OKwwAAAAAChLSnRzzMsvv6wtW7ZcdvjWrVv18ssvl7goAAAAAChrShSuFixYoCNHjlx2eHx8vBYuXFjSmgAAAACgzHFKt24nT56Ur6+vM2YNAAAAAG6pyPdc/fTTT1q2bJnt9bx58/Tbb78VGC81NVW//faboqOjHVMhAAAAAJQBRQ5X+/fv15IlSyRJFotFW7Zs0Z9//mk3jsVikb+/v2688UZ6CwQAAABwXSlyuBoyZIiGDBkiSWrUqJH+85//qFevXk4rDAAAAADKkhJ1xb5r1y5H1wEAAAAAZVqJwlW+o0ePatWqVUpMTJR04flXHTp0UHh4uEOKAwAAAICyosTh6p133tGnn34qwzDs2q1Wq/r3768XX3zxmosDAAAAgLKiROFq+vTp+uSTT9StWzcNGDBADRo0kHSh04tPPvlEn3zyiUJCQvTII484slYAAAAAcFslClfz5s1T586dNXr0aLv2Zs2a6YMPPlBWVpbmzp1LuAIAAABw3SjRQ4QTEhJ08803X3b4zTffrISEhBIXBQAAAABlTYnCVZUqVa7YY+CuXbsUHBxc4qIAAAAAoKwpcrj6448/dPbsWUnSbbfdpi+//FKTJ09Wenq6bZz09HRNnjxZX375pXr06OH4agEAAADATRX5nquHH35YI0eOVK9evfT0009r586dev/99zVmzBhVr15dknTy5Enl5uaqdevWeuqpp5xWNAAAAAC4myKHK9M0bf/v5+enGTNm6KeffrJ7ztXNN9+sjh07qnPnzrJYLI6vFgAAAADc1DU9RLhLly7q0qWLo2oBAAAAgDKrWB1acDYKAAAAAApXrDNXL7zwgl544YUijWuxWLRjx44SFQUAAAAAZU2xwtVNN92kunXrOqkUAAAAACi7ihWu7rzzTvXq1ctZtQAAAABAmVWihwgDAAAAAOwRrgAAAADAAa6pK3Y4jpGVIouFrAsUlWkari4BAADATpHD1a5du5xZx3Uv/eASV5cAAAAA4Bpw5spN+Ne7jTNXQDGYpsFBCQAA4FYIV27C6hNAuAKKgcsCAQCAu2FvHgAAAAAcgHAFAAAAAA5AuAIAAAAAB3Cre65WrlypKVOmaN++fUpLS1NISIi6dOmiYcOGqVKlSpedrl+/flq3bl2B9sWLF6tBgwbOLBkAAAAAJLlZuEpKSlJMTIz69eunypUra+/evRo7dqz27t2r6dOnX3Ha5s2b68UXX7RrCwsLc2a5AAAAAGDjVuGqd+/edq9bt24tb29vvfbaazpx4oRCQkIuO21AQIBiY2OdXCEAAAAAFM7t77mqXLmyJCknJ8e1hQAAAADAFbjVmat8eXl5ys3N1b59+zR+/Hh17tz5qpf4rVu3TrGxscrLy1OzZs309NNP68YbbyyligHg2uWZkgzT1WUAZUYePxcAbsYtw1WnTp104sQJSVL79u313nvvXXH8G2+8Ub1791bdunV18uRJTZs2TY8++qhmzpypuLi4a6rF09PZJ/fc/uQh4NY8Pa2l8Dt1LqvVU74+Pnrrt5OuLgUoc3x9fOTt7SmrtWxvBy743zoYpsiNQBH976Cku+wPWEzTdLvf765du5SRkaF9+/Zp4sSJCgsL08cffywPD48iTZ+enq6ePXuqQYMGmjJlSonrME1TFoulxNMXRW5urvr06aOKje6TxeL6LwRQVpimobRd87RgwQJ5errlcaJiycvLkxtujkskNzdX9957r0b0jJWH1bnbUBRPnmHqjUWb9cUXX5SL340kWSyWIu8fuLu8vDzdf//9yszMdHUpQJni6+uruXPnusW2wC23rI0aNZIkxcXFqWnTpurdu7eWLl2q2267rUjT+/v7q2PHjvrhhx+uqQ7DMJWSkn5N87ia3Nxcp84fKO/OnTtfbnYSy4v87Zq3p1Ue5eJsQvmRZxiSpNTULHl65rm4GhTmo4+my/jf51SW5ebmavDgR9S0X2tZOMjidkzD1LaZazV58ifl4m+o1WpVSopzD0oEBPjJw+Pqf9Pc/t2MjIyUl5eXjhw54pLl5+Y6dwPn7PkD5d2F3xC/I3fCds398btxd+XhoMSFdbB6esjCQRa3Y9oCvFXl4ftmGHKbgxJu/25u2bJFOTk5xXpmVXp6un7++Wc1bdrUiZUBAAAAwP9zqzNXw4YNU3R0tCIjI+Xr66tdu3Zp2rRpioyMVJcuXSRJr7zyihYuXKgdO3ZIktavX6+pU6eqa9euCg0N1cmTJ/Xxxx/r1KlTGj16tCtXBwAAAMB1xK3CVUxMjBYvXqzJkyfLNE2Fhobq3nvv1cCBA+Xt7S3pwim/vLz/v068WrVqysnJ0QcffKCkpCT5+fkpLi5O//rXvxQTE+OqVQEAAABwnXGrcDV48GANHjz4iuO88847euedd2yv69Spo2nTpjm7NAAAAAC4Ire/5woAAAAAygLCFQAAAAA4AOEKAAAAAByAcAUAAAAADkC4AgAAAAAHIFwBAAAAgAMQrgAAAADAAQhXAAAAAOAAhCsAAAAAcADCFQAAAAA4gKerC8D/mIZMV9cAlCWm4eoKAAAA7BCuXMxqtcrHx1dpu790dSlAmePj4yurlRPwAADAPRCuXMxqtWr8+KkyjPJxFD43N1dPPDFAjdo/IouFnV53YpqGdv3yiSZMmC5Pz/Lx07darYQrAADgNsrHHlYZVx53EK0enrJYPVxdBi5iGnmSJE9Pz3ITrgAAANxJ+dqjBwAAAAAXIVwBAAAAgAMQrgAAAADAAQhXAAAAAOAAhCsAAAAAcADCFQAAAAA4AOEKAAAAAByAcAUAAAAADkC4AgAAAAAHIFwBAAAAgAMQrgAAAADAAQhXAAAAAOAAhCsAAAAAcADCFQAAAAA4AOEKAAAAAByAcAUAAAAADuDp6gIAAOVTnmFKMlxdBi5y4TMBADgL4QoA4FBWq1W+vj765zebXF0KCuHr6yOrlQtXAMAZCFdwCtM0OGDtZkyTDwSlw2q1aty4aTIM537ncnNz9cQTA/Sffn+Rh9Xi1GU5W55h6h8zf9SECdPl6encP81Wq5VwBQBOQriCQ1mtVvn4+GrnyumuLgWF8PHxZacKpaI0d+C9PT3kUca/13n/C6Kenp5OD1cAAOdhCw6HslqtGj9+qlOPWOcfre7YZ5gsZXyHSpJMw9DKBeM4Yg0AAFDGuVW4WrlypaZMmaJ9+/YpLS1NISEh6tKli4YNG6ZKlSpdcdovvvhCU6dOVWJiourVq6dnn31WnTp1KqXKcbHS2oH38PSS1erh9OU4m2HkSeKINQCg/DHp2MYtmXRu4zRutSeXlJSkmJgY9evXT5UrV9bevXs1duxY7d27V9OnX/4ys++++06vvfaahg4dqjZt2mjx4sUaNmyYPvvsM8XGxpbeCgAAAODCbQK+vto6Y42rS8Fl+Phyq4AzuFW46t27t93r1q1by9vbW6+99ppOnDihkJCQQqcbM2aMbr/9dj3zzDOSpDZt2mjPnj0aP368pkyZ4uyyAQAAcBGr1arx45x7m4D0/7cK3Pr47eXmVoFlE7/jVoEyzK3CVWEqV64sScrJySl0+NGjR3Xo0CG98MILdu09evTQyJEjlZ2dLW9vb2eXCQAAgIuU5s67h5enrB5lPygYeXRuU9a55bcwLy9PWVlZ2r59u8aPH6/OnTsrLCys0HEPHDggSapXr55de4MGDZSTk6OjR486vV4AAAAAcMtI3KlTJ504cUKS1L59e7333nuXHTc5OVmSFBAQYNee/zp/eEl5erpl/rzOlc/PxNPTyvcNKJby93thOwAUV/n8vbAtKLvcMlxNnjxZGRkZ2rdvnyZOnKihQ4fq448/lodH6fYMZ7VaFBRUoVSXiavLzc11dQlOERRUgUsAgGIoj9sCtgNA8ZTH7YDEtqAsc8tPrVGjRpKkuLg4NW3aVL1799bSpUt12223FRg3MDBQkpSamqpq1arZ2lNSUuyGl4RhmEpJSS/x9HCO8rohPXfuPBtSoBjK47aA7QBQPOVxOyCxLXBHAQF+8ijCfX1u/6lFRkbKy8tLR44cKXR4/fr1JV249yr///Nfe3l5KTw8/JqWn5vLsxncTXn9TC6sV/lcN8AZyuO2gO0AUDzlcTsgsS0oy9z+Ys4tW7YoJyfnsh1ahIeHq27dulqyZIld++LFi9W2bVt6CgQAAABQKtzqzNWwYcMUHR2tyMhI+fr6ateuXZo2bZoiIyPVpUsXSdIrr7yihQsXaseOHbbphg8frueff161a9dW69attXjxYm3dulWzZs1y1aoAAAAAuM64VbiKiYnR4sWLNXnyZJmmqdDQUN17770aOHCg7QyUYRjKy8uzm65nz57KyMjQlClTNHnyZNWrV0/jxo1TXFycK1YDAAAAwHXIrcLV4MGDNXjw4CuO88477+idd94p0H7vvffq3nvvdVZpcEOmYZSLq5FNJz+9HgAAAKXDrcIVUBRWq1U+vr5a8dVoV5fiMD6+vqX2FHsAAAA4B+EKZY7VatX4cVNlFOOMT25urp54YoDueuTvTg0xhmFo/icjNWHC9GJ1oWq1WglXAAAAZRzhCmVSScOIp6eXrE58GLXxv/sBPT09eT4FAADAdYZD5QAAAADgAIQrAAAAAHAAwhUAAAAAOADhCgAAAAAcgHAFAAAAAA5AuAIAAAAAByBcAZdhmoYMI8/VZQAAAKCM4EE8wCWy0lOVeOhPJZ+Kl2ka8q8UrJDaUapcLczVpQEAAMCNEa5wXTEM44rDszLStHfzclk9PFWjTmN5ePko6dRRHdy+WmENW6hKjXrXNH8AAOB4pmGoPPwFNtmPKPMIV7guWK1W+fr66cvpb19xvBo1asjf31+HDh2SsXWTXXvernVa/t0cmaZ5xXn4+vrJauWKWwAAnM1qtcrH11dLx33r6lIcxsfXl/2IMoxwheuC1WrVuHFTrnpmacyY/6ply9Z66aUOdu2nT5/SjBmT9fLLI1S3boOrLouNIgAAzme1WjV+3NRiXTmSm5urJ54YoHuef8ipf68Nw9CXo2ZpwoTp8vQs+i43+xFlG+EK142ibKzy8nLl5+dXYCPo719BkmSaZrE2kACcL88wpTJ+QdCFdQBQEiUNI55enrJ6ODFc5V3YLnl6erLvcB3hkwYuUrt2Xe3Y8adatGhtt6Hevn2LPDw8VKtWuAurA3CxC5f7+uqlGUtcXYpD+HIpEACUeYQr4CJt27bX3Lmfav78uWrYsJE8PT11+vQprVv3m+LiWqpChQquLhHA/1y43LdklwONHNpXHk4KMnmGob9/9DmXAgHAdYhwBVykdu26at26ndauXa39+/fa2mvUqKVbbunqwsoAFKakgcTby1MeTrocKI9LgQDgusVWH7jI0aOHtXbtatWt20ANGjSUp6enzpw5rfXrf9eqVcvUuXM3V5cIAAAAN8X1B8BF1qz5RVWrVlP16iHasGGtfv31Z6WmpqhZs+bauPEPpaefd3WJAAAAcFOcuQIucvjwQfn4+GjTpj/UuHFT+fn5a/fuHTp37qxM01RCQrwaNox0dZkAAABwQ4Qr4BI5OTkaOPAJVa4cJElq166j5s6dqfj4w7JaLS6uDgAAAO6KywIBO5b/de/sZ2vJ7+45fzgAAABQGM5cARcxjDwZhlUzZkxW8+Y3ys/PXzt3/qkDB/ZJuvCQYQAAAKAwhCvgIrVqhckw8pSdna3ly3+UJPn4+Kphw0jt3btbISE1XVwhgNISfyZF24+eVEp6lgL8fdQkvLrCqgS4uiwAgBvjskDgIs2aNdfx48eUlHROjRpFq3nzVvLw8NDevbsVHl5HgYGVXV0igFKwbm+CFq7bpTOpGQqu6KczqRlauG6X1u1NcHVpAAA3xpkr4CInTx6Xp6enTNPUrl1/2tr9/Svo3LmzMgyjRA8sBVB2nEo5r3X7EtTqhlDdeEMtWSwWmaapP/Ylat2+BNULqaxqARVcXSYAwA0RroCL7NixTc2bt1Lbtjdr//69ysnJUVhYbeXkZOvTT6fq6NHDqlOnnqvLBHCN8gzjssN2HD2lCj5eiqtbQ4ZhSjIlSXF1a+jPoye18+gpBTfyu+z0V5o3AKB8I1wBF8nMzFRAQKB8ff3UpEmMrf38+TRJUlZWpqtKA+AAVqtVfr6+em78nMuOU7NmTXl6eupv42cXGBYeHq7jp87oi6W/XHE5fr6+nOUGgOsQ4Qq4SI0atbR3727FxrbQ8ePHlJubo5CQmtq7d7ck0aEFUMZZrVaNHTdVxhXOLq1Z84v++GONnn767zp4cL9SUpIVEBCounUbaMaMSWrV6ia1aXPzVZdDuAKA6w/hCrhIq1Y36euvv9CYMSOVnZ0tSf/bQbIoMrIxHVoA5cDVgk9sbEutXbtaU6dOkGQqICBQKSnJuvAcPIuaNWshT0/+fAIACuKvA3ARf39/SVJOTo4kyWKx2I5w+/n5u6wuAK5hmqYMw5BpmrJYeIg4cL3JzsjSid0JSjmRJKunh6rWC1GVOtVl9eDMNApHuAIusmbNr6pRo6buuedBHTy4Xzk52QoLq619+/Zo9eqVat/+Fvn700sYUJ5t3bpRVqtVkZFR2r17u1JTU+Th4aHIyMbas2eXtm3bpJtu6uDqMgFcoytdHixJ58+kau8v22Uapq3tyNk0ndidoMjOMfLw9Lim+aN8IlwBFzly5KA6duyiChUqKjq6ma3dx8dXq1YtV0LCUTVs2MiFFQJwttOnT8pisWrfvt1q27a9atYM1bFjCVq3bo2sVqtOnTrh6hIBXAOr1SpfX1/Ne/fTK453ww03yGq16syZM0pJSZHValX16tVlmqZ+mblUx48fv+qyfOnc5rpDuAIu4unpqezsrALt+fdfeXjwkwHKu+zsHGVnZ+mBB/qrdu26kqT69W9QeHgdzZkzw3bZMICyyWq1atxVOrbZv3+vFi6cp5iYOHXt2sPWbpqmJk78UJ6ennrjjZFFWhbh6vriVnuK33//vb755htt375dKSkpqlOnjvr166e77777ite6d+7cWQkJCQXat27dKh8fH2eWjHImIiJKW7duUosWreXnd+E5NqZpat263+Tr66fw8DourhCAs+X/vTly5JDCw+vYHiJ85Mih/DFcVhsAx7ha6Dl27MJ+ZYsWrQt0YBMeXkd79uykYxsUyq2+FZ988olCQ0P10ksvKSgoSL/99ptee+01HT9+XMOGDbvitN26ddOAAQPs2ry9vZ1ZLsqhm27qoP3792jGjMmKi2spPz9/7dz5pw4dOqBu3XrKy8vL1SUCcDJfX19VrFhJq1ev1O7dO2yXBZ4+fUoVK1aSr6+vq0sE4GSVKwdJkg4d2q/q1UPshp05c4oObnBZbhWuJk6cqODgYNvrtm3bKikpSR9//LGeeOKJKx5hqFq1qmJjY0uhSpRnQUHBeuihgfrllxVatWq5DMNQjRo1deed9ykyMsrV5QEoBfXqNdD27VvVrVtPHTlySKdPn1K1aiFq0aK1fvhhkerVa+DqEgE4WXR0My1duli//LJCoaHhCg0NV15entat+01nzpxWrVphri4RbsqtwtXFwSpfVFSU5s2bp/T0dFWsWNEFVeF6ExxcRb173yPDMJSXl8fZKuA6ExnZWGvX/qZVq5YrNDRMlSpVUk5OtlatWq5q1UIUGdnY1SUCcDJPT0/dcksXLV/+o2bNmi5fXz/l5uYoNzdXnp6e6tmzj6tLhJty+zvsNmzYoJCQkKsGq2+//VbR0dGKi4vToEGDtHv37lKqEOWV1WolWAHXIU9PT7Vs2VqZmRnat2+P9uzZpX379igzM0MtWxa8/wJA+XTjjW11xx13q0KFisrMzFBubq5q1QrTgAGPKyio4AkBQHKzM1eXWr9+vRYvXqwXX3zxiuN17txZMTExqlWrlo4ePaqPPvpIDz74oBYuXKjw8PBrqsHT0+3zJwDAgZKTk/Tjj98pKqqJOnbsrOzsbHl7e2vlyuX68cfv1KBBAwUGVnZ1mQCc7Ny5s1q5cpnOnz+vGjVqKiMjQ4mJ8fr11xXq3fsuWa1Xfs4Vrk8W0zTNq49W+o4fP657771XDRo00PTp04vVjeXJkyfVvXt39erVS6+//nqJazBNkxsWAeA6s2TJEv3666967bXX7HqczcrK0r///W/dfPPNuu2221xYIYDSMHbsWJ0/f14DBgxQxYoVZbVatXPnTs2ZM0e33367Onbs6OoS4Ybc8sxVSkqKBg0apMqVK2vs2LHFfj5A9erV1aJFC23fvv2a6jAMUykp6dc0DwBA2ZKYeFwhITV19myq/vzzNyUnJykwsLKio5sqJKSGEhOP69y5864uE4ATHT9+TIcPH1arVm01ffrHOn36lCSLbrihoerXv0GrV/+mmJiWri4TpSggwE8eHlfPJG4XrjIzMzVkyBClpqbq888/V6VKlVxaT27u5R8wBwAofypUqKT9+/dqzJj3lZeXq4CAQKWkJGv58qWyWi1q1qw5fxuAcu7MmbOSpHXr1qh27XqKiQmXYeQpIeGoUlNTlJeXx3YAhXKrcJWbm6tnnnlGBw4c0GeffaaQkJCrT1SIEydOaMOGDerdu7eDKwQAlHf169+gP/5Yo8qVg/TAA48oICBAKSkpmjPnEyUlnVP9+g1dXSIAJ/Pz85ck+ftX0JEjB3XkyEFJkofHhfus6NgGl+NW34x//etfWrFihV566SWlpaVp8+bNtmGNGzeWt7e3+vfvr8TERC1dulSStGjRIq1YsUIdO3ZU9erVdfToUU2ePFkeHh569NFHXbQmAICyKiHhqDw8PJSUdE6zZk1TzZq1dOxYolJTU+Th4aH4+COqU6eeq8sE4ETZ2VmSpPT08+rc+S9q3ryVMjIytGTJN9q/f68Mwy27LIAbcKtwtXr1aknSO++8U2DYsmXLFBYWZnv2UL6wsDCdPHlSb731llJTU1WpUiW1adNGTz311DX3FAgAuP6cOXNaoaHh6tTpL9qyZYOSk5PUoEFDNWvWQitW/KgzZ067ukQATnb+fJokydvbWz///JP27dujjIx0nTp1Up6eXsrNzXFxhXBXbhWuli9fftVxZs6cafc6Nja2QBsAACVVoUIFHT16SNWqVVe3bj1t7Xl5eTp79rSqVy/ZJesAyo78ztSio5spKChYR48eUUBAoG6+uZN+/PE7whUui4c4AQBwkaZNY5WWlqbfflul/KeVmKap335bpbS0NDVtGuvaAgE4XUBAoCRp06b1Sk1NVdu27dW4cVNt3LhO6enn5e3t7eIK4a7c6swVAACuVr16DbVv30m//LJCu3ZtV61aYUpMjNfZs2fUvn0nVa9ew9UlAnCy8PA6qlChory9vbV58watW/ebJKly5SB5enpxkAWX5bYPEXYHeXmGzp7lWSYAcD06evSwNm/eYHvOVWxsC4WH13F1WQBKyb59e7RgwecKDKys0NAw5eTk6MCBfapYsZL++tcBqlChgqtLRCkKDq5QpOdcEa6ugHAFAABw/Tp2LEHr1q1RfPwReXl5qVGjxmrZsq38/f1dXRpKGeHKAQhXAAAAAIoarujQAgAAAAAcgHAFAAAAAA5AuAIAAAAAByBcAQAAAIADEK4AAAAAwAEIVwAAAADgAIQrAAAAAHAAwhUAAAAAOADhCgAAAAAcgHAFAAAAAA5AuAIAAAAAB7CYpmm6ugh3ZZqmDIO3BwAAALieWa0WWSyWq45HuAIAAAAAB+CyQAAAAABwAMIVAAAAADgA4QoAAAAAHIBwBQAAAAAOQLgCAAAAAAcgXAEAAACAAxCuAAAAAMABCFcAAAAA4ACEKwAAAABwAMIVAAAAADgA4QoAAAAAHIBwBQAAAAAOQLgCAAAAAAcgXKHcGjt2rCIjI23/2rRpo4cffljr16+XJK1du9Zu+MX/Bg4caJvPSy+9pJ49e9rNOy8vT88884yaNm2qlStX2sYrbF5DhgwpvZUGcFWXbhsu/jd58mRJUufOnfXGG2/YTXfmzBn16NFDnTp1Unx8vG28wuYzbdq0Ul8vAFf25ZdfKjIyUocOHbJrnzlzpiIjIzVmzBi79qSkJDVq1EhTpkzR/PnzFRkZqbNnz152/ufOndNbb72lv/zlL2ratKnatm2rBx54QJ988okT1gbuytPVBQDO5OvrqxkzZkiSjh8/rgkTJuiRRx7R/PnzbeO8/fbbql+/vt10lSpVuuw8DcPQ3//+d/30008aN26cOnbsaBsWHh6uUaNG2Y0fEBDgiFUB4EAXbxsuVrNmzULHP3v2rPr376/z589r1qxZCgsLsw3r1q2bBgwYYDd+rVq1HFswgGvWvHlzSdKmTZtUt25dW/vGjRvl5+enTZs22Y2/adMmmaapFi1aFAhkl8rNzVX//v2VmpqqwYMHq379+jp9+rQ2btyoFStW6JFHHnHw2sBdEa5QrlmtVsXGxtpex8TEqHPnzpo7d666desmSWrYsKGaNm1apPkZhqGXX35ZP/zwg0aPHq1bbrnFbrivr6/d8gC4p0u3DVeSlJSkRx55RCkpKZo5c6bCw8PthletWpXfPVAG1K9fX8HBwdq4caP69Olja89/vXDhQuXl5cnDw8PW7uPjo+jo6KuGq3Xr1mn37t2aNWuWbrzxRlv77bffLsMwnLI+cE9cFojrSq1atRQcHGy7pKc4TNPUP/7xDy1atEgffPCBbr31VidUCMCdJCcn69FHH9XZs2c1Y8YM1alTx9UlAbgGzZs318aNG22vExMTdfz4cT388MPKzs7W7t27bcM2btyo6OhoeXt7X3W+ycnJkqRq1aoVGGa1srt9PeHTxnUlLS1NSUlJql69uq3NMAzl5uba/TNN02460zQ1YsQIffPNN3rvvffUtWvXyy7j0nkBcE+X/lYv/b2mpqZqwIABOnXqlD799FPVq1ev0PmYpmk3j7y8vNIoH0AJNG/eXPv377eFoY0bN6pmzZqqV6+eIiMjbcErJydH27ZtU4sWLYo036ioKFmtVr366qtas2aNsrOznbYOcG9cFohyL3+H6fjx43r33XeVl5dnuyRQku67774C0zz99NN64oknbK/37dunffv26ZlnntFtt9122WXt3btXTZo0sWv77LPP1LJly2tdDQAOlJ6eXuC3Ktn/Xr/55htJ0uzZswvcl3mx2bNna/bs2bbXHh4e2rFjh4MrBuAILVq0kGma2rx5szp27KhNmzYpLi5O0oXgtWnTJj300EPasWOHsrKyihyu6tatq5deekn//e9/9cgjj8jLy0sxMTHq3r27HnjgAXl6sst9veCTRrl26Q5UYGCgRowYofbt22vt2rWSpHfffVcNGjSwmy4kJMTuda1ateTn56dPP/1Ut91222WPYNeuXVvvv/++XduVdsoAuIavr69mzZpVoP3i32vz5s21a9cu/fe//9XHH38sPz+/QufVvXt3ux5GLRaL4wsG4BBNmjSRr6+vNm7cqI4dO9rdfxUbG6v33ntP0oUzWhaLxRa8iqJ///7q0aOHli9frnXr1mnNmjV688039eOPP2rGjBlcHnidIFyhXMvfgbJYLAoKClLNmjULbNwaNGhw1Q4tKlSooKlTp+qBBx7QwIEDNWfOnAIBTJJ8fHyK3DkGANexWq1X/a1GRUVp+PDhGjx4sIYPH66JEyfKy8urwHjBwcH87oEywsvLS02bNtXGjRt1/vx57d692xag4uLibPdgbdy4UTfccIMCAwOLNf9q1aqpb9++6tu3r3JycjRixAjNnz9fK1as4F7t6wQRGuVa/g5UdHS0QkNDr+moUY0aNTRt2jRlZGRowIABOnfunAMrBeCObrrpJo0aNUqrV6/WSy+9VOB+TABlT4sWLbRt2zZt2LBB3t7eioqKkiSFhoaqWrVq2rhxozZt2mTrur2kvLy8bF2w79+//1rLRhlBuAKKoX79+poyZYqOHTumIUOGKD093dUlAXCy2267Ta+//roWLVqkf//7364uB8A1at68uTIyMvTZZ5+padOmdvdDNW/eXF9//bVOnTpVrHCVlJRUaCdW+V24F9aLIMonLgvEdW/v3r0Fevfy8fGxHcm6VHR0tCZMmKBBgwZp2LBh+uijj4rUTSsA92EYhjZv3lygvUqVKgWeYyVJffv21blz5/TBBx+ocuXKeuqpp0qhSgDOEBcXJ6vVqpUrV2rw4MF2w2JjYzVy5EhJKrQzixUrVqhChQp2bQ0bNtTevXs1atQo9enTRzExMfL09NTOnTs1adIk1apV64q9DKN8IVzhuvfyyy8XaKtdu7aWLl162WnatGmj999/X08//bReeOEFffDBB84sEYCDZWZmqm/fvgXa77nnHv3nP/8pdJqhQ4fq3LlzGj9+vIKCgtSvXz9nlwnACQICAnTDDTdoz549BTqsiIuLk2maql69eqEHWl555ZUCbU8//bT69Omjbt26admyZZoxY4aysrJUo0YN9erVS4MHD1bFihWdtj5wLxaTC8gBAAAA4JpxzxUAAAAAOADhCgAAAAAcgHAFAAAAAA5AuAIAAAAAByBcAQAAAIADEK4AAAAAwAEIVwAAAADgAIQrAACuYv78+YqMjNS2bducvqx+/frxgGIAKKMIVwCAMiM/5ERGRmr9+vUFhpumqY4dOyoyMlJDhgwp9vw/++wzzZ8/3xGlAgCuQ4QrAECZ4+Pjo0WLFhVoX7dunY4fPy5vb+8SzXfOnDlasGDBtZYHALhOEa4AAGVOx44dtWTJEuXm5tq1L1q0SE2aNFG1atVcVBkA4HpGuAIAlDm33367kpKStHr1altbdna2fvjhB/Xq1avA+IZh6JNPPtHtt9+upk2b6qabbtKIESOUnJxsG6dz587au3ev1q1bZ7v08NJ7n7Kzs/X222+rTZs2io2N1ZNPPqmzZ88WWN5nn32m22+/XdHR0br55pv1r3/9SykpKQXG+/zzz9WlSxfFxMTonnvuKfRSRwBA2UG4AgCUOaGhoYqNjdV3331na1u1apVSU1PVo0ePAuOPGDFC//3vf9W8eXP94x//0F133aVvv/1WAwcOVE5OjiTplVdeUY0aNVS/fn2NHDlSI0eO1NChQ+3m8+abb2rXrl0aNmyYHnjgAa1YsUJvvPGG3Thjx47VG2+8oerVq+ull15St27d9Pnnn2vAgAG2ZUnSF198oREjRqhq1ap64YUX1Lx5cz3++OM6duyYI98qAEAp8nR1AQAAlESvXr303nvvKTMzU76+vvr222914403KiQkxG689evX64svvtCoUaPszmq1bt1ajz32mJYsWaJevXqpS5cu+vDDDxUUFKTevXsXuszKlStr+vTpslgski6cEZs5c6ZSU1NVqVIlnT17VpMmTdLNN9+sKVOmyGq9cAyzfv36euONN/TNN9/o7rvvVk5Ojj744ANFRUXp008/td0jdsMNN+i1115TzZo1nfGWAQCcjDNXAIAyqXv37srKytKKFSuUlpamn3/+udBLApcsWaJKlSqpXbt2Onv2rO1fkyZN5O/vr7Vr1xZ5mffdd58tWElSy5YtlZeXp4SEBEnSb7/9ppycHD388MO2YCVJ9957rypWrKiVK1dKkv7880+dOXNG999/v13nG3369FGlSpWK/V4AANwDZ64AAGVScHCw2rZtq0WLFikzM1N5eXnq1q1bgfEOHz6s1NRUtW3bttD5nDlzpsjLrFWrlt3rgIAASbLdT5WYmCjpwpmqi3l7eys8PNwWwvLHq1Onjt14Xl5eCg8PL3I9AAD3QrgCAJRZPXv21GuvvabTp0+rQ4cOtrBzMcMwVKVKFY0aNarQeQQHBxd5eRefjbqYaZpFngcAoPziskAAQJnVtWtXWa1Wbd68WT179ix0nNq1ayspKUnNmzfXTTfdVOBfo0aNbONefMlfSeSf2Tpw4IBde3Z2tuLj4xUaGmo33uHDh+3Gy8nJUXx8/DXVAABwHcIVAKDMqlChgl5//XUNHz5cnTt3LnSc7t27Ky8vTxMmTCgwLDc3166LdD8/v0K7TC+qm266SV5eXpo5c6bd2awvv/xSqamp6tixoyQpOjpawcHBmjt3rrKzs23jLViw4JqWDwBwLS4LBACUaX369Lni8FatWqlv376aNGmSdu7cqXbt2snLy0uHDh3SkiVL9I9//EO33XabJKlJkyaaM2eOJkyYoDp16tju6yqq4OBgDRkyROPGjdNjjz2mzp076+DBg5o9e7aaNm2qO+64Q9KFe6ueeeYZjRgxQv3791ePHj0UHx+v+fPnc88VAJRhhCsAQLn3xhtvKDo6WnPnztUHH3wgDw8PhYaG6o477lDz5s1t4z355JNKTEzU1KlTdf78ebVq1apY4UqShg8fruDgYM2aNUtvv/22AgMDdd999+lvf/ubvLy8bOP17dtXeXl5mjZtmkaOHKmIiAhNnDhRo0ePdth6AwBKl8XkLlwAAAAAuGbccwUAAAAADkC4AgAAAAAHIFwBAAAAgAMQrgAAAADAAQhXAAAAAOAAhCsAAAAAcADCFQAAAAA4AOEKAAAAAByAcAUAAAAADkC4AgAAAAAHIFwBAAAAgAMQrgAAAADAAQhXAAAAAOAA/weoMF4ZWnxrqwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the total error\n",
"fig, ax = plt.subplots(1, 1, figsize=(10, 5))\n",
"sns.set_style(\"darkgrid\")\n",
"sns.boxenplot(data=totalError[30:], ax=ax)\n",
"\n",
"# Set the labels\n",
"ax.set_xlabel(\"Method\")\n",
"ax.set_ylabel(\"Total Error (m)\")\n",
"\n",
"# Set the title\n",
"ax.set_title(\"Positioning Error Comparison between PEKF, EKF and WLS\")\n",
"\n",
"# Save the figure\n",
"# fig.savefig(\"total_error_comparison.png\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "navigator-96XIUzCO-py3.11",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}