From ffe030b2ce724e7a5d0d6d175cc88d83e0e95b5d Mon Sep 17 00:00:00 2001 From: Iskken Date: Sun, 12 Jul 2026 23:41:06 +0200 Subject: [PATCH 1/7] Provide minimal knn algorithm version --- experiments/knn/Test_utils.ipynb | 1114 ++++++++++++++++++++++++++++++ glassboxml/models/knn.py | 19 + 2 files changed, 1133 insertions(+) create mode 100644 experiments/knn/Test_utils.ipynb create mode 100644 glassboxml/models/knn.py diff --git a/experiments/knn/Test_utils.ipynb b/experiments/knn/Test_utils.ipynb new file mode 100644 index 0000000..05a0e8b --- /dev/null +++ b/experiments/knn/Test_utils.ipynb @@ -0,0 +1,1114 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "8cb78c58-1868-4794-aef3-e8f6a68944c0", + "metadata": {}, + "outputs": [], + "source": [ + "from glassboxml.data.generators import generate_classification_dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8eb1f929-9680-424e-83a5-eee52144719f", + "metadata": {}, + "outputs": [], + "source": [ + "X, y, w_true, b_true = generate_classification_dataset([1.5])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "84421ed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 3.04717080e-01],\n", + " [-1.03998411e+00],\n", + " [ 7.50451196e-01],\n", + " [ 9.40564716e-01],\n", + " [-1.95103519e+00],\n", + " [-1.30217951e+00],\n", + " [ 1.27840403e-01],\n", + " [-3.16242592e-01],\n", + " [-1.68011575e-02],\n", + " [-8.53043928e-01],\n", + " [ 8.79397975e-01],\n", + " [ 7.77791935e-01],\n", + " [ 6.60306976e-02],\n", + " [ 1.12724121e+00],\n", + " [ 4.67509342e-01],\n", + " [-8.59292463e-01],\n", + " [ 3.68750784e-01],\n", + " [-9.58882601e-01],\n", + " [ 8.78450301e-01],\n", + " [-4.99259110e-02],\n", + " [-1.84862364e-01],\n", + " [-6.80929544e-01],\n", + " [ 1.22254134e+00],\n", + " [-1.54529482e-01],\n", + " [-4.28327822e-01],\n", + " [-3.52133550e-01],\n", + " [ 5.32309186e-01],\n", + " [ 3.65444064e-01],\n", + " [ 4.12732612e-01],\n", + " [ 4.30821003e-01],\n", + " [ 2.14164760e+00],\n", + " [-4.06415016e-01],\n", + " [-5.12242729e-01],\n", + " [-8.13772728e-01],\n", + " [ 6.15979423e-01],\n", + " [ 1.12897229e+00],\n", + " [-1.13947458e-01],\n", + " [-8.40156477e-01],\n", + " [-8.24481216e-01],\n", + " [ 6.50592788e-01],\n", + " [ 7.43254171e-01],\n", + " [ 5.43154268e-01],\n", + " [-6.65509707e-01],\n", + " [ 2.32161323e-01],\n", + " [ 1.16685809e-01],\n", + " [ 2.18688597e-01],\n", + " [ 8.71428778e-01],\n", + " [ 2.23595549e-01],\n", + " [ 6.78913563e-01],\n", + " [ 6.75790695e-02],\n", + " [ 2.89119399e-01],\n", + " [ 6.31288226e-01],\n", + " [-1.45715582e+00],\n", + " [-3.19671216e-01],\n", + " [-4.70372654e-01],\n", + " [-6.38877848e-01],\n", + " [-2.75142251e-01],\n", + " [ 1.49494131e+00],\n", + " [-8.65831116e-01],\n", + " [ 9.68278355e-01],\n", + " [-1.68286977e+00],\n", + " [-3.34885030e-01],\n", + " [ 1.62753065e-01],\n", + " [ 5.86222331e-01],\n", + " [ 7.11226580e-01],\n", + " [ 7.93347235e-01],\n", + " [-3.48725072e-01],\n", + " [-4.62351793e-01],\n", + " [ 8.57975881e-01],\n", + " [-1.91304325e-01],\n", + " [-1.27568632e+00],\n", + " [-1.13328721e+00],\n", + " [-9.19452286e-01],\n", + " [ 4.97160744e-01],\n", + " [ 1.42425736e-01],\n", + " [ 6.90485354e-01],\n", + " [-4.27252646e-01],\n", + " [ 1.58539691e-01],\n", + " [ 6.25590394e-01],\n", + " [-3.09346540e-01],\n", + " [ 4.56775238e-01],\n", + " [-6.61925941e-01],\n", + " [-3.63053847e-01],\n", + " [-3.81737894e-01],\n", + " [-1.19583965e+00],\n", + " [ 4.86972481e-01],\n", + " [-4.69402340e-01],\n", + " [ 1.24941187e-02],\n", + " [ 4.80746659e-01],\n", + " [ 4.46531176e-01],\n", + " [ 6.65385109e-01],\n", + " [-9.84854845e-02],\n", + " [-4.23298312e-01],\n", + " [-7.97182109e-02],\n", + " [-1.68733443e+00],\n", + " [-1.44711247e+00],\n", + " [-1.32269961e+00],\n", + " [-9.97246828e-01],\n", + " [ 3.99774227e-01],\n", + " [-9.05479055e-01],\n", + " [-3.78162554e-01],\n", + " [ 1.29922830e+00],\n", + " [-3.56263971e-01],\n", + " [ 7.37515568e-01],\n", + " [-9.33617680e-01],\n", + " [-2.05437558e-01],\n", + " [-9.50022055e-01],\n", + " [-3.39033076e-01],\n", + " [ 8.40308137e-01],\n", + " [-1.72732042e+00],\n", + " [ 4.34423644e-01],\n", + " [ 2.37735602e-01],\n", + " [-5.94149956e-01],\n", + " [-1.44605785e+00],\n", + " [ 7.21295077e-02],\n", + " [-5.29492709e-01],\n", + " [ 2.32676211e-01],\n", + " [ 2.18521455e-02],\n", + " [ 1.60177889e+00],\n", + " [-2.39355627e-01],\n", + " [-1.02349749e+00],\n", + " [ 1.79275635e-01],\n", + " [ 2.19996684e-01],\n", + " [ 1.35918758e+00],\n", + " [ 8.35111246e-01],\n", + " [ 3.56871059e-01],\n", + " [ 1.46330289e+00],\n", + " [-1.18876305e+00],\n", + " [-6.39751533e-01],\n", + " [-9.26575941e-01],\n", + " [-3.89809803e-01],\n", + " [-1.37668615e+00],\n", + " [ 6.35150947e-01],\n", + " [-2.22222697e-01],\n", + " [-1.47080629e+00],\n", + " [-1.01557908e+00],\n", + " [ 3.13513847e-01],\n", + " [ 8.38126568e-01],\n", + " [ 1.99673089e+00],\n", + " [ 2.91386247e+00],\n", + " [ 4.14409433e-01],\n", + " [-9.89538120e-01],\n", + " [-2.13204628e+00],\n", + " [ 2.67711462e-01],\n", + " [-8.12941095e-01],\n", + " [-4.15357260e-01],\n", + " [-6.12096799e-01],\n", + " [-1.40790886e-01],\n", + " [ 1.06598023e+00],\n", + " [ 1.57048567e-01],\n", + " [-1.58634837e-01],\n", + " [-1.03565375e+00],\n", + " [-1.67468294e+00],\n", + " [-4.86307909e-01],\n", + " [-5.37825508e-02],\n", + " [ 1.76792991e+00],\n", + " [ 1.30274521e-01],\n", + " [ 9.82739511e-01],\n", + " [-4.99295599e-01],\n", + " [-1.18494377e+00],\n", + " [-9.65116762e-01],\n", + " [-7.25226065e-01],\n", + " [ 2.12846973e+00],\n", + " [-8.21386679e-01],\n", + " [ 8.38489204e-01],\n", + " [-9.02927178e-01],\n", + " [ 9.31573013e-01],\n", + " [ 3.84950966e-01],\n", + " [-1.56637898e-01],\n", + " [-4.07625261e-02],\n", + " [-6.54787695e-01],\n", + " [ 4.46072201e-01],\n", + " [-4.54983480e-01],\n", + " [-1.22560576e+00],\n", + " [-1.27793757e+00],\n", + " [ 1.72587918e-01],\n", + " [ 1.57909126e+00],\n", + " [ 1.59991614e-01],\n", + " [-1.18638326e-01],\n", + " [ 2.85826140e-01],\n", + " [ 1.30600174e+00],\n", + " [ 2.19382501e-01],\n", + " [-4.10927231e-01],\n", + " [ 1.10628871e+00],\n", + " [ 4.28756438e-01],\n", + " [ 1.53575599e+00],\n", + " [ 1.83234437e-01],\n", + " [-1.22446903e+00],\n", + " [-1.36815920e+00],\n", + " [ 1.65092793e+00],\n", + " [ 1.72366572e+00],\n", + " [-1.79519213e-01],\n", + " [-3.83187321e-01],\n", + " [ 1.46144429e+00],\n", + " [-1.10704568e+00],\n", + " [-8.94727019e-01],\n", + " [ 6.43326795e-01],\n", + " [-3.94605123e-01],\n", + " [-5.12186672e-03],\n", + " [-1.63442899e-01],\n", + " [ 3.37574549e-01],\n", + " [ 1.40748186e+00],\n", + " [ 9.05849069e-02],\n", + " [ 6.43938793e-01],\n", + " [-2.05017210e+00],\n", + " [-4.87184019e-02],\n", + " [-8.43230270e-01],\n", + " [-1.21881306e+00],\n", + " [-8.78152367e-01],\n", + " [-3.34123441e-01],\n", + " [ 9.15902542e-01],\n", + " [-1.32639272e+00],\n", + " [ 3.06314926e-02],\n", + " [-4.84169433e-01],\n", + " [-3.27673094e-01],\n", + " [ 1.00275783e+00],\n", + " [ 5.38115437e-01],\n", + " [ 1.33739811e+00],\n", + " [-1.54505679e-01],\n", + " [-6.95942612e-01],\n", + " [-2.23858817e-01],\n", + " [ 2.42496791e-01],\n", + " [ 1.76573358e-01],\n", + " [-1.08438807e+00],\n", + " [ 9.04897816e-02],\n", + " [ 2.28228330e-01],\n", + " [ 2.51747404e+00],\n", + " [ 1.87684461e+00],\n", + " [-8.53243351e-01],\n", + " [-2.87383362e-01],\n", + " [-1.46344200e+00],\n", + " [-5.90707014e-01],\n", + " [ 3.15605004e-01],\n", + " [ 1.20585362e+00],\n", + " [-7.29083838e-01],\n", + " [-6.54146440e-01],\n", + " [-2.14728903e+00],\n", + " [-1.62665921e-01],\n", + " [-1.06241441e+00],\n", + " [-5.29439427e-01],\n", + " [-8.76860778e-01],\n", + " [-9.42625543e-02],\n", + " [-1.75772839e+00],\n", + " [-1.46704525e+00],\n", + " [ 2.12924711e+00],\n", + " [-1.28742258e+00],\n", + " [-1.09678558e+00],\n", + " [ 1.83691353e+00],\n", + " [ 2.90506717e+00],\n", + " [-1.17156663e+00],\n", + " [-3.68248957e-01],\n", + " [ 3.41555551e-01],\n", + " [ 1.72869764e+00],\n", + " [-9.86857078e-01],\n", + " [-2.45277846e-01],\n", + " [ 7.77337576e-01],\n", + " [ 4.34766074e-01],\n", + " [-3.76156071e-01],\n", + " [-1.33822965e-01],\n", + " [-1.37489581e+00],\n", + " [-2.38173744e-01],\n", + " [-2.66387490e-01],\n", + " [ 2.32169890e-01],\n", + " [-5.55327219e-01],\n", + " [ 4.71538523e-01],\n", + " [ 1.01271582e+00],\n", + " [ 1.55429328e-01],\n", + " [ 3.51756408e-01],\n", + " [ 5.31553476e-02],\n", + " [ 8.43930914e-05],\n", + " [-7.21558034e-01],\n", + " [ 3.16494262e-01],\n", + " [-9.72865984e-02],\n", + " [ 2.09316831e+00],\n", + " [ 1.57335490e+00],\n", + " [ 3.85846553e-01],\n", + " [-7.63057210e-01],\n", + " [-1.11241147e+00],\n", + " [ 1.19114295e+00],\n", + " [ 2.62749225e-01],\n", + " [ 4.80143403e-01],\n", + " [-1.74458599e+00],\n", + " [ 9.27438482e-01],\n", + " [ 4.54420338e-01],\n", + " [-1.11043068e+00],\n", + " [-4.71524807e-01],\n", + " [ 2.63717204e-01],\n", + " [ 5.24667984e-02],\n", + " [-2.92171186e-01],\n", + " [-1.03488268e-01],\n", + " [-2.51977378e-01],\n", + " [ 1.52562512e-01],\n", + " [ 1.47149197e+00],\n", + " [-2.56665844e+00],\n", + " [-2.36850265e-01],\n", + " [ 1.76512421e-01],\n", + " [ 2.95993990e-01],\n", + " [-3.71914581e-01],\n", + " [-1.75672178e+00],\n", + " [ 3.27995484e-01],\n", + " [ 1.72735021e+00],\n", + " [-1.53386140e+00],\n", + " [ 8.63828014e-01],\n", + " [-3.28525223e-01],\n", + " [-6.13243458e-02],\n", + " [-1.05289851e+00],\n", + " [-3.34456172e-01],\n", + " [ 1.30004459e+00],\n", + " [ 5.82655242e-01],\n", + " [ 1.73231161e+00],\n", + " [ 1.17741189e+00],\n", + " [ 4.39086679e-01],\n", + " [ 1.74393453e+00],\n", + " [ 4.38993159e-01],\n", + " [ 8.27988177e-01],\n", + " [-2.96570954e-01],\n", + " [ 6.65458159e-02],\n", + " [-6.97423823e-01],\n", + " [ 9.89583935e-01],\n", + " [-1.17830362e+00],\n", + " [ 7.82350342e-01],\n", + " [-1.90651058e-01],\n", + " [ 1.17124709e+00],\n", + " [ 7.50868989e-01],\n", + " [ 1.82064616e+00],\n", + " [ 7.30774691e-01],\n", + " [-1.57204026e+00],\n", + " [-6.69531729e-02],\n", + " [-1.17200719e+00],\n", + " [-5.18279842e-01],\n", + " [ 1.51122843e+00],\n", + " [ 6.37533811e-01],\n", + " [-6.98930429e-01],\n", + " [-1.01371737e+00],\n", + " [ 3.27820929e-02],\n", + " [-1.21656015e+00],\n", + " [-6.71140277e-01],\n", + " [ 3.12009472e-01],\n", + " [ 1.15531204e+00],\n", + " [ 6.08761472e-01],\n", + " [-2.29128951e+00],\n", + " [ 3.04366729e-01],\n", + " [ 7.20335732e-02],\n", + " [ 4.13890285e-01],\n", + " [ 1.61620968e+00],\n", + " [-2.06323828e+00],\n", + " [-5.91103425e-01],\n", + " [ 5.90906323e-01],\n", + " [-1.58159440e+00],\n", + " [ 1.47594905e+00],\n", + " [ 3.68356613e-01],\n", + " [ 8.46583986e-01],\n", + " [-5.70943662e-01],\n", + " [ 8.13763690e-01],\n", + " [ 1.06847156e+00],\n", + " [ 2.32878020e-01],\n", + " [ 2.34400893e-01],\n", + " [ 2.70343239e-01],\n", + " [-8.63345265e-01],\n", + " [-1.47528680e-01],\n", + " [-1.52522532e-01],\n", + " [ 3.83393864e-01],\n", + " [ 9.99824247e-01],\n", + " [-1.05853608e+00],\n", + " [-1.25009030e-01],\n", + " [ 1.48145555e+00],\n", + " [-7.43588229e-01],\n", + " [-8.22250017e-01],\n", + " [ 2.02306192e-01],\n", + " [ 8.44385190e-01],\n", + " [ 1.14260556e-02],\n", + " [ 1.32896059e+00],\n", + " [ 8.56793983e-01],\n", + " [ 8.41820067e-01],\n", + " [ 5.54116501e-01],\n", + " [ 2.32765310e+00],\n", + " [-2.05161689e-01],\n", + " [-2.00352229e+00],\n", + " [ 1.60425436e+00],\n", + " [-4.57699431e-01],\n", + " [ 1.07880444e-01],\n", + " [ 1.30955068e+00],\n", + " [-1.60225954e+00],\n", + " [-1.25164721e+00],\n", + " [-1.60127794e+00],\n", + " [-7.94136290e-01],\n", + " [ 4.39636606e-01],\n", + " [ 5.24187843e-01],\n", + " [ 2.76274179e-01],\n", + " [-1.41276588e+00],\n", + " [-2.31010344e+00],\n", + " [ 5.43535854e-02],\n", + " [-4.71776034e-01],\n", + " [ 4.59385772e-01],\n", + " [ 7.01953626e-01],\n", + " [ 1.38241432e-01],\n", + " [ 7.60133085e-01],\n", + " [ 2.29211374e-01],\n", + " [ 5.30064706e-01],\n", + " [-7.04673263e-01],\n", + " [-1.79611414e-01],\n", + " [ 1.96776097e-01],\n", + " [ 8.20528475e-01],\n", + " [-3.93741172e-01],\n", + " [ 5.21167256e-01],\n", + " [-2.65838792e-01],\n", + " [-1.17542167e-01],\n", + " [ 8.29519042e-01],\n", + " [-1.99306037e+00],\n", + " [-1.29647233e+00],\n", + " [-1.48218540e+00],\n", + " [-2.33361612e+00],\n", + " [-6.78264440e-01],\n", + " [ 7.49433900e-01],\n", + " [-2.84884066e-01],\n", + " [ 1.97790082e-01],\n", + " [ 1.08921750e+00],\n", + " [ 1.32768613e+00],\n", + " [-6.91379347e-02],\n", + " [ 1.35358589e+00],\n", + " [ 9.21266584e-02],\n", + " [-8.37398224e-01],\n", + " [-5.94400352e-01],\n", + " [-1.48053651e+00],\n", + " [-8.88133854e-01],\n", + " [-3.58016688e-01],\n", + " [ 8.03585019e-01],\n", + " [ 1.72076983e+00],\n", + " [-1.38218152e+00],\n", + " [ 3.92827468e-01],\n", + " [-1.04054394e+00],\n", + " [ 4.74697088e-01],\n", + " [-1.31086651e-01],\n", + " [-1.83090583e+00],\n", + " [ 9.28296992e-01],\n", + " [-6.05000713e-01],\n", + " [-5.33900238e-01],\n", + " [-1.06975241e+00],\n", + " [-6.54283277e-01],\n", + " [ 4.27890441e-01],\n", + " [-1.89244341e-01],\n", + " [ 3.28662002e-01],\n", + " [ 3.61921854e-01],\n", + " [ 1.32066166e+00],\n", + " [-3.42786151e-01],\n", + " [-1.47685782e+00],\n", + " [ 1.06722242e+00],\n", + " [-3.31488172e-01],\n", + " [ 1.11459244e+00],\n", + " [ 3.83377113e-01],\n", + " [-1.31137530e-01],\n", + " [ 3.48775894e-01],\n", + " [ 1.95101256e+00],\n", + " [ 2.07698053e+00],\n", + " [ 6.93811351e-02],\n", + " [ 1.60190593e-01],\n", + " [ 1.07624016e+00],\n", + " [-8.45661033e-01],\n", + " [ 3.33070373e-01],\n", + " [-2.58628480e-02],\n", + " [ 3.13908211e-01],\n", + " [-8.33368806e-01],\n", + " [-1.58956749e+00],\n", + " [-2.07298344e+00],\n", + " [-1.11738411e+00],\n", + " [-4.58675285e-01],\n", + " [-2.93191587e-01],\n", + " [ 1.93723116e+00],\n", + " [ 1.10599337e+00],\n", + " [-9.62091116e-01],\n", + " [ 3.47708452e-01],\n", + " [-4.07078236e-01],\n", + " [-2.84363838e-01],\n", + " [ 1.85325649e-01],\n", + " [ 6.19171117e-01],\n", + " [-3.39258484e-01],\n", + " [ 1.06385153e+00],\n", + " [-1.14193823e+00],\n", + " [ 6.33906236e-03],\n", + " [ 2.59767373e+00],\n", + " [ 2.23079743e-01],\n", + " [ 1.43321451e+00],\n", + " [ 9.15201782e-02],\n", + " [ 5.80777095e-01],\n", + " [-5.67831944e-02],\n", + " [-1.70407581e-01],\n", + " [-7.79482397e-01],\n", + " [ 4.30301359e-01],\n", + " [-8.51537189e-01],\n", + " [ 6.65585236e-01],\n", + " [ 1.08528700e+00],\n", + " [ 3.66531407e-01],\n", + " [-2.86248734e-01],\n", + " [ 4.53965579e-01],\n", + " [-3.08673056e-01],\n", + " [ 9.35547125e-01],\n", + " [-1.83140608e+00],\n", + " [-3.35607368e-01],\n", + " [-1.99081200e+00],\n", + " [-1.49506083e+00],\n", + " [ 1.36386223e+00],\n", + " [ 8.95184982e-01],\n", + " [-7.19480233e-01],\n", + " [-1.50250346e+00],\n", + " [-2.96452884e+00],\n", + " [-5.43495508e-01],\n", + " [ 2.42041501e+00],\n", + " [ 4.34884271e-01],\n", + " [-5.59572286e-01],\n", + " [ 4.65080210e-01],\n", + " [-1.56095835e+00],\n", + " [-2.97323363e-01],\n", + " [ 9.94774730e-02],\n", + " [-8.61006518e-02],\n", + " [ 7.90806122e-01],\n", + " [ 3.44645226e-01],\n", + " [ 6.68326018e-01],\n", + " [-6.88372282e-01],\n", + " [ 8.97815408e-01],\n", + " [ 1.62893695e+00],\n", + " [-9.70149520e-01],\n", + " [-8.87695656e-01],\n", + " [ 1.33578434e+00],\n", + " [-1.91343987e-01],\n", + " [ 1.40382139e+00],\n", + " [-4.42535712e-01],\n", + " [ 1.45504558e+00],\n", + " [ 1.31485817e-01],\n", + " [ 2.58228823e-01],\n", + " [ 1.56471802e+00],\n", + " [-3.61770477e-01],\n", + " [-9.41122096e-01],\n", + " [-4.48564208e-01],\n", + " [ 4.52333951e-01],\n", + " [-1.56575907e+00],\n", + " [ 6.37470903e-01],\n", + " [-5.38771318e-01],\n", + " [ 1.14781266e+00],\n", + " [-2.39426030e+00],\n", + " [-7.86565775e-01],\n", + " [-1.68646815e+00],\n", + " [-8.26229466e-01],\n", + " [ 2.47665901e-01],\n", + " [-1.79226625e-01],\n", + " [-2.53377569e-01],\n", + " [-1.59184871e-01],\n", + " [ 2.03388241e-01],\n", + " [-1.00853604e+00],\n", + " [ 7.06849641e-01],\n", + " [ 6.62665970e-01],\n", + " [ 3.85037938e-01],\n", + " [ 5.56533443e-01],\n", + " [ 2.96418001e-01],\n", + " [ 2.03507330e+00],\n", + " [-8.70941711e-02],\n", + " [-3.07083218e-01],\n", + " [-7.53527580e-01],\n", + " [-1.03226267e+00],\n", + " [-1.24447179e+00],\n", + " [-8.88797313e-01],\n", + " [-7.06803817e-02],\n", + " [ 3.34295128e-01],\n", + " [ 5.11420586e-02],\n", + " [-7.65535277e-01],\n", + " [ 9.00184564e-01],\n", + " [ 7.39412672e-01],\n", + " [-1.59648307e-01],\n", + " [-6.52916145e-01],\n", + " [ 5.48427921e-01],\n", + " [ 1.87973587e-01],\n", + " [-1.44812726e+00],\n", + " [-6.79802560e-02],\n", + " [ 2.62035812e-01],\n", + " [-8.99694786e-01],\n", + " [ 1.89843393e-01],\n", + " [-1.45482249e+00],\n", + " [ 1.33618610e+00],\n", + " [ 1.24794999e+00],\n", + " [-2.52517334e-01],\n", + " [ 3.63454338e-01],\n", + " [-2.40992197e+00],\n", + " [-1.15634766e+00],\n", + " [-2.93778920e-01],\n", + " [-1.07213302e+00],\n", + " [ 7.14396483e-01],\n", + " [ 1.99729653e+00],\n", + " [-1.17661472e+00],\n", + " [-8.37463404e-01],\n", + " [ 2.35448368e-01],\n", + " [ 1.61111615e+00],\n", + " [-1.22237431e+00],\n", + " [ 2.49036122e-01],\n", + " [ 1.82129885e+00],\n", + " [-1.65175915e+00],\n", + " [-1.28106921e+00],\n", + " [-4.23606606e-01],\n", + " [-5.20588413e-01],\n", + " [ 8.12601288e-01],\n", + " [ 2.41659720e-01],\n", + " [-1.77496206e+00],\n", + " [ 5.15410403e-01],\n", + " [-5.77538887e-01],\n", + " [ 1.27444722e+00],\n", + " [-6.27587536e-01],\n", + " [-6.36615283e-01],\n", + " [ 5.41131611e-01],\n", + " [ 7.62926482e-01],\n", + " [ 4.48099364e-01],\n", + " [-1.68559732e+00],\n", + " [ 5.38034440e-01],\n", + " [-1.03430805e+00],\n", + " [ 2.35276112e-01],\n", + " [-1.42373444e+00],\n", + " [ 4.46322148e-01],\n", + " [-8.06598904e-01],\n", + " [-1.28263465e+00],\n", + " [ 7.13820136e-01],\n", + " [ 2.41644522e-01],\n", + " [-6.13976801e-01],\n", + " [ 1.45117885e+00],\n", + " [-4.40652422e-01],\n", + " [ 3.21076740e-02],\n", + " [ 2.68913448e-01],\n", + " [-6.19665934e-01],\n", + " [ 4.71136293e-01],\n", + " [-5.33452347e-01],\n", + " [-4.11638322e-01],\n", + " [ 1.36264264e+00],\n", + " [-1.04058605e+00],\n", + " [-2.41278033e+00],\n", + " [ 1.61093700e+00],\n", + " [ 2.54932795e+00],\n", + " [-4.05269265e-01],\n", + " [-1.93683804e+00],\n", + " [-3.10483976e-01],\n", + " [-2.86222950e-01],\n", + " [-1.89923841e-01],\n", + " [-1.11338804e+00],\n", + " [ 5.79561142e-01],\n", + " [ 5.24507375e-01],\n", + " [-1.49440562e+00],\n", + " [ 6.99196732e-01],\n", + " [ 2.05268498e+00],\n", + " [ 1.71960332e-01],\n", + " [-3.37325162e-01],\n", + " [-1.42003214e-01],\n", + " [ 6.15256767e-01],\n", + " [-1.73067161e+00],\n", + " [ 1.64390703e-01],\n", + " [-3.90463949e-01],\n", + " [ 1.84782501e+00],\n", + " [-1.74172734e-01],\n", + " [ 1.66788761e+00],\n", + " [-1.10374070e+00],\n", + " [ 5.87259167e-01],\n", + " [ 3.19400264e-01],\n", + " [-8.69047248e-01],\n", + " [ 1.77396115e-01],\n", + " [ 1.21251884e+00],\n", + " [-3.23791704e-01],\n", + " [-1.69196265e+00],\n", + " [-1.75628265e-02],\n", + " [-9.02423095e-01],\n", + " [-3.42340939e-01],\n", + " [-8.15877697e-02],\n", + " [-1.70565222e+00],\n", + " [-1.61565834e+00],\n", + " [ 4.82066836e-01],\n", + " [-5.22718696e-01],\n", + " [-2.56474434e+00],\n", + " [ 7.84844037e-01],\n", + " [ 2.72369755e-01],\n", + " [-7.13874824e-01],\n", + " [-1.31683021e+00],\n", + " [ 8.35807896e-01],\n", + " [ 3.49350623e-01],\n", + " [ 2.38260228e+00],\n", + " [ 4.20188599e-01],\n", + " [ 3.87703141e-01],\n", + " [-1.66927930e-01],\n", + " [ 8.16775867e-01],\n", + " [ 6.25085201e-01],\n", + " [ 1.25172501e+00],\n", + " [-5.21322919e-01],\n", + " [-4.35407473e-01],\n", + " [-4.79103171e-01],\n", + " [ 7.90801721e-01],\n", + " [ 1.49837444e+00],\n", + " [-4.58840493e-01],\n", + " [-4.24773728e-01],\n", + " [ 3.14077224e-01],\n", + " [-2.45761500e-01],\n", + " [ 9.52053653e-01],\n", + " [-2.25177729e+00],\n", + " [-8.26705047e-01],\n", + " [-7.82416334e-01],\n", + " [-2.32035601e+00],\n", + " [-9.63638444e-01],\n", + " [-9.15156116e-01],\n", + " [-2.01104655e-01],\n", + " [ 1.11296589e+00],\n", + " [-2.45060651e-01],\n", + " [-1.03081372e+00],\n", + " [-5.69545412e-02],\n", + " [ 1.04917362e+00],\n", + " [-9.75958816e-01],\n", + " [-9.10574884e-01],\n", + " [ 5.58548959e-01],\n", + " [-2.21536116e-01],\n", + " [ 6.47484691e-01],\n", + " [-1.36467918e-02],\n", + " [ 7.01663648e-01],\n", + " [-1.03507811e+00],\n", + " [-1.20846508e-02],\n", + " [-2.10690014e-01],\n", + " [-1.21589092e+00],\n", + " [-1.56347795e+00],\n", + " [ 6.85749035e-01],\n", + " [-3.50952382e-01],\n", + " [-1.02228028e+00],\n", + " [-9.61789369e-02],\n", + " [ 1.12801886e+00],\n", + " [-2.28073785e+00],\n", + " [-1.49663869e+00],\n", + " [-9.22886442e-01],\n", + " [ 1.46117887e+00],\n", + " [ 2.82586983e-01],\n", + " [ 7.67317240e-01],\n", + " [-1.14016092e+00],\n", + " [-1.11953588e+00],\n", + " [ 4.47813717e-01],\n", + " [ 5.82743309e-02],\n", + " [ 5.48738819e-01],\n", + " [-1.87670991e-01],\n", + " [ 2.78143726e-01],\n", + " [ 1.58119085e-01],\n", + " [ 7.77767389e-01],\n", + " [ 8.07008282e-01],\n", + " [-1.61987199e+00],\n", + " [-2.24726856e+00],\n", + " [ 1.00174540e+00],\n", + " [ 1.18772509e+00],\n", + " [-1.02062302e+00],\n", + " [-1.85983541e+00],\n", + " [ 9.90348210e-02],\n", + " [ 9.30838226e-01],\n", + " [ 1.79759452e+00],\n", + " [ 5.16297572e-01],\n", + " [-3.71716697e-01],\n", + " [-8.93130622e-01],\n", + " [ 1.14512917e-02],\n", + " [-2.99264704e-01],\n", + " [-1.01506791e+00],\n", + " [ 2.04875565e+00],\n", + " [ 1.78516840e+00],\n", + " [ 1.13604868e+00],\n", + " [-9.20850398e-01],\n", + " [ 8.55019324e-01],\n", + " [ 6.39626409e-01],\n", + " [ 4.42545624e-01],\n", + " [ 1.24966527e+00],\n", + " [ 6.35371143e-01],\n", + " [ 7.40014236e-01],\n", + " [ 6.36906283e-01],\n", + " [ 3.40791408e-01],\n", + " [-1.78361113e+00],\n", + " [ 8.36210774e-02],\n", + " [-5.56191959e-01],\n", + " [-1.27984096e+00],\n", + " [ 1.68181662e+00],\n", + " [ 1.72899534e+00],\n", + " [ 1.35922060e+00],\n", + " [ 2.55213417e-01],\n", + " [ 1.35062512e+00],\n", + " [ 1.20531806e-02],\n", + " [ 2.02797277e-01],\n", + " [-1.09347137e+00],\n", + " [ 3.96991304e-01],\n", + " [ 6.03859284e-02],\n", + " [-1.30265212e+00],\n", + " [-5.11971118e-02],\n", + " [-7.97295639e-02],\n", + " [ 1.79756117e+00],\n", + " [ 8.94213329e-01],\n", + " [ 1.14454391e-02],\n", + " [ 2.48787310e-01],\n", + " [ 4.42123781e-02],\n", + " [-2.02913985e-01],\n", + " [-1.08242720e+00],\n", + " [-1.51051878e-01],\n", + " [-7.46098257e-01],\n", + " [-1.25031554e+00],\n", + " [ 5.11221815e-01],\n", + " [ 3.91264660e-01],\n", + " [-1.78670751e+00],\n", + " [-1.22684637e-01],\n", + " [ 9.95701386e-01],\n", + " [ 1.05922374e+00],\n", + " [ 1.02583684e+00],\n", + " [ 3.89132069e-02],\n", + " [-8.45045328e-01],\n", + " [-1.08369883e+00],\n", + " [ 3.44604905e-01],\n", + " [ 3.79280034e-01],\n", + " [ 1.28733111e+00],\n", + " [ 1.09997965e+00],\n", + " [-1.32228657e-01],\n", + " [-1.24420588e+00],\n", + " [-3.19106597e-01],\n", + " [ 2.17231195e-01],\n", + " [-2.02083245e-01],\n", + " [-5.77894108e-01],\n", + " [ 2.52884815e-01],\n", + " [-5.03957741e-01],\n", + " [-6.28066084e-01],\n", + " [ 3.11452834e-01],\n", + " [-4.01992580e-01],\n", + " [ 2.44104389e-01],\n", + " [ 2.73204023e-01],\n", + " [-1.13942900e+00],\n", + " [-4.81241124e-01],\n", + " [ 1.43777694e+00],\n", + " [-1.16207951e+00],\n", + " [-2.11665445e+00],\n", + " [-1.86184515e+00],\n", + " [ 2.91099466e-02],\n", + " [ 3.09172780e-02],\n", + " [-1.17610855e-01],\n", + " [ 1.21418983e+00],\n", + " [-2.67283443e+00],\n", + " [ 3.95933874e-01],\n", + " [ 1.56143820e+00],\n", + " [-1.12778076e+00],\n", + " [-3.79806512e-01],\n", + " [-7.52891917e-01],\n", + " [-8.94346046e-01],\n", + " [-3.26262005e-01],\n", + " [ 1.42748528e+00],\n", + " [ 1.83738668e+00],\n", + " [-3.35939225e-01],\n", + " [ 1.90506021e+00],\n", + " [ 3.55764770e-02],\n", + " [ 1.75369103e+00],\n", + " [-9.32986497e-02],\n", + " [ 1.31057826e-01],\n", + " [ 3.65474473e-01],\n", + " [ 3.17885368e+00],\n", + " [ 8.51285575e-01],\n", + " [-7.07264530e-01],\n", + " [ 9.68997870e-01],\n", + " [-3.61832537e-01],\n", + " [-4.89750183e-01],\n", + " [ 9.08601360e-01],\n", + " [ 3.10855878e-02],\n", + " [ 2.78575915e-01],\n", + " [ 1.39852219e-02],\n", + " [ 3.36583127e-01],\n", + " [ 4.24965897e-01],\n", + " [-1.93696693e+00],\n", + " [ 6.66572669e-01],\n", + " [-9.82019420e-01],\n", + " [-1.44229914e+00],\n", + " [-5.84112439e-02],\n", + " [ 8.39810033e-02],\n", + " [-6.93506165e-01],\n", + " [ 8.31031858e-01],\n", + " [-1.34217517e+00],\n", + " [-4.06943749e-01],\n", + " [-5.84874135e-01],\n", + " [-4.65872703e-02],\n", + " [ 2.78864285e-01],\n", + " [-1.00789295e+00],\n", + " [ 7.24282677e-01],\n", + " [ 6.30023683e-02],\n", + " [-1.89194625e+00],\n", + " [-1.95859144e+00],\n", + " [-1.23192929e-02],\n", + " [-2.20967318e-01],\n", + " [-1.03420114e-01],\n", + " [-2.79824565e-02],\n", + " [ 2.25559840e-01],\n", + " [ 9.47649610e-01],\n", + " [-1.11110490e+00],\n", + " [-1.17197159e+00],\n", + " [-1.09332386e+00],\n", + " [ 2.88916667e-01],\n", + " [ 1.24494738e+00],\n", + " [-4.31339438e-01],\n", + " [-2.50169984e+00],\n", + " [-1.70399286e+00],\n", + " [-8.33036723e-01],\n", + " [-5.57728887e-01],\n", + " [-4.08388627e-01],\n", + " [ 3.85811230e-02],\n", + " [-3.11746331e-01],\n", + " [ 1.04933961e+00],\n", + " [-6.76017306e-01],\n", + " [-8.62317959e-01],\n", + " [ 4.78875539e-01],\n", + " [-1.53564207e+00],\n", + " [ 3.89691705e-01],\n", + " [ 1.02553184e-01],\n", + " [-1.47442490e-01],\n", + " [ 1.58827611e+00],\n", + " [-6.22207445e-01],\n", + " [ 2.06029817e+00],\n", + " [-2.25431449e-01],\n", + " [-1.27701644e+00],\n", + " [ 6.99195810e-02],\n", + " [-1.07624520e+00],\n", + " [-7.51755848e-01],\n", + " [ 3.97033300e-01],\n", + " [ 5.55582089e-01],\n", + " [-6.22167700e-01],\n", + " [ 9.87405145e-01],\n", + " [ 1.15750776e+00],\n", + " [ 1.43630176e+00],\n", + " [ 5.29413407e-01],\n", + " [ 1.36342871e+00],\n", + " [-1.88079843e+00],\n", + " [-3.17906549e-01],\n", + " [-8.67005256e-01],\n", + " [ 1.19225861e-01],\n", + " [-5.71449219e-01],\n", + " [-1.66157842e-01],\n", + " [ 1.88217488e+00],\n", + " [-1.69719796e-01],\n", + " [ 4.13792317e-01],\n", + " [-2.32269330e-01],\n", + " [ 7.57132880e-02],\n", + " [ 6.01668044e-03],\n", + " [ 4.48324066e-01],\n", + " [ 1.16530754e+00],\n", + " [ 1.64739400e+00],\n", + " [ 3.09620082e-01],\n", + " [ 5.89546886e-01],\n", + " [-1.15086451e+00],\n", + " [-8.78767424e-02],\n", + " [ 9.40289465e-01],\n", + " [ 8.65968638e-01],\n", + " [ 2.11609733e-01],\n", + " [ 8.86393960e-01],\n", + " [ 4.90766709e-01],\n", + " [ 1.20030626e+00],\n", + " [ 2.89359157e-01],\n", + " [-3.55698316e-01],\n", + " [ 3.35841257e-01],\n", + " [-2.93059438e+00],\n", + " [ 3.82885736e-01],\n", + " [-3.64841283e+00],\n", + " [-1.72346341e+00],\n", + " [ 4.51768601e-01],\n", + " [ 4.77529337e-01],\n", + " [-1.16242878e+00],\n", + " [-7.12102042e-01],\n", + " [ 1.37054099e+00],\n", + " [-4.84030132e-01],\n", + " [ 2.24292031e+00],\n", + " [-1.91985318e-03],\n", + " [ 4.08036177e-01],\n", + " [ 1.61687440e+00],\n", + " [ 1.31027116e-01],\n", + " [-1.00234398e+00],\n", + " [-1.09727452e-01],\n", + " [-3.56107362e-02],\n", + " [-1.36474165e+00],\n", + " [-2.55832071e-01],\n", + " [-7.42192094e-01],\n", + " [ 9.24357757e-01],\n", + " [ 3.46118742e-02],\n", + " [-2.82795749e-01],\n", + " [-1.06181931e-01],\n", + " [ 2.23122018e-01],\n", + " [ 6.16814200e-01],\n", + " [-9.99712229e-01],\n", + " [-1.04158763e+00],\n", + " [ 1.10467922e+00],\n", + " [-4.12336872e-01],\n", + " [-1.41684209e+00],\n", + " [ 4.43812709e-01],\n", + " [ 4.63369806e-01],\n", + " [-1.53071526e+00],\n", + " [ 2.29481715e-01],\n", + " [ 7.35583092e-01],\n", + " [ 3.74386452e-01],\n", + " [ 6.31981484e-01],\n", + " [-1.40426910e+00],\n", + " [ 3.31040155e-01],\n", + " [-3.02619759e-01],\n", + " [-4.82790159e-01],\n", + " [ 8.70555609e-01],\n", + " [ 1.47927451e+00],\n", + " [ 1.79437005e+00],\n", + " [ 1.31480787e+00],\n", + " [-1.09734182e-01],\n", + " [ 3.52720163e-01],\n", + " [ 7.66822872e-01],\n", + " [ 1.21177949e-01],\n", + " [ 1.30764188e-01],\n", + " [ 8.23753132e-01]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "17a579fe", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "e8213628", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAxV5JREFUeJzs3Xd0FGUXB+Dfluym9957JZ3eS+hVQBEBFSsqFrDip6CiYsUKYsOCXUFFei9SJaGHBEII6b23rfP9MZvZnexueuc+53BOdndmdqKB3L3vfe8VMAzDgBBCCCGkmwi7+wYIIYQQcmujYIQQQggh3YqCEUIIIYR0KwpGCCGEENKtKBghhBBCSLeiYIQQQggh3YqCEUIIIYR0KwpGCCGEENKtxN19Ay2hVquRm5sLKysrCASC7r4dQgghhLQAwzCoqqqCu7s7hELj+Y9eEYzk5ubCy8uru2+DEEIIIW2QlZUFT09Po6/3imDEysoKAPvNWFtbd/PdEEIIIaQlKisr4eXlxf0eN6ZXBCMNSzPW1tYUjBBCCCG9THMlFlTASgghhJBuRcEIIYQQQroVBSOEEEII6VYUjBBCCCGkW1EwQgghhJBuRcEIIYQQQroVBSOEEEII6VYUjBBCCCGkW1EwQgghhJBu1epg5MiRI5g+fTrc3d0hEAjw119/NXvOoUOHEBcXB6lUisDAQHz77bdtuFVCCCGE9EWtDkZqamoQHR2NdevWtej4GzduYOrUqRgzZgzOnTuHp556Cg888AB2797d6pslhBBCSN/T6tk0kydPxuTJk1t8/IYNG+Dn54f3338fABAWFoZ///0XH3zwASZOnNjatyeEEEJIH9Ppg/JOnDiBhIQE3nMTJ07EU089ZfQcmUwGmUzGPa6srOys2yOE9GLP/n4evydmd/dtENLrBTlbYs+ykc0OtOssnV7Amp+fDxcXF95zLi4uqKysRF1dncFz1qxZAxsbG+6Pl5dXZ98mIaSXySqtpUCEkA5yrbAaiTfLuu39e+RumhUrVqCiooL7k5WV1d23RAjpYXLLDX+YIYS03mB/e/T3te+29+/0ZRpXV1cUFBTwnisoKIC1tTXMzMwMniOVSiGVSjv71gghvVhqQVV330KPkxDmjH1XCrv1Ht6dG4Vn/7jQZe/36owI2Jqb4MlfzkEqFuKhkf745EBak+f4O1lg37JREArZJYl6hQrj3j+MnPI6zOvvhbfnRgEAzmaW4bb1xyESCnDw6dHwdjAHAOxLLsAD35+BRCTEnmUj4etowbu+Ws1g9mfHcS6rHLPjPLD2jpgO+35r5UrMXn8cKflViPGyxa8PD4ZULOqw63eXTs+MDBkyBPv37+c9t3fvXgwZMqSz35oQ0oftupTf3bfQ43R3IAIAZbXyLnsvK1MxEsJdsHpbMgDg8bGBzQYiAPDshBAuEAGAH07eRI4m03bfcD/u+Y/2XwMAzI714AIRmVKF1duTuWMbByIA8Ne5HJzLKoeFRIQXJoW28bvTxzAMnv3jAlLyq+BkJcWGhfF9IhAB2hCMVFdX49y5czh37hwAduvuuXPnkJmZCYBdYrn77ru545csWYL09HQ899xzSElJwfr16/Hbb79h2bJlHfMdEEJuScevl3T3LfQoXvaGM81daf5Ab7y5I6XL3u/OAV749MA1FFfLEehsaTAwaCzU1QoTI1y5x5X1Cnx6kA1gRgQ5IsTVCgBwLqsch1KLIBIKsHRsIHf8xn8zcLOkFs5WUt7zDaplSry1k/1vsHRsEJytTdv1PeracDgd2y/kwUQkwGcL4uBq03HX7m6tDkbOnDmD2NhYxMbGAgCWL1+O2NhYrFy5EgCQl5fHBSYA4Ofnh+3bt2Pv3r2Ijo7G+++/j6+++oq29RJCSAfKKu3+Gpp6harL3ksoACLcbfDzabam8M3bIrH0p7PNnvfkuCBeVuSLw+kor1UAaJQV2XcVAHBbrAd8HNggp6CyHp8cYLMlL0wOhaVUv9Jh3cE0FFbJ4ONgjvuG+7btmzPgUGoh3tnNBjmvzIjo1vqOztDqmpHRo0eDYRijrxvqrjp69GicPdv8DwkhhJDeycVain3JBc0f2EHGhrpg/SE2ozGvvxeyy2qbPadxVqSwsh5f/3sDABDgZIFRQU4A2KzIwYasyBht9uPtnSmolasQ622LWTEeete/WVKDr4+y13tpaniHLaFkFNfgiZ/PgmGA+QO9sGCQT4dctyfp9AJWQgjpaF35CZy0XJVM2WXvpWYYXC2ohoOFBE+ND8KQNQeaPeepBH5W5OMD11Cn+Vm6b7gf99rHmlqRWTEe3NJPUmYZtpzNAQC8Mj2Cd50Gr2+/ArlKjRFBjkgIc27fN6hRI1PioU1nUFmvRJy3LV6ZEdEh1+1peuTWXkIIaUpSN/ZDIIYVVMqaP6iD2Jqb4FhaMQDgpWlh+PFkZjNnsFmRCeHarMiN4hr8olnisTU3wexYTwDAhexyHEgphEgowOOamhC1msGrWy8DAG6P90S0l63e9Y9eK8Le5AKIhAKsnBbeIc3D2ILV87haUA0nKyk+60MFq41RMEII6XWe29x1W0dJz1Neq4BMqcawQAdEe9pyBahNaZwVeW9PKpRqtuRgwSBvmEnYX/If7WOzIjNj3LmsyB9J2TifXQFLqRjPTgrRu7ZCpcZr/7A7bO4e4oMgF6v2fYMa6w9dx46L+TARCbBhYRxcOrAYtqehYIQQ0utkl3V/sSbpXhKxEK/PisQrmiCgKY2zIhezK7D9Qh4AwEQkwN1DfLnn96cUQigAHh8bBACoqlfgnV2pAIAnxgXC2Uo/IPjh5E1cK6yGvYUET40Lbu+3BgA4mFqI9/aw7/vqjH6I9+lbBauNUTBCCOlVSqq7bjmA9FxLxwQiNb8KR64WNXvsUwnBvKzI27u024+nRblzGYeP9rM7aGbFeMBPkxX55EAaiqtl8He0wL1D/dBYSbUMH+xlz3t6QjBszE3a/k1pZBTX4ElNwepdg7xx1yDvdl+zp6NghBDSq6zV/MNPbl0BTha4Z4gv1+ysKWFu1pgQrp2PdvRaEf7V1JsAwP2a7byXciqw7wqbFWnoH3K9qBobNbttXp4eDolY/1fm2r1XUVmvRLibNe4c0P6goVqnYDXexw6vTO+bBauNUTBCCOlVfjzVfLEi6dveuC0Snx+5znVNbYpuXxG1muFlRQb62aOfhw0A4EOuVsQD/k6WAIDV25KhVDMYG+qMMSH6u2OScyvx82n253HV9HCIDOywaQ2GYfDMb2zBqou1FJ8tiDMYAPVFt8Z3SQjpE5JzK7v7Fkg3uz3eE05WUnx5NL3ZYxtnRbZfzMOlHO3P0H3DdLMiBbysyIGUAhxKLYKJSICXp4XrXZthGLzyz2WoGWBqlBsG+Tu091vDuoNp2HU5HxKREJ8tjO/Q7q09HfUZIYT0Go/8mNjdt0C6kb2FBCumhOHJX85CoTLefLOB7g4ahUqN9zUFoQDgbW+O8ZpApWEGzYxodwQ4WUKuVGP1tisA2IDFz0Cb+R0X83H6RilMTYR4cUpYu7+3AykFeF+zBPnazAjEedu1+5q9CWVGCCG9glKlxs2S5rtskr7rf1PCcDK9BEevFTd7bHijrMgv/2UhQ+fn596hvhAJBbicW4G9yQUQCNhZMgDwzbEbuFFcA0dLw/Nn6uQqvLmDDVaWjAqAh2375gLdKK7Bk7+cA8Ow24zvHNj3C1Ybo2CEENIrvLeHCld7M0dLSbvOH+xvj4n9XFtUtAoATyYEcY3HamRKrn8IAFhJxbhjgBcAbbfVGdHuCHS2RGFVPTf59/lJIbAy1d8d01Cv4m5jiodHBrTr+6qWKfHQ92dQVa9Efx87rLpFClYbo2CEENIrbDh8vbtvgbSRlVSMWnn7Wvi/cVskPj2QhryK+maPbZwV2fjvDRTrbAmfN8ALllIxknMrsfsymxVp6Lb6zq5UVMuUiPayxZw4T71r55TXcT+LL04N45qltYVazeDp387hWiFbsLp+4a1TsNrYrfldE0J6lVPpJd19C6QdpkW7tysYeXikPxiGwVctKFoF+FmR0ho5Pj+iPU8oAO4Z6gtAmxWZHuWOQGcrnM0swx+J2QCAV6aHG5w/s2bHFdQr1BjoZ4+pkW5t/p4AtmB19+UCSERCbFgYb7Ch2q2CghFCSI8374uT3X0LpBFnK2mLj/0jMatd77VsfDBW/n2Za9/elMZZkXUH01CtM8BvUj9XeNmb40peJXZdzodAwHZWVasZrpvrnDhPxBooID2VXoJtF/IgFLBbedszf2b/lQKs3ccuPb4+q5/B97uVUDBCCOnRWjIannStCHdrFFa1rBPuo6MDWrTzxZj3b4/G3uQCHL/esuzYUzpZkeyyWmw6cZP3ekOTs4asyNRINwQ6W2HL2RyczyqHhUSE5w3Mn1GpGbyqCVbuHOiNCHebNn9P14uq8ZSmYHXRYB+ufuVWRsEIIaRH+9+fl7r7Fkgjda1Ycll/qH21PhP7ueL17S0rWg13s+a26wLAB3uvQa5Sc4+jvWwR522HK3mV2HmpISsShGqZkmuG9vi4IIP9PX79LwvJeZWwNhXj6fFtnz9TVa9gC1ZlSgzwtTPYw+RWRMEIIaTHKquR43ALZo+QruPrYI704poWHetg0b4dNBvv7Y+P919DQaUMVqbNt8XSzYqk5Fdiy9ls3uv3D/eDQCDAJwfYrMiUSDcEu1jhkwPXUFQlg6+DORYP89W7bkWtghta91RCMBwsW75EpUutZrD8t/O4XlQDV2tTrF8Qf8sWrDZG/xUIIT3WN8czuvsWSCPVspZnRUpq5O16L087c242TFW9ssljI9z5WZF3d6WC0VkdcrMxxeR+rkjJr8SOi5qsyNgg3Ciu0c6fmRYOqVh/d8xH+6+htEaOIGdLLBri0+bv55MDadibXACJWIgNi+Lh1Iq6m76OghFCSI9UK1dy6/qk5yjuoqnJH90Zg5f/ugSlmoGltCVZkWAuK/JfRin2pxRCJBRAqsk83DPUFyYiIT7Zz/YQmdLPDSGuVnh9WzIUKgajgp0wNlR//kxaYRW+P5EBAFg5PRwmorb92tyXXIAPdApWY7xs23SdvoqCEUJIj/Tbf+3bgUF6N4WKwakbpRALBbzdMIZEuFsjIYwNJBiGwVs72foPb3tzyJRqmJmIMH+AN1Lzq7D9Yh4AtlbkYGoh9qcUQiwUYKWB3TEMwxatKtUMEsJcMCLIqU3fy/Wiaiz79RwA4J4hPrijPxWsNkbBCCGkx1Go1PiQsiK3rMfGBHAFpS3ZzqubFdmbXIDEm2UwNRHCQsouudze3xM25ib4mKsVcYWfowVWa3bHLB7miwDNpF5d+68U4ui1YkhEQrw8rW3zZyrrFXhQU7A60M8eL1HBqkEUjBBCepztF/JQXqvo7tsgrRDiYtUh1xEKgPwKGYpauHW4n4c2K6JSM3h3N1toOibEGZdyKiEQAIuH+eFqQRV26GRFvjuegfTiGjhaSvD4uCC968qUKqzW7OK5f4QffBz0h+U1R61msPzXc0gvqoGbjSnWL4hr8zJPX0f/VQghPQrDMNT6vZcZEeSI1IIq7rGlVAxTk7b9eon3scNf53JafPxT47RZkc1J2bhWWA0bMxNul8q4UGf4OVrg4/3XwDDA5H6ucLCQcvVIz00MhbWB+TMb/83AzZJaOFtJ8dgY/WF5LfHR/mvYd6UQErEQny+Kh2Mbd+HcCigYIYT0KIeuFiElv6r5A0mPUVLN3zVze39P1CvURo5uWnpRDVQtWJoB2KzIOE1WpF6hwod72QLRhYO9sedyAQDgvuF+uFbArxV5d3cKqmRKRHnaYG68/vyZwsp6fKpZ0nl+UmiLCmgb23M5Hx9pAp43b4tElKdtq69xK6FghBDSo2xoZ5Ms0rUeHumP5LxK7rGfowWKq9u+pbc124F1syKbTtxEbkU93G1MIRYKUadQIczNGkP8HfDxgTQwDDApwhUKlRq/a+bPrJoeYXD+zNu7UlEjVyHGyxa3xXq0+ntIK6zG8t/OAwDuHeprMOAhfBSMEEJ6jLOZZTh1o7S7b4O0wq7L+bzHPzwwCP+cz+309430sOGyIhV1Cnx6kN2yu3RsEH7V7MS6f7gfrhdVY9sF9n4eHxeIV7ZeBsMAt8V6IN5Hfx7M2cwybE5qCFYMD8trSqWmw2q1TIlBfvb439S2Fb7eaigYIYT0GFQr0rtMjXLDzRLt7KBYb1scTu2ajrm63VY/P3wdFXUKBDlbwtREiPzKejhaSjE92g0f72ezIhMjXJCaX4WkzHKYS0R4YXKo3jVbMiyvKWo1g2W/nEN6cQ3cbUyxjgpWW4z+KxFCeoTrRdXYk1zQ3bdBWmFPo6zIW7Oj8OKfFzv9fYOcLbkGZQWV9dh4jO2g+uzEEHyr6dp79xAfZJXW4R9NVuSBEf5c/5GlYwPhYmD+zJ/NDMtrzof7r2F/SiGkYiE+X9SfClZbgYIRQkiP8MXhdF77btLz6U7jDXBq/dbXtnphciiXFflo/zXUK9To72MHOwsJLmRXQCIWYsEgb3xygN1BMyHcBQdSClFYJYOPgzk3uVdXtUyJt3Y1BCuGh+U1ZdelfG6HzprZkYj0bPtU31sRBSOEkG5XUFmPP8+2fDsn6XnuHOCN29Yf6/T3cbSUcFmR60XVXH3I85ND8fVRNkMyO9YDZbUKrnZlVqwH99pLUw3Pn/n0QBo3LO++4b6tuqdrBVV4+rdzANgGarPjqGC1tSgYIYR0u43/3uCNeie9i1AADAt0RK285UP0WsNeZ/rv23OiuKzI+3tSoVIzGBfqDFdrU+xJZpeN7hvuh08PXIOaAcaHu2BLUg7kKjVGBDlyDdJ0ZegMyzMWrBhTUafAQ5sSUSNXYbC/PV6cQgWrbUHBCCGkW1XUKfDjqczuvg3SDsMCHfHoj4ncY+cOnkZbqrPdtyErcj6rnJu+++ykEHxzLANqhm3AJhYKsFWTFYn1tsW+KwUQCwVYZWD+DAC8vv0KF6yMMxCsGKNWM1j26zncKK6Bh60Z1t1FBattRf/VCCHd6sdTN5sdhEZ6tnA3a2To7KopbGEr95YYpzNJ9+t7+kMgEIBhGG52zexYT3jYmuG3M9rtvJ8eSIOaAUaHOGGzpqfI3UN8Eeis37L+yNWiZoMVYz7YdxUHuILVeDhQwWqbUTBCCOk29QoVNv6b0d23QdrAVVPgaWYiwr4r2l1QkR4dW7i5P6WQ+7ohK3L0WjGOXy+BRCTEsvFsX5FqmRIBThbwsjfn2snbmUtwvagGDhYSPJmgP39GoVLjtW3sVl5jwYoxuy7l4ZMDbG+Tt+ZEol8Hf9+3GgpGCCHdZktSDoqrO+5TNOk6DcsZQgFwvagGACAWCnAxp6LD3mPJqADu6w0L4yAQCKBWM9wW3UVDfOBmY8Zt571vuB/WHWSzIjFettin2Sr+7MQQ2Jjpz5/ZdOIm0gqrYW8kWDHmakEVntZ0WL1/uB9ui6WC1faiYIQQ0i1UagZfHKEmZ73RhoVx3ATcGp2i1agO3s6q2wRvYoQrAOCfC7lIzquElVSMx8YEYs/lfGSX1cHW3ARx3nb4S7MrS6FSo0qmRD8Pa9ze30vv2iXVMnywj51l88wEw8GKIRW1bIfVGrkKQwMcsMJA8zTSehSMEEK6xe7L+cgoqYWFRMRNWCW9g0goRFmtQu/5nPK6DnuP12ZGcF+vmR0JgUAAuVKN9/ewAcRDI/1hbyHB15pdMAsGeeOrozegZtgC2oZ5Oa9Mj4DIQEv39/deRVW9EhHu1pg3QD9YMUSlZvDkr2eRUVILD1szfHpXHMRUsNoh6L8iIaTLMQzDfer1sDODXEnbenuLYy+MxZ9ns/Wej/GyRUFlxy25rfz7Mvf1nZpg4Zf/MpFZWgtHSynuH+GH81nlOHOzDCYiAUYGOXG1IuW1CjAMMDPGHf197fWufTm3Aj+fZndwrTISrBiydm8qDqUWwdSELVjV3XJM2oeCEUJIlztxvQQXsitgaiKERRvGs5PuMS3KDZZSMfZdKdR7Lau01sAZbfPK9HDu6yfGBkIgEKBGpuQ6nD6ZEARziZjLikyLcsfvidlQqdmOsHKVGmYmhufPMAyDV7cmg2HY72egn36wYsjOi3lYd5ANoN+eE0UFqx2MghFCSJf7TJMVGRfmggvZHVfwSDrX6pn9sPNinl4my9pUjBKdXiDt1TCsDgCWjQ8GAHx19AaKq+XwdTDHnQO8kFdRx9WtJIS56HXwfWxMANxszPSuvf1iHk5nlMLURNjiBmWp+VV4+ne2YPWB4X6YGePRpu+LGEfBCCGkS13KqcDRa8UQCQVwspRyn2ZJzxbrbQs7Cwm2JOm37dedUdNe9wzx4b6eGeMOgUCAkmoZV+z89IQQmIiE+O74TSjVDAb62eNQaiHv58jL3gwPjPDXu3adXIU3t18BADwyKhDutvrBSmMVtQo8tOkMauUqDAt0MJhtIe1HwQghpEt9fiQdAJsiP3WjtJvvhrTUD/cPQnZZLU5n6P8/q1N0XBv4XTqTgN+ZGwUA+PRgGmrkKkR62GBqpBtq5Uqu5mNCuAu2NMqKvDQ1HKYm+i3dNxy+jtyKenjYmuGhkfrBSmMqNYMnfjmLmyW18LQzwyfzqWC1s9B/VUJIl8ksqcV2zUj3UcFOuKLZ8UB6PgupGL+czuIee9ubt+k6IqHA6DbaUFcrrgg22ssWUrEIWaW1+OHkTQDA85NCIRQKsDkxGxV1CnjbmyMlv4qXFRke6IgJ4S56184pr+OKpl+cEgYzSfPzZ97fk4rDV9mC1S8W9aeC1U5EwQghpMt8eTQdaoYNRC7nUiDSW/y+ZAgYhsGnB9O452zNW9aXo7EYL1tU1OlvCwYAsUi7q+XLu+MBAGv3XoVCxWB4oCOGBzlCrWbwzbEMAGytyF86WRFREy3d39xxBTKlGoP87DEl0rXZ+9x+IQ/rD7HByztzoxHubt3i75G0HgUjhJAuUVwt4+aHPDjCn/dLhPRsA3ztsVtn+WTpmMA2FR77O1qgvoklnUs5bIBqbyGBs5UpruRVctt1n5/E1moculqI9OIaWEnFKKyqh1InK7JosA+CXPRbup9ML8H2C3kQCtitvM3Nn0nJr8QzmoLVh0b6Y0a0e+u+UdJqFIwQQrrEd8czIFOqEe1li3qFqkN3X5DOE+ttCwBY8kMS91wrZsnxTI92N5oRC3XVBhEb7x0AAHhnVwoYBpga5YZITXfXhu28w4McseuSNkCyMzfBsoRgveuq1Axe1ezOmT/Qu9kMR3mtHA99n4g6hQrDAx3x3MSQVnyHpK0oGCGEdLoamRLfn2DX/ZeM9MdPmuJD0vO9Ozcax68Xc4+fHh9scEdNc+YP9OK24hqSkl/FfR3jZYuT6SU4mFoEsVCAZyawAcGVvEocSyuBUABUy5S8rMgzE0NgY2Dp6Jf/MnElrxLWpmI8PaHpwEKlZvD4z2eRWVoLL3szfDI/lgpWuwj9VyaEdLqfT2eiok4BP0cLDPSzx4EU/aZZpGfyc7TAXV+e4h5He9m2qe17jJctrhVWG3zNRKdW5KM7Y8Aw2mF4dw70gp+jBQBgoyYrEulhgxPXS7hzwt2scecAb73rVtQq8N7uVABsv5LmClDf3Z2Ko9eK2Q6rC/vDjgpWuwwFI4SQTiVXqrnU+kMj/TH/y5PdfEekpaZGuuGPRO0OmunR7lwNR2usmR2JTw6kGX1dt0/JlEg37L5cgHNZ5TAzEeGJcew03aIqGf4+x+7EkinVvKzIKzMMt3T/cP9VlNUqEORsiYWDffRe17XtQi632+ZdKljtchSMEEI61dbzucirqIeTlRQ+9ua4WqD9dCyhFHiP9sS4IKzaqp0RM3+AV5uWaORKNbLLms+mLB8fDAGAd3ezWZH7h/vB2coUAPDDyZuQq9RwspIiTSfDMj3a3WBL92sFVdzS4KrpETBp4mftSl4lnv39AgDg4VH+mE4Fq12O/iUghHQatZrB55pPm9Oi3HDXV6d4r8tVNCCvJ9uSlI16Bfv/yNvevEUBRWPv3R7dZFZE112DvLE5KRvXi2pgZ26Ch0axjcnqFSqu14hMoeKyIqYmQqwwMn/mtW3JUKkZjA93wfAgR6PvWVYjx0ObzqBOocKIIEc8N5E6rHYHCkYIIZ3mQEohrhVWQyoW4lhacfMnkB5jbKgzNh67wT2+o78n3tFkLFojr7wOxdXNT/OdE+cJS6kYH+xlh+E9NiYQ1qZsQerWc7nc7qvKeiV3zqOjDbd033elEEevFUMiEuKlqcbnzyhVajzxy1lkldbB294cn8yPbfEEX9KxKBghhHSahjV4mVLNW54BADH9o9+jFVfLeLUccd52KK5u3XbsJ8YF4Yuj6S06dvEwX3x7PAP5lWy79oYaD4ZheEFRA087wy3dZUoVXt/ObuV9YIQffBwsjL5nQ8GqmYkIX9wdD1tzKljtLhSMEEI6xZmMUpy5WWb0dSUNyOvRdJuaDfS1x4YjLQsqGpiZiFBWI0eVTibDmP4+dvCyM8d6TYfXZeODudkyx9JKeNt+G/xvSpjB+TNf/3sDN0tq4WwlxaNjAo2+59bzudycpHdvj0KoKxWsdicKRgghnaIhK0J6v5mx7jhytahV54wLc+Y67jZn8TA/fHb4OirrlQhxscJtsR7ca1//qx8EDQ1wwKR++i3dCyrr8ammPuWFyaGwlIoNvl9ybiWe+4PtsLpkVACmRVHBanejYIQQ0uGuFlRh3xVtL5HB/vaQiOmfm95IIhJybdpbqqEpmUzZfIGym40por1s8I1mKea5SSFc3UZaYTUOpuoHQcZaur+9KwW1chVivW0xK8ZD73VAW7Bar1BjZLATnqUOqz0C/etACOlw63UGqvk7WiAhzAXyFvxiIj2HuWaq7ZhQJ/zcyo65Ia7WONQoiAh3M7wMsmiIDz49kAaZUo0BvnYYG+rMvfaNgVqRe4b4IMRVf/7M2cwybtvxqukREBqoSVKq1Hj857PILquDj4M5PrmTClZ7ijYFI+vWrYOvry9MTU0xaNAgnD59usnjP/zwQ4SEhMDMzAxeXl5YtmwZ6uvr23TDhJCeLbe8Dn9pmlMBwOeL4rHnckE33hFprWAXSy4Yadja2xqVjabySsRCg11bpWIhBvrac8s5L0wO5TIeZTVybE7K1jtn2Xj9+TNqNYNXNPNn5sZ7IsbL1uB9vb0rBf+mFcNcIsIXi/obbB9Pukerg5Fff/0Vy5cvx6pVq5CUlITo6GhMnDgRhYWG2zv/9NNPeOGFF7Bq1SpcuXIFX3/9NX799Ve8+OKL7b55QkjPc9v6Y9zXny2Ig0QsxOmM0m68I9KcIGdL3uOEMBcUV8thIRHhcCtrRUxEAr3AY1aMOyoaBSjs8x746ugNqBn2PeN9tM3LfjqdqRcIrZ7Vz+COly1nc3A+qxwWEhGem2R42eXvczn48iibaXnv9miD2RXSfVodjKxduxYPPvggFi9ejPDwcGzYsAHm5ubYuHGjweOPHz+OYcOG4a677oKvry8mTJiA+fPnN5tNIYT0PifTS1BQyfaUiHC3xuRIN2xuQ8dO0nVszU14M2MmRbgiv4LNXNfIVa2+nu52YABwtJRAqTK8cyrG2xa7LudDKAAviJAr1fj+RIbe8XcN1J8/Uy1T4u1dbP+Tx8cFcR1bdV3OrcDzm9kOq4+ODsCUSLcWfz+ka7QqGJHL5UhMTERCQoL2AkIhEhIScOLECYPnDB06FImJiVzwkZ6ejh07dmDKlClG30cmk6GyspL3hxDSs1XUKnDnF9q5M38/NgxqNYMtBlLtDRqWAkj3uXeoL+/xsvHB2HU5v8Ou/8joQGw5qx+QDvKzx1+a5+fEeSLYRZup2HExjwtqG/zy0GCD9R2fHkhDUZUMvg7mWDzMV+/10ho5Hvo+EfUKNUaHODU7uZd0j1YFI8XFxVCpVHBxceE97+Ligvx8wz+8d911F1577TUMHz4cJiYmCAgIwOjRo5tcplmzZg1sbGy4P15eXq25TUJIF1OpGTz8wxnu8aszIiAWscszxlqIPz0+GLVt+ORNOlbD/BaALQ69klfZYf9fgl0sITJSH+rvZIFTN0ohEQt5dSAMw3CDFRs4WEgw2N9B7xoZxTXcJN+Xp4VDKuYHt0qVGkt/SkJOOVuw+tE8KljtqTp9N82hQ4fw5ptvYv369UhKSsKWLVuwfft2rF692ug5K1asQEVFBfcnK6tle9UJId3jo31XcTJdWxeyYBCbTt+caDwrEu9r1+n3RZr22swIlNZou6o+OynUYBajrVZMDuMKS3W525gi6WY5ADYA0m3p/l9GGS7mVPCO3/r4cIPXf317MuQqdouu7i6cBm/tTMHx6yVUsNoLGO4IY4SjoyNEIhEKCviV8QUFBXB11W9AAwAvv/wyFi1ahAceeAAAEBkZiZqaGjz00EP43//+B6FQPx6SSqWQSqWtuTVCSDfZczkfH+sMQmvIitTKlfjnQq7Bcz66MwY/nmrddlHS8bJKa7mvx4Q4oVamxL/XWlewaszIYCejXXZtzCW4klcJK6kYj47md0lt3ORsoJ89PAzMnzl8tQj7rhRCLBRg5bRwvb4jf53NwVearMnaO6hgtadrVWZEIpEgPj4e+/fv555Tq9XYv38/hgwZYvCc2tpavYBDJGJTaQxD7aAJ6c2uF1Vj+W/nucf2FhLc0Z9dVt11Kd/ottCZMR7YfiGvS+6RGPbYmABudwkAfHpXHLaez0VHdOkXCth27Sv/vqT3mkgoQHYZGwQtGR0AOwvt7pjMklrsSeZ/2P1u8UC9ayhUaqzexmZc7hnqi8BGu4Eu5WgLVpeOCcSkflSw2tO1KjMCAMuXL8c999yD/v37Y+DAgfjwww9RU1ODxYsXAwDuvvtueHh4YM2aNQCA6dOnY+3atYiNjcWgQYOQlpaGl19+GdOnT+eCEkJI71MtU+LhTYmolmlnj9wzxBdmmqLUj/dfM3jenQO8sPW84YwJ6TpmOnNdzCUiWEjF+LODlmjmDfCGTKlCXoV+PymVmkFVvRLOVlLcN8yP99o3x29A9zPqXYO8uZ8nXd+fuIm0wmo4WEjwxLgg3msl1TI8vCkRMqUaY0KcDPYlIT1Pq4ORefPmoaioCCtXrkR+fj5iYmKwa9curqg1MzOTlwl56aWXIBAI8NJLLyEnJwdOTk6YPn063njjjY77LgghXYphGDzz23mk6WwJNTMR4e4h7KTVnPI6ZJTUGjz3iXFBGPrWgS65T2JYnLct3ttzlXv8wbwYXC2owuXc9u9ctJCIsHx8MP7358Umj3syIYgXaFTWK/Dbf/z6wDdm9dM7r6Rahg/3sff+zMQQ2Jhp60DYgtWzyCmvg5+jBT6kDqu9RquDEQBYunQpli5davC1Q4cO8d9ALMaqVauwatWqtrwVIaQHWn/oOnZdzodEJISJSIAauQp3DvTiUu73bDTeR+j3M8aLWknX8LAzR1JmOfd4VLATPjKSyWqtR8cEQq5S6y236PJztOCW8xr89l8Wr6/J/6aEGZw/896eq6iqVyLC3VrvGm/uSMGJ9BJYSET4YlE8L1AhPRvNpiGEtMqRq0V4b08qAGBuf0/UyFUQCwV4YIQ/APaTq27GRNcT44Lwwb6rBl8jXecfnWWyqZFukIiE+OxQ+6csu9uY4v7hfvjmX/2ZMrqenRgCE5H2149SpdbbzvvACL/Gp+FSTgV++Y8tfF41PYKX9diSlI2Nmlk2798RgyAXKljtTSgYIYS0WFZpLR7/+SwYBpg/0AsVtWyL7xnR7tyOh9mfHTd6/tnMsi65T9Jyc+M9cTK9pEOu9fzkUMhVam4XiyHRnjaY3I+/+3JvcgGvvuTj+bF6WRGGYfDqP5fBMMD0aHcM9NO2jr+UU4EVW9hlocfHBmJSP8O7O0nPRcEIIaRF6uQqPLQpERV1CkR72WLxMD/svMTuiHl4VAAA4GBKIW4aqRUBgKPXirvkXknLDQt0xIPfn2n+wGZEe9pgepQ7fj3ddF+o5yeF6gUa7+/lZ8umR+nvftl2IQ//ZZTB1ESIFZNDued1C1bHhTpjWQIVrPZGFIwQQprFMAxWbLmAK3mVcLSUYMPCOHx7PANqBhgb6owQVytUy5R49o/zzV+M9Bh39PeETKlq0wyaxl6aFg4Vw2DtXuPLcCOCHDE00JH33Pmsct6y3jf3DtALVurkKqzZcQUA8OjoQK5JmkKlxmOaDqv+jhb44M4YCKlgtVeiYIQQ0qxvjmXgr3O5EAkF+PSuOIiEAvyh6a66RJMVeW93Koqr5U1dhvQwM6I9OiQrMrmfKwb42mPHxTzUKbSBjUWjbbnPTwptfCrXD6TB6BAnvWM+O3wduRX18LA1w0Mj/bnn39h+BSfTS2EpFeOLu+NhbUoFq70VBSOEkCadTC/BG5pPpf+bEobB/g749lgG5Eo14rxtMcDXDok3y/CdgSmrpGeL9rLhtfFvCxORAC9MDgXDMPjiCL97aq1OYDIj2h39PGx4r+dV1CElv4p7/O1i/axIdlktPj/MFtf+b2oYTDX9UTYnZuPb4xkA2A6rgc5UsNqbUTBCCDEqr6IOS39KgkrNYFaMOxYP80VVvQKbTrLD1ZaMCoBcpcYLmy+AGir3LosG+zS5pNJS9w71hY8DO/ROt0+Jv5MF9zMhFgrw9AT9Wo75OlOeHS2lGBWsnxVZsyMFMqUag/3tucLXC9nlWKHpY/LEuCBMiKCC1d6OghFCiEEypQpLfkhCcbUc4W7WWDM7CgKBAD+fzkRVvRKBzpZICHPBZ4eu45qRrbyk5xoW6IBvjmW06xq25iZYOobtgPrVUX5WpKhSxn191yBv+DhY8F4vrZHzGuO9e3uUXlbkxPUSbL+YB6GA3corEAhQrClYlSvVSAhzxlONOrCS3omCEUKIQa9svYzzWeWwMTPB54viYSYRQaZUcf0gHhrpj+tF1Vh3ME3vXDuajtrj6NZ1ioQCHOmAnU1PjQuCjbkJrhdVY9+VQu75CHdrVGnGBJiaCPH4WP2AYeKHR7ivg5wtMbpRVkSlZrfyAmwwE+ZmDYVKjUd/TEJeRT38nSywdh4VrPYVFIwQQvT8fDoTP5/OgkDA9nzwsjcHAPx9NhcFlTK4WptiRrQ7nt98AQqV/vpMmab/COk5dOs1EsKc8VM7pyb7O1pgwWC2/X/jhmW1OrtzHhrhDycr/hT27LJaFFVpMycvGui2+vPpTKTkV8HGzARPjw8BwBasnr6hKVhd1J8KVvsQCkYIITxnM8uw6m/2E+kzE0K4dXy1msGGI2wh4f3D/fDrf1m8luINrE3bNGWCdKIRQY4oqNQ2Fdt92Xir9pZaMSUMJiIhSqplvMAm1NUKN4prAAASsRAP6ux+aTDxA21WJMDJQm8HTUWtAu9ruvwuSwiCnYUEv5/J4gpWP5gXozepl/RuFIwQQjhFVTI88kMS5Co1JkW44tHRAdxre68UIL2oBtamYowOccI7u1IMXoMKWXue6VHuKNCp4WivIf4OSAhzBgD8cJKfYdGdB/PCpFBYNcpenEov4c+gmaqfFflg31WU1SoQ7GKJhYN9cD6rHP/76xIA4KmEIIwPd+mw74X0DBSMEEIAaBpI/ZiE/Mp6BDpb4r07orlfEgzDYINme+WiIT54c8cVo42yGmoFSM9wW6wHLuSUd9j1BAJtAFGvUPFmDfk4mOPUDe1W4QWDvXnnqtQM7vxSdweNBGNCnHnHXC2o4nZrrZoegbJaBVewOj7cBU8YqD8hvR8FI4QQAJr1+IxSWEnF+HxRPCyl2uWW0zdKcTazHBKxEPYWUhxMLTJ4DYmI/knpaV6cEobf/uu4Sclz4jy5+pO/zubwXvNz1O6YWXtHNKRiftOzn09n8jJnb8/h76BhGAav/ZMMlZrBhHAXDPC15wLkACcLrL0jmgpW+yj6l4MQgj/P6jSQmheDACf+enxDViQhzNng7pkGcpW60+6RtN4QfweczSzrsP8vZiYiPDOBLSZVqxm8vv0K95qNmQkO6QSpM2M8eOdW1CrwkmappcHYUH5WZG9yAf5NK4ZELMRLU8Px+vZkLkD+4u7+eks+pO+gYISQW9zlXO3E0yfGBuqtx6fkV+JgahGEAqCgUobSGmr53ltsun8g/myUvWiPh0b6w9XGFABw+GoRqnWW5MLctB1QN97bHyKhfh2Irq/u7s/LitQrVFxw8+AIP5y8UYLvT7DLNR8YCJBJ30Jl74Tcwspq5Hh4UyLqFWqMDnHCkwYmnn5+mG1mZSEVI/FmWVffImmHGrkKOy/ld8i1nK2keHiUdmfMa9uSea/rtpVvXAeSml/FZd4ajAvjH/P1vzeQWVoLF2sphgU44t5v/gMALB8fjAQqWO3zKDNCyC1KpWbwxC9nkV1WBx8Hc3w0L1bv02x2WS22ns8FAFTV8wtTTUS0dt+T7Vk2Ejsu5nXY9Z6ZGAJzCfv59VJOBbd9FwBCXLRZkR/uH6RfB7LtMu9aGxbG8Y4pqKznlv8eGO6P5b+dh1ylxoRwFywdE9hh3wPpuSgYIeQW9d6eVBy9VgwzExE+XxQPGwNdU786egMqtf5eXZFQgEF+Ds2+h7emWRrpesEuVvgzqWOWaMLdrDEnzpN7vLpRViS1QDvsbniQI++13ZcLcCythPfcxEazZN7emYJauQqRHjbYdTmf29FFHVZvHRSMEHIL2nkxD58dYotS354bhVBXa71jymrk+PW/LIPnPzDCj/cLyBBTEyEyS2ubPIZ0jv4+dsgqrcXpjPZN5G3w0tQwLmuWV1HH277rYCHhvt54b3/eeWwdCD9weXcufwdNUmYZtmjqWoQCIPFmGaxMxfii0Y4u0rdRMELILeZaQRWe+f08ALZQcEa0u8HjvjuRgTqFfi+RACcLxHvb8dp5GzIujNb5u8tbcyLx97mOyYokhDljaKA22/HmDn6zuxKdguaxofz/518eSUd2WR3vubnx2gyLWs3g1a3aJZzz2RUQCICP7oyBPxWs3lIoGCHkFlJZzzaQqpGrMDTAAc9PCjV4XK1cie8aFRwCbMOrt+dE4Z8LTdcieNiaIbOEsiLdJcDJEhsbTeTt56Gf/WqJFVPCuK+rZUr8o6khauy926N5j/Mq6rBek33jrjU5lJcV2ZyUjfPZFbxjlicE6wU1pO+jYISQW4RazWD5r+eRXlwDdxtTfDI/FmIjTcp++y/L4LC7e4b4IsjFyugvpAYLB/vgYk5Fk8eQzrFgkDcu5lTwtmALBMClnMpWX+ueIT68LbUf7r1q9Ng5cfy+Imt2pOhl1h4cod2NU1WvwNu7UnmvT4xwwWNUsHpLomCEkFvEpwfTsO9KASRiITYsioeDpdTgcQqVGl8cSdd73tPODM9ODMH2FmRFSms6bg4KaZ3b+3vhuT8u8J5bbmDLdkvobvVWqtT4qtF03gbPTQrhZTz+yyjldmE1uHeoL68Y9dODaSiu1v6cBDlb4v07qGD1VkXBCCG3gIMphVzTqddn9UOUp63RY7dfyENuRb3e82tmR8JCKsbmpKZbiy8fH4y/zjWdOSGdJ9DZEin52uJiD1szvN9ERsOY5yaFwF6nOPWbRss+uu4d6st9rVIzeGXrZb1jVk4L576+UVyDjTqBjZUp22GVClZvXRSMENLHZRTX4IlfzoJhgIWDvXFHfy+jxzIMg1f+0f9Fcnu8J0YEOeFGcU2Tjc9crU1hY2bSbHEr6RyLBvtg0Bv7eM+FuFoZObpp9w/3475mGAZv7Lhi8Li7h/hw/UcA4LczWbicy18SGh/uwst4vL4tGQoVu2VcIAA+nh/Lm2tDbj0UjBDSh9XIlHh4UyKq6pWI97HDymkRTR5/6GoRyhvVijhZSfHSVPZT7ebEprMiS8cG4s8O2sVBWs/HwVxvmvKBlMJWX+fFKaG8IXeNl1x06daBVNQp8O7uVL1jPpkfy319KLUQ+3Xu6ZkJIXodW8mth4IRQvoohmHw3OYLSC2ogpOVFOsXxEEibvqv/GJNC25dr8/qBxtzE6jVDD5tYkieo6UEE8JdsDe5oN33TtpGd3Bde+gGGADw5C/nDB6XEOYML53Gdh/uu4rSGjmcrbT1SOFu1jA1YQMbhUqNx38+y702uZ8rHh0d0CH3THo3CkYI6aO+OnoD2y/kQSwU4LMFcXCxNm3y+IOp+p+gp0a5cd0yd19uesbJ/cP9sSe5AHIlTe7tzaZGufGKUY+lFRs99gGdoOVaQRU32K5QZ5nu+/sHcl9/dfQGN1bAzcYU790ezXsvcuuiYISQPuh4WjHW7GQ/Ja+aHo7+vvbNntM4K2JrboJXpmuXdR75MYn7Wtxox4OVqRgLB3s3W9xKer51d8XxHi/46pTB40JdrTDIj/25YufPJEOlZjDYX/uzZmNmAkfNrq3iahne3qVtmPbzg4NhQQWrRIOCEUL6mJzyOiz9+SzUDDAnzhMLB/s0e873JzL0nls1PRxOmnT7iev82SLKRvNq7h7ig8IqGc5mlrf5vknPc6mJXjGLh/lyWY29yQU4eq0YEpEQap3E2G8PD+G+7v+6trD2m3sHwJcKVokOCkYI6UPqFSos2ZSI0ho5+nlY443b+jWbBq+VK7Hyb/4OmjEhTpgVwzaxUqsZzP/yJPda42m9QgGweJhfs8WtpPu0dKfKxVcm8B5P++Rfg8fZmZtgpubng50/w2bh5g3w4s3DadjJoxvsjg11xphQKlglfBSMENJHMAyDl/66hIs5FbC3kGDDwniucLApL2y+yHtsKRXjjdsiuSDml0bD8hq2ZDZYONgHduYS/HmWdtH0VDeKa1p0nJWpdnJzU+fMH+jN/Wx9/e8NZJbWwsVaCjWj/dn4ZvEAAEB+RT0v2P36Hv4wPUIACkYI6TN+OHkTfyRmQygAPp0fC08782bPOZ9Vrrdt84XJoXC3NQMAlNbI8eKfFw2dynlwhD+OXy9GnoFGaaT7BTq3bODcF4vieY8nfnDE4HEioYBb+suvqMc6zQ6rpWMC8eOpTO640cFOkClVGLxmP/fcvuWjqGCVGETBCCF9wJmMUrz6Dzuq/YXJobwpq8YoVGo8qlOUCgCD/Oxx10Bv7vE7u1Ian8YzO9YDXvbmtETTg1Vrdq80Z4Jm1xQAZJXWQq4yvCtqUoQrF6y+tfMKauUqxHnborhaOwvnjdv6AQCe/V3bln5uvGeLAyNy66FghJBerrCyHo/8mASlmsHUKDe9HhHGfHEkHTnl2vHuUrEQb8+J4jplJmWW6S3RNLZkdACq6hXY1cy2X9I9fBzMkV/ZfMZKdwcMANz5xUkjRwL3DvMFACTeLMVf53IhEADPTAzBR/uvccfMifPEj6cyeVm312f1a+Xdk1sJBSOE9GJypRqP/JiEoioZQlys8M6cqBalwa8XVet1ynxmQgi3w0GlZrDy70tNXiPczRrBLlbYcTEP9QrqLdITqRrtejJm470DuK+zy2p5QaquCHdr9Pexg1rN4JWtbCbujngvJOmMCHhsTAAu5VTgpb+0Pz+fLYhrUf0SuXVRMEJIL7Z6WzISb5bBylSMzxfFt6hvg1rNYMUWfh1IuJs1Fms+8QLAT6duNjty/nVNKn5zIhWu9kRWUjGyywwHFY3pzpbR7ZDa2OJhfhAIBPg9MQsXcypgJRXjkdEBeG+PdhDfpAg3LPlBu/w32N8ek/q5GrocIRwKRgjppX4/k4VNJ29CIAA+ujOmxX0bfvkvC6dvlPKe+2BeDMQi9p+D4mqZwfkijcV52+FmSQ1OZ5SCahJ7HnNpyzIRvzw0mPs6q7TWaK8YBwsJpkW5obJeO3/myYQgbL+Yxx0zNdINL/99CcXV2g6sq6ZHUNEqaRYFI4T0Qheyy/E/TRr8qXHBGBvq0qLz8ivqsabR9NWHRvrzJru+tTMFlc0UPX62gO3SuTmJzYrQr5qeR7egtCmD/R24r1dt1Z/Y3OCuQex23o/3XUNxtRz+ThaYG+/JC1wzS2txLquce7xosA/C3Kxbf/PklkPBCCG9TEm1DEs2JUKuVCMhzAWPjw1s0XkMw+Dlvy+hSsYPNJ6ZEMJ9fSajFH9odsZYSIx/sp7UzxVqNYMtmvbvLSxNIJ3MVTN/yNpU3KJ6kTlxntzXWaW1Rif8ijXbedMKq/Ht8QwAwMpp4bytvABwUadjq42ZCZaPD27tt0BuURSMENKLKDVTT3Mr6uHvaIG186K53S/N2XUpX2+i7jf3DuAm+SpVaq7ocEyIk94o+gZ3DvCCQCDA6YxSZJfVQdrMJGDSdTzt2C23jdv1G9OwBRcA3ttjfGluSqQbnK2keG1bMpRqBuNCndHf1x4f6+ygaWz5+GDYWUhaeOfkVkf/ihDSi7yzOxXHr5fAXCLC54viYa3TMbMpFbUKrDSQgtdty73p5E2k5FfBxswEwS5Wesc2eG0m+wusIYOi23WTdJ/x4S5IzGR3tdQaCSQba9jhklVai7/P5Ro97t5hvth/pRBHrhZBIhLi5Wnh+P5EBmRGJjSHuFhhwSBvg68RYggFI4T0Ev+cz8UXR9IBAO/dHo2gJgKGxt7ccQVFOmPdAWDvspHc14VV9Vir2RHx3KQQo/1FbMxMIBELUSNTYoemcLFxe3jSPaI8bMAwgFkLt9BufkQ7xK6pDEe0pw0i3K2xeju7lfe+4X5wspJyP4sNRDoZupXTw7mCaEJagn5aCOkFUvIr8dwfbDfLJaMCMCXSrcXnHk8rxq9n+MGFi7WUF8ys2ZGCKplS84vHBhV1CoPX2nT/QADskk+tXMX7BUS6z7BAB2y7wAaHdYqWZUXifdhGZ1mltfi9iQ669w7zxcZ/M3CzpBbOVlIsHRuITSdvorxW+zMiEQm5JaKJES4Y1oIOwIToomCEkB6uolaBhzclok6hwoggRzw7MaT5kzTq5CqsMDBbRrfJ1an0Evx5NgcCAbB6Vj+uKNWQKE9bAMBmzTEtbapFOteIICekFlS1+PiFg7VLKA2zZQxxtJSiv489Pj3AZk6enxQKAaCXFblzoBdultRCIhbipanhrbt5QkDBCCE9mlrN4Klfz+JmSS087czw8Z2xrcpGfLj/Km6W1PKei/exQ4S7DQB2Ps3Lmk6rdw30RqirNb4/cdPgtRp2RmSX1eJEeklbvh3SCSylYhS0oOW7rpensQFDVmltky3/Fw72xgf7rqJGrkKMly1ui/XADydvorRGu214/kBvHExld+E8NMIfXvbND2gkpDEKRgjpwT7cdxUHU4sgFQuxYWF8q3YnXMqpwFdHb+g9//QE7XbL745n4GpBNewtJHh2YojRrZ0A++kXAP5MygHVrPYc06LcsP1CXvMHapiIBJCK2bqSTw8Yz4qYiAQIc7PGFk0vmVdmRKBeqcKanfzhiZ52ZsgqrYOLtRSPjA5ow3dACAUjhPRYe5ML8LHml8VbcyLRz8OmxecqVGo898cFvWWUaE8bDNE0ucqvqMcHe9mi1RcmhcLWXIIP913VuxYAxHjZwtnKFAzDYMtZav/ek9hbSFDYqDi5KX8sGQoAyCyp1asl0jUl0g3rNUs4c+M9EeNlqxfcfjAvmlvmWTE5rEXjCAgxhIIRQnqg60XVWP7rOQDAvUN9cVusZ9MnNPL1vzeQnKc/W2bJqACuNfcbO66gRq5CrLct5sZ7oqRahpR8w3UH9w/3A8BO8r1RXNOqeyGdx8lKanSonTHRXrYAmq4VAQArUzHOZ1fAUirGc5NCUCtXYu1ebbDqZCXFkavFqJWrEO9jh5kx7q2+f0IaUDBCSA9TLVPi4U2JqJIpMdDXHv+bGtaq828U13AZD11+jhaYEMEOLDueVox/zudCKABWz+wHoVCAT5pI2Y8PZ9vN/9HErgvS9caEOOk1smtKQ1DZXFYk2MUSuy6x131iXCCcrUwxfu0R3jHTo9y5wudV08Np/gxpFwpGCOlBGIbBs7+fR1phNVyspfh0QSxMWtGvgWEYrNhywWAzqodG+kMkFECu1BatLhrswy3/NLT5buzOAV4wNRGhXqHCtvMtr00gnU8iFra4wRkAvDA5FADw6UHjfUUAoKpeieJqGfwdLXDvUD8cTC3kZWDcbExxUlPEfHu8J7fLipC2omCEkB7ks8PXsfNSPkxEAny2MB7OVqatOv+3M1k4mV6q97yTlRS3xXoAADYeu4HrRTVwtJRguWYuzW9N7KiYrZlfsie5QG+uDek+bjamejulmmIlFcNEJERmSS1+O9N0hiuvgt2d8/K0cBRVy7D4m//41zIVIzmvEpZSMZ6dGNr6myekEQpGCOkhjlwtwnuaCaivzuiHOG+7Vp1fWFmP17dfMfjafcP8YGoiQm55HT7ax34qXjE5DDZmJmAYBs9tvmDwPC97M/T3Ye+Dlmh6loF+9jiWVtzi4395eDCA5rMiDcaEOGFIgAPu3Xha77UMTRD0xLhAOFlJW3wPhBhDwQghPUBWaS0e//ks1Ay7LHJXG+Z6rNp6GVX1+pkLK6kYCzRNrl7fnow6hQoDfO0wO47NlDRVc3BbrCeEQgHyK+rx77WiVt8T6TwM07ppyRHuNsgsqcXmpOZ3Q5mIBHh5Wjhe/PMirhVW670uV6q5JRxCOgIFI4R0szq5Cg9vSkRFnQLRXrZ4dWZEq6+x61I+dl7K5x6bS0Rws2GXeO4a7A1rUxMcuVqEHRfzIRIK8NrMfhAIBFCpGTy0KdHodWdrlnb+PJvTql98pHN525vjepF+kGDMo5r+H58cuNairrmLh/nhUGoR12PEkJenhXMTnwlprzb9JK1btw6+vr4wNTXFoEGDcPq0fhpPV3l5OR577DG4ublBKpUiODgYO3bsaNMNE9KXMAyDF/+8iOS8SjhYSLBhYRzXkKqlKuoUWKkpSG0wLswFeRX1kIiEuH+YH2RKFVZppvbeM8QXYW7WAIDNTSy9xPvYwdfRAgzDcO3fSc8Q7GKFy7n6W7eNWT4+GDdLalrUI8bRUooBvvZ4Y4fhJT8AGB3ixJv4TEh7tbpDza+//orly5djw4YNGDRoED788ENMnDgRqampcHbW/+GUy+UYP348nJ2d8ccff8DDwwM3b96Era1tR9w/Ib3at8cz8OfZHIiEAqxbEAc3G7NWX+OtnSm8plf9fexQqyk0nR3nAWdrU6w7mIYbxTVwspLiqfFBANiMjLFakYZzAeBCdgXSDKTqSfdRqvV3SxnjYCGBWCTEpwfSWpQVWTTYB89v1m+Y10AsFHDt5AnpKK0ORtauXYsHH3wQixcvBgBs2LAB27dvx8aNG/HCCy/oHb9x40aUlpbi+PHjMDExAQD4+vq2764J6QNOpZdwBacvTgnDYE1n1NY4mV6Cn09nco8lYiEeGOGPJT8kQiBgt/NmldbiE82gs5emhsHalP17uPGYfqt47joiIaZFsk2sqHC1Z/FztECqkeZ0hvz80OAWZ0VCXa2w+3I+b/ZMY4uH+SLAybLF709IS7RqmUYulyMxMREJCQnaCwiFSEhIwIkTJwyes3XrVgwZMgSPPfYYXFxc0K9fP7z55ptQqYzvjZfJZKisrOT9IaQvyauow2M/JUGlZjAzxh33DfNt9TXqFSqs2MKfyPvkuCDsu8IWpE4Md4W/kyVWb0tGvUKNwf72mBHNBhilNXK8q9m5Y0hCuDNszE0gU6qw9Xxuq++NdB4nKym39bYlgl2sWpwVkSnVSM6rhIXE8FKho6UEj48LavF7E9JSrQpGiouLoVKp4OLiwnvexcUF+fn5Bs9JT0/HH3/8AZVKhR07duDll1/G+++/j9dff93o+6xZswY2NjbcHy8vr9bcJiE9mkypwiM/JKG4Wo4wN2u8NTuqTd0rP95/jdeaPcLdGjOi3fH3OfYT8JLRATiYUog9yQUQ6xStAuAyJcbM1rSfP3ClEBV1ilbfG+k8ClXLl2ieSghCRnHLsiIA271XJBRgeJCjwdefnRjCZdYI6UidXgqtVqvh7OyML774AvHx8Zg3bx7+97//YcOGDUbPWbFiBSoqKrg/WVnGGzIR0tu8svUyzmWVw8bMBJ8vjIeZkU+hTbmcW4HPj6Rzj8VCAd6ZG4XvjmdAoWIw2N8eoa5WXNHqfcP9EOxiBYBtBf7NsQyj17a3kGBUiBMAWqLpaXwdzHE2s7zFxz8+NgifHmxZVqTBsxNDDL5HpIcNbo+nD4akc7SqZsTR0REikQgFBfy+BAUFBXB1dTV4jpubG0xMTCASaf/BDQsLQ35+PuRyOSQS/ZHoUqkUUik10iF9z8+nM/Hz6SwIBMDH82Ph7WDe6msoVWq8sPki7xfMklEB8LQ15+pHlowKwOeH05FZWgsXayme0Emtv7M7Re+aumZEu8NEJERRlQyHrlJvkZ6kNaMB3G1MkVVaiz8bZUWiPW1wPrvC4Dmz4zxgKhYanAK8ano4hEKaP0M6R6syIxKJBPHx8di/fz/3nFqtxv79+zFkyBCD5wwbNgxpaWlQ61R/X716FW5ubgYDEUL6qrOZZVj1N5upeGZCCEYFO7XpOhuP3cDFHO0vkwAnCywdG4hNJzNQI1chzM0afo4WWH+IHXz38rRwWGpGu5/PKse2C03Pl5mjaf/+97mcVn2iJp3PUAMyYzY9MMhgVsTYluBIDxusmh6Bzw5f13ttZow7+vvat+5mCWmFVi/TLF++HF9++SW+++47XLlyBY888ghqamq43TV33303VqxYwR3/yCOPoLS0FE8++SSuXr2K7du3480338Rjjz3Wcd8FIT1cUZUMj/yQBLlKjYkRLlwTqta6WVLDG+MuEADvzI0GAG7pZckof7z2TzJkSjWGBzpiaqQbALanyZqdxntHAECQsyX6ebA9SGiJpmcxM2ndcp5IINDLitwe7wmlgQDTwUKCzxfF4+9zOSio1M+KNAzYI6SztHpr77x581BUVISVK1ciPz8fMTEx2LVrF1fUmpmZCaFQG+N4eXlh9+7dWLZsGaKiouDh4YEnn3wSzz//fMd9F4T0YAqVGo/9lIT8ynoEOFngvduj21Sw2tAgrV6hzTLeO9QX8T522HTyJkpq5PC0M4NULMT+lEKYiAR4ZUYE916HUosMDtHTNTvOEwKBAJdzK5DSiu2jpONMjXTD9ov62as6Rcun8z4/KRSfGNhBc/Sa/iwbsabHjYOlBOsP6mdFnh4f3Kb+N4S0RquDEQBYunQpli5davC1Q4cO6T03ZMgQnDx5si1vRUiv9+aOKzh9oxSWUjG+uLs/rNq4G+H3xGwcSyvhHnvameHZiSFQqtT4UlPMumiwD1ZvY7MfD4zwR6Az2w9CpW4+KyIQALNi2a2/hn4pka7REYPnJka44L09/K3bz04MMbid+6WpbI+bTScykF9ZD0upGNU605kfHOnf7vshpDk0WICQTvTn2Wxu+WTtHdFtbhZVWFWPNxpN5H1rdhTMJWLsvJSPzNJa2FtIUFQlQ055HdxtTPH42EDu2M1J2bha0HS9wdAAB7jZmEGhUhv8ZE4636b7B3J9YtrKz9EC6w5e18uK/GsgKzInzhP3DPWFTKnC+kNsAKqbgflsQRxMW7k8REhbUDBCSCe5nFvBNSV7fGwgJkQY3nHWEq/+k8zr9zGvvxeGBzmCYRhs0BQcjgp2wvcnbgIAVk4Ph7mETXzWyVV4f4/xBmcNGnqLPPXruTbfJ2kfewsJssvq2nWNV2dE4K9z/FqR92+Pxon0Et5zDhYSvHEb23vmtzPZyKuoh5OVlBfETOrX9p9ZQlqDghFCOkF5rRwPb0pEvUKN0SFOeCohuM3X2ptcgO06O2BcrKV4cWoYAODftGJczq2EmYkI6UXVkKvUGBnshIk6gc83x28YLErUZWYiwqR+riiqkvHei3SdCeEu2H25fVkRAPjLwC6oC9nlesdte2I4TE1EbFbkILvzqkhnS+/fjw1rU20TIW1BwQghHUylZvD4z2eRXVYHb3tzfDQvFqI29meorFfgpb/4Ld9fnxUJGzO27qQhK2JvIcH57ApIREK8qlO0Wlojx7oDac2+z+R+rrCQivH4z0ltuk/Sfi9MDsWey4Y7WbfUosE++KvRDppP5sdicxL/udUzI7ii1N81WRFHS36tSrSXbbvuhZDWoGCEkA72/p5UHL1WDDMTET5fFA8b87a3z35nVwovqzEtyg3jw9mdaxezK7iC1pxyNrX/8Ch/+DlacMd/eiANNfLmd2HMjvPEjot5ze62IZ1HLBS2ewdTtUyJxjt3y2vlvIJUAFg0xBcAeFmR4mrtz9meZSPbdR+EtBYFI4R0oF2X8rhCwLfnRiHMzbrN1zp9oxQ/nNRO5LUzN8GrMyK4xxsaNafytDPDo6O1RauZJbX49rjxybwNXK1NEepmhZf/utTmeyXtMz3aHbvbmRWRiIXcXKIGb8+JxBs7+IXPX97dn/v6j8Rs5FbUQyrm/ypoGB1ASFehYISQDnKtoApP/3YeAPDAcD9uQm5b1CtUeGHLBd5zr8yIgIMmlZ5RXIOdl/i1HaumR/Dm3Ly7J5X7lGxqYvyv+qxYD6zeloySJsbGk841Lcqt3cFInLetXlbE1lzC60sDAGNDnQEAcqWa28ItU2qP2bp0WLvug5C2oGCEkA5QWa/Aw5sSUSNXYYi/Q7s7Vn56IA3pRdqJvGNDnXnBzRdH03m/eMaGOiMhzJl7fCG7HP+cz+UeO1uZGn0vazMx/j6Xa/R10vmCXaxw5mZZu65x+gZ/iW35+GA8vCmR99xLU8O4+qU/ErO55T1dUZ627boPQtqCghFC2kmtZrD81/NIL66Bu40pPr0rFuJWDDRr7EpeJW8Jxkoq5rZgAmzPEd1W7RKxEK9M1xatMgyDNTu0w/AcLCTILK01+F7e9ub4tokJvqTzDfS1x4nrJc0f2IzGWZGMkhreY7FQgNv7s1N35Uo11h3UL2zWXcIhpCtRMEJIO607mIZ9VwogEQuxYVE8t5TSFio1gxc2X+DND1kxJYzXjvvbYxmQ66TVHx0dwJv+e+hqEa+nxKxYD6Pvl1laa3BCK+k6o0KcsCe5fUs0jXfgetubY0ujHTTzB3pzu7A2J+lnRcRCAcaFOoOQ7kDBCCHtcDC1EGv3sYPrXp/Zr90p7m+O3eCNdx/i74D5A724x1X1Cmw6eZN77G1vjiWjtEP3VGoGb+lkRZyspLhZYjgrQnqGeB87HEotatc1mEZZEUOZsHuG+gIwnhV5eVo4hG3cgk5Ie1EwQkgbZRTX4Mmfz4JhgAWDvHHHAK/mT2pCVmkt3t+jnchraiLEW3MieY2nfj6diap67TbNV2dE8Np1b0nKRmqBdnvoY6MD2t1enHQea1MxCirrO/19RgY7cXOKtiRl63V5NREJMDfes9PvgxBjKBghpA1q5Uos+SERlfVKxHnbYtX0iOZPakLDRF7duSDPTAiBj4O2Z4hMqcJXR7VbdSeEu2CMTlq9XqHC2r3aYMbNxhT+bZyFQ7pGQpgL9iR3frC4WJMVUajU+NRAVuS+YX6wkLZpbiohHYKCEUJaiWEYPPfHBaTkV8HJSorPFsZDIm7fX6UtSTm88e4xXrZYPMyPd8zfZ3O5+g6RUICXp4XzXv/mWAbyKrSfsh8bE4i7N55u132RzjXY36HT2+/7OVpgVLATAMNZEaFAu4RDSHehYISQVvrq6A1su5AHsVCA9Qvi4GJtfNtsSxRXy7B6ezL32EQkwDtzo3gt5NVqBu/v1Q67W5YQBC97bdFqaY2c66QJAB62ZpgZ0/Y+J6RrdEWNxj1DfCAUCoxmRaZEusHd1szAmYR0HQpGCGmF42nFWLOT7Wi5cno4Bvjat/uar/2TjPJa7UTepWOC9Dpg7r1SwLWFd7KS4sGR/rzXPz2Qhiqdlt9PjAvEoz/SnJmeLNLDBifT27+ltymWUjHmaGpB/kzKQVapfl+R+4f76T1HSFejYISQFsopr8PSn89CzQBz4jyxaLBPu695IKUAW3Wak4W6WuGR0QG8YxiGwVO/nOMev397NKRibdFqVmktNp3M4B77OJhjdpwnb9mH9Dwjghx5/WI6w9x4T1iZmhjNisR52yLW265T74GQlqBghJAWqFeo8MgPiSitkaOfhzWvCVlbVcuU+N+f2nkwQgHwztwovfqTUzdKucLWgb72GKlZ/2/w7u5UKFTavZ1PjgvCjoudW4dA2q+lBaMt/TGzazSQUaBTC/LX2RyD233vH+6v9xwh3YHKpwlpBsMwePmvS7iQXQE7cxNsWBjP207bVu/sSuEVnD440t9gn5I7vzjJff3hnTG81y5mV/AyK/5OFpgZ44GAF3dwzwkF+t05Sffb1sLCVQGAlvzvK9NZ6gOAMSHO8HO0gNJIVsTD1gwTI1xadA+EdDbKjBDSjB9OZeL3xGwIBcAn8+PgaWfe/EnNOJNRymte5udogWUJwXrH6c4bmT/Qi1doyDAMV7/S4KmEYCTnVvKeMxSIeNiaQdKOlvWkfSZGuOBKXmXzB6LtgeS9DVmRc7kGG9/dO9S3XWMLCOlI9JNISBMSb5bitX8uAwCenxSK4UGO7b6mTKnCC1su8rpmvjU70mC25Y7PT3BfvzqjH++1w1eLcFxnpkmwiyWmRbrh/u/+a/Ye4nzsIFepmz2OdI6T6aXNHwQ2aGyLACcLjAhyhFKlxicHrnHPm4jYNR8LiQjzBravSR8hHYmCEUKMKKysx5IfkqBQMZga5YaHRnbM+vq6g9eRVljNPV402AeD/B30jtujM1J+xeRQXi2JSs3grZ0pvOOXJQQjvbim2Vkz40Kdu6TrJzGuok7R/EGAwam6LXHvUF8IBAL83Sgr0jDj6Pb+XrA2NTF2OiFdjoIRQgyQK9V45MckFFXJEOJihXfmRLW7YBUAUvOr8Nkh7fq9u40pnp8cqnecWs3gIZ3x7w+P4u+w+fNsDlLytW3fw92sMTHClddrxBCxUICFQ3z0xs2TnsfeQtKm86xMxZgd5wmlSs3ryDs21BmZpbUQCIDFw3w76C4J6RgUjBBiwOvbk5F4swxWpmJsWBTfIa2yVWoGz2++wNv58ubsSFgauPaXR9O5r9+7PZr3Wr1Chff3pPKeWzY+GAVV9dhylj+ptbFFQ3xwLrO8DXdPupqtedsyF/P6e8FCKsbW87lcZsVcIuJ+hseHufDGDBDSE1AwQkgjfyRm4/sTbHHph/Ni4OfYMf9wf38iA+eyyrnHs+M8MDpEf2R7ea0ca3SWYObEefBeb9z2PcrTBglhzvjyyA00xUoqxhNjg7DlbOf2tiAdI72optXnCATA3UN8oVSpsWrrZe75J8cFcct+1OSM9EQUjBCi42J2BV788yIA4KmEIIwL65itj9lltXh3tzab4WgpwcpGs2UavPaPtjX8h/NieMtDZTVyrD/EX4pZNj4YZbUKbDzWdDDyzMQQpBZUGezCSXqWCHdro69ZSIxvKx8X6gJvB3P8cyGXm+4c4GQBmVINmVKNfh7WGOjX/q7BhHQ0CkYI0SiplmHJD4mQK9VICHPGE2ODOuS6DMPgpb8uoVauncj72sx+sDXXrwm4kF3OW2qZFuXGe/3Tg2ncLxmA7aA5OtgJ3x7PaPY+7hrkjc2d3PGTdIzSGrnB5wOdLVGj83MkajTbZvEwX6jUDJb9ep577vVZkfhBs438/uF+HVL7REhHo2CEEABKlRqP/3wWOeV18HO0wNp5MR02xOzvc7k4lFrEPZ4U4YopkW56x6nUDFZsucg9Xj2rH68PRFZpLTaduMk75+kJIaiVq/BdM8HIt4sHQKFS4+9zuU0eR7qfr4M5bxlOl+6PpLe9ObdVF2C3dg8NcMDW89pgdny4C/Iq6lBYJYOzlRRTI2l4IumZKBghBMA7u1Nx/HoJzCUifL4ovsO2PZZUy/DqP9q1exszE7w2K8Lgsb/+l4XLOg3LbtcMOGvw3p5UXm+QgX72GBrggJ9PZza7VXR0iDN2Xcqn3iK9gKWp4WLpWTHuuFqg3RIe6WmDeoX2/+e9Q/2gZsDLiqye2Q9f/8su3909xEdv1AAhPQX9ZJJb3rYLufjiCLt75b3bo/Um5rbH6m3JvDbdL08Lh7OVqd5xpTVyvL1LW7T6zIRgXhO0SzkVelmNp8cHQ65S83beGPLjA4MAAJuTaImmN7iUY7gza6XO8tzUKDek6mzttjEzwaxYd/x2Jot7bsmoAGSU1OBybiWkYiHuGtT+wY6EdBYKRsgtLTW/Cs/9cQEA+4+3oeWTtjqYWoi/dAKIkcFOejtjGryzK4XLbkjFQiwa7Mu9xjAM3tzBb/s+PNARg/wd8GdSDgoqm25yNizQETnldTiW1rnj6kn7RXnaGHz+2YkhOJBSyD0eG+LMa5x35wAvSMUi3jLfUwlBXFZkdpxnm/uWENIVKBght6yKOgUe3nQGtXIVhgc64pkJ+rNh2qpGpsRLOhN5LSQivGlk0m9SZhl++U/7iXbRYB/Y6PSYaNz2HWB30KjUDD4/0nRWZNV0dsfOn5QV6RWyywzvdNLd5rt8fDD2XSngHgsFbP+YDYevc8+9d3s08ivquePuH+7bOTdMSAehYITcktRqBk/9chYZJbXwsDXDJ/NjO3Ro2Lu7U3mtvJ+fHGpwwJ5KzU4EbmAiEuD+EX681xu3fR8d4oR4HzvsupSPG8VN96KYN8ALDMPgu0aFr6TncbU2NbiL5pP5sbwlthnR7tiTrA1GJoS7ws3GjLd1fE6cB749ngGGAUYFOyHQueOWHgnpDBSMkFvSh/uv4WBqEaRiIT5fFA+7DkxhJ2WW4bsTGdzjAb52WGhkvf6nUzd5RaszYzy4+SGAftt3gJ1BwzCMXr+RxmbFuMNcIkZSZhmKdObVNNWngnSffCPzgo6lFXNff7YgDluSsqHSGeV77zBfvKQT0G5+ZAgq65Vc/Qg1OSO9AQUj5JazN7kAH+9nJ5mumR2Jfh6G1+nbQq5U44XNF7iJvBKxEG/NiTK4Tbi4Wsb7NAsAS0Zph/HVK1RY26jte0KYC6K9bHHkWjEviDHkjgHsVNZ5n5/kPa/bp4L0bK/OiOAt4Y0Lc8HPOo9DXa0Q522Hn09ncs/F+9jj1/8yUStXIdjFEiM6YNI0IZ2NghFyS7leVI3lv54DwE42nR3n2fQJrfTZoeu87ZfLEoIR4GRp8Ni3dqbwdkgkhLnw0unfHs9AbqN+E8vGs43YmhuI525jisF+DkjKLINS51O0q7X+Th7Sc53XGR+w7fHh2H05n5flWjzMFwu/PsU9PvrcGChVanx3nF2Wu28YNTkjvQMFI+SWUS1TYsmmRFTJlBjoa4//TQ3r0OtfK6jCpwevcY8jPWzw4AjDKfIzGaX4o1E31EdGa7MiZTVyrGsUcEzu54oIdxskZZbhVDNTd2+L80C1XInZ64/znje2FEB6HnsLCa8bbz8PG17TOztzE4wIcuImMDtZSeFlb45dl/ORU14HewsJZsUa3r1FSE9DwQi5JTAMg+f+OI9rhdVwsZbi0wWxMOnAglW1msELWy5yE3nFQgHenhNlsChWqVLz1vgBtq4k3kc7M2Rdo7bvAgHwVAK72+flRucaclusJ577/UKbvhfSM3jbawuejzw7Bin5lTidoQ1C5w/0xoxP/+Ue73lqJABw23kXDvLm9aohpCejYITcEjYcTseOi/kwEQmwfkG8wcZj7fHDqZtIvFnGPX5kdADCjQw7+/7ETaTkV/HmiiwZFcB9nVVay00NlmiCmWlR7ghxtUJqflWztSLRXrY4fLUIuzRTWknv1DDhWSISwtvBnPuZANiZNP197VBcze6+GeRnDzsLCZIyy3A2sxwSkRALh1CTM9J7UDBC+ryj14rw7m52e+wrMyIQ72PXodfPLa/D2zrbb4OcLbF0bKDBYwsr6/HB3qsAAHdbNiAKdrHEmBBn7pj3NW3fraRiyFVqCAVsAysAmPjhkWbvx9fBHGsaNUkjvdfe5SNRWa/AXzpLNhMjXHDft2e4x1/c3R8AsFGTFZke7d7hATchnYmCEdKnZZXW4vGfz0LNAPP6e+Gugd4dev2GibwNO1QEAuDtuVGQig2nx9fsTEGVTIlQVyvUythzHh4ZwO22uZRTwXVtlZqwfz1nxXogwMmSl3lpyq5L+byiVdJ7OVpK4eNggS2J2bypz67W2u3fc+I8YWNmgpzyOuy8xGbDaDsv6W0oGCF9Vp1chYc3JaK8VoFoTxu8OjOiw3cW/HMhj9eme/FQP8R5G868nEwvwZ9ncyAQALHediipkcPdxhQzYthJqgzDYM1ONqPhaWeG4mo5REIBnhgbBIZhMOez4wav25hMScPw+oqv7ukPhmGw6aR2iSbI2RIbj93gHq/UdNn9/ngGVGoGQ/wdjC4REtJTUTBC+iSGYfDinxeRnFcJBwsJPlsY3+HFfGU1cry6VTuR19veHM9MNNxSXqFSY+XfbOHpnQO8ceI628jq/hH+XCHtkWvFOJZWAhORgKsnmRvnCV9HC2w8ltHkvZjpfG9mVLTYJ3jYmiHGyxbHr5fguk47eN3Jyw+N9IeNmQlqZEr8pOk1QlkR0htRMEL6pO+OZ+DPszkQCQVYtyAO7rZmzZ/USqu3J6NEp333W7MjYS4xPP7922MZuFpQDXsLCaI8bZBRUgsbMxPcqWlMptv2PdTVGjdLamEiEmDp2EAUVcmweltyk/dSp9Cm8F+ZEd7eb430AFzGQ6ebLwDcLKnlvn5sNFub9EdiNqrqlfBztMDYUGcQ0ttQMEL6nNM3SvH6dna548UpYRjs79Dh73HkahG2JGkLCucP9MLQQMOdLvMr6vHhPrZo9flJIVy3zHuG+MBCygYvf53NwZW8SliZiiFTsoHFHf294GVvjqd/P89da1pU01OF5w/05k1zJb2Tq7UpEsJckFdRh706c2h0PT42EDbmJlCrGXyjWbZZPMzXYLdfQno6CkZIn5JfUY9Hf0yEUs1gZow77hvm2+HvUStX4sU/taPaXaylWDHFeAO1N3ZcQY1chThvW3jameNCdgVMTYS4Zyh7b/UKFd7XtH2P8bLF1YJqSERCLB0biJ0X83DkahF3rW0X8pq8t1XTw/Hl0RtNHkN6vsfGBEAkFOCnU5kwVovcsByzP6UQGSW1sDYVY04HdxQmpKtQMEL6DJlShSU/JKK4Wo5QVyu8NTuqU1phv7/nKm/U+xuzImFtamLw2GNpxfjnfC6EAuC1mf3w+ZF0AGzWw8FSCoBdUsqtqIertSlKNH0j7hrkDVOxCM/9oW1ctnpWvybv6/Czo3ntw0nvZGtugrnxXpAr1fj5dJbBYx4fGwhbc3a449f/sj9T8wd5c5k2QnobCkZIn/HK1mScyyqHjZkJvljUH2adMJ32XFY5lxIH2HHuCeEuBo+VK7VFq4sG+0AgYJd3REIBHhzBtn4vr9W2fe/va4fkvEpIxUI8OjoAr/5zGVUytguro6UUl3MqjN5XlKcNfBwsMO+Lk0aPIb3DwkE+MJOIsPNSHoqrZQaPaciKXM6twMn0UoiEAtwzxLcL75KQjkXBCOkTfjmdiZ9PZ0IgAD66MwbeDubNn9RKDRN5G9Lm9hYSrJpuvFj0639v4HpRDRwtJVg+IQSfH2Y/wU6NdIOXptX3uoNpqKxXIsTFChkl7I6Ju4f44EK2tt8IACwdE8Cb3trYurvikF9Bc2d6O4lIiLuHsp1Tf9DZzqtr6RjdrAgbGE+JdOuUIm1CugoFI6TXO5tZhpV/s1tsn5kQgtEhnbOb4Isj15GSX8U9XjU9nFtqaSy3vA4f72eH5q2YHIbKOgW2XWCDi4dHsVmRrNJabrpqf187XMqphLlEhPkDvXk1KQ4WEsQa6V0CAPE+dvCyN8ezf5w3egzpHWbGsJ1Tr+RV4r8M/SZ3ErGQy4oUVtbjn/PszxRt5yW9HQUjpFcrqpLhkR+SIFepMTHCBY+ODmj+pDZIK6zGx/u1U3QTwpwxI9rd6PGrtyWjTqHCAF87zI7zwJdH06FmgJHBTohwtwEArN17FXKVGoP97ZGUWQ4AuGeoLz47dB2FjcbEz1x3zOh7zevvhYo6BY5eK27nd0m62wOa5TvdOTS6HhzhBzsLNiuy6eRNKFQM4n3sEONl21W3SEinoGCE9FoKlRpLf0pCfmU9Apws8N7t0Z1SsKpWM1ix5QLXbMpKKsbrsyKNvtfhq0XYeSkfIqEAr83sh9IaOX47wy6xLBnJ/rK5lFOBPzWzRuK87XAlrxKWUjFCXa3we2I2dy0LTabEGKlYiMmRrvi2maZopOcbGeyEEFcrVNTx59A0sJCI8MBw9uenXqHCj6eoyRnpOygYIb3Wmh0pOHWjFJZSMT5f1B9WRna0tNdPpzN5KfP/TQ2Dq43hIWQypQqvaLqy3jPEF2Fu1vjueAbqFWpEedpgSADb8+TtXWyDs6lRbth3he0jcUd/L97APQBYONgHj/2UZPTeJka4wkQkxAeaPiak93pwBBtUbE7M5jWxa3DPUF8uK/Ln2RyU1sjhYWuGCUYKqAnpTSgYIb3S3+dyuPkc798RjUBny055n/yKeq4zKgAMDXDAPE3XVEO+PJKOG8U1cLKSYtn4INTIlPhOk3JfMioAAoEAR64W4ei1YpiIBAh3s8bVgmpYmYpRVC1Drk4RqkQsxPyB3jiZXqr3PrbmbOA1O86D13yN9E6hrlYYHugIhmEMFq6aS0TcEg7DMNx03nuH+kIson/GSe9HP8Wk17mcW4HnN7P9N5aOCcTECNdOeZ+GibzVmu21ZiaiJnuXZJXW4lPNNt2XpobBytQEv/yXhYo6BfwcLTAxwhVqNYM1muDmroHe2JzELsn0c7fhihGlYvav5dx4T3x5NF3vfaI9bVBeq4CTlRRDAxzxzu4UvWNI7/LACH8IBAIcSytBenGN3uv3DPWFvSYrcuRaMa4VVsNCIsK8gcYDY0J6EwpGSK9SXivHkh8SUa9QY1SwE5aNNzyYriPsuJjPLaEAwDMTQ5rcMvzatmTUK9iC1BnR7lCo1PhaE0w8OMIfIqEAf53TtH2XiuFlb470ohpIxUKkFrC7dGK9bSFTqiEUsK3fG+oCdFmaso2tZsW4Y9+VApTXKjry2yZdzNlKyhVDN55DA7BZkYa+NIB2O+/t/b2MNtsjpLdpUzCybt06+Pr6wtTUFIMGDcLp06dbdN4vv/wCgUCAWbNmteVtyS1OpWbw+M9nkVVaB297c3x8Zyw33bajldfKsWrrJe5xrLct7tW0bzfkQEoB9iYXQKwpWhUIBNh6Lhe5FfVwtJRidpyHpu07W9vx4Eh/biy8TKlGaY0c7jamsDVjf7lMjXI32H1zTIgT/rvB1q/cFuuJDYevd9S3TLrJPUN9IRELkVNehz0G5tDcPUSbFblWUIUjV4sgELC7rAjpK1odjPz6669Yvnw5Vq1ahaSkJERHR2PixIkoLCxs8ryMjAw888wzGDFiRJtvltza1u5NxdFrxTA1EeLzRfGwMe+8T4VvbL+CYk1rdolIiHfmRBkNfOoVKryylZ2qe99wPwS7WEGtZvD5keua53xhaiLC9ycykFNeB1drU9iYmfCmrwLAI6MDcFgzh2aQnz23bKPLXCqGXKVGmJs1ymvluJBtvCsr6fnMTERYMIjdLfXTKf1aETMTEVfYCoCrkxof5gIfB4uuuUlCukCrg5G1a9fiwQcfxOLFixEeHo4NGzbA3NwcGzduNHqOSqXCggUL8Oqrr8Lf39/ocYQYs+tSPtYdZH+5vz0nCmFu1p32Xv9eK+Ztr318bCCCXKyMHr/h8HVkltbC1doUT4wLAgAcTC3E1YJqWErFWDDIB+W1cnx6gK0neXxcIL44wq8FuT3eE8l5VVAzwKhgJ24rsC5ve3PkaGbizInzwGeUFen17ujvCVtzCWRKFX4xkAm7e4gP11ivtEbOFSvTdl7S17QqGJHL5UhMTERCQoL2AkIhEhIScOLECaPnvfbaa3B2dsb999/foveRyWSorKzk/SG3rrTCKjz92zkA7D/CM2M8Ou296uQqXvfTUFcrLGmikVpmSS3WH2KDgpemhcFSM6isYflkwSBv2JiZYP2h61zbd5WaQU65dtCei7UUD4/yx2ZNAORua2Yw49Hf1w7nssohFACBzpbU5KwPuE8TVOy6lI+SGjnvNTMTER4cqf3w9uPJm5Ap1ejnYY2BfvZdep+EdLZWBSPFxcVQqVRwceHva3dxcUF+fr7Bc/799198/fXX+PLLL1v8PmvWrIGNjQ33x8uLKsZvVVX1Cjy0KRE1chUG+9tjxeTQTn2/D/ZdRWYpu3wiEgrw7txomBjZOskwDF755zLkSjWGBzpiaqQbACDxZin+yyiDRCTEfcP9kF1WyzUlWzY+CJ8d4mc03rwtEr+fyYZcpUaEuzV+Pq1ftCoQACLNLp6RwU744aT+MaR3mRThyi21bDisv2tq0RAfOGqyIjKlCt9raozuH+7XKc39COlOnbqbpqqqCosWLcKXX34JR0fHFp+3YsUKVFRUcH+ysowPCCN9l1rNYPlv55FeVAM3G1N8eldcp/ZUuJhdga90ttI+OMIfkZ42Ro/fd6UQB1IKYSIS4NWZEdwviM8Osde4LdYDLtamWLuHbfs+xN8B+RX1yNPpJTIrxh39fey53hLGprSOCHLCifQSAMAAX3veLh/SOz04Ujt590oeP/traiLEQzpZkW3n81BUJYOzlRRTI42PISCktxK35mBHR0eIRCIUFPD/ISwoKICrq36vh+vXryMjIwPTp0/nnlOr2ZbaYrEYqampCAjQT4FLpVJIpYYHkJFbx7qDadibXACJWIgNC+O5T4mdQaFS4zmdibz+jhZ4KiHI6PF1cm2n1QdH+CPAiW26dq2gCvuuFEAgAB4a5Y/LuRX48xy7zr9sfDCvm6qjpQSrpkfg+xMZqJGrYCkVo6DScDDi72iBI1eLYCUV49vjGR3wHZPu5O9kgXgfdqnlzR1X9F5fNFibFWEYhtvO27DzhpC+plU/1RKJBPHx8di/fz/3nFqtxv79+zFkyBC940NDQ3Hx4kWcO3eO+zNjxgyMGTMG586do+UXYtTB1EKs1bQ4f31mP0R38iCwL4+m8z6dvj03CqYmIqPHrz+UhpzyOrjbmGLp2EDu+c81hakTwl0Q4GSJt3amgGGA6dHuuJBdjiKdAXirZ/aDqYkI32iCi4bmao3ZmZugoo7tJRLsasW7BumdnpkQAgCoqFPgWFoJ7zU2K6L9kHYyvRTJeZUwNRHiribmFBHSm7UqMwIAy5cvxz333IP+/ftj4MCB+PDDD1FTU4PFixcDAO6++254eHhgzZo1MDU1Rb9+/Xjn29raAoDe84Q0uFlSgyd/PguGYQtA72ii/XpHuFFcgw/3XeMe3z3EBwN8jRcI3iiuweeaNf6V08NhLmH/GuVV1OFvTRZkyagAHL2mbfv+2JgA3LFBW+Q9NdINkyPd8O2xGyhtVLjY2ORIN2w9x27zTbypP1ae9D4NXYMbCrN1LRzkAycrbRawISsyO86Tm01DSF/T6mBk3rx5KCoqwsqVK5Gfn4+YmBjs2rWLK2rNzMyEUEhpRNI2tXIlHt6UiMp6JWK9bbFyeninvp9azeCFzRcgV7LLhx62ZnhukvEiWYZhsGrrZchVbAdY3Vb0Xx+9AYWKwSA/e0R72mLaJ/8CYIfdHUgpRGU9m/mwMhXj1ZkRUKjU+PLojWbv0d5cYjRrQnqfFZNDIRIKoFCpse8Kvz+TqYkQD43S1opkFNdgfwq7LH7fMNrOS/quVgcjALB06VIsXbrU4GuHDh1q8txvv/22LW9JbgEMw+D5zReRkl8FR0spNiyMh1RsfKmkI/x6JgunbmgH0a2ZHcltzzVk9+V8HLlaBIlIiFdmaItWK2oV3C6YJaMD8Pf5HCRr2r4vHuqHke8e5K7x+qx+cLSU4o/EbN4WX0OiPW1wKZcam/UlCwf7AAAe+UF/GvOCQT5wttJOhP72eAYYBhgd4tRpwyAJ6QkohUF6jK//vYF/zudCLBTgs4VxcLE2bf6kdiiorOcVD86N98TIYCejx9fKlXjtH7bT6pJR/vBz1HbA3HSSLUINdbXCEH8HvLebrXdZMjoAfyRpG6iNDXXGjGh3qNWMXiv3KZH6ReBjQp1xKLWobd8g6XEiPWxgIRWjrEautyNKKhbiYZ2sSEWdgmt+R03OSF9HwQjpEY5fL+am2b48LbzJmo2OsvLvS6jSLJ04Wkrx0tSwJo//5EAacivq4WlnhkdGa4tW6xUqfKPpI7JkVAA2nbjJtX2fG++Jj/dr61Hemh0JgUCAvVcKkFZYzbt+4/bepiZCbncP6Rs+XxQPAHjm9/N6rzXOivz6XyZq5SqEuFhheGDLWyMQ0htRMEK6XU55HZb+dBYqNYPZcR64e4hPp7/nrkt52H1Z+8n09VkRsDU3XhyYVljN9SBZNT0CZhLt8tHvidkoqZHDw9YMI4Ic8elBtu378vHBXCYFAN6ZGwVna1MwDINlv57jXf/j+bF6zdCm9HPjBTKk93O3NcOVvErsT+HXikjFQizRyYooVWp8d5ztPXPfcF9qckb6PApGSLeqV6jwyA+JKK2Ro5+HNd68LbLT/+GtqFXg5b8vc4+nRLpiUj83o8ezRauXoFAxGBfqjPHh2g7ESpUaX2q28z44wg9fHElHRZ0CwS6WGB3ihO0X87hjb4/3BMA2S6uVq7jnY71t4WNvrve+wa7G5+GQ3ueDedFgGAYv/XVJ77W7BnnDWWdZctflfOSU18HBQtKp4w8I6SkoGCHdhmEYvPzXJVzIroCduQk2LIxvsrdHR1mz8wrXq8PGzASvzmh6m/n2i3k4llYCqViIVdMjeK/tvJSPzNJa2JmbYHiQE9cz5IXJoRj+jrZo9dgLYyEQCMAwDB78/gzvGq9Mj8C7u1N5z/k4mOMtzbIV6Rtui/XErkv5etuzxUIBloziN39s2M67YLBPl/ydIKS7UTBCus2PpzLxe2I2hALgk/lx8LTTzw50tOPXi/HLf9rxAiunhfN6OjRWLVNi9TZ2qeXR0YHwdtDeI8Noi1DvGeqL9YfSIFeqMdjfHjZmJtx24XGhzvCwNQMAPPfHBd71Z8d5IMTVCv+m8YfedWa3WdL1ApwsUK9Q4fXt+t1WFw724RVrJ2WW4WxmOSQiIRYN7vwlS0J6AgpGSLdIvFmGV/9hl0qemxSK4UGdX6BXr1DhxS3aibyjgp0wO67pFPjH+6+hoFIGHwdz3k4HAPg3rRiXcythZiLCQF97/HmWbXj2wuQwzPlM2+Dsy7v7AwDOZZXj90TtzhozExGemxiKHTpLOQ2ouVnfsun+QfjySLrBrdyPjDacFZkR495koExIX0LBCOlyhZX1eOSHRChUDKZGuuHhkf7Nn9QBPtx3DRkl7EReC4kIb85uuj7lakEVNmp+MbwyI0IvXd6QFZk3wAsbjqSDYYBpUW7Yl6wtjF09qx+EQgHKa+WYte4Y7/xHRgfA1cYUy3/T31lB+haBAFjfqEAZAO4d6svLiuSU12HXJXYCOjU5I7cSCkZIl5Ir1Xj0xyQUVskQ7GKJd+ZGdclOgUs5FfhSZyLvC5NDuaUTQxrqWZRqBhPCXTAmxJn3+sXsChxLK4FIKECYmxWOXC2CiUiA+QO9ud00ALBwkDc3fViXu40pHhzhj0xNcET6rv9NCcOaHSmoU6j0XmtcK/Ld8Qyo1AyGBjgg3N26q26RkG5HwQjpUq9vT8aZm2WwMhXj80X9YdFEt9OOolSp8cKWC1BpmnYM9LPHgkFNr8VvPZ+LUzdKYWoiNNiSviErMi3KDd+fYLdgLhjkg5V/a3dKbLp/IAQCAT47fB0HGm3lfH5yKMwkInx3IqM93xrpQWKMDHMMdLbE1vO5es/fM8QHrjbarEiNTMl18aUmZ+RWQ8EI6TJ/JGZzv7g/nBfD62Damb7+9wYu5bATeaViId6eEwWh0Hg2prJewRUaPj42SK+wNqO4BjsvsXUebjZmuJxbCUupGE5WUlwvqgEAuFhLMTzQEcevF+P9PfydMrHetpgR7Q6VWjsanvR+WaX6WS6BAHh/b6qBo9nuvLp+P5OFqnol/Bwt9DJxhPR1FIyQLnEppwL/+5MtHn0qIQjjwlyaOaNjZBTXYO3eq9zj5eODmw2CPtx7DUVVMvg7WuCBEfqfUL84mg41AwwLdMA/mk+8s2LdedtzP74zFkVVMjzx8zm9Lqorp4VDIBDo7aAhvdf/poShxMD05TEhzlwgrGvBIG+42WiXCVVqhtsWvniYb5PBMiF9UefnyMktr7RGjoc3JUKmVGNcqDOeGBvUJe/LMAxWbLkImWaLbaSHTbPp7yt5ldzSySszIvQG9RVW1eMPzY4Yc4kYOeV1cLGW4lqBtrX7EH8HxPvY4a6vTqG4WsY7f1aMO2K97QAAH+gESaR3O5leYvD5/zJKDT7/2JhA3uP9Vwpws6QW1qZizInz7PD7I6Sno8wI6VRKlRqP/5yEnPI6+DlaYO28mC771Pf7mWyc0PySEAsFeGduFMQi4z/yDUWrKjWDKZGuBofmfXssA3KlGgFOFjitmfbr42DBm/z7zMQQvL/3Kk7fKEXj2tznJ4cCAMpq5DiXVd7O75D0BOsXxOm1d29QVa+EVMz/mZsZ4w73RsXTDct18wd5d0kdFSE9DQUjpFO9uzsVx9JKYC4R4fNF8bAxM+mS9y2srMfr27VzYR4dE4gwt6Z3J2xOysGZm2Uwl4jw8jT9otWqegU2nWRrXhiGnapqa26C5FxtGn50iBPKauTcnJlwnfd8fGwgl5pv6EnSFpEeNm0+l3S8qwVVTb4e4GTJe/z8pFDe40s5FTh1oxQioQD3DPHt6NsjpFegYIR0mm0XcvG5Zm7Lu3OjEezSdbNWXvnnMio1E3mDXSzx2JiAJo+vqFNgzQ62aPWJcUG89fwGP5/ORFW9EuYSEbLK2GLF6nolqmVK7pjb472w/LdzANi6gMs6gUpDcyuGYfDaNm2g1FoXcyrafC7pWE+OC8IPmgDVkBFBjkjO0/4MDPF30MuKNPSymRLppvcaIbcKCkZIp0jNr+Janz88yh9To4wPoutouy/nY8dFtnGUUAC8PSdKr/ajsbV7UlFSI0egs6XBZlMypYpLpdfKVVCo2KpUpU516shgJ2w4fB2V9UrEeNnCQael+9tzImEuYdPvhgoaG3t9luF5ObTls2cJcrFEcbV+4SoAmIgEXH1Qg/fuiOY9Lqysxz8X2CJo+n9LbmUUjJAOV1GnwMObzqBWrsLwQEc8OyGky967sl7B6/Vx3zA/vV8IjV3KqeCWX16bEQGJWP+vxd9nc1FQKdN7XleNTImLOezQv0/mx+Lj/de4126P9+K+nv/lyWa/j38M9KUAwN0n6X7+Thb4+5zh/08AcN9wP+zWdFMFAA9bM71Ge9+fuAmFikG8j53RPiWE3AooGCEdSq1msPzXc8goqYWHrRk+nh/bZNFoR3trZwoXNPg4mOPpZgIhtZrBy39fgpoBpke7Y2ig/owctZrBhiP6rbwbS7xZBoEA+GBeDNe8CmCbnzUU7V7MruAt6xhy5NkxvILYBi9MDuWG75Hu98TYIOzVaf2vy9FSitHBzkjVqSf55aHBvGPqFSr8eIoNLikrQm51FIyQDvXR/mvYn1IIqViIzxfFw95C0mXvfSq9BD+d0gYBa2ZHwkzS9PLM74lZOJtZDguJCC9NDTN4zN4rBUjXNDNrzuNjAjEq2Ik3h2REELsrp6JOgemf/tvsNf4+Z7i49VxmeYvugXSNTANNzho8PykEm5Oyec952fOb521JykFZrQIetmaYEN41fXcI6akoGCEdZl9yAT7SLE28eVsk+nXhro96hQordCbyzh/ojaEBTU8CLq+V462dKQCAZeODeQPLGjAMw7V+b86wQAc8mRCMF//ULhNte3w4AG3GqDl7lo3E+wb6jywZFYBdl/MNnEG6wyOjA7huwo252ZgiIcyF60cDALueGsE7hmEYbDzG1iAtHubbpdlDQnoi+htAOkR6UTWWaX7Z3jPEB3Piu7Zx0ycHriG9mM1euFqbYsWU0GbOYLcdl9UqEOxiiXuG+ho85vSNUpxtQUbCxVqKj+6MhVKt5i3RNARkDRmj5jR0qW3M2ox6T/Qk7jameg3tGqxbEMcLRAAg1JW/rfzw1SKkFVbDQiLCHQO8QMitjoIR0m7VMiUe3pSIKpkSA3zt8JKBHh2dKTm3Ep8f1k7kfXN2P1ibNt3P5HxWOX7SBA2rZ/aDiZFPpoayIkIBYGuuvb5IKMCnd8XB0VKKx386yz2//+lRAPgZo6aMC3XGfxlles8P8XfAO7sMzzchXS/ExQrH0gx3XAWAGE9bvKHZJg4AP9w/SO+Yhp1ZdwzwavZnlZBbAQUjpF0YhsFzf5zHtcJquFhLsW5BnNFf7J2hYSJvwxbbmTHuGBva9Pq7SlO0yjDAbbEeGOTvYPC4lPxKHEwt0ns+1tsO5bUK7vHzk0IwwNceRVUy7NEUNIqFAgQ4WSK9qBpP/HJW7xqGGMucdHWWiTRtRoy70SWz/U+PwuFr/J+Z4UH85cKrBVU4eq0YAgGweCgVrhIC0Gwa0k6fH0nHjov5MBEJsH5BPJyt9OsuOtO3xzNwIZttAuZgIcGq6RHNnvPLf5m4kF0BK6m4yeUc3WxLAz9HC1TWaQORCeEueHCEPwBgyQ+J3PO7nhrJZYxq5aoWfz+GPPP7+XadTzpWrdz4bqgAJ0tM/ugo9/iN2/T7xTQ0OZsQ7gJvB3O91wm5FVFmhLTZ0WtFeGcXWwD6yowIxPs03c+jo2WW1OK9Pdrli1dmRDS7e6e0Rs4teSyfEGw0eMouq8VWA70+Zsd64FohOxRPJBTg3dujIRAIkJxbicSb7BKLk5UUAU4WePb389yxbWVsh09H8Hdqenox0Tcrxh2/nck2+Nr6BXHIKq3lbb++a6A375iSahm2aEYB3D/cv/NulJBehoIR0iZZpbV4/OezUDPAHf099f7R7WwMw+DFPy+iXsH+wz8+3AXTWtDl9e2dKaioUyDMzRqLBvsYPe6rozeg0umuCrCFubo7Xf5+bBhszEzAMAwvK7LxngH47PB17LzU/t0vr2+/0vxBbeTSxVmsvsDd1gxFVYYLV8eHu+BpnSzWQyP9IWg0KfGnU5mQK9WI9LDBAN+uDd4J6ckoGCGtVq9QYckPiSivVSDa0wavzeyn949uZ9uclIN/04oBAFamYrw+q/l7SMosw69nsgAAq2dGGN1OWVYjx6//ZfGe87Qz49XCPDEuiNspsze5gOs54e9ogbJaOd7b3bqC0wh3/SF+EyM6t/fECSNj74lhVlIxbhQb7jdzR39PqNQMN8kZYOfW6JIpVfj+pLbJWVf/nSGkJ6NghLQKwzB4cctFXM6thIOFBJ8tjIepSdONxTpaUZUMq3UGzb00NcxgjxBdKjWDl/9i+3/MjfdEf197o8d+dyIDdQp+ncezE0PwlWatHwCWJbC/aGRKFZb/pv00vGRUAJcxaqknxwXxBuo12H3ZcHfPjmBtSuVirTU9xt1otmveAG+8qbODJiHMGRZS/n/jbefzUFQlg4u1FFMiu25WEyG9AQUjpFW+O56BLWdzuO2s3TFl9NV/LqNCU0Q6PNARd/Rvvk/Dj6du4nJuJaxNxXhhsvGi1Vq5Et8dz+A9N6+/F5785Rz3+PCzo7lPtd8fv8m1d/e0M8M3xzO4e2t4rjnRXl3XHK5Bc51piT6miQAzztuW1wRt5TR+ITXDMNx23ruH+Bqcf0TIrYw+HpEWO32jlKthWDE5FEMCDG+J7Uz7kguw7UIeAMDMRIQ1syObTXcXV8vwrmbZ5NmJIXDUmabb2G//ZaFMZ9suAJiaaH9xjA11ho8DW/hZUi3j9ZMorZEju6yOe+zvaME1YjNm2+PDMe2T5lvEd7Tmhv4RvmhPG+y7YjhT9fjYQPygM4bA0VKit0vmZHopkvMqYWoixIJBXVtfRUhvQOE5aZH8ino8+mMSlGoGM6Ldu2WwV1W9Ai/rTOR9dmKI3rwPQ9bsSEFVvRL9PKxx1yDjRasKlRpfHr3Be+7eob74TucT7ztzo7iv1zZq2667hVckFGBSP9cm70sgAJytjAdGpOfwd7I0Wrg6K9aDWwIEgI/vjNU7piErMifOE7bmXTeviZDegoIR0iyZUoVHfkxEcbUMoa5WeGtO89mIzvDOrlTkVdQDYNPixlq46/ovoxSbk7IhELCdVkVC4/e9/UIecsq1mY0QFyts0Rl29sjoAC6rkpJfiR91Pg039sBwP96wPEPemBWJR35MavZ7IN1Pd+lNl4OFhJcNA6CXMcworsH+FDarch9N5yXEIApGSLNe/ScZZzPLYW0qxueL4mEu6frVvf8ySrFJsxNBIhLinblRTQYWANudteET650DvBDrbXwrJcMw+PgAv2W7XKVGZT1bDyIRC/GQprkZwzC8AtrGor1soVA1X8E6JdKV601Ceq6RwU44YKQ77mNjAnHPxtPc4zdu09/V9c2xG2AYYEyIEwKcLDv1XgnprSgYIU369b9M/HQqEwIB8PH8WK5eoivVK1R4YfMF7vGTCUEIdLZq9rzvT9xESn4VbM1N8OzEpgfnHb5ahPQibX2HvYWEt41zyUh/2Gkaqu2/Umh0NomZiQgPjvDjJrIaMzXSDa/9YzygIT1HUzGvT6PakNmx/Nb9FXUK/K4ZmkdNzggxjoIRYtS5rHK8/NdlAMDT44MxOsS5W+5j/cE0XNcECuFu1nhoZPP/qBdW1uMDTU3HcxNDm+3M+kaj5mKlNXLuaytTMe7XZEXkSjWvaLWxFVNC8cUR/Tbyjd0W68F14iQ926Uc/W3XABDvY4eHN2mb3d0zxEdvl9IvpzNRK1ch1NUKwwK7vuCbkN6CghFiUHG1DI/8kAi5So0J4S54dHRgt9xHSn4lV3shEgrwztyoFg3ie3PHFVTJlIj2ssWdzYxoP5dV3mTb9gdH+MPGjJ2s+v2JDKONr0aHOEGpYrhZOcY4WEhw/Do1HOsNBvrZo7jacOFqjJctN6ARAB5sFCQrVWpum/h9w6jJGSFNoWCE6FGo1HjsxyTkVdQjwMkC798RDWEz9RmdQaVm8Pzmi9w/+A+P9Oe6njblZHoJ/jqXqylajWj23u/YcMLoa7bmJlg8zBcAmy35aP81g8fZmZtgWUIwXmuilqTB9Gj3ZpdxSM8g05kz09ieZG0DtFBXK3ja8Zdsdl7KR25FPRwsJJgR495p90hIX0DBCNHz1s4UnLpRCkupGJ8v6g8rU5NuuY/vjmfgfFY5AHao2xON2msbolCpsVKz/XfBIG9Eedo2efzVgirIVfxfOPYWElho0u0Pjwzgvv8P911FVT1/YmvDh901syPxyYG0Zu8PAC7mNJ05IT2DtamY+/lrzN/JAlml2l00r8zQnxbdsJ13wWCfLu9STEhvQ8EI4fn7XA73j+h7t0cj0Ll7qv+zSmu5RmUCAfDOnKgW/YP+7bEMXC2ohr2FBM9MCGn2+AkfHOE9FgkFGB3ihBq5Cg4WEtw9hO1LcrWgitdhswHDsO3lARhtiqXL38mCdtD0Em42xrvn6hY7A8AgP/54gcSbZTiXVQ6JSNjkQEZCCIuCEcJJzq3E85pdK4+NCWi2aVdnYRgG//vrEjcf5p4hvk3OkmmQX1GPD/exRasvTApttrnU0WtFes89OS4Ip9LZYWePjA6AhVTc5FZeD1szPD0hGC9sudjs/QH6v8RIz5VaUNWi4wx1Ad6oCehnxLjDiRrbEdIsCkYIAKC8Vo6HfziDeoUaI4OdsHx881mFzvLn2RwcucoGCh62Znh2Ysvu5fXtyaiRqxDnbctlK4xRqtRY9PVp3nMJYc6ws5Agp7wOTlZSLNB0az2UWoSj14r1riEQAGvviMZnh66jvNZwUyzSO9mat3xp8rZYD97j7LJa7LzEjiy4bxg1OSOkJSgYIVCpGTzxyzlkldbB294cH98Z02xDsc5SXC3jFYGumR2pN/3UkGNpxdh2IQ9CAbB6Vr9mi1Ybt3L3tDPDm7Mjsf4gW/fx2OgAmElEUKjUWPztfwav8dBIf4hFQoPLN6R3a2lweecAL73lw++OZ0DNAEMDHBDubt0Zt0dIn0OD8gjW7k3FkatFMDURYsPC+G6dnbF6WzL3i+D2eE+MDHZq9hy5Ulu0evcQX0S4N73jJq2wWq9V+/oFcdhxIQ95FfVwszHFnQPZYWYfG9k9E+ZmjSfHBWHmp8eavT/SdzUuqq6WKfHL6SwA6Jb5TYT0VpQZucXtupSPdQfZX8xvz4nq1k9yB1IK8Pe5XACAk5UUL00Nb9F5X/97A9eLauBoKcWy8cFNHqtSM3is0TyY12f1Q5CzFdZpApTHxgTC1ESE4mqZwR0yEpEQH86LwbfHM5rsT0L6Ng9bM7jb8otcfz+ThSqZEv6OFhjTTU0CCemNKBi5haUVVuPp384BYD/FzYzxaPqETlQtU+KlP7WTT1+f1Q82LVi3zymv47IXL04J5ZqTGfPt8QxeYeLYUGcsGOSNH0/dRFGVDJ52ZrijP9skrf/r+wxe47lJITA1EeKdXanN3h/puz68M4b3WKVm8M2xDADA4mG+3dKbh5DeioKRW1RVvQIPbTqDGrkKg/zs8cLkpme3dLb3dqciVzORd2qkGyZGtGwnz+vbklGnUGGAr51eIWFjN0tq9HbFfDI/FrVyFT7TZEWeGBsEiViItXsMBxpD/B2weJgf/qcTOBlDDTf7tv4+/MGL+64UILO0FjZmJpjTTAE1IYSPgpFbkFrN4OnfziO9qAZuNqZYtyCuRS3WO0vizTJ8dyIDALuLwVADKUMOXy3Czkv5EAkFWD1Lf1qqLrWawXN/XOA9t/mRobCQivHdiQyU1Mjh42CO2+I8cCWvEh8baWD23h3R2Ho+B/+m6e+uacyhmXk4pPcy9PPW0J9n/kDvbplsTUhvRsHILWj9oTTsSS6ARCTEZwvj4WjZfX0QZEoVnt98AYxmxMeq6eEt6ssgU6rwylZ2iN+9Q30R6tp0rcuPpzNx6kYp77l4HztU1Su4wXZPjgtCjUyJyR8d5Y7xd9JOKf5gXjTMTURY9uv5Fn1vzQ3nI73X7Y0yH5dyKnD6RinEQgHuGUpNzghpLQpGbjEHUwvxvmZb6+pZEYjxsu3W+/ns0HWkaYpAx4Q4YVYL61a+PJKOG8U1cLaS4qmEptvEZ5fV4uW/+MsqZ15KAAB8cywD5bUK+DtZYFqUO5b+dJY7JiHMmdekbFaMB95sYmKvrmGBDrhaQMWtfdGMaHe97bwNWZEpkW5Ndm4lhBhGwcgt5GZJDZ78+SwYBrhrkDfmDfDu1vu5WlCFdZq+HpZSMd64Tb+TpSFZpbX4VHPe/6aGNTk7h2HYJSldwS6WcLSUoqJOgS+PslmRpxKC8fH+a7zll31XCrmvz7yUgBPpJfg9MZt3rdWz+hl83+7MNpHO9b+pYbzHBZX1+Oc8uwuMtvMS0jYUjNwiauVKPLwpEZX1SsR622LV9JZtm+0s7ETeC1Co2PWZFyaH6m2TNOa1bcmoV6gx2N8eM6Kbnob625ksveWZr+4eAAD4+mg6quqVCHaxhIlQwAU4AJulaTApwhWWUjGW/XqOd50vFsXjjzNZeu85IsiR26JM+hZLqRgu1qa85zaduAmlmkF/HztEd3OmkZDeioKRWwDDMHhh80Wk5FfB0VKKzxbEQyru3imim05k4GxmOQB2yNhdA1uWpTmQUoC9yQUQCwVYPbPpotW8ijo8v5k/MybSwwbeDuYoq5Fjo2Yb5oxodzzzuzZ74mwlxcFU7dyaD++MwfqDaSiolHHPTQh3wSA/B5zP1p/AG99olwXpO767bwDvcb1ChR9PsR14KStCSNtRMHIL+PrfG9h6PhdioQDrF8TB1ca0+ZM6UU55Hd7RTOSVioV4e05Ui3oy1CtUeGUruzX3/uF+CHKxMnoswzC468tTes+vmR0JAPjiaDqqZUp425tjS1IOauQq7pg6na+fHBeErNJavd01GxbGY81O/fqRACcLfLjPcNdW0vvF+/AHNm5JykFZrQKedmaY0MLt6IQQfRSM9HHHrxdjzc4UAMBLU8Mw0K/56bediWEYvPTnRdRqfuE/PSEYvo4WzZzF2nD4OjJLa+FqbarXhruxn09n4UYxf0JuuJs1+nnYoLhahm81WZHsslqkNzquSqbkvr5vuB+WN6o5ObdyPIRCAX75T3+JZnYc9Zfoq1ZO4y9tMgyDjcfYwtV7h/p22zwnQvoCCkb6sNzyOjz+01mo1Axmx3rgnqG+3X1L2Ho+l1sCifa0afFU05slNdw8mZenhTc5PK+wqh4v/nlR7/mXNIWHnx++jjoFGwypGePv+diYAGy/kIeLOdqlmLfnRMLWXIJvNb+EGnt3t7ZZmqkJ/fXqSxYO5m/ZPXy1CGmF1bCUijFvgFc33RUhfUOb/rVct24dfH19YWpqikGDBuH06dNGj/3yyy8xYsQI2NnZwc7ODgkJCU0eTzpGvUKFJT8koqRGjgh3a7w5u2U7VTpTaY0cr/7DLrOYiAR4Z240xC1otsYwDF7ZehlypRrDAx0xJdJ4OpxhGAx8Y7/e84HOlhgS4IDCyvoWTdk1EQkwPdpdL6iZN8CbvZ9/kvXOmduo90S9Qt3s+5DeYUyIEyRi/s9qw3beO/p7NbmjixDSvFYHI7/++iuWL1+OVatWISkpCdHR0Zg4cSIKCwsNHn/o0CHMnz8fBw8exIkTJ+Dl5YUJEyYgJyen3TdPDGMYBiv/voQL2RWwMzfBhoXxen0RusPr25JRWiMHADw6OhAhrsZrPnTtTS7AwdQimIgEeHVmRJNB1XtG2rgvHx8MgUCA9YeuQ6ZsPki4a6A3nvj5LO+59DenAAB2Xso3eM5unecpY9+3vD03ivf4akEVjl4rhlDAzqEhhLRPq4ORtWvX4sEHH8TixYsRHh6ODRs2wNzcHBs3bjR4/I8//ohHH30UMTExCA0NxVdffQW1Wo39+/U/vZKO8dPpTPx2JhtCAfDJ/Dh42Zt39y3hUGohtpxlA9AQFys8NiawRefVyVVcNuXBEf4IcLI0euzNkhpuArEuL3szTIxwRV5FHb49nsE9H+hsCUsDyz0ioQCuNma8pmWb7h8IoVAAlZrBo42m/gKAq7Upr9akqeUf0vs4W/GLvjdqsiITwl17xN8vQnq7VgUjcrkciYmJSEhI0F5AKERCQgJOnDjRomvU1tZCoVDA3t54IaVMJkNlZSXvD2mZxJtlXJv05yaFYniQYzffEVAjU3KD5YQC4J25UXopb2PWH0pDTnkdPGzNsHSs8QCGYRiMeveQwdceGRUIkVCAT3V2xDhZSRHmZo1qnQCiQUKYM97elcI9tjIVY0QQ23dk63nDGb38yvqWfDukF/rt4SG8xyXVMi6wvn8EbeclpCO0KhgpLi6GSqWCi4sL73kXFxfk5xtOXTf2/PPPw93dnRfQNLZmzRrY2Nhwf7y8qDisJQqr6vHoj4lQqBhMiXTFwyP9u/uWAADv77mKnPI6AMADI/xb3BjqRnENPj/Mdkh9eVp4k8PH7vzipMHnHS2lmB3ngazSWvx4KpN7/rmJIdh5Mc/gObsvF/AeJ708HgAgV6rxzO8XDJ1C+rDGO9B+PJUJuVKNKE8bvcm9hJC26dJy/7feegu//PIL/vzzT5iaGu91sWLFClRUVHB/srL0t1ASPrlSjcd+TEJBpQxBzpZ4Z250txesAsDZzDJ8c5xNafs6mGNZQnCLzmuoe5Gr1BgV7ISJES5Gj91/pYDXZVX3275vuC9MTUS8YGX1zAjsvlwApc5aip254QLELxbFcxONf/kvEypaf7mlPDsxhPdYplRxBdD3D/frEX/HCOkLWhWMODo6QiQSoaCA/8mxoKAArq5NN/x577338NZbb2HPnj2Iiopq8lipVApra2veH9K0N7Yn47+MMlhJxfh8UbzBWoiuJleq8cLmi9xE3rfmRMFM0rJC2l2X8nH0WjEkIiFenWG8aLWkWob7vzvDPR4W6MC9n6VUjAWDfHAsrZjLzPg7WcDP0RL7rmh/hkcEOaKqXn+5xtbchGtkVStX4iNqZnbLeahRdvGf83korpbBxVqKKZFu3XRXhPQ9rQpGJBIJ4uPjecWnDcWoQ4YMMXreO++8g9WrV2PXrl3o379/2++WGLQ5MRvfaT6tfXhnDPybKPLsShsOX0dqQRUAYMEgbwz2d2jRebVyJV7bxhatLhnlb7QpmkrNIP71fdzjx8YE4FhaCfd4wSBvSMVCLPhK24n1n6XDsXqbdluut7053G3MeFmSBideGMd9/c2xDJRodgKRvsVYs7I4b1suKwaw2bqG7bx3D/HlvUYIaZ9W/21avnw5vvzyS3z33Xe4cuUKHnnkEdTU1GDx4sUAgLvvvhsrVqzgjn/77bfx8ssvY+PGjfD19UV+fj7y8/NRXU3j1TvCpZwKrhfGk+OCMC7M+HJGV0orrOIKRt1sTPHC5NAWn/vx/jTkVdTD084Mjzax6+bNHdp27COCHHH0mnbirkQkxH3D/XjLMxsWxuGvczlcgASwtShbz+sPtXvv9mgui1NeK8eGw/q7dEjfYGzpbcOieN7jE+kluJJXCVMTIRYM6t6J14T0Na3O5c+bNw9FRUVYuXIl8vPzERMTg127dnFFrZmZmRAKtTHOZ599Brlcjrlz5/Kus2rV/9u787ioyjUO4L8ZBoZ9k032TUFUQME9TdzLXMo9F1JbNM2Me9X0Zpotlt00M1O7lW1umaktapopmrsiKioiILIouwwwwKzn/nGGwxwGhFHgDPp8P58+H+dwzsw7J3Seed/nfZ5lWL58+cON/jFXLFfilR8uQKHWYmCoG15voER6S9Fq2cZ8Sg1bz+ODZzs3uihUan4ZvjrOJq0uH9Gx3voox28WcN9SAWBEhCcW/lyTXPpsFy8cSMpFYlYJAHbJpnewC8KXH+TOmRMThCs5Mq4aqz79AmYb4tPqXMYhj7b6tvOO6eoNR2sLIYZEyCPrgRIL5s6di7lz59b5s6NHj/IeZ2RkPMhLkAaoNVrM23YROSWV8G9jjdUTIhvVbK4lbDlzG+dv3wPABgUxoW6Nuo5hGCz79SrUWgYDQ90wKKzuWZ67skpM/bqmiu+PM3vwKqWKREAXX0e8+UvNsR2v9ORt7Q31sMNLfQMRueKQwfNf1O2eAYBcWRXXx4Y8Pra82IP3+FahHIeT2cKOM6g7LyFNjhY9W6mPD97AP6mFsLYww6ap0XCwMo1y1HdKKvHRAbYKqouthUFzsfv5/fJdnEgtglQixvKRHes8R6XRYvrmc9zjCdE+uJlfhsziCu5YuLcjrxLrU508YGMhwZfH0rlj6yZ1wbpanXgB4D9Pd4CTTc233s/+vtmoiq3k0dInmF+fZ/OJW2AYtiz8/QrvEUIeDAUjrdAfl+9y9TdWjQ1vdFn15sYwDJbuSeIKib0zshPvg/1+yhVqvPcHm1j6av/geqtafrQ/Gcm5NTkfbwxubxBUXM4uQWG5knfOS9/X7LhZNiIMHg6WvGWeai/qFbG6VSjHjjo685JHg3M9v5uvPMnfQSOrUGHn+WwAwMwnTKN2DyGPGuH3fxKj3Mgtw4Kf2Zb2r/QLxDPhngKPqMbvl+9yU9lDwtzv29CutrV/pSCvVAG/NtYGHwbVDiTdxVd6AcSPM3vgh9MZXL+baoxePuLICE/kyqpwM59NmPawt0RsL38E/2efwfP/syiGt4X4k4M3qK7II6z27021BUP4tUW2nctEpUqDUA879Alu3I4wQohxaGakFZFVqvDKD+dRodSgT3Abg4JMQronV3Jl6O0tJXhvdKdGF4S6kVuGb3R5GctH1p20mlEox9ytNY3rJnX3QbCbbZ2zG9XEIuC1AcGY9k1NfsnuOb2x7VymQe+Y2f2D4O1UMxuTlCPD75frrtBKWj87y7q/hwW52vA6Sas0Wnyn62c0ow8VOSOkuVAw0kpotQzidiQio6gCXo5WWDepK+8fTaG9v+86V4fjrWfC4GZff4VdfdWVVjVaBkPC3BETYpjsWqXSYPaWBK4WiIutFIuf7oA1h1JQpao/n2N0Fy98dbwmWFkxqiPyShVcnxx9/671bfjjP9mcE4mJJAWTplXf7qgtL/bkPd6flIu7siq42FpgZKTpzEIS8qgxnU8zcl+f/X0Th5PzIZWIsWlqVL3r3UI4frMAP19g19T7tnPBOL1tsQ3Zm3gHZ24Vw9JcjLdH1J3sumzvVVy/W9Ms8eNx4ciVVWHnBcN8Dlc7KQC2kNWk7r7Ycb7mnKc7t8WsHy4YXHNgfl9e4avT6UWITymARCyCt5NVo98Laf08HGqCaP0iZ5N7+NW7zZwQ8vAoGGkFDl/Pw6e6UuTvP9sZnbwcBB5RjQqlmttWa21hhg+e7dzoqezSKhXe1xUue21AO94ySbWd57N4AcWYrt6ICXHDR/uTDZZa/NtYw9ORDR7GdvXGuI01naTPLBmIOVsSDLrrToj2QahHTbsBhmGwStex98n2rritt0uHPNq+rFXkLCHzHi5llcDCTIwpPf0EGhUhjwcKRkzcrUI55u9IBABM6+XHK8ZlClYfTEFWMdv3ZeHQkHp3wdRlzaEUFJQpEOhiw9vFUi05txRL99YsqbjaSbH0mQ44nV7EJcrqe7lfEC5llcDcTAR7q5qcgBl9AvDlsXReM71q74zibyE+fD0fCZklsDQXw9PRipcM+7Dqa8ZHTEN1H6Jq1bMioyI9uRk3QkjzoGDEhMkVarz8/XmUVakR7eeEt4Y3vmZHS7iUVYJvTrD/YEf7OWFaL/9GX3vtTimXGPjOqI6QSvhT4GVVKsz+MYGXE/L+6E5wsDLHSr0y8NXWTozEnsQcAMDgMHf8Ty9XJMLHoc5E1x0v9+RNvWu0DJcrEtvbH0dTDAOeh3GvQtWkz0eazqTu/PLuWcUVOJCUCwCYWUegTAhpWhSMmCiGYbDg50u4mV8ONzspvpjSFRYS0/nfpdJosWjXZWgZwEIixodjwhtdAVarZZNWtQwwvHNb9G3nyvs5w7Dl5G8VyrljIyI8MaSjB/64cheXsmUGz+liK8XZW8WwMBNj35Vc7viqMeFYtOuywfkxIa7oUatx315d3xp7Swm6+DhyMz5NoV9714ZPIoJZUWuG7LuTGdAybBdo/WU8QkjzMJ1PN8Kz6Vg69l3JhbmZCBumRBn0yRDal8fSueJjrw9sh2C3xlel/OViDs7fvgdrCzO89UwHg59/dzIDf1yp2VbbxsYC74zsCKVay81c6Dv/1iB8oqu4KjGrCYiCXG3w+ZHUOnfcfDqxC++xUq3F6kMpAIBZ/YO4b8VN5VhKQZM+H2k6LrZSXgfecoWaK3Y3k0q/E9IiKBgxQcdvFnBJlMtGdESUn5PAI+JLKyjH2sNsQm1HT3u83K/xVSlllSpumWXewHZo68DfrZKQeY9Laq32zqiOcLaxwNYzt3G7iJ9Q+lwXL1zJkSEhswQAUKGsaXpnK5Ugs7jCIFdj45SuBuXzt53NRPa9SrjaSTGmqzf2JBp28n1Qc2KCmuy5SNPbNbsX7/HO81koU6gR6GqD/u0b11eJEPJwKBgxMVnFFZi37SK0DDA+2tvkWpVrtQwW/3IFSrUWZmIRVo0N532rbMgnB2+gSK5EsJstZvThf+u8J1di7pYEqDQ1WaPDOnpgeOe2KKtS4bM6esm8Mbg91uhmNPRJJWJcypZBKhEb5GoM69SW91iuUHMl5ecNbIdD1/Ia/X4aYiER47uTt5vs+UjT82tjw/1Zo2WwWVeAb3qfAJNpPknIo46CERNSpdJg1o8XcK9ChXBvB6wY1fgqpi1l27lMnNXtSpn1ZCA6ejZ+m3FSjgw/nmY/mFeM6sjLgdFqGczfkYg7spqtt47W5lgxuiNEIhE2xacblO8eHemJ5NwyXK4jh6S6uV33AGfe8dOLBxqcu/nELRSWs6XoJ3bzwYajaY1+Tw1ZOyGS69VDTM/q8RG8x39dz0NmcQUcrMwxpquXQKMi5PFDwYiJYBgGS3ZfwdU7pXC2scCGKVEmV2QpV1aFD/exy0dBrjZ4bUC7Rl+r1TJ4aw+btDoywhO9g/hdUdcfSUV8rbyKZSPC4GZniVxZFT4/Yjgr8nK/IC7Poy6Tuvvg+M1C7vHw8La8olYAOxtT3XQwbnB7pOaXI6ekaRJXRSJg/VHDcRPT8VxX/lb56l1Xz/fwhbUFte4ipKVQMGIivj91G78k5MBMLMLnz3eBl6NpVf5kGAZL9yahTKGGSASsGhthVLC080IWErNKYCuV4D/D+UmrJ1ILseYvflAxMNQNoyPZb6Yrfr9q8Hz9Q1xxu0jOq8yqr7u/M36/xO8ts65W0ioAbIxPQ5lCjVAPO4wI98T3pzIa/Z4acuiNfkjKqXt8RHjDatUVScqR4eytYkjEIsQasU2dEPLwKBgxAWdvFePd368BABY/FWowa2AK9iflcrkUL/T2Nyqp9p5ciQ/3szMq8we1g7te35pcWRVe336RV03VzlKC93WVXG/klvG26lZ7uV+gQQBTzd1eitFdvFCmtzyycFiIwfp/rqwK3+pqnSwcFgKVVottZw1LzD+o6qq5xDStmRDJe1w9K1LXDBohpHlRMCKwXFkVXtU1gRsR4WmSWwllFSq8vZednfB2sjJoKteQjw/ewL0KFULc7RDb2587rtJo8dq2BBSWK2FpXvOruHR4GPdhMPTTY9zx6lodkT6OKChTICWv3OC1zM1E+HRCF65EfbVZ/Qx3tKw9fBMKtRbd/J0QE+LWpNt5E5YOpq6/Js7KomZmL6+0Cr9dYndQmeLfQUIedRSMCEih1mD2lgsoLFcg1MMOH41pfF+XlvT+vmsoLFcAAD58Lhw20savpV/KKsG2s5kA2KRV/Z03//3zBs5l3IONhRlspexW277tXDAuml3Hf/+Pa9y5L/T2x8XMewDYWZF3fzeswgqwW6GX/8pf1vnwuc4GsyLpBeX4SdfzZuGwUIhEIry+PbHR76sh39RR8ZWYjn3z+vIef38qA2otg27+Tgj3dhRmUIQ8xigYEdCK367hYmYJ7C0l2DQ1yiQT5k6kFuKn82xH3gnRPniiXeOXkDRaNs+EYdh6IPoVTw9ezcWmY2ziaCcvBxSWK2BjYYaVz7EBWWp+Oa+ku6ejJcqq2NoPFUoNFxzpGx/tjQAXG9zIK+MdH1NHP5/Vh1Kg0TIYEOqGbv7OyCxquoZ4Z/8zsM6EW2I6wjxrqqpWKjXYcoYNmGlWhBBhUDAikJ/OZWHLmUyIRMDaSV14tQ5MRaVSwy13uNlJsWS4YbXU+9l+LhOXs2Wwk0rw5tOh3PHMogr8a+clAGwfmeqtuW8+3QHeTtYoV6gxaHU8d378gv7cev7MJwLwb921+kI97PCf4WGY/NUZ3vHlI8IM6qAk5cjw++W7EImABUPZJad+Hx8x6r3dz9/Xm7anDWlar9Qq0vfLxWyUVKjg42yFwWEe9VxFCGlOpvdV/DFwKasEb+1hu9HGDWqPmBDTrPL46V8pXMXT93RN6hqrqFyBVQfYEu3/GtKeK2dfpWKXpsqq1Ojq64iSCiUqVRr0DHTG5O6+YBgG87df5J7n+R6+OJNejLxSBdztpbhbUlXn6339QjfM/vEC75hUIsaEboZF46pLyo+M8ESHtvaQVTZdA7u/4p7kBVLE9CwaVhMYa7UMt6T2Qu8AmFGRM0IEQTMjLaywXIFZP16AUqPF4DB3zIkJFnpIdUrKkeF/x9lllGfC2xq0V2/IqgM3IKtUoUNbe0zp6ccdf+e3a1wtld5BLjiXcQ9W5mb4SNdo74ujafhLb2Zh8VOh2HiMLUI2pYdfncsfW1/sgZx7lTiZVsQ7/tqAYF6SIgCcSitCfEoBJGIR4ga3BwBErjho1Hu7nxu5ZQ2fRASlnz8Uf7MAaQVy2EolGB9tuJxHCGkZFIy0ILVGi7lbE3BXVoVAVxusHh9hkuWmVRotFv7MduR1sjbH8pEdG75IT0LmPezQJYe+N7ojJLplkl8SsrHtLLs0tXBoCDafYL+RLhgaAr82NohPKeA1wnt3dCecSitCeoEcdpYSbl1f37NdvNDF1wnjN53iHbexMMPUnv68YwzDYNWf7Bbjid194NfGBjkllWAYNImtL/bAnK0JTfNkpFkcXxjDe1w9KzI+2gd2lo2f+SOENC0KRlrQyv3JOJ1eDBsLM3w5Ncpk//H76vgtXNMVE1s2oiNcbKWNvlajZbBUtwQ1LsobUX5sOfaUvDL8Zzd7fN6Advjjyl3IlRpE+Tkhtrc/MovYnjzVAl1sMLGbDzbGs7MiXXydkFtquESzenwE4n5KNDg+pacfHGo1yPvrej4uZpbA0lyMebrqsVNr5Zg8jMJa5eqJ6fFxtub+fCO3DMdvFkIsAqb38RduUIQQCkZayt7EHC4J85PxkQh2sxN4RHW7VSjHp7piYgNC3TAq0tOo67ecuY2rd0phbynBoqfYtflyhRqzfryASpUGfdu5oK2DJY7fLIRUIsaqseFQqDV4+YfzvNyNhcNCcDGzBAmZJRCJgGO1SsUDwLEFMTh/+x7216oPYiERG+yK0GgZfKybFZneJwBu9pZIypEhvVBe5/twsZXC0brxweKHz3XmBVPE9LxY63eielZkSJgHL0ghhLQ8CkZawPW7pVi06zIAtp38sE6mmbHPMAwW/3IZCrUWdlIJ3n/WuEZ9BWUKbpllwbBQuNhKdc95BekFcnjYW+LNp0Lx/j62Rkjc4PYIdLHBm7uuIFkv16KrryOGdvTgZkXqWkaZ2M0HrnZSjNt4yuBnY6O84WbPr6C5NzEHKXnlsLeUYFa/IDAMg7n3WVKZ2tMPJRWNT2zVNNVaD2k2C/USVwvLFdidmAMAmNmXtvMSIjQKRppZSYUSr/xwAVUqLfq1d0XcYOOql7akHeeycDqd7ci7+OkOaOtgXH+cD/cno6xKjc5eDni+O7uL5YfTt/HbpTuQiEVYP7kLVh9MQVmVGhHeDpj5RAC+/ucWftVVvqy25OkOSMkrx9/J9W+RXT6yI5buTTI4LhYZbt1UqrVcQ73Z/YPhYG2Ov5PzkVFPbZEXevujSG5Yx6Q+c2KCuHL3xHTpd4necjoTSrUW4d4OiDaitQEhpHlQMNKMNFoGr29PRGZxBXycrfDZxEiT3TqYX1rFzVj0DHTGxG4+Rl1/LqMYuxKyIRKxiadmYhESs0q4njtvPhWKrOJKHE7Oh7mZCB+Pi8DZjGKsrPUhPiTMHdH+ztikmxWpy4bJXXEpqwQ/X8g2+NnwcE+Dmi3bzmYi+14l3OykeKG3P9QaLWZ+d77O527vbou4Ie0NAqT7kUrMUFalbvjEh/T2M2HN/hqPqi0v9uD+rFBr8MPp2wDYujWmWPWYkMcNBSPNaM2hFMSnFMDSXIxNU6LhaG0h9JDq9fbeqyirUsPSXMxts20stUbLJa1O7OaDSB+2fsicLQlQaRgM6+iBkZGeWP4bW6Z93oB2sJFK8NrWi9BoGXg7sTMwZmIRFg4LRU5JZb3BQDd/J/Rr74oJX56u8+ezn+T3oJEr1Fj3N9uwbt7AdrCyMONVdq1t7cQuOJVW1OglmuHhbZu00+/9fE0l5h9Y76Ca6r+/Jt5BYbkCHvaWeLpzWwFHRQipRsFIM/nzai5XE+OjMeG88tOm5kDSXRy4yiaB/ntIiNHVYL8/dRvJuWVwtDbHgqGh0GoZxP10CTkllfBvY41V48KxbO9VlFSoENbWHtOfCMDsHy+gSK5EWFt72Op63Uzo5oNgN1t8dTwdam3dORjLRnTEe3/w+9J09nIAAMSEuBrc52/+uYXCciX82lhjQjcflFWp8NGBupdUXu0fhA5t7fFLguGMS32szc1QWN78u2hWjOqInJLKZn+dR9HoSE9u9oNhGC6om9bbz6A6LyFEGPQ3sRmk5pfjXz+xJctn9AnAqEgvgUdUP1llTUfeCB9HTO9jXDJffmkVl4+xaFgonG0ssCE+DX8n50MqEWP95K44nlKI/Um5kIhF+HhcON759SouZ8vgZG2O0V08kZxbBitzM8wf2A735EpsPpFR52uNj/ZGaZWKa7wHsJ18qwuNze7PLyB3T67El7r+N3GD28PcTIzBq4+hPv8eEoJ7ciUON7Kce0dPe/x5tek6/d6PjxPt9nhQcwfU/F6cSivift+q85oIIcKjYKSJlVWp8PIP51GuUKNHgDMW6/VkMUUf7r+O/DIFm8cxNtzonJYP9l1HuUKNCB9HTIj2wcm0QnxykN1Rs2JUR7R1sMLbukTTV/sHISGzBDsvZEMsAlZPiMRWXSGzl/oFws3eEt+ful3n69hYmGF2/2A8/z9+XRA/Z2soNVpE+zmhe4Az72cb4tNQplCjQ1t7jAj3xMnUwjprlQDAR2PYzr6/X75T76xMbeZmYpS2QK4IgBYLeh5F+tvoq2dFxkR5mfSyKSGPGwpGmpBWy+BfP13itrGun9zVpKeBT6UVYdtZtlLq3Jh2aO9uXO2TU2lF2JN4ByIR8N6oTigsV2DetkRoGXZ77fhoHyz/9SqK5Eq0d7dFryAXrNDljSwaFoqs4gpkFFXAxdYCL/cLRKVSgzW6Gie1vRoTjK905emrrZvUhVtSeTWGnytyV1aJ705mAGCrvaq1DJ6/T4GzsVFswu7G+PR6z9FnJ5W0WOn31we2w/ZzWS3yWo+at/SaO6YXlOOwboeWsTOAhJDmZbqflK3Qhvg0HLyWBwszMTZOjTKqcmlLq1LVdOQN9bDD7P5BDVzBp9JouRmPyT180aGtHeZuu4jCcgVCPezw7qhOOHQtD79eugOxCFgwNBTztl+ESsNgeHhbPN/DF2v/YhNLXx/YDrZSCa8UvD4vRyt0aGvHKwcf7eeEjEI55EoNQj3sDJoNfnb4JhRqLbr7O6N/iCtmfHuu3vcS28sPZmIR0grKG52XwQCoVGkade7DCnAxvY7OrcXIiJqifdXLfwNC3RDkaivQiAghdaFgpIkcvZGP/+otT0T6OAo7oAasPXwTtwrlEIuAVWPDeTUYGuPbExm4mV8OZxsL/HtICD45lIKzt4phK5Xgi8ldoVRr8R/dDpvpfQKwMT4NBWUKhLjbYdWYcPzvWDqK5EoEuNhgYndfVKk0+OZE3btF5g0Mxtyt/Oqmayd1wWbdzMfs/kG87ZnpBeX46Tw7Y7JwWAj+SS3EP6mF9b6XGbrKnHO2NL6vTLmiZZZnANy33gqpX4S3A1f8rqRCyW0Fr12dlxAiPApGmkBmUQVe354IhgEmdffFRBNPjLt6R8Yldr7UNxDh3o5GXZ8rq+JKxr/5VCjOZ9zDhqNsXZCPxoQj0NUWK36/hoIyBQJdbVBaqcKF2/dgZynBpqlRkCvU3PbahUNDYG4mxoh1/9T5WtF+TkjMkqFCWTML8fHYcBy8motiuRK+ztYYXmt75ieHUqDRMhgY6gZ/FxtM/frsfd+PXxsblFapeFVgTcXQju5G1TwhNab18uf+vP1cFipV7Cya/jZfQohpoGDkIVUo1VxflS6+jlg+0rQLU6k1WizadRkaLYMAFxu8Mbi90c/x3h/XIFdq0NXXET0D2nCN6l7o7Y/h4W1x5EY+VwCtR4Azdl5g/7x2YiT8XWyw5q+bqFRp0MXXEcM6eeBydglu5pfX+VoxoW683TP2lhKMivTC/3TB1Mv9ArmuwACQlCPDH5fvQiQC/jUkBG/sSLzve/l4bDgAYHwdZeVNgY1u2zMx3lBd2wWVRsvlD82gImeEmCQKRh4CwzBcXxUXWyk2TI6CVGIm9LDu65sTt5CUw3bk/fC5zrA0N268J1IL8fvluxCLgKXPhGHO1gSUVqkR6eOIJU93QGmVCkt+YXNRov2csCuB7f/xxqD2GBDqjtT8Muw4xwYXS57uAIVai5Gfn6jztYZ2dOeamVX7Y15f/HrpDu7IquBqJ8XYKG/ez1fp8k5GRXjidHoRjt+sf3kGAJ4J98SF2/dMclYEAH7R3T9inJERnlz9mv1Jubgrq4KLrQUvh4QQYjooGHkI35zIwK+6vitfTO4KDwfLhi8S0O0iOVcTZGpPP/QING66WqnWcv1gpvXyx66EbFzJYeuFrJ/cFRYSMVbuS8ZdWRVspRKk5pdDqdZiUAd3zI1haz18uP8GtAwwOMwd3fyduSTY2qzMzaBUa1Ekryko9sag9vBytOIa6M18IoAXTJ1KK8KxlAJIxCIM6+SBFbpS9PXp5u8EM7EI83dQt91HzegubNChX+RsSk8/o4NvQkjLoGDkAZ1KK8IHul4ubw3vYFDjwtRUd8+tUmnh6WCJhcOMb9j31T/pSC+Qw8VWiiA3W/x4OhMiEbBmQiS8HK1wIrWQW1KRK9W4V6FCoIsNVk+IgFgswtlbxfjreh7EImDRsBAcSyngEk1r6+RljyM3CnjH5g4IxsFreUjNL4edpQSTe9Tk5jAMg1V/spVVR0V61bszR9/SZ8KwMT4NWcVU2fRRYieVoG87VwBAQuY9XMoqgYVEjCk9/QQeGSGkPhSMPIA7JZWYuzUBGi2DZ7t4Iba3v9BDatDOC9k4mVYEAPjguc6wszQ36vqckkqsO8yWtx8X7Y2VukDstZhg9A9xg1yhxqJdl7nzGYYtVPbltCjYW5qDYRis3M9eM6GbL1xspZj2Td2JpXaWEqTk8XNI9s3rC7EI2HCUHcO0Xn6893DoWh4uZpbAytwMskol0grkDb4nawsJPv871Yi7wHYFtragb9em7LmuXlx9n+pZkdGRnia91Z6Qxx0FI0aqUml4fVU+eLazySfE5ZdV4X1dP5fnunqhf62aHI3x3u/XUKnSoJOXPQ5ezUWFUoM+wW3w+iA2AXbVgWRk3+PPMHwyPoKrfnkgKZcLFt4Y1A6DVsfX+1pqDQNZZU2juue6eCHM0x6n0opwKVsGqUTMK1ql0TLctmoPB0v81Yhy7nNjgrHklytQarSNvwkA2rvb8Xb2ENMzqgvbfiGruAIHktjKtTNoOy8hJo2CESMwDINle6/iUrYMjtbm2DQ1Clat4FvyO79eg6xSBRdbCywdbvxun/iUAuxPyoWZWAS1hkFagRzu9lKsndgFZrrll+9qlXGfExOEYZ3YLbcqjZZLLH2pbwB+Tsi+b3O52sXEPniuMwDgC9324YndfHjfcvdczOFmUm4VNjwjAgBWFmY4m1HcqHOrmZuJ4GxDJcRNXRddjZ/vTmZAywBPBLsg1MN0G1USQigYMcrWs5nYcT4LYhFbitzH2fSblx28mos/rtwFAKwY1QlORn6YKtQaLNMlmVqYiZGcWwYzsQifP98VLrZSVCo1WPjzJd41/dq7Im5wTU7K9rOZuFUoRxsbCwzp6IFVBxrO56i25cUesDQ3w+XsEvyTWggzsQgv9g3kja++EvL3s1EX2Bjj6c5tuaUuYppm9GG37pYr1NihK6FPRc4IMX0UjDTShdv3sPxXtq/KgqGhXIKcKSutUnG7X4Z19MDTtYqDNcaX8enIKKoAUDNjsWhYCLr5swm7nxy8wf0cAHydrfHZxEiu4V65Qo1PdWXfXxsQjGfqKW5Wl3BvB/QJdgEAfHGEDR5GRXjygsBtZzINlocaYm4mQpmRFVSlEjHaOlgZdQ1peVN6sknNP53LQplCjUBXGzzZ3vT/rhLyuKNgpBHyy6rw6pYLUGkYPN3ZA7OeDGz4IhPw0f5k5JUqYG8pwYrRHY2+Pqu4Ap8f4Sd4Dglzx0u6mYmEzHv4Wq+Eu6W5GBunRPG6oX6pV/a9unx7Y/0wowcAIDW/HH9eY9f+Z+n10JEr1FhnZAIqAKg0jevKq29aLz9uSzExXYGuttBoGWw+yf5ezugTALGRnagJIS2PgpEGqDRazN1yEXmlCrRzs8WqsREmn7AKAGdvFXON5ZY+EwY3O+NroLzz2zUo1DUJnr7O1vh4HPv+q1QaLNh5CYze5/pHY8IR5lmzNp9fWsVVSvV1tsZtvRmUhvx3XAQcrNndMpvi08DoapPodxb+5p9bvDokzcVWKkGkj1Ozvw5pGoeu5SGruBIOVuYY09W74QsIIYKjYKQB7/9xHWczimEnZfuq2LaC8txVKg3e1G2z7dfe1aBKaWMcvp6Hv67ncY8tJGJ8MbkrHKzYAOGzwzd522dffCIAoyK9eM9RXfbd3V6K+JSamiENbbG0kIgxpiv7XHdKKrH7IluFVL+z8D25kuuvU/2czRUjznwiAIt/udzwiURQ1c0eq6v2Pt/Dt1UkmBNCKBi5r18SsvGtbmlh9YRIBLaStuOf/52K9EI5bCzM8MGznYyeyalSabD8t6u8Y++M7IhOXg4AgCvZMm5nCwD0CmyDN58K5Z2fml+Gn86zCYR5pQru+CtPBqKwXIH7iV/Qnxvz/46nQ61l0DPQGV19a2YnNsSncXkfZmIROnnZ82ZpmoqDlTlGRHiitKrluvSSBzMkzB1XsmU4m1EMiViEWL1GeYQQ00bBSD2ScmRYrOuxMm9gOwwOcxd4RI1z/W4pl9uw6KlQeDsZv+Nnw1F+VdLnunhhYjcfAGxJ+H/tTOR+5ulgic+f78JrVgcAHx24AY2WHx0sGBqCg1fzcD/zBrbjEkWL5UpsP8sGNK/2D+bOuSur5M2KTO3ph6O1qrU2lVf7B+Hpz443y3OTpuXlaIWv/2F/L4aHtzX59gyEkBoUjNShWK7EKz9cgEKtxYBQN8wf2E7oITWKRsvgzV2XodYy6ObvhCk9jC9/fbtIjg16iZrt3W3xnt7syvojqbzqqBunRqFNrWWXcxnFOHSNH3Q4Wpsj0MWmwTog+vf625MZXKG1vu1cuOP6pd77BLdpdG0RY9lZSjCskweUauMKoxFhqLUMfr/MbmOn7byEtC4UjNSi1mgxb9tF5JRUwr+NNdZMiGw12fibT9zCpWwZLCRifDgm3OhxMwyD5b9e5T58bSzM8MXkKFhbsHky1++WYu3hm9z5q8aGI9zb0eA5qnv26Du+MKbB3SgH3+jHjblcoebavs9+MpgLhtIKynmdbF/qG8jLR2lKC4aG4MmPjzbLc5Omt+/KXS4Qr/17SQgxbRSM1PLfgyn4J7UQVuZm2DQ1mkvYNHVZxRX45CBb/OuNQe0R9AD5LYeu5fGa060cE45gN/Z5VBotxm88xf1sSk9fjI/2MXiOP6+yZd/1bX+5J67kyHApW1bvaz8T3pa3U2bbmUzIKtlGe8M6eXDHR+rVKfk6NhovbD7X+DdoBHMzEaQS+uvRmtyVVQGgWRFCWiP611bPvit3uW/vH48LR4iHXQNXmAaGYbBk9xVuSeOlvsb/Y1yp1OCd365xj2N7+WFkhCf3eM2hFC5h1K+NNd5+xrBuiUqjxcr9ybxjk7r7omdgG2yMTzc4X98n4yO4PyvUGnylW/t/5clAroDakeR8yHV9YXoGOiO9Ec3wHtS8Ae2waNeVZnt+0jx8nK0wOMyj4RMJISaFghGdlLwy/HsnW9b85X6BeCbcs4ErTMcvCTk4frMQErEIq8ZEGCSTNsb6I6nIKWGTViO8HbBkeAfuZyl5ZbzdMztf6cVto9S3/VwWr5aISMTuwrl6R4Zj91lK2fpiD0glNVswdyfkIK9UAQ97S4zWNT3TahlM/7ZmFmTjlCi8X8dyEAAueHkYp9Kp7Htr9ELvgCb5/08IaVkPFIysX78e/v7+sLS0RI8ePXD2bN2t4Kvt3LkToaGhsLS0ROfOnbFv374HGmxzkVWq8MoPF7hOtAuHhjR8kYkoLFfg3T/YGY3Z/YN4RccaK72gnNud4mBljvWTu3LBgUbLYMiaY9y5u2b3gpu94S6FcoUaS/ck8Y4deL0fLCRibLrPrEh7d1v0Dq5JTtVoGWzSjeXFvgHcOF78/jx3ztex0ej70RHucYSuMVr189XexWOsXoFtqAdNKySViDE+moqcEdIaGR2M7NixA3FxcVi2bBkSEhIQERGBoUOHIj+/7rbtJ0+exKRJkzBz5kxcvHgRo0ePxujRo5GUlFTn+S1Nq2UQtyMRtwrl8HK0wrpJXR9oZkEo7/x2DSUVKgS72WLugOCGL6iFYRgs+/UqlBo2aXXNhAjedmD92Yi5McGI8nOu83kW7eIXBXtreAeEeNghq7gCv1++U+/r75rdm/d4f9Jd3CqUw9HaHJO6s31GLmeX4O9k9vdLIhZBpWG4JSMPe0tcyirhrm+KHJ+LWfce+jlIy5vS0w92lq0jx4sQwmf0p+7q1avx0ksvYfr06QgLC8PGjRthbW2Nb775ps7z165di2HDhmHBggXo0KED3n33XXTt2hWff/75Qw++KXz2900cTs6HhYTtq9KaWsQfvp6H3y7dgUjElmLXX+porANJuTh+sxAAMCcmCANCa+qpHL9ZwFte+deQ9nU+R3pBOf7QbakEgO7+zpjRh81b+d/xdNQ3UfHx2HDehwfDMNigWw6K7eUPG6kEcoUaIz8/wZ3zx7y+mPXjBe6xr17TvGm9/HAu4+EDiSoVbeVtjV7o7S/0EAghD0jEMI2vW6lUKmFtbY2ff/4Zo0eP5o7HxsaipKQEe/fuNbjG19cXcXFxmD9/Pnds2bJl2LNnDy5dumRwPgAoFAooFDVVOktLS+Hj4wOZTAZ7e+OXIepzJDmf++Yf4m6H3sFtmuy5m0tCZglvJoAQwsr4cLjQQyCE1FJaWgoHB4cGP7+NarRSWFgIjUYDd3d+NVJ3d3ckJyfXeU1ubm6d5+fm5tb7OitXrsQ777xjzNAeyPZzmdyfb+SV4UZeWbO/JiGk6fm1Mb7SMCHEdJhk17fFixcjLi6Oe1w9M9LUFgwNQYi7HTTN0dSkmVy7U8qrBULI487GwgxbX+op9DAIIQ/BqGDExcUFZmZmyMvjl/rOy8uDh0fde/s9PDyMOh8ApFIppNL7d3ZtCsFudogb0np2zhBCCCGPIqMSWC0sLBAVFYXDhw9zx7RaLQ4fPoxevXrVeU2vXr145wPAoUOH6j2fEEIIIY8Xo5dp4uLiEBsbi+joaHTv3h2ffvop5HI5pk+fDgCYNm0avLy8sHLlSgDA66+/jieffBKffPIJhg8fju3bt+P8+fP48ssvm/adEEIIIaRVMjoYmTBhAgoKCvD2228jNzcXkZGROHDgAJekmpmZCbG4ZsKld+/e2Lp1K9566y0sWbIE7dq1w549e9CpU6emexeEEEIIabWM2torlMZuDSKEEEKI6Wjs53frKTVKCCGEkEcSBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRlNHl4IVQXSS2tLRU4JEQQgghpLGqP7cbKvbeKoKRsrIyAICPj4/AIyGEEEKIscrKyuDg4FDvz1tFbxqtVos7d+7Azs4OIpFI6OEIorS0FD4+PsjKynqs+/PQfWDRfWDRfWDRfWDRfWCZ0n1gGAZlZWXw9PTkNdGtrVXMjIjFYnh7ews9DJNgb28v+C+XKaD7wKL7wKL7wKL7wKL7wDKV+3C/GZFqlMBKCCGEEEFRMEIIIYQQQVEw0kpIpVIsW7YMUqlU6KEIiu4Di+4Di+4Di+4Di+4DqzXeh1aRwEoIIYSQRxfNjBBCCCFEUBSMEEIIIURQFIwQQgghRFAUjBBCCCFEUBSMtEIjR46Er68vLC0t0bZtW0ydOhV37twRelgtKiMjAzNnzkRAQACsrKwQFBSEZcuWQalUCj20Fvf++++jd+/esLa2hqOjo9DDaVHr16+Hv78/LC0t0aNHD5w9e1boIbWoY8eOYcSIEfD09IRIJMKePXuEHpIgVq5ciW7dusHOzg5ubm4YPXo0bty4IfSwWtyGDRsQHh7OFTvr1asX9u/fL/SwGoWCkVYoJiYGP/30E27cuIFdu3YhLS0NY8eOFXpYLSo5ORlarRabNm3C1atXsWbNGmzcuBFLliwRemgtTqlUYty4cZg9e7bQQ2lRO3bsQFxcHJYtW4aEhARERERg6NChyM/PF3poLUYulyMiIgLr168XeiiCio+Px5w5c3D69GkcOnQIKpUKQ4YMgVwuF3poLcrb2xsffvghLly4gPPnz2PAgAEYNWoUrl69KvTQGsaQVm/v3r2MSCRilEql0EMR1KpVq5iAgAChhyGYzZs3Mw4ODkIPo8V0796dmTNnDvdYo9Ewnp6ezMqVKwUclXAAMLt37xZ6GCYhPz+fAcDEx8cLPRTBOTk5MV999ZXQw2gQzYy0csXFxdiyZQt69+4Nc3NzoYcjKJlMBmdnZ6GHQVqAUqnEhQsXMGjQIO6YWCzGoEGDcOrUKQFHRkyBTCYDgMf63wONRoPt27dDLpejV69eQg+nQRSMtFKLFi2CjY0N2rRpg8zMTOzdu1foIQkqNTUV69atwyuvvCL0UEgLKCwshEajgbu7O++4u7s7cnNzBRoVMQVarRbz589Hnz590KlTJ6GH0+KuXLkCW1tbSKVSzJo1C7t370ZYWJjQw2oQBSMm4s0334RIJLrvf8nJydz5CxYswMWLF3Hw4EGYmZlh2rRpYB6BYrrG3gcAyMnJwbBhwzBu3Di89NJLAo28aT3IfSCEAHPmzEFSUhK2b98u9FAEERISgsTERJw5cwazZ89GbGwsrl27JvSwGkTl4E1EQUEBioqK7ntOYGAgLCwsDI5nZ2fDx8cHJ0+ebBXTcfdj7H24c+cO+vfvj549e+Lbb7+FWPxoxNcP8vvw7bffYv78+SgpKWnm0QlPqVTC2toaP//8M0aPHs0dj42NRUlJyWM5UygSibB7927e/XjczJ07F3v37sWxY8cQEBAg9HBMwqBBgxAUFIRNmzYJPZT7kgg9AMJydXWFq6vrA12r1WoBAAqFoimHJAhj7kNOTg5iYmIQFRWFzZs3PzKBCPBwvw+PAwsLC0RFReHw4cPch69Wq8Xhw4cxd+5cYQdHWhzDMHjttdewe/duHD16lAIRPVqttlV8NlAw0sqcOXMG586dwxNPPAEnJyekpaVh6dKlCAoKavWzIsbIyclB//794efnh//+978oKCjgfubh4SHgyFpeZmYmiouLkZmZCY1Gg8TERABAcHAwbG1thR1cM4qLi0NsbCyio6PRvXt3fPrpp5DL5Zg+fbrQQ2sx5eXlSE1N5R7funULiYmJcHZ2hq+vr4Aja1lz5szB1q1bsXfvXtjZ2XF5Qw4ODrCyshJ4dC1n8eLFeOqpp+Dr64uysjJs3boVR48exZ9//in00Bom7GYeYqzLly8zMTExjLOzMyOVShl/f39m1qxZTHZ2ttBDa1GbN29mANT53+MmNja2zvtw5MgRoYfW7NatW8f4+voyFhYWTPfu3ZnTp08LPaQWdeTIkTr/38fGxgo9tBZV378FmzdvFnpoLWrGjBmMn58fY2Fhwbi6ujIDBw5kDh48KPSwGoVyRgghhBAiqEdnkZ0QQgghrRIFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBHU/wHt5m/0Q97diwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b249fd51", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv (3.11.7.final.0)", + "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.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/glassboxml/models/knn.py b/glassboxml/models/knn.py new file mode 100644 index 0000000..34da20e --- /dev/null +++ b/glassboxml/models/knn.py @@ -0,0 +1,19 @@ +import numpy as np +from collections import Counter + +class KNN: + def __init__(self, k=5): + self.k = k + + def fit(self, X, y): + self.X_train = np.array(X) + self.y_train = np.array(y) + + def predict(self, X): + return np.array([self._predict_sample(x) for x in np.array(X)]) + + def _predict_sample(self, x): + distances = np.linalg.norm(self.X_train - x, axis=1) + k_indices = np.argsort(distances)[:self.k] + k_labels = self.y_train[k_indices] + return Counter(k_labels).most_common(1)[0][0] From cfeed5b274d7d0cc5d489e5f9970ff842db530c2 Mon Sep 17 00:00:00 2001 From: Iskken Date: Mon, 13 Jul 2026 06:27:06 +0200 Subject: [PATCH 2/7] Rework basic knn implementation --- experiments/knn/Test_utils.ipynb | 1114 ----------------------------- experiments/knn/scratch.ipynb | 172 +++++ glassboxml/distances/distances.py | 8 + glassboxml/models/knn.py | 16 +- 4 files changed, 191 insertions(+), 1119 deletions(-) delete mode 100644 experiments/knn/Test_utils.ipynb create mode 100644 experiments/knn/scratch.ipynb create mode 100644 glassboxml/distances/distances.py diff --git a/experiments/knn/Test_utils.ipynb b/experiments/knn/Test_utils.ipynb deleted file mode 100644 index 05a0e8b..0000000 --- a/experiments/knn/Test_utils.ipynb +++ /dev/null @@ -1,1114 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "id": "8cb78c58-1868-4794-aef3-e8f6a68944c0", - "metadata": {}, - "outputs": [], - "source": [ - "from glassboxml.data.generators import generate_classification_dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "8eb1f929-9680-424e-83a5-eee52144719f", - "metadata": {}, - "outputs": [], - "source": [ - "X, y, w_true, b_true = generate_classification_dataset([1.5])" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "84421ed5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 3.04717080e-01],\n", - " [-1.03998411e+00],\n", - " [ 7.50451196e-01],\n", - " [ 9.40564716e-01],\n", - " [-1.95103519e+00],\n", - " [-1.30217951e+00],\n", - " [ 1.27840403e-01],\n", - " [-3.16242592e-01],\n", - " [-1.68011575e-02],\n", - " [-8.53043928e-01],\n", - " [ 8.79397975e-01],\n", - " [ 7.77791935e-01],\n", - " [ 6.60306976e-02],\n", - " [ 1.12724121e+00],\n", - " [ 4.67509342e-01],\n", - " [-8.59292463e-01],\n", - " [ 3.68750784e-01],\n", - " [-9.58882601e-01],\n", - " [ 8.78450301e-01],\n", - " [-4.99259110e-02],\n", - " [-1.84862364e-01],\n", - " [-6.80929544e-01],\n", - " [ 1.22254134e+00],\n", - " [-1.54529482e-01],\n", - " [-4.28327822e-01],\n", - " [-3.52133550e-01],\n", - " [ 5.32309186e-01],\n", - " [ 3.65444064e-01],\n", - " [ 4.12732612e-01],\n", - " [ 4.30821003e-01],\n", - " [ 2.14164760e+00],\n", - " [-4.06415016e-01],\n", - " [-5.12242729e-01],\n", - " [-8.13772728e-01],\n", - " [ 6.15979423e-01],\n", - " [ 1.12897229e+00],\n", - " [-1.13947458e-01],\n", - " [-8.40156477e-01],\n", - " [-8.24481216e-01],\n", - " [ 6.50592788e-01],\n", - " [ 7.43254171e-01],\n", - " [ 5.43154268e-01],\n", - " [-6.65509707e-01],\n", - " [ 2.32161323e-01],\n", - " [ 1.16685809e-01],\n", - " [ 2.18688597e-01],\n", - " [ 8.71428778e-01],\n", - " [ 2.23595549e-01],\n", - " [ 6.78913563e-01],\n", - " [ 6.75790695e-02],\n", - " [ 2.89119399e-01],\n", - " [ 6.31288226e-01],\n", - " [-1.45715582e+00],\n", - " [-3.19671216e-01],\n", - " [-4.70372654e-01],\n", - " [-6.38877848e-01],\n", - " [-2.75142251e-01],\n", - " [ 1.49494131e+00],\n", - " [-8.65831116e-01],\n", - " [ 9.68278355e-01],\n", - " [-1.68286977e+00],\n", - " [-3.34885030e-01],\n", - " [ 1.62753065e-01],\n", - " [ 5.86222331e-01],\n", - " [ 7.11226580e-01],\n", - " [ 7.93347235e-01],\n", - " [-3.48725072e-01],\n", - " [-4.62351793e-01],\n", - " [ 8.57975881e-01],\n", - " [-1.91304325e-01],\n", - " [-1.27568632e+00],\n", - " [-1.13328721e+00],\n", - " [-9.19452286e-01],\n", - " [ 4.97160744e-01],\n", - " [ 1.42425736e-01],\n", - " [ 6.90485354e-01],\n", - " [-4.27252646e-01],\n", - " [ 1.58539691e-01],\n", - " [ 6.25590394e-01],\n", - " [-3.09346540e-01],\n", - " [ 4.56775238e-01],\n", - " [-6.61925941e-01],\n", - " [-3.63053847e-01],\n", - " [-3.81737894e-01],\n", - " [-1.19583965e+00],\n", - " [ 4.86972481e-01],\n", - " [-4.69402340e-01],\n", - " [ 1.24941187e-02],\n", - " [ 4.80746659e-01],\n", - " [ 4.46531176e-01],\n", - " [ 6.65385109e-01],\n", - " [-9.84854845e-02],\n", - " [-4.23298312e-01],\n", - " [-7.97182109e-02],\n", - " [-1.68733443e+00],\n", - " [-1.44711247e+00],\n", - " [-1.32269961e+00],\n", - " [-9.97246828e-01],\n", - " [ 3.99774227e-01],\n", - " [-9.05479055e-01],\n", - " [-3.78162554e-01],\n", - " [ 1.29922830e+00],\n", - " [-3.56263971e-01],\n", - " [ 7.37515568e-01],\n", - " [-9.33617680e-01],\n", - " [-2.05437558e-01],\n", - " [-9.50022055e-01],\n", - " [-3.39033076e-01],\n", - " [ 8.40308137e-01],\n", - " [-1.72732042e+00],\n", - " [ 4.34423644e-01],\n", - " [ 2.37735602e-01],\n", - " [-5.94149956e-01],\n", - " [-1.44605785e+00],\n", - " [ 7.21295077e-02],\n", - " [-5.29492709e-01],\n", - " [ 2.32676211e-01],\n", - " [ 2.18521455e-02],\n", - " [ 1.60177889e+00],\n", - " [-2.39355627e-01],\n", - " [-1.02349749e+00],\n", - " [ 1.79275635e-01],\n", - " [ 2.19996684e-01],\n", - " [ 1.35918758e+00],\n", - " [ 8.35111246e-01],\n", - " [ 3.56871059e-01],\n", - " [ 1.46330289e+00],\n", - " [-1.18876305e+00],\n", - " [-6.39751533e-01],\n", - " [-9.26575941e-01],\n", - " [-3.89809803e-01],\n", - " [-1.37668615e+00],\n", - " [ 6.35150947e-01],\n", - " [-2.22222697e-01],\n", - " [-1.47080629e+00],\n", - " [-1.01557908e+00],\n", - " [ 3.13513847e-01],\n", - " [ 8.38126568e-01],\n", - " [ 1.99673089e+00],\n", - " [ 2.91386247e+00],\n", - " [ 4.14409433e-01],\n", - " [-9.89538120e-01],\n", - " [-2.13204628e+00],\n", - " [ 2.67711462e-01],\n", - " [-8.12941095e-01],\n", - " [-4.15357260e-01],\n", - " [-6.12096799e-01],\n", - " [-1.40790886e-01],\n", - " [ 1.06598023e+00],\n", - " [ 1.57048567e-01],\n", - " [-1.58634837e-01],\n", - " [-1.03565375e+00],\n", - " [-1.67468294e+00],\n", - " [-4.86307909e-01],\n", - " [-5.37825508e-02],\n", - " [ 1.76792991e+00],\n", - " [ 1.30274521e-01],\n", - " [ 9.82739511e-01],\n", - " [-4.99295599e-01],\n", - " [-1.18494377e+00],\n", - " [-9.65116762e-01],\n", - " [-7.25226065e-01],\n", - " [ 2.12846973e+00],\n", - " [-8.21386679e-01],\n", - " [ 8.38489204e-01],\n", - " [-9.02927178e-01],\n", - " [ 9.31573013e-01],\n", - " [ 3.84950966e-01],\n", - " [-1.56637898e-01],\n", - " [-4.07625261e-02],\n", - " [-6.54787695e-01],\n", - " [ 4.46072201e-01],\n", - " [-4.54983480e-01],\n", - " [-1.22560576e+00],\n", - " [-1.27793757e+00],\n", - " [ 1.72587918e-01],\n", - " [ 1.57909126e+00],\n", - " [ 1.59991614e-01],\n", - " [-1.18638326e-01],\n", - " [ 2.85826140e-01],\n", - " [ 1.30600174e+00],\n", - " [ 2.19382501e-01],\n", - " [-4.10927231e-01],\n", - " [ 1.10628871e+00],\n", - " [ 4.28756438e-01],\n", - " [ 1.53575599e+00],\n", - " [ 1.83234437e-01],\n", - " [-1.22446903e+00],\n", - " [-1.36815920e+00],\n", - " [ 1.65092793e+00],\n", - " [ 1.72366572e+00],\n", - " [-1.79519213e-01],\n", - " [-3.83187321e-01],\n", - " [ 1.46144429e+00],\n", - " [-1.10704568e+00],\n", - " [-8.94727019e-01],\n", - " [ 6.43326795e-01],\n", - " [-3.94605123e-01],\n", - " [-5.12186672e-03],\n", - " [-1.63442899e-01],\n", - " [ 3.37574549e-01],\n", - " [ 1.40748186e+00],\n", - " [ 9.05849069e-02],\n", - " [ 6.43938793e-01],\n", - " [-2.05017210e+00],\n", - " [-4.87184019e-02],\n", - " [-8.43230270e-01],\n", - " [-1.21881306e+00],\n", - " [-8.78152367e-01],\n", - " [-3.34123441e-01],\n", - " [ 9.15902542e-01],\n", - " [-1.32639272e+00],\n", - " [ 3.06314926e-02],\n", - " [-4.84169433e-01],\n", - " [-3.27673094e-01],\n", - " [ 1.00275783e+00],\n", - " [ 5.38115437e-01],\n", - " [ 1.33739811e+00],\n", - " [-1.54505679e-01],\n", - " [-6.95942612e-01],\n", - " [-2.23858817e-01],\n", - " [ 2.42496791e-01],\n", - " [ 1.76573358e-01],\n", - " [-1.08438807e+00],\n", - " [ 9.04897816e-02],\n", - " [ 2.28228330e-01],\n", - " [ 2.51747404e+00],\n", - " [ 1.87684461e+00],\n", - " [-8.53243351e-01],\n", - " [-2.87383362e-01],\n", - " [-1.46344200e+00],\n", - " [-5.90707014e-01],\n", - " [ 3.15605004e-01],\n", - " [ 1.20585362e+00],\n", - " [-7.29083838e-01],\n", - " [-6.54146440e-01],\n", - " [-2.14728903e+00],\n", - " [-1.62665921e-01],\n", - " [-1.06241441e+00],\n", - " [-5.29439427e-01],\n", - " [-8.76860778e-01],\n", - " [-9.42625543e-02],\n", - " [-1.75772839e+00],\n", - " [-1.46704525e+00],\n", - " [ 2.12924711e+00],\n", - " [-1.28742258e+00],\n", - " [-1.09678558e+00],\n", - " [ 1.83691353e+00],\n", - " [ 2.90506717e+00],\n", - " [-1.17156663e+00],\n", - " [-3.68248957e-01],\n", - " [ 3.41555551e-01],\n", - " [ 1.72869764e+00],\n", - " [-9.86857078e-01],\n", - " [-2.45277846e-01],\n", - " [ 7.77337576e-01],\n", - " [ 4.34766074e-01],\n", - " [-3.76156071e-01],\n", - " [-1.33822965e-01],\n", - " [-1.37489581e+00],\n", - " [-2.38173744e-01],\n", - " [-2.66387490e-01],\n", - " [ 2.32169890e-01],\n", - " [-5.55327219e-01],\n", - " [ 4.71538523e-01],\n", - " [ 1.01271582e+00],\n", - " [ 1.55429328e-01],\n", - " [ 3.51756408e-01],\n", - " [ 5.31553476e-02],\n", - " [ 8.43930914e-05],\n", - " [-7.21558034e-01],\n", - " [ 3.16494262e-01],\n", - " [-9.72865984e-02],\n", - " [ 2.09316831e+00],\n", - " [ 1.57335490e+00],\n", - " [ 3.85846553e-01],\n", - " [-7.63057210e-01],\n", - " [-1.11241147e+00],\n", - " [ 1.19114295e+00],\n", - " [ 2.62749225e-01],\n", - " [ 4.80143403e-01],\n", - " [-1.74458599e+00],\n", - " [ 9.27438482e-01],\n", - " [ 4.54420338e-01],\n", - " [-1.11043068e+00],\n", - " [-4.71524807e-01],\n", - " [ 2.63717204e-01],\n", - " [ 5.24667984e-02],\n", - " [-2.92171186e-01],\n", - " [-1.03488268e-01],\n", - " [-2.51977378e-01],\n", - " [ 1.52562512e-01],\n", - " [ 1.47149197e+00],\n", - " [-2.56665844e+00],\n", - " [-2.36850265e-01],\n", - " [ 1.76512421e-01],\n", - " [ 2.95993990e-01],\n", - " [-3.71914581e-01],\n", - " [-1.75672178e+00],\n", - " [ 3.27995484e-01],\n", - " [ 1.72735021e+00],\n", - " [-1.53386140e+00],\n", - " [ 8.63828014e-01],\n", - " [-3.28525223e-01],\n", - " [-6.13243458e-02],\n", - " [-1.05289851e+00],\n", - " [-3.34456172e-01],\n", - " [ 1.30004459e+00],\n", - " [ 5.82655242e-01],\n", - " [ 1.73231161e+00],\n", - " [ 1.17741189e+00],\n", - " [ 4.39086679e-01],\n", - " [ 1.74393453e+00],\n", - " [ 4.38993159e-01],\n", - " [ 8.27988177e-01],\n", - " [-2.96570954e-01],\n", - " [ 6.65458159e-02],\n", - " [-6.97423823e-01],\n", - " [ 9.89583935e-01],\n", - " [-1.17830362e+00],\n", - " [ 7.82350342e-01],\n", - " [-1.90651058e-01],\n", - " [ 1.17124709e+00],\n", - " [ 7.50868989e-01],\n", - " [ 1.82064616e+00],\n", - " [ 7.30774691e-01],\n", - " [-1.57204026e+00],\n", - " [-6.69531729e-02],\n", - " [-1.17200719e+00],\n", - " [-5.18279842e-01],\n", - " [ 1.51122843e+00],\n", - " [ 6.37533811e-01],\n", - " [-6.98930429e-01],\n", - " [-1.01371737e+00],\n", - " [ 3.27820929e-02],\n", - " [-1.21656015e+00],\n", - " [-6.71140277e-01],\n", - " [ 3.12009472e-01],\n", - " [ 1.15531204e+00],\n", - " [ 6.08761472e-01],\n", - " [-2.29128951e+00],\n", - " [ 3.04366729e-01],\n", - " [ 7.20335732e-02],\n", - " [ 4.13890285e-01],\n", - " [ 1.61620968e+00],\n", - " [-2.06323828e+00],\n", - " [-5.91103425e-01],\n", - " [ 5.90906323e-01],\n", - " [-1.58159440e+00],\n", - " [ 1.47594905e+00],\n", - " [ 3.68356613e-01],\n", - " [ 8.46583986e-01],\n", - " [-5.70943662e-01],\n", - " [ 8.13763690e-01],\n", - " [ 1.06847156e+00],\n", - " [ 2.32878020e-01],\n", - " [ 2.34400893e-01],\n", - " [ 2.70343239e-01],\n", - " [-8.63345265e-01],\n", - " [-1.47528680e-01],\n", - " [-1.52522532e-01],\n", - " [ 3.83393864e-01],\n", - " [ 9.99824247e-01],\n", - " [-1.05853608e+00],\n", - " [-1.25009030e-01],\n", - " [ 1.48145555e+00],\n", - " [-7.43588229e-01],\n", - " [-8.22250017e-01],\n", - " [ 2.02306192e-01],\n", - " [ 8.44385190e-01],\n", - " [ 1.14260556e-02],\n", - " [ 1.32896059e+00],\n", - " [ 8.56793983e-01],\n", - " [ 8.41820067e-01],\n", - " [ 5.54116501e-01],\n", - " [ 2.32765310e+00],\n", - " [-2.05161689e-01],\n", - " [-2.00352229e+00],\n", - " [ 1.60425436e+00],\n", - " [-4.57699431e-01],\n", - " [ 1.07880444e-01],\n", - " [ 1.30955068e+00],\n", - " [-1.60225954e+00],\n", - " [-1.25164721e+00],\n", - " [-1.60127794e+00],\n", - " [-7.94136290e-01],\n", - " [ 4.39636606e-01],\n", - " [ 5.24187843e-01],\n", - " [ 2.76274179e-01],\n", - " [-1.41276588e+00],\n", - " [-2.31010344e+00],\n", - " [ 5.43535854e-02],\n", - " [-4.71776034e-01],\n", - " [ 4.59385772e-01],\n", - " [ 7.01953626e-01],\n", - " [ 1.38241432e-01],\n", - " [ 7.60133085e-01],\n", - " [ 2.29211374e-01],\n", - " [ 5.30064706e-01],\n", - " [-7.04673263e-01],\n", - " [-1.79611414e-01],\n", - " [ 1.96776097e-01],\n", - " [ 8.20528475e-01],\n", - " [-3.93741172e-01],\n", - " [ 5.21167256e-01],\n", - " [-2.65838792e-01],\n", - " [-1.17542167e-01],\n", - " [ 8.29519042e-01],\n", - " [-1.99306037e+00],\n", - " [-1.29647233e+00],\n", - " [-1.48218540e+00],\n", - " [-2.33361612e+00],\n", - " [-6.78264440e-01],\n", - " [ 7.49433900e-01],\n", - " [-2.84884066e-01],\n", - " [ 1.97790082e-01],\n", - " [ 1.08921750e+00],\n", - " [ 1.32768613e+00],\n", - " [-6.91379347e-02],\n", - " [ 1.35358589e+00],\n", - " [ 9.21266584e-02],\n", - " [-8.37398224e-01],\n", - " [-5.94400352e-01],\n", - " [-1.48053651e+00],\n", - " [-8.88133854e-01],\n", - " [-3.58016688e-01],\n", - " [ 8.03585019e-01],\n", - " [ 1.72076983e+00],\n", - " [-1.38218152e+00],\n", - " [ 3.92827468e-01],\n", - " [-1.04054394e+00],\n", - " [ 4.74697088e-01],\n", - " [-1.31086651e-01],\n", - " [-1.83090583e+00],\n", - " [ 9.28296992e-01],\n", - " [-6.05000713e-01],\n", - " [-5.33900238e-01],\n", - " [-1.06975241e+00],\n", - " [-6.54283277e-01],\n", - " [ 4.27890441e-01],\n", - " [-1.89244341e-01],\n", - " [ 3.28662002e-01],\n", - " [ 3.61921854e-01],\n", - " [ 1.32066166e+00],\n", - " [-3.42786151e-01],\n", - " [-1.47685782e+00],\n", - " [ 1.06722242e+00],\n", - " [-3.31488172e-01],\n", - " [ 1.11459244e+00],\n", - " [ 3.83377113e-01],\n", - " [-1.31137530e-01],\n", - " [ 3.48775894e-01],\n", - " [ 1.95101256e+00],\n", - " [ 2.07698053e+00],\n", - " [ 6.93811351e-02],\n", - " [ 1.60190593e-01],\n", - " [ 1.07624016e+00],\n", - " [-8.45661033e-01],\n", - " [ 3.33070373e-01],\n", - " [-2.58628480e-02],\n", - " [ 3.13908211e-01],\n", - " [-8.33368806e-01],\n", - " [-1.58956749e+00],\n", - " [-2.07298344e+00],\n", - " [-1.11738411e+00],\n", - " [-4.58675285e-01],\n", - " [-2.93191587e-01],\n", - " [ 1.93723116e+00],\n", - " [ 1.10599337e+00],\n", - " [-9.62091116e-01],\n", - " [ 3.47708452e-01],\n", - " [-4.07078236e-01],\n", - " [-2.84363838e-01],\n", - " [ 1.85325649e-01],\n", - " [ 6.19171117e-01],\n", - " [-3.39258484e-01],\n", - " [ 1.06385153e+00],\n", - " [-1.14193823e+00],\n", - " [ 6.33906236e-03],\n", - " [ 2.59767373e+00],\n", - " [ 2.23079743e-01],\n", - " [ 1.43321451e+00],\n", - " [ 9.15201782e-02],\n", - " [ 5.80777095e-01],\n", - " [-5.67831944e-02],\n", - " [-1.70407581e-01],\n", - " [-7.79482397e-01],\n", - " [ 4.30301359e-01],\n", - " [-8.51537189e-01],\n", - " [ 6.65585236e-01],\n", - " [ 1.08528700e+00],\n", - " [ 3.66531407e-01],\n", - " [-2.86248734e-01],\n", - " [ 4.53965579e-01],\n", - " [-3.08673056e-01],\n", - " [ 9.35547125e-01],\n", - " [-1.83140608e+00],\n", - " [-3.35607368e-01],\n", - " [-1.99081200e+00],\n", - " [-1.49506083e+00],\n", - " [ 1.36386223e+00],\n", - " [ 8.95184982e-01],\n", - " [-7.19480233e-01],\n", - " [-1.50250346e+00],\n", - " [-2.96452884e+00],\n", - " [-5.43495508e-01],\n", - " [ 2.42041501e+00],\n", - " [ 4.34884271e-01],\n", - " [-5.59572286e-01],\n", - " [ 4.65080210e-01],\n", - " [-1.56095835e+00],\n", - " [-2.97323363e-01],\n", - " [ 9.94774730e-02],\n", - " [-8.61006518e-02],\n", - " [ 7.90806122e-01],\n", - " [ 3.44645226e-01],\n", - " [ 6.68326018e-01],\n", - " [-6.88372282e-01],\n", - " [ 8.97815408e-01],\n", - " [ 1.62893695e+00],\n", - " [-9.70149520e-01],\n", - " [-8.87695656e-01],\n", - " [ 1.33578434e+00],\n", - " [-1.91343987e-01],\n", - " [ 1.40382139e+00],\n", - " [-4.42535712e-01],\n", - " [ 1.45504558e+00],\n", - " [ 1.31485817e-01],\n", - " [ 2.58228823e-01],\n", - " [ 1.56471802e+00],\n", - " [-3.61770477e-01],\n", - " [-9.41122096e-01],\n", - " [-4.48564208e-01],\n", - " [ 4.52333951e-01],\n", - " [-1.56575907e+00],\n", - " [ 6.37470903e-01],\n", - " [-5.38771318e-01],\n", - " [ 1.14781266e+00],\n", - " [-2.39426030e+00],\n", - " [-7.86565775e-01],\n", - " [-1.68646815e+00],\n", - " [-8.26229466e-01],\n", - " [ 2.47665901e-01],\n", - " [-1.79226625e-01],\n", - " [-2.53377569e-01],\n", - " [-1.59184871e-01],\n", - " [ 2.03388241e-01],\n", - " [-1.00853604e+00],\n", - " [ 7.06849641e-01],\n", - " [ 6.62665970e-01],\n", - " [ 3.85037938e-01],\n", - " [ 5.56533443e-01],\n", - " [ 2.96418001e-01],\n", - " [ 2.03507330e+00],\n", - " [-8.70941711e-02],\n", - " [-3.07083218e-01],\n", - " [-7.53527580e-01],\n", - " [-1.03226267e+00],\n", - " [-1.24447179e+00],\n", - " [-8.88797313e-01],\n", - " [-7.06803817e-02],\n", - " [ 3.34295128e-01],\n", - " [ 5.11420586e-02],\n", - " [-7.65535277e-01],\n", - " [ 9.00184564e-01],\n", - " [ 7.39412672e-01],\n", - " [-1.59648307e-01],\n", - " [-6.52916145e-01],\n", - " [ 5.48427921e-01],\n", - " [ 1.87973587e-01],\n", - " [-1.44812726e+00],\n", - " [-6.79802560e-02],\n", - " [ 2.62035812e-01],\n", - " [-8.99694786e-01],\n", - " [ 1.89843393e-01],\n", - " [-1.45482249e+00],\n", - " [ 1.33618610e+00],\n", - " [ 1.24794999e+00],\n", - " [-2.52517334e-01],\n", - " [ 3.63454338e-01],\n", - " [-2.40992197e+00],\n", - " [-1.15634766e+00],\n", - " [-2.93778920e-01],\n", - " [-1.07213302e+00],\n", - " [ 7.14396483e-01],\n", - " [ 1.99729653e+00],\n", - " [-1.17661472e+00],\n", - " [-8.37463404e-01],\n", - " [ 2.35448368e-01],\n", - " [ 1.61111615e+00],\n", - " [-1.22237431e+00],\n", - " [ 2.49036122e-01],\n", - " [ 1.82129885e+00],\n", - " [-1.65175915e+00],\n", - " [-1.28106921e+00],\n", - " [-4.23606606e-01],\n", - " [-5.20588413e-01],\n", - " [ 8.12601288e-01],\n", - " [ 2.41659720e-01],\n", - " [-1.77496206e+00],\n", - " [ 5.15410403e-01],\n", - " [-5.77538887e-01],\n", - " [ 1.27444722e+00],\n", - " [-6.27587536e-01],\n", - " [-6.36615283e-01],\n", - " [ 5.41131611e-01],\n", - " [ 7.62926482e-01],\n", - " [ 4.48099364e-01],\n", - " [-1.68559732e+00],\n", - " [ 5.38034440e-01],\n", - " [-1.03430805e+00],\n", - " [ 2.35276112e-01],\n", - " [-1.42373444e+00],\n", - " [ 4.46322148e-01],\n", - " [-8.06598904e-01],\n", - " [-1.28263465e+00],\n", - " [ 7.13820136e-01],\n", - " [ 2.41644522e-01],\n", - " [-6.13976801e-01],\n", - " [ 1.45117885e+00],\n", - " [-4.40652422e-01],\n", - " [ 3.21076740e-02],\n", - " [ 2.68913448e-01],\n", - " [-6.19665934e-01],\n", - " [ 4.71136293e-01],\n", - " [-5.33452347e-01],\n", - " [-4.11638322e-01],\n", - " [ 1.36264264e+00],\n", - " [-1.04058605e+00],\n", - " [-2.41278033e+00],\n", - " [ 1.61093700e+00],\n", - " [ 2.54932795e+00],\n", - " [-4.05269265e-01],\n", - " [-1.93683804e+00],\n", - " [-3.10483976e-01],\n", - " [-2.86222950e-01],\n", - " [-1.89923841e-01],\n", - " [-1.11338804e+00],\n", - " [ 5.79561142e-01],\n", - " [ 5.24507375e-01],\n", - " [-1.49440562e+00],\n", - " [ 6.99196732e-01],\n", - " [ 2.05268498e+00],\n", - " [ 1.71960332e-01],\n", - " [-3.37325162e-01],\n", - " [-1.42003214e-01],\n", - " [ 6.15256767e-01],\n", - " [-1.73067161e+00],\n", - " [ 1.64390703e-01],\n", - " [-3.90463949e-01],\n", - " [ 1.84782501e+00],\n", - " [-1.74172734e-01],\n", - " [ 1.66788761e+00],\n", - " [-1.10374070e+00],\n", - " [ 5.87259167e-01],\n", - " [ 3.19400264e-01],\n", - " [-8.69047248e-01],\n", - " [ 1.77396115e-01],\n", - " [ 1.21251884e+00],\n", - " [-3.23791704e-01],\n", - " [-1.69196265e+00],\n", - " [-1.75628265e-02],\n", - " [-9.02423095e-01],\n", - " [-3.42340939e-01],\n", - " [-8.15877697e-02],\n", - " [-1.70565222e+00],\n", - " [-1.61565834e+00],\n", - " [ 4.82066836e-01],\n", - " [-5.22718696e-01],\n", - " [-2.56474434e+00],\n", - " [ 7.84844037e-01],\n", - " [ 2.72369755e-01],\n", - " [-7.13874824e-01],\n", - " [-1.31683021e+00],\n", - " [ 8.35807896e-01],\n", - " [ 3.49350623e-01],\n", - " [ 2.38260228e+00],\n", - " [ 4.20188599e-01],\n", - " [ 3.87703141e-01],\n", - " [-1.66927930e-01],\n", - " [ 8.16775867e-01],\n", - " [ 6.25085201e-01],\n", - " [ 1.25172501e+00],\n", - " [-5.21322919e-01],\n", - " [-4.35407473e-01],\n", - " [-4.79103171e-01],\n", - " [ 7.90801721e-01],\n", - " [ 1.49837444e+00],\n", - " [-4.58840493e-01],\n", - " [-4.24773728e-01],\n", - " [ 3.14077224e-01],\n", - " [-2.45761500e-01],\n", - " [ 9.52053653e-01],\n", - " [-2.25177729e+00],\n", - " [-8.26705047e-01],\n", - " [-7.82416334e-01],\n", - " [-2.32035601e+00],\n", - " [-9.63638444e-01],\n", - " [-9.15156116e-01],\n", - " [-2.01104655e-01],\n", - " [ 1.11296589e+00],\n", - " [-2.45060651e-01],\n", - " [-1.03081372e+00],\n", - " [-5.69545412e-02],\n", - " [ 1.04917362e+00],\n", - " [-9.75958816e-01],\n", - " [-9.10574884e-01],\n", - " [ 5.58548959e-01],\n", - " [-2.21536116e-01],\n", - " [ 6.47484691e-01],\n", - " [-1.36467918e-02],\n", - " [ 7.01663648e-01],\n", - " [-1.03507811e+00],\n", - " [-1.20846508e-02],\n", - " [-2.10690014e-01],\n", - " [-1.21589092e+00],\n", - " [-1.56347795e+00],\n", - " [ 6.85749035e-01],\n", - " [-3.50952382e-01],\n", - " [-1.02228028e+00],\n", - " [-9.61789369e-02],\n", - " [ 1.12801886e+00],\n", - " [-2.28073785e+00],\n", - " [-1.49663869e+00],\n", - " [-9.22886442e-01],\n", - " [ 1.46117887e+00],\n", - " [ 2.82586983e-01],\n", - " [ 7.67317240e-01],\n", - " [-1.14016092e+00],\n", - " [-1.11953588e+00],\n", - " [ 4.47813717e-01],\n", - " [ 5.82743309e-02],\n", - " [ 5.48738819e-01],\n", - " [-1.87670991e-01],\n", - " [ 2.78143726e-01],\n", - " [ 1.58119085e-01],\n", - " [ 7.77767389e-01],\n", - " [ 8.07008282e-01],\n", - " [-1.61987199e+00],\n", - " [-2.24726856e+00],\n", - " [ 1.00174540e+00],\n", - " [ 1.18772509e+00],\n", - " [-1.02062302e+00],\n", - " [-1.85983541e+00],\n", - " [ 9.90348210e-02],\n", - " [ 9.30838226e-01],\n", - " [ 1.79759452e+00],\n", - " [ 5.16297572e-01],\n", - " [-3.71716697e-01],\n", - " [-8.93130622e-01],\n", - " [ 1.14512917e-02],\n", - " [-2.99264704e-01],\n", - " [-1.01506791e+00],\n", - " [ 2.04875565e+00],\n", - " [ 1.78516840e+00],\n", - " [ 1.13604868e+00],\n", - " [-9.20850398e-01],\n", - " [ 8.55019324e-01],\n", - " [ 6.39626409e-01],\n", - " [ 4.42545624e-01],\n", - " [ 1.24966527e+00],\n", - " [ 6.35371143e-01],\n", - " [ 7.40014236e-01],\n", - " [ 6.36906283e-01],\n", - " [ 3.40791408e-01],\n", - " [-1.78361113e+00],\n", - " [ 8.36210774e-02],\n", - " [-5.56191959e-01],\n", - " [-1.27984096e+00],\n", - " [ 1.68181662e+00],\n", - " [ 1.72899534e+00],\n", - " [ 1.35922060e+00],\n", - " [ 2.55213417e-01],\n", - " [ 1.35062512e+00],\n", - " [ 1.20531806e-02],\n", - " [ 2.02797277e-01],\n", - " [-1.09347137e+00],\n", - " [ 3.96991304e-01],\n", - " [ 6.03859284e-02],\n", - " [-1.30265212e+00],\n", - " [-5.11971118e-02],\n", - " [-7.97295639e-02],\n", - " [ 1.79756117e+00],\n", - " [ 8.94213329e-01],\n", - " [ 1.14454391e-02],\n", - " [ 2.48787310e-01],\n", - " [ 4.42123781e-02],\n", - " [-2.02913985e-01],\n", - " [-1.08242720e+00],\n", - " [-1.51051878e-01],\n", - " [-7.46098257e-01],\n", - " [-1.25031554e+00],\n", - " [ 5.11221815e-01],\n", - " [ 3.91264660e-01],\n", - " [-1.78670751e+00],\n", - " [-1.22684637e-01],\n", - " [ 9.95701386e-01],\n", - " [ 1.05922374e+00],\n", - " [ 1.02583684e+00],\n", - " [ 3.89132069e-02],\n", - " [-8.45045328e-01],\n", - " [-1.08369883e+00],\n", - " [ 3.44604905e-01],\n", - " [ 3.79280034e-01],\n", - " [ 1.28733111e+00],\n", - " [ 1.09997965e+00],\n", - " [-1.32228657e-01],\n", - " [-1.24420588e+00],\n", - " [-3.19106597e-01],\n", - " [ 2.17231195e-01],\n", - " [-2.02083245e-01],\n", - " [-5.77894108e-01],\n", - " [ 2.52884815e-01],\n", - " [-5.03957741e-01],\n", - " [-6.28066084e-01],\n", - " [ 3.11452834e-01],\n", - " [-4.01992580e-01],\n", - " [ 2.44104389e-01],\n", - " [ 2.73204023e-01],\n", - " [-1.13942900e+00],\n", - " [-4.81241124e-01],\n", - " [ 1.43777694e+00],\n", - " [-1.16207951e+00],\n", - " [-2.11665445e+00],\n", - " [-1.86184515e+00],\n", - " [ 2.91099466e-02],\n", - " [ 3.09172780e-02],\n", - " [-1.17610855e-01],\n", - " [ 1.21418983e+00],\n", - " [-2.67283443e+00],\n", - " [ 3.95933874e-01],\n", - " [ 1.56143820e+00],\n", - " [-1.12778076e+00],\n", - " [-3.79806512e-01],\n", - " [-7.52891917e-01],\n", - " [-8.94346046e-01],\n", - " [-3.26262005e-01],\n", - " [ 1.42748528e+00],\n", - " [ 1.83738668e+00],\n", - " [-3.35939225e-01],\n", - " [ 1.90506021e+00],\n", - " [ 3.55764770e-02],\n", - " [ 1.75369103e+00],\n", - " [-9.32986497e-02],\n", - " [ 1.31057826e-01],\n", - " [ 3.65474473e-01],\n", - " [ 3.17885368e+00],\n", - " [ 8.51285575e-01],\n", - " [-7.07264530e-01],\n", - " [ 9.68997870e-01],\n", - " [-3.61832537e-01],\n", - " [-4.89750183e-01],\n", - " [ 9.08601360e-01],\n", - " [ 3.10855878e-02],\n", - " [ 2.78575915e-01],\n", - " [ 1.39852219e-02],\n", - " [ 3.36583127e-01],\n", - " [ 4.24965897e-01],\n", - " [-1.93696693e+00],\n", - " [ 6.66572669e-01],\n", - " [-9.82019420e-01],\n", - " [-1.44229914e+00],\n", - " [-5.84112439e-02],\n", - " [ 8.39810033e-02],\n", - " [-6.93506165e-01],\n", - " [ 8.31031858e-01],\n", - " [-1.34217517e+00],\n", - " [-4.06943749e-01],\n", - " [-5.84874135e-01],\n", - " [-4.65872703e-02],\n", - " [ 2.78864285e-01],\n", - " [-1.00789295e+00],\n", - " [ 7.24282677e-01],\n", - " [ 6.30023683e-02],\n", - " [-1.89194625e+00],\n", - " [-1.95859144e+00],\n", - " [-1.23192929e-02],\n", - " [-2.20967318e-01],\n", - " [-1.03420114e-01],\n", - " [-2.79824565e-02],\n", - " [ 2.25559840e-01],\n", - " [ 9.47649610e-01],\n", - " [-1.11110490e+00],\n", - " [-1.17197159e+00],\n", - " [-1.09332386e+00],\n", - " [ 2.88916667e-01],\n", - " [ 1.24494738e+00],\n", - " [-4.31339438e-01],\n", - " [-2.50169984e+00],\n", - " [-1.70399286e+00],\n", - " [-8.33036723e-01],\n", - " [-5.57728887e-01],\n", - " [-4.08388627e-01],\n", - " [ 3.85811230e-02],\n", - " [-3.11746331e-01],\n", - " [ 1.04933961e+00],\n", - " [-6.76017306e-01],\n", - " [-8.62317959e-01],\n", - " [ 4.78875539e-01],\n", - " [-1.53564207e+00],\n", - " [ 3.89691705e-01],\n", - " [ 1.02553184e-01],\n", - " [-1.47442490e-01],\n", - " [ 1.58827611e+00],\n", - " [-6.22207445e-01],\n", - " [ 2.06029817e+00],\n", - " [-2.25431449e-01],\n", - " [-1.27701644e+00],\n", - " [ 6.99195810e-02],\n", - " [-1.07624520e+00],\n", - " [-7.51755848e-01],\n", - " [ 3.97033300e-01],\n", - " [ 5.55582089e-01],\n", - " [-6.22167700e-01],\n", - " [ 9.87405145e-01],\n", - " [ 1.15750776e+00],\n", - " [ 1.43630176e+00],\n", - " [ 5.29413407e-01],\n", - " [ 1.36342871e+00],\n", - " [-1.88079843e+00],\n", - " [-3.17906549e-01],\n", - " [-8.67005256e-01],\n", - " [ 1.19225861e-01],\n", - " [-5.71449219e-01],\n", - " [-1.66157842e-01],\n", - " [ 1.88217488e+00],\n", - " [-1.69719796e-01],\n", - " [ 4.13792317e-01],\n", - " [-2.32269330e-01],\n", - " [ 7.57132880e-02],\n", - " [ 6.01668044e-03],\n", - " [ 4.48324066e-01],\n", - " [ 1.16530754e+00],\n", - " [ 1.64739400e+00],\n", - " [ 3.09620082e-01],\n", - " [ 5.89546886e-01],\n", - " [-1.15086451e+00],\n", - " [-8.78767424e-02],\n", - " [ 9.40289465e-01],\n", - " [ 8.65968638e-01],\n", - " [ 2.11609733e-01],\n", - " [ 8.86393960e-01],\n", - " [ 4.90766709e-01],\n", - " [ 1.20030626e+00],\n", - " [ 2.89359157e-01],\n", - " [-3.55698316e-01],\n", - " [ 3.35841257e-01],\n", - " [-2.93059438e+00],\n", - " [ 3.82885736e-01],\n", - " [-3.64841283e+00],\n", - " [-1.72346341e+00],\n", - " [ 4.51768601e-01],\n", - " [ 4.77529337e-01],\n", - " [-1.16242878e+00],\n", - " [-7.12102042e-01],\n", - " [ 1.37054099e+00],\n", - " [-4.84030132e-01],\n", - " [ 2.24292031e+00],\n", - " [-1.91985318e-03],\n", - " [ 4.08036177e-01],\n", - " [ 1.61687440e+00],\n", - " [ 1.31027116e-01],\n", - " [-1.00234398e+00],\n", - " [-1.09727452e-01],\n", - " [-3.56107362e-02],\n", - " [-1.36474165e+00],\n", - " [-2.55832071e-01],\n", - " [-7.42192094e-01],\n", - " [ 9.24357757e-01],\n", - " [ 3.46118742e-02],\n", - " [-2.82795749e-01],\n", - " [-1.06181931e-01],\n", - " [ 2.23122018e-01],\n", - " [ 6.16814200e-01],\n", - " [-9.99712229e-01],\n", - " [-1.04158763e+00],\n", - " [ 1.10467922e+00],\n", - " [-4.12336872e-01],\n", - " [-1.41684209e+00],\n", - " [ 4.43812709e-01],\n", - " [ 4.63369806e-01],\n", - " [-1.53071526e+00],\n", - " [ 2.29481715e-01],\n", - " [ 7.35583092e-01],\n", - " [ 3.74386452e-01],\n", - " [ 6.31981484e-01],\n", - " [-1.40426910e+00],\n", - " [ 3.31040155e-01],\n", - " [-3.02619759e-01],\n", - " [-4.82790159e-01],\n", - " [ 8.70555609e-01],\n", - " [ 1.47927451e+00],\n", - " [ 1.79437005e+00],\n", - " [ 1.31480787e+00],\n", - " [-1.09734182e-01],\n", - " [ 3.52720163e-01],\n", - " [ 7.66822872e-01],\n", - " [ 1.21177949e-01],\n", - " [ 1.30764188e-01],\n", - " [ 8.23753132e-01]])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "17a579fe", - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "e8213628", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAxV5JREFUeJzs3Xd0FGUXB+Dfluym9957JZ3eS+hVQBEBFSsqFrDip6CiYsUKYsOCXUFFei9SJaGHBEII6b23rfP9MZvZnexueuc+53BOdndmdqKB3L3vfe8VMAzDgBBCCCGkmwi7+wYIIYQQcmujYIQQQggh3YqCEUIIIYR0KwpGCCGEENKtKBghhBBCSLeiYIQQQggh3YqCEUIIIYR0KwpGCCGEENKtxN19Ay2hVquRm5sLKysrCASC7r4dQgghhLQAwzCoqqqCu7s7hELj+Y9eEYzk5ubCy8uru2+DEEIIIW2QlZUFT09Po6/3imDEysoKAPvNWFtbd/PdEEIIIaQlKisr4eXlxf0eN6ZXBCMNSzPW1tYUjBBCCCG9THMlFlTASgghhJBuRcEIIYQQQroVBSOEEEII6VYUjBBCCCGkW1EwQgghhJBuRcEIIYQQQroVBSOEEEII6VYUjBBCCCGkW1EwQgghhJBu1epg5MiRI5g+fTrc3d0hEAjw119/NXvOoUOHEBcXB6lUisDAQHz77bdtuFVCCCGE9EWtDkZqamoQHR2NdevWtej4GzduYOrUqRgzZgzOnTuHp556Cg888AB2797d6pslhBBCSN/T6tk0kydPxuTJk1t8/IYNG+Dn54f3338fABAWFoZ///0XH3zwASZOnNjatyeEEEJIH9Ppg/JOnDiBhIQE3nMTJ07EU089ZfQcmUwGmUzGPa6srOys2yOE9GLP/n4evydmd/dtENLrBTlbYs+ykc0OtOssnV7Amp+fDxcXF95zLi4uqKysRF1dncFz1qxZAxsbG+6Pl5dXZ98mIaSXySqtpUCEkA5yrbAaiTfLuu39e+RumhUrVqCiooL7k5WV1d23RAjpYXLLDX+YIYS03mB/e/T3te+29+/0ZRpXV1cUFBTwnisoKIC1tTXMzMwMniOVSiGVSjv71gghvVhqQVV330KPkxDmjH1XCrv1Ht6dG4Vn/7jQZe/36owI2Jqb4MlfzkEqFuKhkf745EBak+f4O1lg37JREArZJYl6hQrj3j+MnPI6zOvvhbfnRgEAzmaW4bb1xyESCnDw6dHwdjAHAOxLLsAD35+BRCTEnmUj4etowbu+Ws1g9mfHcS6rHLPjPLD2jpgO+35r5UrMXn8cKflViPGyxa8PD4ZULOqw63eXTs+MDBkyBPv37+c9t3fvXgwZMqSz35oQ0oftupTf3bfQ43R3IAIAZbXyLnsvK1MxEsJdsHpbMgDg8bGBzQYiAPDshBAuEAGAH07eRI4m03bfcD/u+Y/2XwMAzI714AIRmVKF1duTuWMbByIA8Ne5HJzLKoeFRIQXJoW28bvTxzAMnv3jAlLyq+BkJcWGhfF9IhAB2hCMVFdX49y5czh37hwAduvuuXPnkJmZCYBdYrn77ru545csWYL09HQ899xzSElJwfr16/Hbb79h2bJlHfMdEEJuScevl3T3LfQoXvaGM81daf5Ab7y5I6XL3u/OAV749MA1FFfLEehsaTAwaCzU1QoTI1y5x5X1Cnx6kA1gRgQ5IsTVCgBwLqsch1KLIBIKsHRsIHf8xn8zcLOkFs5WUt7zDaplSry1k/1vsHRsEJytTdv1PeracDgd2y/kwUQkwGcL4uBq03HX7m6tDkbOnDmD2NhYxMbGAgCWL1+O2NhYrFy5EgCQl5fHBSYA4Ofnh+3bt2Pv3r2Ijo7G+++/j6+++oq29RJCSAfKKu3+Gpp6harL3ksoACLcbfDzabam8M3bIrH0p7PNnvfkuCBeVuSLw+kor1UAaJQV2XcVAHBbrAd8HNggp6CyHp8cYLMlL0wOhaVUv9Jh3cE0FFbJ4ONgjvuG+7btmzPgUGoh3tnNBjmvzIjo1vqOztDqmpHRo0eDYRijrxvqrjp69GicPdv8DwkhhJDeycVain3JBc0f2EHGhrpg/SE2ozGvvxeyy2qbPadxVqSwsh5f/3sDABDgZIFRQU4A2KzIwYasyBht9uPtnSmolasQ622LWTEeete/WVKDr4+y13tpaniHLaFkFNfgiZ/PgmGA+QO9sGCQT4dctyfp9AJWQgjpaF35CZy0XJVM2WXvpWYYXC2ohoOFBE+ND8KQNQeaPeepBH5W5OMD11Cn+Vm6b7gf99rHmlqRWTEe3NJPUmYZtpzNAQC8Mj2Cd50Gr2+/ArlKjRFBjkgIc27fN6hRI1PioU1nUFmvRJy3LV6ZEdEh1+1peuTWXkIIaUpSN/ZDIIYVVMqaP6iD2Jqb4FhaMQDgpWlh+PFkZjNnsFmRCeHarMiN4hr8olnisTU3wexYTwDAhexyHEgphEgowOOamhC1msGrWy8DAG6P90S0l63e9Y9eK8Le5AKIhAKsnBbeIc3D2ILV87haUA0nKyk+60MFq41RMEII6XWe29x1W0dJz1Neq4BMqcawQAdEe9pyBahNaZwVeW9PKpRqtuRgwSBvmEnYX/If7WOzIjNj3LmsyB9J2TifXQFLqRjPTgrRu7ZCpcZr/7A7bO4e4oMgF6v2fYMa6w9dx46L+TARCbBhYRxcOrAYtqehYIQQ0utkl3V/sSbpXhKxEK/PisQrmiCgKY2zIhezK7D9Qh4AwEQkwN1DfLnn96cUQigAHh8bBACoqlfgnV2pAIAnxgXC2Uo/IPjh5E1cK6yGvYUET40Lbu+3BgA4mFqI9/aw7/vqjH6I9+lbBauNUTBCCOlVSqq7bjmA9FxLxwQiNb8KR64WNXvsUwnBvKzI27u024+nRblzGYeP9rM7aGbFeMBPkxX55EAaiqtl8He0wL1D/dBYSbUMH+xlz3t6QjBszE3a/k1pZBTX4ElNwepdg7xx1yDvdl+zp6NghBDSq6zV/MNPbl0BTha4Z4gv1+ysKWFu1pgQrp2PdvRaEf7V1JsAwP2a7byXciqw7wqbFWnoH3K9qBobNbttXp4eDolY/1fm2r1XUVmvRLibNe4c0P6goVqnYDXexw6vTO+bBauNUTBCCOlVfjzVfLEi6dveuC0Snx+5znVNbYpuXxG1muFlRQb62aOfhw0A4EOuVsQD/k6WAIDV25KhVDMYG+qMMSH6u2OScyvx82n253HV9HCIDOywaQ2GYfDMb2zBqou1FJ8tiDMYAPVFt8Z3SQjpE5JzK7v7Fkg3uz3eE05WUnx5NL3ZYxtnRbZfzMOlHO3P0H3DdLMiBbysyIGUAhxKLYKJSICXp4XrXZthGLzyz2WoGWBqlBsG+Tu091vDuoNp2HU5HxKREJ8tjO/Q7q09HfUZIYT0Go/8mNjdt0C6kb2FBCumhOHJX85CoTLefLOB7g4ahUqN9zUFoQDgbW+O8ZpApWEGzYxodwQ4WUKuVGP1tisA2IDFz0Cb+R0X83H6RilMTYR4cUpYu7+3AykFeF+zBPnazAjEedu1+5q9CWVGCCG9glKlxs2S5rtskr7rf1PCcDK9BEevFTd7bHijrMgv/2UhQ+fn596hvhAJBbicW4G9yQUQCNhZMgDwzbEbuFFcA0dLw/Nn6uQqvLmDDVaWjAqAh2375gLdKK7Bk7+cA8Ow24zvHNj3C1Ybo2CEENIrvLeHCld7M0dLSbvOH+xvj4n9XFtUtAoATyYEcY3HamRKrn8IAFhJxbhjgBcAbbfVGdHuCHS2RGFVPTf59/lJIbAy1d8d01Cv4m5jiodHBrTr+6qWKfHQ92dQVa9Efx87rLpFClYbo2CEENIrbDh8vbtvgbSRlVSMWnn7Wvi/cVskPj2QhryK+maPbZwV2fjvDRTrbAmfN8ALllIxknMrsfsymxVp6Lb6zq5UVMuUiPayxZw4T71r55TXcT+LL04N45qltYVazeDp387hWiFbsLp+4a1TsNrYrfldE0J6lVPpJd19C6QdpkW7tysYeXikPxiGwVctKFoF+FmR0ho5Pj+iPU8oAO4Z6gtAmxWZHuWOQGcrnM0swx+J2QCAV6aHG5w/s2bHFdQr1BjoZ4+pkW5t/p4AtmB19+UCSERCbFgYb7Ch2q2CghFCSI8374uT3X0LpBFnK2mLj/0jMatd77VsfDBW/n2Za9/elMZZkXUH01CtM8BvUj9XeNmb40peJXZdzodAwHZWVasZrpvrnDhPxBooID2VXoJtF/IgFLBbedszf2b/lQKs3ccuPb4+q5/B97uVUDBCCOnRWjIannStCHdrFFa1rBPuo6MDWrTzxZj3b4/G3uQCHL/esuzYUzpZkeyyWmw6cZP3ekOTs4asyNRINwQ6W2HL2RyczyqHhUSE5w3Mn1GpGbyqCVbuHOiNCHebNn9P14uq8ZSmYHXRYB+ufuVWRsEIIaRH+9+fl7r7Fkgjda1Ycll/qH21PhP7ueL17S0rWg13s+a26wLAB3uvQa5Sc4+jvWwR522HK3mV2HmpISsShGqZkmuG9vi4IIP9PX79LwvJeZWwNhXj6fFtnz9TVa9gC1ZlSgzwtTPYw+RWRMEIIaTHKquR43ALZo+QruPrYI704poWHetg0b4dNBvv7Y+P919DQaUMVqbNt8XSzYqk5Fdiy9ls3uv3D/eDQCDAJwfYrMiUSDcEu1jhkwPXUFQlg6+DORYP89W7bkWtghta91RCMBwsW75EpUutZrD8t/O4XlQDV2tTrF8Qf8sWrDZG/xUIIT3WN8czuvsWSCPVspZnRUpq5O16L087c242TFW9ssljI9z5WZF3d6WC0VkdcrMxxeR+rkjJr8SOi5qsyNgg3Ciu0c6fmRYOqVh/d8xH+6+htEaOIGdLLBri0+bv55MDadibXACJWIgNi+Lh1Iq6m76OghFCSI9UK1dy6/qk5yjuoqnJH90Zg5f/ugSlmoGltCVZkWAuK/JfRin2pxRCJBRAqsk83DPUFyYiIT7Zz/YQmdLPDSGuVnh9WzIUKgajgp0wNlR//kxaYRW+P5EBAFg5PRwmorb92tyXXIAPdApWY7xs23SdvoqCEUJIj/Tbf+3bgUF6N4WKwakbpRALBbzdMIZEuFsjIYwNJBiGwVs72foPb3tzyJRqmJmIMH+AN1Lzq7D9Yh4AtlbkYGoh9qcUQiwUYKWB3TEMwxatKtUMEsJcMCLIqU3fy/Wiaiz79RwA4J4hPrijPxWsNkbBCCGkx1Go1PiQsiK3rMfGBHAFpS3ZzqubFdmbXIDEm2UwNRHCQsouudze3xM25ib4mKsVcYWfowVWa3bHLB7miwDNpF5d+68U4ui1YkhEQrw8rW3zZyrrFXhQU7A60M8eL1HBqkEUjBBCepztF/JQXqvo7tsgrRDiYtUh1xEKgPwKGYpauHW4n4c2K6JSM3h3N1toOibEGZdyKiEQAIuH+eFqQRV26GRFvjuegfTiGjhaSvD4uCC968qUKqzW7OK5f4QffBz0h+U1R61msPzXc0gvqoGbjSnWL4hr8zJPX0f/VQghPQrDMNT6vZcZEeSI1IIq7rGlVAxTk7b9eon3scNf53JafPxT47RZkc1J2bhWWA0bMxNul8q4UGf4OVrg4/3XwDDA5H6ucLCQcvVIz00MhbWB+TMb/83AzZJaOFtJ8dgY/WF5LfHR/mvYd6UQErEQny+Kh2Mbd+HcCigYIYT0KIeuFiElv6r5A0mPUVLN3zVze39P1CvURo5uWnpRDVQtWJoB2KzIOE1WpF6hwod72QLRhYO9sedyAQDgvuF+uFbArxV5d3cKqmRKRHnaYG68/vyZwsp6fKpZ0nl+UmiLCmgb23M5Hx9pAp43b4tElKdtq69xK6FghBDSo2xoZ5Ms0rUeHumP5LxK7rGfowWKq9u+pbc124F1syKbTtxEbkU93G1MIRYKUadQIczNGkP8HfDxgTQwDDApwhUKlRq/a+bPrJoeYXD+zNu7UlEjVyHGyxa3xXq0+ntIK6zG8t/OAwDuHeprMOAhfBSMEEJ6jLOZZTh1o7S7b4O0wq7L+bzHPzwwCP+cz+309430sOGyIhV1Cnx6kN2yu3RsEH7V7MS6f7gfrhdVY9sF9n4eHxeIV7ZeBsMAt8V6IN5Hfx7M2cwybE5qCFYMD8trSqWmw2q1TIlBfvb439S2Fb7eaigYIYT0GFQr0rtMjXLDzRLt7KBYb1scTu2ajrm63VY/P3wdFXUKBDlbwtREiPzKejhaSjE92g0f72ezIhMjXJCaX4WkzHKYS0R4YXKo3jVbMiyvKWo1g2W/nEN6cQ3cbUyxjgpWW4z+KxFCeoTrRdXYk1zQ3bdBWmFPo6zIW7Oj8OKfFzv9fYOcLbkGZQWV9dh4jO2g+uzEEHyr6dp79xAfZJXW4R9NVuSBEf5c/5GlYwPhYmD+zJ/NDMtrzof7r2F/SiGkYiE+X9SfClZbgYIRQkiP8MXhdF77btLz6U7jDXBq/dbXtnphciiXFflo/zXUK9To72MHOwsJLmRXQCIWYsEgb3xygN1BMyHcBQdSClFYJYOPgzk3uVdXtUyJt3Y1BCuGh+U1ZdelfG6HzprZkYj0bPtU31sRBSOEkG5XUFmPP8+2fDsn6XnuHOCN29Yf6/T3cbSUcFmR60XVXH3I85ND8fVRNkMyO9YDZbUKrnZlVqwH99pLUw3Pn/n0QBo3LO++4b6tuqdrBVV4+rdzANgGarPjqGC1tSgYIYR0u43/3uCNeie9i1AADAt0RK285UP0WsNeZ/rv23OiuKzI+3tSoVIzGBfqDFdrU+xJZpeN7hvuh08PXIOaAcaHu2BLUg7kKjVGBDlyDdJ0ZegMyzMWrBhTUafAQ5sSUSNXYbC/PV6cQgWrbUHBCCGkW1XUKfDjqczuvg3SDsMCHfHoj4ncY+cOnkZbqrPdtyErcj6rnJu+++ykEHxzLANqhm3AJhYKsFWTFYn1tsW+KwUQCwVYZWD+DAC8vv0KF6yMMxCsGKNWM1j26zncKK6Bh60Z1t1FBattRf/VCCHd6sdTN5sdhEZ6tnA3a2To7KopbGEr95YYpzNJ9+t7+kMgEIBhGG52zexYT3jYmuG3M9rtvJ8eSIOaAUaHOGGzpqfI3UN8Eeis37L+yNWiZoMVYz7YdxUHuILVeDhQwWqbUTBCCOk29QoVNv6b0d23QdrAVVPgaWYiwr4r2l1QkR4dW7i5P6WQ+7ohK3L0WjGOXy+BRCTEsvFsX5FqmRIBThbwsjfn2snbmUtwvagGDhYSPJmgP39GoVLjtW3sVl5jwYoxuy7l4ZMDbG+Tt+ZEol8Hf9+3GgpGCCHdZktSDoqrO+5TNOk6DcsZQgFwvagGACAWCnAxp6LD3mPJqADu6w0L4yAQCKBWM9wW3UVDfOBmY8Zt571vuB/WHWSzIjFettin2Sr+7MQQ2Jjpz5/ZdOIm0gqrYW8kWDHmakEVntZ0WL1/uB9ui6WC1faiYIQQ0i1UagZfHKEmZ73RhoVx3ATcGp2i1agO3s6q2wRvYoQrAOCfC7lIzquElVSMx8YEYs/lfGSX1cHW3ARx3nb4S7MrS6FSo0qmRD8Pa9ze30vv2iXVMnywj51l88wEw8GKIRW1bIfVGrkKQwMcsMJA8zTSehSMEEK6xe7L+cgoqYWFRMRNWCW9g0goRFmtQu/5nPK6DnuP12ZGcF+vmR0JgUAAuVKN9/ewAcRDI/1hbyHB15pdMAsGeeOrozegZtgC2oZ5Oa9Mj4DIQEv39/deRVW9EhHu1pg3QD9YMUSlZvDkr2eRUVILD1szfHpXHMRUsNoh6L8iIaTLMQzDfer1sDODXEnbenuLYy+MxZ9ns/Wej/GyRUFlxy25rfz7Mvf1nZpg4Zf/MpFZWgtHSynuH+GH81nlOHOzDCYiAUYGOXG1IuW1CjAMMDPGHf197fWufTm3Aj+fZndwrTISrBiydm8qDqUWwdSELVjV3XJM2oeCEUJIlztxvQQXsitgaiKERRvGs5PuMS3KDZZSMfZdKdR7Lau01sAZbfPK9HDu6yfGBkIgEKBGpuQ6nD6ZEARziZjLikyLcsfvidlQqdmOsHKVGmYmhufPMAyDV7cmg2HY72egn36wYsjOi3lYd5ANoN+eE0UFqx2MghFCSJf7TJMVGRfmggvZHVfwSDrX6pn9sPNinl4my9pUjBKdXiDt1TCsDgCWjQ8GAHx19AaKq+XwdTDHnQO8kFdRx9WtJIS56HXwfWxMANxszPSuvf1iHk5nlMLURNjiBmWp+VV4+ne2YPWB4X6YGePRpu+LGEfBCCGkS13KqcDRa8UQCQVwspRyn2ZJzxbrbQs7Cwm2JOm37dedUdNe9wzx4b6eGeMOgUCAkmoZV+z89IQQmIiE+O74TSjVDAb62eNQaiHv58jL3gwPjPDXu3adXIU3t18BADwyKhDutvrBSmMVtQo8tOkMauUqDAt0MJhtIe1HwQghpEt9fiQdAJsiP3WjtJvvhrTUD/cPQnZZLU5n6P8/q1N0XBv4XTqTgN+ZGwUA+PRgGmrkKkR62GBqpBtq5Uqu5mNCuAu2NMqKvDQ1HKYm+i3dNxy+jtyKenjYmuGhkfrBSmMqNYMnfjmLmyW18LQzwyfzqWC1s9B/VUJIl8ksqcV2zUj3UcFOuKLZ8UB6PgupGL+czuIee9ubt+k6IqHA6DbaUFcrrgg22ssWUrEIWaW1+OHkTQDA85NCIRQKsDkxGxV1CnjbmyMlv4qXFRke6IgJ4S56184pr+OKpl+cEgYzSfPzZ97fk4rDV9mC1S8W9aeC1U5EwQghpMt8eTQdaoYNRC7nUiDSW/y+ZAgYhsGnB9O452zNW9aXo7EYL1tU1OlvCwYAsUi7q+XLu+MBAGv3XoVCxWB4oCOGBzlCrWbwzbEMAGytyF86WRFREy3d39xxBTKlGoP87DEl0rXZ+9x+IQ/rD7HByztzoxHubt3i75G0HgUjhJAuUVwt4+aHPDjCn/dLhPRsA3ztsVtn+WTpmMA2FR77O1qgvoklnUs5bIBqbyGBs5UpruRVctt1n5/E1moculqI9OIaWEnFKKyqh1InK7JosA+CXPRbup9ML8H2C3kQCtitvM3Nn0nJr8QzmoLVh0b6Y0a0e+u+UdJqFIwQQrrEd8czIFOqEe1li3qFqkN3X5DOE+ttCwBY8kMS91wrZsnxTI92N5oRC3XVBhEb7x0AAHhnVwoYBpga5YZITXfXhu28w4McseuSNkCyMzfBsoRgveuq1Axe1ezOmT/Qu9kMR3mtHA99n4g6hQrDAx3x3MSQVnyHpK0oGCGEdLoamRLfn2DX/ZeM9MdPmuJD0vO9Ozcax68Xc4+fHh9scEdNc+YP9OK24hqSkl/FfR3jZYuT6SU4mFoEsVCAZyawAcGVvEocSyuBUABUy5S8rMgzE0NgY2Dp6Jf/MnElrxLWpmI8PaHpwEKlZvD4z2eRWVoLL3szfDI/lgpWuwj9VyaEdLqfT2eiok4BP0cLDPSzx4EU/aZZpGfyc7TAXV+e4h5He9m2qe17jJctrhVWG3zNRKdW5KM7Y8Aw2mF4dw70gp+jBQBgoyYrEulhgxPXS7hzwt2scecAb73rVtQq8N7uVABsv5LmClDf3Z2Ko9eK2Q6rC/vDjgpWuwwFI4SQTiVXqrnU+kMj/TH/y5PdfEekpaZGuuGPRO0OmunR7lwNR2usmR2JTw6kGX1dt0/JlEg37L5cgHNZ5TAzEeGJcew03aIqGf4+x+7EkinVvKzIKzMMt3T/cP9VlNUqEORsiYWDffRe17XtQi632+ZdKljtchSMEEI61dbzucirqIeTlRQ+9ua4WqD9dCyhFHiP9sS4IKzaqp0RM3+AV5uWaORKNbLLms+mLB8fDAGAd3ezWZH7h/vB2coUAPDDyZuQq9RwspIiTSfDMj3a3WBL92sFVdzS4KrpETBp4mftSl4lnv39AgDg4VH+mE4Fq12O/iUghHQatZrB55pPm9Oi3HDXV6d4r8tVNCCvJ9uSlI16Bfv/yNvevEUBRWPv3R7dZFZE112DvLE5KRvXi2pgZ26Ch0axjcnqFSqu14hMoeKyIqYmQqwwMn/mtW3JUKkZjA93wfAgR6PvWVYjx0ObzqBOocKIIEc8N5E6rHYHCkYIIZ3mQEohrhVWQyoW4lhacfMnkB5jbKgzNh67wT2+o78n3tFkLFojr7wOxdXNT/OdE+cJS6kYH+xlh+E9NiYQ1qZsQerWc7nc7qvKeiV3zqOjDbd033elEEevFUMiEuKlqcbnzyhVajzxy1lkldbB294cn8yPbfEEX9KxKBghhHSahjV4mVLNW54BADH9o9+jFVfLeLUccd52KK5u3XbsJ8YF4Yuj6S06dvEwX3x7PAP5lWy79oYaD4ZheEFRA087wy3dZUoVXt/ObuV9YIQffBwsjL5nQ8GqmYkIX9wdD1tzKljtLhSMEEI6xZmMUpy5WWb0dSUNyOvRdJuaDfS1x4YjLQsqGpiZiFBWI0eVTibDmP4+dvCyM8d6TYfXZeODudkyx9JKeNt+G/xvSpjB+TNf/3sDN0tq4WwlxaNjAo2+59bzudycpHdvj0KoKxWsdicKRgghnaIhK0J6v5mx7jhytahV54wLc+Y67jZn8TA/fHb4OirrlQhxscJtsR7ca1//qx8EDQ1wwKR++i3dCyrr8ammPuWFyaGwlIoNvl9ybiWe+4PtsLpkVACmRVHBanejYIQQ0uGuFlRh3xVtL5HB/vaQiOmfm95IIhJybdpbqqEpmUzZfIGym40por1s8I1mKea5SSFc3UZaYTUOpuoHQcZaur+9KwW1chVivW0xK8ZD73VAW7Bar1BjZLATnqUOqz0C/etACOlw63UGqvk7WiAhzAXyFvxiIj2HuWaq7ZhQJ/zcyo65Ia7WONQoiAh3M7wMsmiIDz49kAaZUo0BvnYYG+rMvfaNgVqRe4b4IMRVf/7M2cwybtvxqukREBqoSVKq1Hj857PILquDj4M5PrmTClZ7ijYFI+vWrYOvry9MTU0xaNAgnD59usnjP/zwQ4SEhMDMzAxeXl5YtmwZ6uvr23TDhJCeLbe8Dn9pmlMBwOeL4rHnckE33hFprWAXSy4Yadja2xqVjabySsRCg11bpWIhBvrac8s5L0wO5TIeZTVybE7K1jtn2Xj9+TNqNYNXNPNn5sZ7IsbL1uB9vb0rBf+mFcNcIsIXi/obbB9Pukerg5Fff/0Vy5cvx6pVq5CUlITo6GhMnDgRhYWG2zv/9NNPeOGFF7Bq1SpcuXIFX3/9NX799Ve8+OKL7b55QkjPc9v6Y9zXny2Ig0QsxOmM0m68I9KcIGdL3uOEMBcUV8thIRHhcCtrRUxEAr3AY1aMOyoaBSjs8x746ugNqBn2PeN9tM3LfjqdqRcIrZ7Vz+COly1nc3A+qxwWEhGem2R42eXvczn48iibaXnv9miD2RXSfVodjKxduxYPPvggFi9ejPDwcGzYsAHm5ubYuHGjweOPHz+OYcOG4a677oKvry8mTJiA+fPnN5tNIYT0PifTS1BQyfaUiHC3xuRIN2xuQ8dO0nVszU14M2MmRbgiv4LNXNfIVa2+nu52YABwtJRAqTK8cyrG2xa7LudDKAAviJAr1fj+RIbe8XcN1J8/Uy1T4u1dbP+Tx8cFcR1bdV3OrcDzm9kOq4+ODsCUSLcWfz+ka7QqGJHL5UhMTERCQoL2AkIhEhIScOLECYPnDB06FImJiVzwkZ6ejh07dmDKlClG30cmk6GyspL3hxDSs1XUKnDnF9q5M38/NgxqNYMtBlLtDRqWAkj3uXeoL+/xsvHB2HU5v8Ou/8joQGw5qx+QDvKzx1+a5+fEeSLYRZup2HExjwtqG/zy0GCD9R2fHkhDUZUMvg7mWDzMV+/10ho5Hvo+EfUKNUaHODU7uZd0j1YFI8XFxVCpVHBxceE97+Ligvx8wz+8d911F1577TUMHz4cJiYmCAgIwOjRo5tcplmzZg1sbGy4P15eXq25TUJIF1OpGTz8wxnu8aszIiAWscszxlqIPz0+GLVt+ORNOlbD/BaALQ69klfZYf9fgl0sITJSH+rvZIFTN0ohEQt5dSAMw3CDFRs4WEgw2N9B7xoZxTXcJN+Xp4VDKuYHt0qVGkt/SkJOOVuw+tE8KljtqTp9N82hQ4fw5ptvYv369UhKSsKWLVuwfft2rF692ug5K1asQEVFBfcnK6tle9UJId3jo31XcTJdWxeyYBCbTt+caDwrEu9r1+n3RZr22swIlNZou6o+OynUYBajrVZMDuMKS3W525gi6WY5ADYA0m3p/l9GGS7mVPCO3/r4cIPXf317MuQqdouu7i6cBm/tTMHx6yVUsNoLGO4IY4SjoyNEIhEKCviV8QUFBXB11W9AAwAvv/wyFi1ahAceeAAAEBkZiZqaGjz00EP43//+B6FQPx6SSqWQSqWtuTVCSDfZczkfH+sMQmvIitTKlfjnQq7Bcz66MwY/nmrddlHS8bJKa7mvx4Q4oVamxL/XWlewaszIYCejXXZtzCW4klcJK6kYj47md0lt3ORsoJ89PAzMnzl8tQj7rhRCLBRg5bRwvb4jf53NwVearMnaO6hgtadrVWZEIpEgPj4e+/fv555Tq9XYv38/hgwZYvCc2tpavYBDJGJTaQxD7aAJ6c2uF1Vj+W/nucf2FhLc0Z9dVt11Kd/ottCZMR7YfiGvS+6RGPbYmABudwkAfHpXHLaez0VHdOkXCth27Sv/vqT3mkgoQHYZGwQtGR0AOwvt7pjMklrsSeZ/2P1u8UC9ayhUaqzexmZc7hnqi8BGu4Eu5WgLVpeOCcSkflSw2tO1KjMCAMuXL8c999yD/v37Y+DAgfjwww9RU1ODxYsXAwDuvvtueHh4YM2aNQCA6dOnY+3atYiNjcWgQYOQlpaGl19+GdOnT+eCEkJI71MtU+LhTYmolmlnj9wzxBdmmqLUj/dfM3jenQO8sPW84YwJ6TpmOnNdzCUiWEjF+LODlmjmDfCGTKlCXoV+PymVmkFVvRLOVlLcN8yP99o3x29A9zPqXYO8uZ8nXd+fuIm0wmo4WEjwxLgg3msl1TI8vCkRMqUaY0KcDPYlIT1Pq4ORefPmoaioCCtXrkR+fj5iYmKwa9curqg1MzOTlwl56aWXIBAI8NJLLyEnJwdOTk6YPn063njjjY77LgghXYphGDzz23mk6WwJNTMR4e4h7KTVnPI6ZJTUGjz3iXFBGPrWgS65T2JYnLct3ttzlXv8wbwYXC2owuXc9u9ctJCIsHx8MP7358Umj3syIYgXaFTWK/Dbf/z6wDdm9dM7r6Rahg/3sff+zMQQ2Jhp60DYgtWzyCmvg5+jBT6kDqu9RquDEQBYunQpli5davC1Q4cO8d9ALMaqVauwatWqtrwVIaQHWn/oOnZdzodEJISJSIAauQp3DvTiUu73bDTeR+j3M8aLWknX8LAzR1JmOfd4VLATPjKSyWqtR8cEQq5S6y236PJztOCW8xr89l8Wr6/J/6aEGZw/896eq6iqVyLC3VrvGm/uSMGJ9BJYSET4YlE8L1AhPRvNpiGEtMqRq0V4b08qAGBuf0/UyFUQCwV4YIQ/APaTq27GRNcT44Lwwb6rBl8jXecfnWWyqZFukIiE+OxQ+6csu9uY4v7hfvjmX/2ZMrqenRgCE5H2149SpdbbzvvACL/Gp+FSTgV++Y8tfF41PYKX9diSlI2Nmlk2798RgyAXKljtTSgYIYS0WFZpLR7/+SwYBpg/0AsVtWyL7xnR7tyOh9mfHTd6/tnMsi65T9Jyc+M9cTK9pEOu9fzkUMhVam4XiyHRnjaY3I+/+3JvcgGvvuTj+bF6WRGGYfDqP5fBMMD0aHcM9NO2jr+UU4EVW9hlocfHBmJSP8O7O0nPRcEIIaRF6uQqPLQpERV1CkR72WLxMD/svMTuiHl4VAAA4GBKIW4aqRUBgKPXirvkXknLDQt0xIPfn2n+wGZEe9pgepQ7fj3ddF+o5yeF6gUa7+/lZ8umR+nvftl2IQ//ZZTB1ESIFZNDued1C1bHhTpjWQIVrPZGFIwQQprFMAxWbLmAK3mVcLSUYMPCOHx7PANqBhgb6owQVytUy5R49o/zzV+M9Bh39PeETKlq0wyaxl6aFg4Vw2DtXuPLcCOCHDE00JH33Pmsct6y3jf3DtALVurkKqzZcQUA8OjoQK5JmkKlxmOaDqv+jhb44M4YCKlgtVeiYIQQ0qxvjmXgr3O5EAkF+PSuOIiEAvyh6a66RJMVeW93Koqr5U1dhvQwM6I9OiQrMrmfKwb42mPHxTzUKbSBjUWjbbnPTwptfCrXD6TB6BAnvWM+O3wduRX18LA1w0Mj/bnn39h+BSfTS2EpFeOLu+NhbUoFq70VBSOEkCadTC/BG5pPpf+bEobB/g749lgG5Eo14rxtMcDXDok3y/CdgSmrpGeL9rLhtfFvCxORAC9MDgXDMPjiCL97aq1OYDIj2h39PGx4r+dV1CElv4p7/O1i/axIdlktPj/MFtf+b2oYTDX9UTYnZuPb4xkA2A6rgc5UsNqbUTBCCDEqr6IOS39KgkrNYFaMOxYP80VVvQKbTrLD1ZaMCoBcpcYLmy+AGir3LosG+zS5pNJS9w71hY8DO/ROt0+Jv5MF9zMhFgrw9AT9Wo75OlOeHS2lGBWsnxVZsyMFMqUag/3tucLXC9nlWKHpY/LEuCBMiKCC1d6OghFCiEEypQpLfkhCcbUc4W7WWDM7CgKBAD+fzkRVvRKBzpZICHPBZ4eu45qRrbyk5xoW6IBvjmW06xq25iZYOobtgPrVUX5WpKhSxn191yBv+DhY8F4vrZHzGuO9e3uUXlbkxPUSbL+YB6GA3corEAhQrClYlSvVSAhzxlONOrCS3omCEUKIQa9svYzzWeWwMTPB54viYSYRQaZUcf0gHhrpj+tF1Vh3ME3vXDuajtrj6NZ1ioQCHOmAnU1PjQuCjbkJrhdVY9+VQu75CHdrVGnGBJiaCPH4WP2AYeKHR7ivg5wtMbpRVkSlZrfyAmwwE+ZmDYVKjUd/TEJeRT38nSywdh4VrPYVFIwQQvT8fDoTP5/OgkDA9nzwsjcHAPx9NhcFlTK4WptiRrQ7nt98AQqV/vpMmab/COk5dOs1EsKc8VM7pyb7O1pgwWC2/X/jhmW1OrtzHhrhDycr/hT27LJaFFVpMycvGui2+vPpTKTkV8HGzARPjw8BwBasnr6hKVhd1J8KVvsQCkYIITxnM8uw6m/2E+kzE0K4dXy1msGGI2wh4f3D/fDrf1m8luINrE3bNGWCdKIRQY4oqNQ2Fdt92Xir9pZaMSUMJiIhSqplvMAm1NUKN4prAAASsRAP6ux+aTDxA21WJMDJQm8HTUWtAu9ruvwuSwiCnYUEv5/J4gpWP5gXozepl/RuFIwQQjhFVTI88kMS5Co1JkW44tHRAdxre68UIL2oBtamYowOccI7u1IMXoMKWXue6VHuKNCp4WivIf4OSAhzBgD8cJKfYdGdB/PCpFBYNcpenEov4c+gmaqfFflg31WU1SoQ7GKJhYN9cD6rHP/76xIA4KmEIIwPd+mw74X0DBSMEEIAaBpI/ZiE/Mp6BDpb4r07orlfEgzDYINme+WiIT54c8cVo42yGmoFSM9wW6wHLuSUd9j1BAJtAFGvUPFmDfk4mOPUDe1W4QWDvXnnqtQM7vxSdweNBGNCnHnHXC2o4nZrrZoegbJaBVewOj7cBU8YqD8hvR8FI4QQAJr1+IxSWEnF+HxRPCyl2uWW0zdKcTazHBKxEPYWUhxMLTJ4DYmI/knpaV6cEobf/uu4Sclz4jy5+pO/zubwXvNz1O6YWXtHNKRiftOzn09n8jJnb8/h76BhGAav/ZMMlZrBhHAXDPC15wLkACcLrL0jmgpW+yj6l4MQgj/P6jSQmheDACf+enxDViQhzNng7pkGcpW60+6RtN4QfweczSzrsP8vZiYiPDOBLSZVqxm8vv0K95qNmQkO6QSpM2M8eOdW1CrwkmappcHYUH5WZG9yAf5NK4ZELMRLU8Px+vZkLkD+4u7+eks+pO+gYISQW9zlXO3E0yfGBuqtx6fkV+JgahGEAqCgUobSGmr53ltsun8g/myUvWiPh0b6w9XGFABw+GoRqnWW5MLctB1QN97bHyKhfh2Irq/u7s/LitQrVFxw8+AIP5y8UYLvT7DLNR8YCJBJ30Jl74Tcwspq5Hh4UyLqFWqMDnHCkwYmnn5+mG1mZSEVI/FmWVffImmHGrkKOy/ld8i1nK2keHiUdmfMa9uSea/rtpVvXAeSml/FZd4ajAvjH/P1vzeQWVoLF2sphgU44t5v/gMALB8fjAQqWO3zKDNCyC1KpWbwxC9nkV1WBx8Hc3w0L1bv02x2WS22ns8FAFTV8wtTTUS0dt+T7Vk2Ejsu5nXY9Z6ZGAJzCfv59VJOBbd9FwBCXLRZkR/uH6RfB7LtMu9aGxbG8Y4pqKznlv8eGO6P5b+dh1ylxoRwFywdE9hh3wPpuSgYIeQW9d6eVBy9VgwzExE+XxQPGwNdU786egMqtf5eXZFQgEF+Ds2+h7emWRrpesEuVvgzqWOWaMLdrDEnzpN7vLpRViS1QDvsbniQI++13ZcLcCythPfcxEazZN7emYJauQqRHjbYdTmf29FFHVZvHRSMEHIL2nkxD58dYotS354bhVBXa71jymrk+PW/LIPnPzDCj/cLyBBTEyEyS2ubPIZ0jv4+dsgqrcXpjPZN5G3w0tQwLmuWV1HH277rYCHhvt54b3/eeWwdCD9weXcufwdNUmYZtmjqWoQCIPFmGaxMxfii0Y4u0rdRMELILeZaQRWe+f08ALZQcEa0u8HjvjuRgTqFfi+RACcLxHvb8dp5GzIujNb5u8tbcyLx97mOyYokhDljaKA22/HmDn6zuxKdguaxofz/518eSUd2WR3vubnx2gyLWs3g1a3aJZzz2RUQCICP7oyBPxWs3lIoGCHkFlJZzzaQqpGrMDTAAc9PCjV4XK1cie8aFRwCbMOrt+dE4Z8LTdcieNiaIbOEsiLdJcDJEhsbTeTt56Gf/WqJFVPCuK+rZUr8o6khauy926N5j/Mq6rBek33jrjU5lJcV2ZyUjfPZFbxjlicE6wU1pO+jYISQW4RazWD5r+eRXlwDdxtTfDI/FmIjTcp++y/L4LC7e4b4IsjFyugvpAYLB/vgYk5Fk8eQzrFgkDcu5lTwtmALBMClnMpWX+ueIT68LbUf7r1q9Ng5cfy+Imt2pOhl1h4cod2NU1WvwNu7UnmvT4xwwWNUsHpLomCEkFvEpwfTsO9KASRiITYsioeDpdTgcQqVGl8cSdd73tPODM9ODMH2FmRFSms6bg4KaZ3b+3vhuT8u8J5bbmDLdkvobvVWqtT4qtF03gbPTQrhZTz+yyjldmE1uHeoL68Y9dODaSiu1v6cBDlb4v07qGD1VkXBCCG3gIMphVzTqddn9UOUp63RY7dfyENuRb3e82tmR8JCKsbmpKZbiy8fH4y/zjWdOSGdJ9DZEin52uJiD1szvN9ERsOY5yaFwF6nOPWbRss+uu4d6st9rVIzeGXrZb1jVk4L576+UVyDjTqBjZUp22GVClZvXRSMENLHZRTX4IlfzoJhgIWDvXFHfy+jxzIMg1f+0f9Fcnu8J0YEOeFGcU2Tjc9crU1hY2bSbHEr6RyLBvtg0Bv7eM+FuFoZObpp9w/3475mGAZv7Lhi8Li7h/hw/UcA4LczWbicy18SGh/uwst4vL4tGQoVu2VcIAA+nh/Lm2tDbj0UjBDSh9XIlHh4UyKq6pWI97HDymkRTR5/6GoRyhvVijhZSfHSVPZT7ebEprMiS8cG4s8O2sVBWs/HwVxvmvKBlMJWX+fFKaG8IXeNl1x06daBVNQp8O7uVL1jPpkfy319KLUQ+3Xu6ZkJIXodW8mth4IRQvoohmHw3OYLSC2ogpOVFOsXxEEibvqv/GJNC25dr8/qBxtzE6jVDD5tYkieo6UEE8JdsDe5oN33TtpGd3Bde+gGGADw5C/nDB6XEOYML53Gdh/uu4rSGjmcrbT1SOFu1jA1YQMbhUqNx38+y702uZ8rHh0d0CH3THo3CkYI6aO+OnoD2y/kQSwU4LMFcXCxNm3y+IOp+p+gp0a5cd0yd19uesbJ/cP9sSe5AHIlTe7tzaZGufGKUY+lFRs99gGdoOVaQRU32K5QZ5nu+/sHcl9/dfQGN1bAzcYU790ezXsvcuuiYISQPuh4WjHW7GQ/Ja+aHo7+vvbNntM4K2JrboJXpmuXdR75MYn7Wtxox4OVqRgLB3s3W9xKer51d8XxHi/46pTB40JdrTDIj/25YufPJEOlZjDYX/uzZmNmAkfNrq3iahne3qVtmPbzg4NhQQWrRIOCEUL6mJzyOiz9+SzUDDAnzhMLB/s0e873JzL0nls1PRxOmnT7iev82SLKRvNq7h7ig8IqGc5mlrf5vknPc6mJXjGLh/lyWY29yQU4eq0YEpEQap3E2G8PD+G+7v+6trD2m3sHwJcKVokOCkYI6UPqFSos2ZSI0ho5+nlY443b+jWbBq+VK7Hyb/4OmjEhTpgVwzaxUqsZzP/yJPda42m9QgGweJhfs8WtpPu0dKfKxVcm8B5P++Rfg8fZmZtgpubng50/w2bh5g3w4s3DadjJoxvsjg11xphQKlglfBSMENJHMAyDl/66hIs5FbC3kGDDwniucLApL2y+yHtsKRXjjdsiuSDml0bD8hq2ZDZYONgHduYS/HmWdtH0VDeKa1p0nJWpdnJzU+fMH+jN/Wx9/e8NZJbWwsVaCjWj/dn4ZvEAAEB+RT0v2P36Hv4wPUIACkYI6TN+OHkTfyRmQygAPp0fC08782bPOZ9Vrrdt84XJoXC3NQMAlNbI8eKfFw2dynlwhD+OXy9GnoFGaaT7BTq3bODcF4vieY8nfnDE4HEioYBb+suvqMc6zQ6rpWMC8eOpTO640cFOkClVGLxmP/fcvuWjqGCVGETBCCF9wJmMUrz6Dzuq/YXJobwpq8YoVGo8qlOUCgCD/Oxx10Bv7vE7u1Ian8YzO9YDXvbmtETTg1Vrdq80Z4Jm1xQAZJXWQq4yvCtqUoQrF6y+tfMKauUqxHnborhaOwvnjdv6AQCe/V3bln5uvGeLAyNy66FghJBerrCyHo/8mASlmsHUKDe9HhHGfHEkHTnl2vHuUrEQb8+J4jplJmWW6S3RNLZkdACq6hXY1cy2X9I9fBzMkV/ZfMZKdwcMANz5xUkjRwL3DvMFACTeLMVf53IhEADPTAzBR/uvccfMifPEj6cyeVm312f1a+Xdk1sJBSOE9GJypRqP/JiEoioZQlys8M6cqBalwa8XVet1ynxmQgi3w0GlZrDy70tNXiPczRrBLlbYcTEP9QrqLdITqRrtejJm470DuK+zy2p5QaquCHdr9Pexg1rN4JWtbCbujngvJOmMCHhsTAAu5VTgpb+0Pz+fLYhrUf0SuXVRMEJIL7Z6WzISb5bBylSMzxfFt6hvg1rNYMUWfh1IuJs1Fms+8QLAT6duNjty/nVNKn5zIhWu9kRWUjGyywwHFY3pzpbR7ZDa2OJhfhAIBPg9MQsXcypgJRXjkdEBeG+PdhDfpAg3LPlBu/w32N8ek/q5GrocIRwKRgjppX4/k4VNJ29CIAA+ujOmxX0bfvkvC6dvlPKe+2BeDMQi9p+D4mqZwfkijcV52+FmSQ1OZ5SCahJ7HnNpyzIRvzw0mPs6q7TWaK8YBwsJpkW5obJeO3/myYQgbL+Yxx0zNdINL/99CcXV2g6sq6ZHUNEqaRYFI4T0Qheyy/E/TRr8qXHBGBvq0qLz8ivqsabR9NWHRvrzJru+tTMFlc0UPX62gO3SuTmJzYrQr5qeR7egtCmD/R24r1dt1Z/Y3OCuQex23o/3XUNxtRz+ThaYG+/JC1wzS2txLquce7xosA/C3Kxbf/PklkPBCCG9TEm1DEs2JUKuVCMhzAWPjw1s0XkMw+Dlvy+hSsYPNJ6ZEMJ9fSajFH9odsZYSIx/sp7UzxVqNYMtmvbvLSxNIJ3MVTN/yNpU3KJ6kTlxntzXWaW1Rif8ijXbedMKq/Ht8QwAwMpp4bytvABwUadjq42ZCZaPD27tt0BuURSMENKLKDVTT3Mr6uHvaIG186K53S/N2XUpX2+i7jf3DuAm+SpVaq7ocEyIk94o+gZ3DvCCQCDA6YxSZJfVQdrMJGDSdTzt2C23jdv1G9OwBRcA3ttjfGluSqQbnK2keG1bMpRqBuNCndHf1x4f6+ygaWz5+GDYWUhaeOfkVkf/ihDSi7yzOxXHr5fAXCLC54viYa3TMbMpFbUKrDSQgtdty73p5E2k5FfBxswEwS5Wesc2eG0m+wusIYOi23WTdJ/x4S5IzGR3tdQaCSQba9jhklVai7/P5Ro97t5hvth/pRBHrhZBIhLi5Wnh+P5EBmRGJjSHuFhhwSBvg68RYggFI4T0Ev+cz8UXR9IBAO/dHo2gJgKGxt7ccQVFOmPdAWDvspHc14VV9Vir2RHx3KQQo/1FbMxMIBELUSNTYoemcLFxe3jSPaI8bMAwgFkLt9BufkQ7xK6pDEe0pw0i3K2xeju7lfe+4X5wspJyP4sNRDoZupXTw7mCaEJagn5aCOkFUvIr8dwfbDfLJaMCMCXSrcXnHk8rxq9n+MGFi7WUF8ys2ZGCKplS84vHBhV1CoPX2nT/QADskk+tXMX7BUS6z7BAB2y7wAaHdYqWZUXifdhGZ1mltfi9iQ669w7zxcZ/M3CzpBbOVlIsHRuITSdvorxW+zMiEQm5JaKJES4Y1oIOwIToomCEkB6uolaBhzclok6hwoggRzw7MaT5kzTq5CqsMDBbRrfJ1an0Evx5NgcCAbB6Vj+uKNWQKE9bAMBmzTEtbapFOteIICekFlS1+PiFg7VLKA2zZQxxtJSiv489Pj3AZk6enxQKAaCXFblzoBdultRCIhbipanhrbt5QkDBCCE9mlrN4Klfz+JmSS087czw8Z2xrcpGfLj/Km6W1PKei/exQ4S7DQB2Ps3Lmk6rdw30RqirNb4/cdPgtRp2RmSX1eJEeklbvh3SCSylYhS0oOW7rpensQFDVmltky3/Fw72xgf7rqJGrkKMly1ui/XADydvorRGu214/kBvHExld+E8NMIfXvbND2gkpDEKRgjpwT7cdxUHU4sgFQuxYWF8q3YnXMqpwFdHb+g9//QE7XbL745n4GpBNewtJHh2YojRrZ0A++kXAP5MygHVrPYc06LcsP1CXvMHapiIBJCK2bqSTw8Yz4qYiAQIc7PGFk0vmVdmRKBeqcKanfzhiZ52ZsgqrYOLtRSPjA5ow3dACAUjhPRYe5ML8LHml8VbcyLRz8OmxecqVGo898cFvWWUaE8bDNE0ucqvqMcHe9mi1RcmhcLWXIIP913VuxYAxHjZwtnKFAzDYMtZav/ek9hbSFDYqDi5KX8sGQoAyCyp1asl0jUl0g3rNUs4c+M9EeNlqxfcfjAvmlvmWTE5rEXjCAgxhIIRQnqg60XVWP7rOQDAvUN9cVusZ9MnNPL1vzeQnKc/W2bJqACuNfcbO66gRq5CrLct5sZ7oqRahpR8w3UH9w/3A8BO8r1RXNOqeyGdx8lKanSonTHRXrYAmq4VAQArUzHOZ1fAUirGc5NCUCtXYu1ebbDqZCXFkavFqJWrEO9jh5kx7q2+f0IaUDBCSA9TLVPi4U2JqJIpMdDXHv+bGtaq828U13AZD11+jhaYEMEOLDueVox/zudCKABWz+wHoVCAT5pI2Y8PZ9vN/9HErgvS9caEOOk1smtKQ1DZXFYk2MUSuy6x131iXCCcrUwxfu0R3jHTo9y5wudV08Np/gxpFwpGCOlBGIbBs7+fR1phNVyspfh0QSxMWtGvgWEYrNhywWAzqodG+kMkFECu1BatLhrswy3/NLT5buzOAV4wNRGhXqHCtvMtr00gnU8iFra4wRkAvDA5FADw6UHjfUUAoKpeieJqGfwdLXDvUD8cTC3kZWDcbExxUlPEfHu8J7fLipC2omCEkB7ks8PXsfNSPkxEAny2MB7OVqatOv+3M1k4mV6q97yTlRS3xXoAADYeu4HrRTVwtJRguWYuzW9N7KiYrZlfsie5QG+uDek+bjamejulmmIlFcNEJERmSS1+O9N0hiuvgt2d8/K0cBRVy7D4m//41zIVIzmvEpZSMZ6dGNr6myekEQpGCOkhjlwtwnuaCaivzuiHOG+7Vp1fWFmP17dfMfjafcP8YGoiQm55HT7ax34qXjE5DDZmJmAYBs9tvmDwPC97M/T3Ye+Dlmh6loF+9jiWVtzi4395eDCA5rMiDcaEOGFIgAPu3Xha77UMTRD0xLhAOFlJW3wPhBhDwQghPUBWaS0e//ks1Ay7LHJXG+Z6rNp6GVX1+pkLK6kYCzRNrl7fnow6hQoDfO0wO47NlDRVc3BbrCeEQgHyK+rx77WiVt8T6TwM07ppyRHuNsgsqcXmpOZ3Q5mIBHh5Wjhe/PMirhVW670uV6q5JRxCOgIFI4R0szq5Cg9vSkRFnQLRXrZ4dWZEq6+x61I+dl7K5x6bS0Rws2GXeO4a7A1rUxMcuVqEHRfzIRIK8NrMfhAIBFCpGTy0KdHodWdrlnb+PJvTql98pHN525vjepF+kGDMo5r+H58cuNairrmLh/nhUGoR12PEkJenhXMTnwlprzb9JK1btw6+vr4wNTXFoEGDcPq0fhpPV3l5OR577DG4ublBKpUiODgYO3bsaNMNE9KXMAyDF/+8iOS8SjhYSLBhYRzXkKqlKuoUWKkpSG0wLswFeRX1kIiEuH+YH2RKFVZppvbeM8QXYW7WAIDNTSy9xPvYwdfRAgzDcO3fSc8Q7GKFy7n6W7eNWT4+GDdLalrUI8bRUooBvvZ4Y4fhJT8AGB3ixJv4TEh7tbpDza+//orly5djw4YNGDRoED788ENMnDgRqampcHbW/+GUy+UYP348nJ2d8ccff8DDwwM3b96Era1tR9w/Ib3at8cz8OfZHIiEAqxbEAc3G7NWX+OtnSm8plf9fexQqyk0nR3nAWdrU6w7mIYbxTVwspLiqfFBANiMjLFakYZzAeBCdgXSDKTqSfdRqvV3SxnjYCGBWCTEpwfSWpQVWTTYB89v1m+Y10AsFHDt5AnpKK0ORtauXYsHH3wQixcvBgBs2LAB27dvx8aNG/HCCy/oHb9x40aUlpbi+PHjMDExAQD4+vq2764J6QNOpZdwBacvTgnDYE1n1NY4mV6Cn09nco8lYiEeGOGPJT8kQiBgt/NmldbiE82gs5emhsHalP17uPGYfqt47joiIaZFsk2sqHC1Z/FztECqkeZ0hvz80OAWZ0VCXa2w+3I+b/ZMY4uH+SLAybLF709IS7RqmUYulyMxMREJCQnaCwiFSEhIwIkTJwyes3XrVgwZMgSPPfYYXFxc0K9fP7z55ptQqYzvjZfJZKisrOT9IaQvyauow2M/JUGlZjAzxh33DfNt9TXqFSqs2MKfyPvkuCDsu8IWpE4Md4W/kyVWb0tGvUKNwf72mBHNBhilNXK8q9m5Y0hCuDNszE0gU6qw9Xxuq++NdB4nKym39bYlgl2sWpwVkSnVSM6rhIXE8FKho6UEj48LavF7E9JSrQpGiouLoVKp4OLiwnvexcUF+fn5Bs9JT0/HH3/8AZVKhR07duDll1/G+++/j9dff93o+6xZswY2NjbcHy8vr9bcJiE9mkypwiM/JKG4Wo4wN2u8NTuqTd0rP95/jdeaPcLdGjOi3fH3OfYT8JLRATiYUog9yQUQ6xStAuAyJcbM1rSfP3ClEBV1ilbfG+k8ClXLl2ieSghCRnHLsiIA271XJBRgeJCjwdefnRjCZdYI6UidXgqtVqvh7OyML774AvHx8Zg3bx7+97//YcOGDUbPWbFiBSoqKrg/WVnGGzIR0tu8svUyzmWVw8bMBJ8vjIeZkU+hTbmcW4HPj6Rzj8VCAd6ZG4XvjmdAoWIw2N8eoa5WXNHqfcP9EOxiBYBtBf7NsQyj17a3kGBUiBMAWqLpaXwdzHE2s7zFxz8+NgifHmxZVqTBsxNDDL5HpIcNbo+nD4akc7SqZsTR0REikQgFBfy+BAUFBXB1dTV4jpubG0xMTCASaf/BDQsLQ35+PuRyOSQS/ZHoUqkUUik10iF9z8+nM/Hz6SwIBMDH82Ph7WDe6msoVWq8sPki7xfMklEB8LQ15+pHlowKwOeH05FZWgsXayme0Emtv7M7Re+aumZEu8NEJERRlQyHrlJvkZ6kNaMB3G1MkVVaiz8bZUWiPW1wPrvC4Dmz4zxgKhYanAK8ano4hEKaP0M6R6syIxKJBPHx8di/fz/3nFqtxv79+zFkyBCD5wwbNgxpaWlQ61R/X716FW5ubgYDEUL6qrOZZVj1N5upeGZCCEYFO7XpOhuP3cDFHO0vkwAnCywdG4hNJzNQI1chzM0afo4WWH+IHXz38rRwWGpGu5/PKse2C03Pl5mjaf/+97mcVn2iJp3PUAMyYzY9MMhgVsTYluBIDxusmh6Bzw5f13ttZow7+vvat+5mCWmFVi/TLF++HF9++SW+++47XLlyBY888ghqamq43TV33303VqxYwR3/yCOPoLS0FE8++SSuXr2K7du3480338Rjjz3Wcd8FIT1cUZUMj/yQBLlKjYkRLlwTqta6WVLDG+MuEADvzI0GAG7pZckof7z2TzJkSjWGBzpiaqQbALanyZqdxntHAECQsyX6ebA9SGiJpmcxM2ndcp5IINDLitwe7wmlgQDTwUKCzxfF4+9zOSio1M+KNAzYI6SztHpr77x581BUVISVK1ciPz8fMTEx2LVrF1fUmpmZCaFQG+N4eXlh9+7dWLZsGaKiouDh4YEnn3wSzz//fMd9F4T0YAqVGo/9lIT8ynoEOFngvduj21Sw2tAgrV6hzTLeO9QX8T522HTyJkpq5PC0M4NULMT+lEKYiAR4ZUYE916HUosMDtHTNTvOEwKBAJdzK5DSiu2jpONMjXTD9ov62as6Rcun8z4/KRSfGNhBc/Sa/iwbsabHjYOlBOsP6mdFnh4f3Kb+N4S0RquDEQBYunQpli5davC1Q4cO6T03ZMgQnDx5si1vRUiv9+aOKzh9oxSWUjG+uLs/rNq4G+H3xGwcSyvhHnvameHZiSFQqtT4UlPMumiwD1ZvY7MfD4zwR6Az2w9CpW4+KyIQALNi2a2/hn4pka7REYPnJka44L09/K3bz04MMbid+6WpbI+bTScykF9ZD0upGNU605kfHOnf7vshpDk0WICQTvTn2Wxu+WTtHdFtbhZVWFWPNxpN5H1rdhTMJWLsvJSPzNJa2FtIUFQlQ055HdxtTPH42EDu2M1J2bha0HS9wdAAB7jZmEGhUhv8ZE4636b7B3J9YtrKz9EC6w5e18uK/GsgKzInzhP3DPWFTKnC+kNsAKqbgflsQRxMW7k8REhbUDBCSCe5nFvBNSV7fGwgJkQY3nHWEq/+k8zr9zGvvxeGBzmCYRhs0BQcjgp2wvcnbgIAVk4Ph7mETXzWyVV4f4/xBmcNGnqLPPXruTbfJ2kfewsJssvq2nWNV2dE4K9z/FqR92+Pxon0Et5zDhYSvHEb23vmtzPZyKuoh5OVlBfETOrX9p9ZQlqDghFCOkF5rRwPb0pEvUKN0SFOeCohuM3X2ptcgO06O2BcrKV4cWoYAODftGJczq2EmYkI6UXVkKvUGBnshIk6gc83x28YLErUZWYiwqR+riiqkvHei3SdCeEu2H25fVkRAPjLwC6oC9nlesdte2I4TE1EbFbkILvzqkhnS+/fjw1rU20TIW1BwQghHUylZvD4z2eRXVYHb3tzfDQvFqI29meorFfgpb/4Ld9fnxUJGzO27qQhK2JvIcH57ApIREK8qlO0Wlojx7oDac2+z+R+rrCQivH4z0ltuk/Sfi9MDsWey4Y7WbfUosE++KvRDppP5sdicxL/udUzI7ii1N81WRFHS36tSrSXbbvuhZDWoGCEkA72/p5UHL1WDDMTET5fFA8b87a3z35nVwovqzEtyg3jw9mdaxezK7iC1pxyNrX/8Ch/+DlacMd/eiANNfLmd2HMjvPEjot5ze62IZ1HLBS2ewdTtUyJxjt3y2vlvIJUAFg0xBcAeFmR4mrtz9meZSPbdR+EtBYFI4R0oF2X8rhCwLfnRiHMzbrN1zp9oxQ/nNRO5LUzN8GrMyK4xxsaNafytDPDo6O1RauZJbX49rjxybwNXK1NEepmhZf/utTmeyXtMz3aHbvbmRWRiIXcXKIGb8+JxBs7+IXPX97dn/v6j8Rs5FbUQyrm/ypoGB1ASFehYISQDnKtoApP/3YeAPDAcD9uQm5b1CtUeGHLBd5zr8yIgIMmlZ5RXIOdl/i1HaumR/Dm3Ly7J5X7lGxqYvyv+qxYD6zeloySJsbGk841Lcqt3cFInLetXlbE1lzC60sDAGNDnQEAcqWa28ItU2qP2bp0WLvug5C2oGCEkA5QWa/Aw5sSUSNXYYi/Q7s7Vn56IA3pRdqJvGNDnXnBzRdH03m/eMaGOiMhzJl7fCG7HP+cz+UeO1uZGn0vazMx/j6Xa/R10vmCXaxw5mZZu65x+gZ/iW35+GA8vCmR99xLU8O4+qU/ErO55T1dUZ627boPQtqCghFC2kmtZrD81/NIL66Bu40pPr0rFuJWDDRr7EpeJW8Jxkoq5rZgAmzPEd1W7RKxEK9M1xatMgyDNTu0w/AcLCTILK01+F7e9ub4tokJvqTzDfS1x4nrJc0f2IzGWZGMkhreY7FQgNv7s1N35Uo11h3UL2zWXcIhpCtRMEJIO607mIZ9VwogEQuxYVE8t5TSFio1gxc2X+DND1kxJYzXjvvbYxmQ66TVHx0dwJv+e+hqEa+nxKxYD6Pvl1laa3BCK+k6o0KcsCe5fUs0jXfgetubY0ujHTTzB3pzu7A2J+lnRcRCAcaFOoOQ7kDBCCHtcDC1EGv3sYPrXp/Zr90p7m+O3eCNdx/i74D5A724x1X1Cmw6eZN77G1vjiWjtEP3VGoGb+lkRZyspLhZYjgrQnqGeB87HEotatc1mEZZEUOZsHuG+gIwnhV5eVo4hG3cgk5Ie1EwQkgbZRTX4Mmfz4JhgAWDvHHHAK/mT2pCVmkt3t+jnchraiLEW3MieY2nfj6diap67TbNV2dE8Np1b0nKRmqBdnvoY6MD2t1enHQea1MxCirrO/19RgY7cXOKtiRl63V5NREJMDfes9PvgxBjKBghpA1q5Uos+SERlfVKxHnbYtX0iOZPakLDRF7duSDPTAiBj4O2Z4hMqcJXR7VbdSeEu2CMTlq9XqHC2r3aYMbNxhT+bZyFQ7pGQpgL9iR3frC4WJMVUajU+NRAVuS+YX6wkLZpbiohHYKCEUJaiWEYPPfHBaTkV8HJSorPFsZDIm7fX6UtSTm88e4xXrZYPMyPd8zfZ3O5+g6RUICXp4XzXv/mWAbyKrSfsh8bE4i7N55u132RzjXY36HT2+/7OVpgVLATAMNZEaFAu4RDSHehYISQVvrq6A1su5AHsVCA9Qvi4GJtfNtsSxRXy7B6ezL32EQkwDtzo3gt5NVqBu/v1Q67W5YQBC97bdFqaY2c66QJAB62ZpgZ0/Y+J6RrdEWNxj1DfCAUCoxmRaZEusHd1szAmYR0HQpGCGmF42nFWLOT7Wi5cno4Bvjat/uar/2TjPJa7UTepWOC9Dpg7r1SwLWFd7KS4sGR/rzXPz2Qhiqdlt9PjAvEoz/SnJmeLNLDBifT27+ltymWUjHmaGpB/kzKQVapfl+R+4f76T1HSFejYISQFsopr8PSn89CzQBz4jyxaLBPu695IKUAW3Wak4W6WuGR0QG8YxiGwVO/nOMev397NKRibdFqVmktNp3M4B77OJhjdpwnb9mH9Dwjghx5/WI6w9x4T1iZmhjNisR52yLW265T74GQlqBghJAWqFeo8MgPiSitkaOfhzWvCVlbVcuU+N+f2nkwQgHwztwovfqTUzdKucLWgb72GKlZ/2/w7u5UKFTavZ1PjgvCjoudW4dA2q+lBaMt/TGzazSQUaBTC/LX2RyD233vH+6v9xwh3YHKpwlpBsMwePmvS7iQXQE7cxNsWBjP207bVu/sSuEVnD440t9gn5I7vzjJff3hnTG81y5mV/AyK/5OFpgZ44GAF3dwzwkF+t05Sffb1sLCVQGAlvzvK9NZ6gOAMSHO8HO0gNJIVsTD1gwTI1xadA+EdDbKjBDSjB9OZeL3xGwIBcAn8+PgaWfe/EnNOJNRymte5udogWUJwXrH6c4bmT/Qi1doyDAMV7/S4KmEYCTnVvKeMxSIeNiaQdKOlvWkfSZGuOBKXmXzB6LtgeS9DVmRc7kGG9/dO9S3XWMLCOlI9JNISBMSb5bitX8uAwCenxSK4UGO7b6mTKnCC1su8rpmvjU70mC25Y7PT3BfvzqjH++1w1eLcFxnpkmwiyWmRbrh/u/+a/Ye4nzsIFepmz2OdI6T6aXNHwQ2aGyLACcLjAhyhFKlxicHrnHPm4jYNR8LiQjzBravSR8hHYmCEUKMKKysx5IfkqBQMZga5YaHRnbM+vq6g9eRVljNPV402AeD/B30jtujM1J+xeRQXi2JSs3grZ0pvOOXJQQjvbim2Vkz40Kdu6TrJzGuok7R/EGAwam6LXHvUF8IBAL83Sgr0jDj6Pb+XrA2NTF2OiFdjoIRQgyQK9V45MckFFXJEOJihXfmRLW7YBUAUvOr8Nkh7fq9u40pnp8cqnecWs3gIZ3x7w+P4u+w+fNsDlLytW3fw92sMTHClddrxBCxUICFQ3z0xs2TnsfeQtKm86xMxZgd5wmlSs3ryDs21BmZpbUQCIDFw3w76C4J6RgUjBBiwOvbk5F4swxWpmJsWBTfIa2yVWoGz2++wNv58ubsSFgauPaXR9O5r9+7PZr3Wr1Chff3pPKeWzY+GAVV9dhylj+ptbFFQ3xwLrO8DXdPupqtedsyF/P6e8FCKsbW87lcZsVcIuJ+hseHufDGDBDSE1AwQkgjfyRm4/sTbHHph/Ni4OfYMf9wf38iA+eyyrnHs+M8MDpEf2R7ea0ca3SWYObEefBeb9z2PcrTBglhzvjyyA00xUoqxhNjg7DlbOf2tiAdI72optXnCATA3UN8oVSpsWrrZe75J8cFcct+1OSM9EQUjBCi42J2BV788yIA4KmEIIwL65itj9lltXh3tzab4WgpwcpGs2UavPaPtjX8h/NieMtDZTVyrD/EX4pZNj4YZbUKbDzWdDDyzMQQpBZUGezCSXqWCHdro69ZSIxvKx8X6gJvB3P8cyGXm+4c4GQBmVINmVKNfh7WGOjX/q7BhHQ0CkYI0SiplmHJD4mQK9VICHPGE2ODOuS6DMPgpb8uoVauncj72sx+sDXXrwm4kF3OW2qZFuXGe/3Tg2ncLxmA7aA5OtgJ3x7PaPY+7hrkjc2d3PGTdIzSGrnB5wOdLVGj83MkajTbZvEwX6jUDJb9ep577vVZkfhBs438/uF+HVL7REhHo2CEEABKlRqP/3wWOeV18HO0wNp5MR02xOzvc7k4lFrEPZ4U4YopkW56x6nUDFZsucg9Xj2rH68PRFZpLTaduMk75+kJIaiVq/BdM8HIt4sHQKFS4+9zuU0eR7qfr4M5bxlOl+6PpLe9ObdVF2C3dg8NcMDW89pgdny4C/Iq6lBYJYOzlRRTI2l4IumZKBghBMA7u1Nx/HoJzCUifL4ovsO2PZZUy/DqP9q1exszE7w2K8Lgsb/+l4XLOg3LbtcMOGvw3p5UXm+QgX72GBrggJ9PZza7VXR0iDN2Xcqn3iK9gKWp4WLpWTHuuFqg3RIe6WmDeoX2/+e9Q/2gZsDLiqye2Q9f/8su3909xEdv1AAhPQX9ZJJb3rYLufjiCLt75b3bo/Um5rbH6m3JvDbdL08Lh7OVqd5xpTVyvL1LW7T6zIRgXhO0SzkVelmNp8cHQ65S83beGPLjA4MAAJuTaImmN7iUY7gza6XO8tzUKDek6mzttjEzwaxYd/x2Jot7bsmoAGSU1OBybiWkYiHuGtT+wY6EdBYKRsgtLTW/Cs/9cQEA+4+3oeWTtjqYWoi/dAKIkcFOejtjGryzK4XLbkjFQiwa7Mu9xjAM3tzBb/s+PNARg/wd8GdSDgoqm25yNizQETnldTiW1rnj6kn7RXnaGHz+2YkhOJBSyD0eG+LMa5x35wAvSMUi3jLfUwlBXFZkdpxnm/uWENIVKBght6yKOgUe3nQGtXIVhgc64pkJ+rNh2qpGpsRLOhN5LSQivGlk0m9SZhl++U/7iXbRYB/Y6PSYaNz2HWB30KjUDD4/0nRWZNV0dsfOn5QV6RWyywzvdNLd5rt8fDD2XSngHgsFbP+YDYevc8+9d3s08ivquePuH+7bOTdMSAehYITcktRqBk/9chYZJbXwsDXDJ/NjO3Ro2Lu7U3mtvJ+fHGpwwJ5KzU4EbmAiEuD+EX681xu3fR8d4oR4HzvsupSPG8VN96KYN8ALDMPgu0aFr6TncbU2NbiL5pP5sbwlthnR7tiTrA1GJoS7ws3GjLd1fE6cB749ngGGAUYFOyHQueOWHgnpDBSMkFvSh/uv4WBqEaRiIT5fFA+7DkxhJ2WW4bsTGdzjAb52WGhkvf6nUzd5RaszYzy4+SGAftt3gJ1BwzCMXr+RxmbFuMNcIkZSZhmKdObVNNWngnSffCPzgo6lFXNff7YgDluSsqHSGeV77zBfvKQT0G5+ZAgq65Vc/Qg1OSO9AQUj5JazN7kAH+9nJ5mumR2Jfh6G1+nbQq5U44XNF7iJvBKxEG/NiTK4Tbi4Wsb7NAsAS0Zph/HVK1RY26jte0KYC6K9bHHkWjEviDHkjgHsVNZ5n5/kPa/bp4L0bK/OiOAt4Y0Lc8HPOo9DXa0Q522Hn09ncs/F+9jj1/8yUStXIdjFEiM6YNI0IZ2NghFyS7leVI3lv54DwE42nR3n2fQJrfTZoeu87ZfLEoIR4GRp8Ni3dqbwdkgkhLnw0unfHs9AbqN+E8vGs43YmhuI525jisF+DkjKLINS51O0q7X+Th7Sc53XGR+w7fHh2H05n5flWjzMFwu/PsU9PvrcGChVanx3nF2Wu28YNTkjvQMFI+SWUS1TYsmmRFTJlBjoa4//TQ3r0OtfK6jCpwevcY8jPWzw4AjDKfIzGaX4o1E31EdGa7MiZTVyrGsUcEzu54oIdxskZZbhVDNTd2+L80C1XInZ64/znje2FEB6HnsLCa8bbz8PG17TOztzE4wIcuImMDtZSeFlb45dl/ORU14HewsJZsUa3r1FSE9DwQi5JTAMg+f+OI9rhdVwsZbi0wWxMOnAglW1msELWy5yE3nFQgHenhNlsChWqVLz1vgBtq4k3kc7M2Rdo7bvAgHwVAK72+flRucaclusJ577/UKbvhfSM3jbawuejzw7Bin5lTidoQ1C5w/0xoxP/+Ue73lqJABw23kXDvLm9aohpCejYITcEjYcTseOi/kwEQmwfkG8wcZj7fHDqZtIvFnGPX5kdADCjQw7+/7ETaTkV/HmiiwZFcB9nVVay00NlmiCmWlR7ghxtUJqflWztSLRXrY4fLUIuzRTWknv1DDhWSISwtvBnPuZANiZNP197VBcze6+GeRnDzsLCZIyy3A2sxwSkRALh1CTM9J7UDBC+ryj14rw7m52e+wrMyIQ72PXodfPLa/D2zrbb4OcLbF0bKDBYwsr6/HB3qsAAHdbNiAKdrHEmBBn7pj3NW3fraRiyFVqCAVsAysAmPjhkWbvx9fBHGsaNUkjvdfe5SNRWa/AXzpLNhMjXHDft2e4x1/c3R8AsFGTFZke7d7hATchnYmCEdKnZZXW4vGfz0LNAPP6e+Gugd4dev2GibwNO1QEAuDtuVGQig2nx9fsTEGVTIlQVyvUythzHh4ZwO22uZRTwXVtlZqwfz1nxXogwMmSl3lpyq5L+byiVdJ7OVpK4eNggS2J2bypz67W2u3fc+I8YWNmgpzyOuy8xGbDaDsv6W0oGCF9Vp1chYc3JaK8VoFoTxu8OjOiw3cW/HMhj9eme/FQP8R5G868nEwvwZ9ncyAQALHediipkcPdxhQzYthJqgzDYM1ONqPhaWeG4mo5REIBnhgbBIZhMOez4wav25hMScPw+oqv7ukPhmGw6aR2iSbI2RIbj93gHq/UdNn9/ngGVGoGQ/wdjC4REtJTUTBC+iSGYfDinxeRnFcJBwsJPlsY3+HFfGU1cry6VTuR19veHM9MNNxSXqFSY+XfbOHpnQO8ceI628jq/hH+XCHtkWvFOJZWAhORgKsnmRvnCV9HC2w8ltHkvZjpfG9mVLTYJ3jYmiHGyxbHr5fguk47eN3Jyw+N9IeNmQlqZEr8pOk1QlkR0htRMEL6pO+OZ+DPszkQCQVYtyAO7rZmzZ/USqu3J6NEp333W7MjYS4xPP7922MZuFpQDXsLCaI8bZBRUgsbMxPcqWlMptv2PdTVGjdLamEiEmDp2EAUVcmweltyk/dSp9Cm8F+ZEd7eb430AFzGQ6ebLwDcLKnlvn5sNFub9EdiNqrqlfBztMDYUGcQ0ttQMEL6nNM3SvH6dna548UpYRjs79Dh73HkahG2JGkLCucP9MLQQMOdLvMr6vHhPrZo9flJIVy3zHuG+MBCygYvf53NwZW8SliZiiFTsoHFHf294GVvjqd/P89da1pU01OF5w/05k1zJb2Tq7UpEsJckFdRh706c2h0PT42EDbmJlCrGXyjWbZZPMzXYLdfQno6CkZIn5JfUY9Hf0yEUs1gZow77hvm2+HvUStX4sU/taPaXaylWDHFeAO1N3ZcQY1chThvW3jameNCdgVMTYS4Zyh7b/UKFd7XtH2P8bLF1YJqSERCLB0biJ0X83DkahF3rW0X8pq8t1XTw/Hl0RtNHkN6vsfGBEAkFOCnU5kwVovcsByzP6UQGSW1sDYVY04HdxQmpKtQMEL6DJlShSU/JKK4Wo5QVyu8NTuqU1phv7/nKm/U+xuzImFtamLw2GNpxfjnfC6EAuC1mf3w+ZF0AGzWw8FSCoBdUsqtqIertSlKNH0j7hrkDVOxCM/9oW1ctnpWvybv6/Czo3ntw0nvZGtugrnxXpAr1fj5dJbBYx4fGwhbc3a449f/sj9T8wd5c5k2QnobCkZIn/HK1mScyyqHjZkJvljUH2adMJ32XFY5lxIH2HHuCeEuBo+VK7VFq4sG+0AgYJd3REIBHhzBtn4vr9W2fe/va4fkvEpIxUI8OjoAr/5zGVUytguro6UUl3MqjN5XlKcNfBwsMO+Lk0aPIb3DwkE+MJOIsPNSHoqrZQaPaciKXM6twMn0UoiEAtwzxLcL75KQjkXBCOkTfjmdiZ9PZ0IgAD66MwbeDubNn9RKDRN5G9Lm9hYSrJpuvFj0639v4HpRDRwtJVg+IQSfH2Y/wU6NdIOXptX3uoNpqKxXIsTFChkl7I6Ju4f44EK2tt8IACwdE8Cb3trYurvikF9Bc2d6O4lIiLuHsp1Tf9DZzqtr6RjdrAgbGE+JdOuUIm1CugoFI6TXO5tZhpV/s1tsn5kQgtEhnbOb4Isj15GSX8U9XjU9nFtqaSy3vA4f72eH5q2YHIbKOgW2XWCDi4dHsVmRrNJabrpqf187XMqphLlEhPkDvXk1KQ4WEsQa6V0CAPE+dvCyN8ezf5w3egzpHWbGsJ1Tr+RV4r8M/SZ3ErGQy4oUVtbjn/PszxRt5yW9HQUjpFcrqpLhkR+SIFepMTHCBY+ODmj+pDZIK6zGx/u1U3QTwpwxI9rd6PGrtyWjTqHCAF87zI7zwJdH06FmgJHBTohwtwEArN17FXKVGoP97ZGUWQ4AuGeoLz47dB2FjcbEz1x3zOh7zevvhYo6BY5eK27nd0m62wOa5TvdOTS6HhzhBzsLNiuy6eRNKFQM4n3sEONl21W3SEinoGCE9FoKlRpLf0pCfmU9Apws8N7t0Z1SsKpWM1ix5QLXbMpKKsbrsyKNvtfhq0XYeSkfIqEAr83sh9IaOX47wy6xLBnJ/rK5lFOBPzWzRuK87XAlrxKWUjFCXa3we2I2dy0LTabEGKlYiMmRrvi2maZopOcbGeyEEFcrVNTx59A0sJCI8MBw9uenXqHCj6eoyRnpOygYIb3Wmh0pOHWjFJZSMT5f1B9WRna0tNdPpzN5KfP/TQ2Dq43hIWQypQqvaLqy3jPEF2Fu1vjueAbqFWpEedpgSADb8+TtXWyDs6lRbth3he0jcUd/L97APQBYONgHj/2UZPTeJka4wkQkxAeaPiak93pwBBtUbE7M5jWxa3DPUF8uK/Ln2RyU1sjhYWuGCUYKqAnpTSgYIb3S3+dyuPkc798RjUBny055n/yKeq4zKgAMDXDAPE3XVEO+PJKOG8U1cLKSYtn4INTIlPhOk3JfMioAAoEAR64W4ei1YpiIBAh3s8bVgmpYmYpRVC1Drk4RqkQsxPyB3jiZXqr3PrbmbOA1O86D13yN9E6hrlYYHugIhmEMFq6aS0TcEg7DMNx03nuH+kIson/GSe9HP8Wk17mcW4HnN7P9N5aOCcTECNdOeZ+GibzVmu21ZiaiJnuXZJXW4lPNNt2XpobBytQEv/yXhYo6BfwcLTAxwhVqNYM1muDmroHe2JzELsn0c7fhihGlYvav5dx4T3x5NF3vfaI9bVBeq4CTlRRDAxzxzu4UvWNI7/LACH8IBAIcSytBenGN3uv3DPWFvSYrcuRaMa4VVsNCIsK8gcYDY0J6EwpGSK9SXivHkh8SUa9QY1SwE5aNNzyYriPsuJjPLaEAwDMTQ5rcMvzatmTUK9iC1BnR7lCo1PhaE0w8OMIfIqEAf53TtH2XiuFlb470ohpIxUKkFrC7dGK9bSFTqiEUsK3fG+oCdFmaso2tZsW4Y9+VApTXKjry2yZdzNlKyhVDN55DA7BZkYa+NIB2O+/t/b2MNtsjpLdpUzCybt06+Pr6wtTUFIMGDcLp06dbdN4vv/wCgUCAWbNmteVtyS1OpWbw+M9nkVVaB297c3x8Zyw33bajldfKsWrrJe5xrLct7tW0bzfkQEoB9iYXQKwpWhUIBNh6Lhe5FfVwtJRidpyHpu07W9vx4Eh/biy8TKlGaY0c7jamsDVjf7lMjXI32H1zTIgT/rvB1q/cFuuJDYevd9S3TLrJPUN9IRELkVNehz0G5tDcPUSbFblWUIUjV4sgELC7rAjpK1odjPz6669Yvnw5Vq1ahaSkJERHR2PixIkoLCxs8ryMjAw888wzGDFiRJtvltza1u5NxdFrxTA1EeLzRfGwMe+8T4VvbL+CYk1rdolIiHfmRBkNfOoVKryylZ2qe99wPwS7WEGtZvD5keua53xhaiLC9ycykFNeB1drU9iYmfCmrwLAI6MDcFgzh2aQnz23bKPLXCqGXKVGmJs1ymvluJBtvCsr6fnMTERYMIjdLfXTKf1aETMTEVfYCoCrkxof5gIfB4uuuUlCukCrg5G1a9fiwQcfxOLFixEeHo4NGzbA3NwcGzduNHqOSqXCggUL8Oqrr8Lf39/ocYQYs+tSPtYdZH+5vz0nCmFu1p32Xv9eK+Ztr318bCCCXKyMHr/h8HVkltbC1doUT4wLAgAcTC3E1YJqWErFWDDIB+W1cnx6gK0neXxcIL44wq8FuT3eE8l5VVAzwKhgJ24rsC5ve3PkaGbizInzwGeUFen17ujvCVtzCWRKFX4xkAm7e4gP11ivtEbOFSvTdl7S17QqGJHL5UhMTERCQoL2AkIhEhIScOLECaPnvfbaa3B2dsb999/foveRyWSorKzk/SG3rrTCKjz92zkA7D/CM2M8Ou296uQqXvfTUFcrLGmikVpmSS3WH2KDgpemhcFSM6isYflkwSBv2JiZYP2h61zbd5WaQU65dtCei7UUD4/yx2ZNAORua2Yw49Hf1w7nssohFACBzpbU5KwPuE8TVOy6lI+SGjnvNTMTER4cqf3w9uPJm5Ap1ejnYY2BfvZdep+EdLZWBSPFxcVQqVRwceHva3dxcUF+fr7Bc/799198/fXX+PLLL1v8PmvWrIGNjQ33x8uLKsZvVVX1Cjy0KRE1chUG+9tjxeTQTn2/D/ZdRWYpu3wiEgrw7txomBjZOskwDF755zLkSjWGBzpiaqQbACDxZin+yyiDRCTEfcP9kF1WyzUlWzY+CJ8d4mc03rwtEr+fyYZcpUaEuzV+Pq1ftCoQACLNLp6RwU744aT+MaR3mRThyi21bDisv2tq0RAfOGqyIjKlCt9raozuH+7XKc39COlOnbqbpqqqCosWLcKXX34JR0fHFp+3YsUKVFRUcH+ysowPCCN9l1rNYPlv55FeVAM3G1N8eldcp/ZUuJhdga90ttI+OMIfkZ42Ro/fd6UQB1IKYSIS4NWZEdwviM8Osde4LdYDLtamWLuHbfs+xN8B+RX1yNPpJTIrxh39fey53hLGprSOCHLCifQSAMAAX3veLh/SOz04Ujt590oeP/traiLEQzpZkW3n81BUJYOzlRRTI42PISCktxK35mBHR0eIRCIUFPD/ISwoKICrq36vh+vXryMjIwPTp0/nnlOr2ZbaYrEYqampCAjQT4FLpVJIpYYHkJFbx7qDadibXACJWIgNC+O5T4mdQaFS4zmdibz+jhZ4KiHI6PF1cm2n1QdH+CPAiW26dq2gCvuuFEAgAB4a5Y/LuRX48xy7zr9sfDCvm6qjpQSrpkfg+xMZqJGrYCkVo6DScDDi72iBI1eLYCUV49vjGR3wHZPu5O9kgXgfdqnlzR1X9F5fNFibFWEYhtvO27DzhpC+plU/1RKJBPHx8di/fz/3nFqtxv79+zFkyBC940NDQ3Hx4kWcO3eO+zNjxgyMGTMG586do+UXYtTB1EKs1bQ4f31mP0R38iCwL4+m8z6dvj03CqYmIqPHrz+UhpzyOrjbmGLp2EDu+c81hakTwl0Q4GSJt3amgGGA6dHuuJBdjiKdAXirZ/aDqYkI32iCi4bmao3ZmZugoo7tJRLsasW7BumdnpkQAgCoqFPgWFoJ7zU2K6L9kHYyvRTJeZUwNRHiribmFBHSm7UqMwIAy5cvxz333IP+/ftj4MCB+PDDD1FTU4PFixcDAO6++254eHhgzZo1MDU1Rb9+/Xjn29raAoDe84Q0uFlSgyd/PguGYQtA72ii/XpHuFFcgw/3XeMe3z3EBwN8jRcI3iiuweeaNf6V08NhLmH/GuVV1OFvTRZkyagAHL2mbfv+2JgA3LFBW+Q9NdINkyPd8O2xGyhtVLjY2ORIN2w9x27zTbypP1ae9D4NXYMbCrN1LRzkAycrbRawISsyO86Tm01DSF/T6mBk3rx5KCoqwsqVK5Gfn4+YmBjs2rWLK2rNzMyEUEhpRNI2tXIlHt6UiMp6JWK9bbFyeninvp9azeCFzRcgV7LLhx62ZnhukvEiWYZhsGrrZchVbAdY3Vb0Xx+9AYWKwSA/e0R72mLaJ/8CYIfdHUgpRGU9m/mwMhXj1ZkRUKjU+PLojWbv0d5cYjRrQnqfFZNDIRIKoFCpse8Kvz+TqYkQD43S1opkFNdgfwq7LH7fMNrOS/quVgcjALB06VIsXbrU4GuHDh1q8txvv/22LW9JbgEMw+D5zReRkl8FR0spNiyMh1RsfKmkI/x6JgunbmgH0a2ZHcltzzVk9+V8HLlaBIlIiFdmaItWK2oV3C6YJaMD8Pf5HCRr2r4vHuqHke8e5K7x+qx+cLSU4o/EbN4WX0OiPW1wKZcam/UlCwf7AAAe+UF/GvOCQT5wttJOhP72eAYYBhgd4tRpwyAJ6QkohUF6jK//vYF/zudCLBTgs4VxcLE2bf6kdiiorOcVD86N98TIYCejx9fKlXjtH7bT6pJR/vBz1HbA3HSSLUINdbXCEH8HvLebrXdZMjoAfyRpG6iNDXXGjGh3qNWMXiv3KZH6ReBjQp1xKLWobd8g6XEiPWxgIRWjrEautyNKKhbiYZ2sSEWdgmt+R03OSF9HwQjpEY5fL+am2b48LbzJmo2OsvLvS6jSLJ04Wkrx0tSwJo//5EAacivq4WlnhkdGa4tW6xUqfKPpI7JkVAA2nbjJtX2fG++Jj/dr61Hemh0JgUCAvVcKkFZYzbt+4/bepiZCbncP6Rs+XxQPAHjm9/N6rzXOivz6XyZq5SqEuFhheGDLWyMQ0htRMEK6XU55HZb+dBYqNYPZcR64e4hPp7/nrkt52H1Z+8n09VkRsDU3XhyYVljN9SBZNT0CZhLt8tHvidkoqZHDw9YMI4Ic8elBtu378vHBXCYFAN6ZGwVna1MwDINlv57jXf/j+bF6zdCm9HPjBTKk93O3NcOVvErsT+HXikjFQizRyYooVWp8d5ztPXPfcF9qckb6PApGSLeqV6jwyA+JKK2Ro5+HNd68LbLT/+GtqFXg5b8vc4+nRLpiUj83o8ezRauXoFAxGBfqjPHh2g7ESpUaX2q28z44wg9fHElHRZ0CwS6WGB3ihO0X87hjb4/3BMA2S6uVq7jnY71t4WNvrve+wa7G5+GQ3ueDedFgGAYv/XVJ77W7BnnDWWdZctflfOSU18HBQtKp4w8I6SkoGCHdhmEYvPzXJVzIroCduQk2LIxvsrdHR1mz8wrXq8PGzASvzmh6m/n2i3k4llYCqViIVdMjeK/tvJSPzNJa2JmbYHiQE9cz5IXJoRj+jrZo9dgLYyEQCMAwDB78/gzvGq9Mj8C7u1N5z/k4mOMtzbIV6Rtui/XErkv5etuzxUIBloziN39s2M67YLBPl/ydIKS7UTBCus2PpzLxe2I2hALgk/lx8LTTzw50tOPXi/HLf9rxAiunhfN6OjRWLVNi9TZ2qeXR0YHwdtDeI8Noi1DvGeqL9YfSIFeqMdjfHjZmJtx24XGhzvCwNQMAPPfHBd71Z8d5IMTVCv+m8YfedWa3WdL1ApwsUK9Q4fXt+t1WFw724RVrJ2WW4WxmOSQiIRYN7vwlS0J6AgpGSLdIvFmGV/9hl0qemxSK4UGdX6BXr1DhxS3aibyjgp0wO67pFPjH+6+hoFIGHwdz3k4HAPg3rRiXcythZiLCQF97/HmWbXj2wuQwzPlM2+Dsy7v7AwDOZZXj90TtzhozExGemxiKHTpLOQ2ouVnfsun+QfjySLrBrdyPjDacFZkR495koExIX0LBCOlyhZX1eOSHRChUDKZGuuHhkf7Nn9QBPtx3DRkl7EReC4kIb85uuj7lakEVNmp+MbwyI0IvXd6QFZk3wAsbjqSDYYBpUW7Yl6wtjF09qx+EQgHKa+WYte4Y7/xHRgfA1cYUy3/T31lB+haBAFjfqEAZAO4d6svLiuSU12HXJXYCOjU5I7cSCkZIl5Ir1Xj0xyQUVskQ7GKJd+ZGdclOgUs5FfhSZyLvC5NDuaUTQxrqWZRqBhPCXTAmxJn3+sXsChxLK4FIKECYmxWOXC2CiUiA+QO9ud00ALBwkDc3fViXu40pHhzhj0xNcET6rv9NCcOaHSmoU6j0XmtcK/Ld8Qyo1AyGBjgg3N26q26RkG5HwQjpUq9vT8aZm2WwMhXj80X9YdFEt9OOolSp8cKWC1BpmnYM9LPHgkFNr8VvPZ+LUzdKYWoiNNiSviErMi3KDd+fYLdgLhjkg5V/a3dKbLp/IAQCAT47fB0HGm3lfH5yKMwkInx3IqM93xrpQWKMDHMMdLbE1vO5es/fM8QHrjbarEiNTMl18aUmZ+RWQ8EI6TJ/JGZzv7g/nBfD62Damb7+9wYu5bATeaViId6eEwWh0Hg2prJewRUaPj42SK+wNqO4BjsvsXUebjZmuJxbCUupGE5WUlwvqgEAuFhLMTzQEcevF+P9PfydMrHetpgR7Q6VWjsanvR+WaX6WS6BAHh/b6qBo9nuvLp+P5OFqnol/Bwt9DJxhPR1FIyQLnEppwL/+5MtHn0qIQjjwlyaOaNjZBTXYO3eq9zj5eODmw2CPtx7DUVVMvg7WuCBEfqfUL84mg41AwwLdMA/mk+8s2LdedtzP74zFkVVMjzx8zm9Lqorp4VDIBDo7aAhvdf/poShxMD05TEhzlwgrGvBIG+42WiXCVVqhtsWvniYb5PBMiF9UefnyMktr7RGjoc3JUKmVGNcqDOeGBvUJe/LMAxWbLkImWaLbaSHTbPp7yt5ldzSySszIvQG9RVW1eMPzY4Yc4kYOeV1cLGW4lqBtrX7EH8HxPvY4a6vTqG4WsY7f1aMO2K97QAAH+gESaR3O5leYvD5/zJKDT7/2JhA3uP9Vwpws6QW1qZizInz7PD7I6Sno8wI6VRKlRqP/5yEnPI6+DlaYO28mC771Pf7mWyc0PySEAsFeGduFMQi4z/yDUWrKjWDKZGuBofmfXssA3KlGgFOFjitmfbr42DBm/z7zMQQvL/3Kk7fKEXj2tznJ4cCAMpq5DiXVd7O75D0BOsXxOm1d29QVa+EVMz/mZsZ4w73RsXTDct18wd5d0kdFSE9DQUjpFO9uzsVx9JKYC4R4fNF8bAxM+mS9y2srMfr27VzYR4dE4gwt6Z3J2xOysGZm2Uwl4jw8jT9otWqegU2nWRrXhiGnapqa26C5FxtGn50iBPKauTcnJlwnfd8fGwgl5pv6EnSFpEeNm0+l3S8qwVVTb4e4GTJe/z8pFDe40s5FTh1oxQioQD3DPHt6NsjpFegYIR0mm0XcvG5Zm7Lu3OjEezSdbNWXvnnMio1E3mDXSzx2JiAJo+vqFNgzQ62aPWJcUG89fwGP5/ORFW9EuYSEbLK2GLF6nolqmVK7pjb472w/LdzANi6gMs6gUpDcyuGYfDaNm2g1FoXcyrafC7pWE+OC8IPmgDVkBFBjkjO0/4MDPF30MuKNPSymRLppvcaIbcKCkZIp0jNr+Janz88yh9To4wPoutouy/nY8dFtnGUUAC8PSdKr/ajsbV7UlFSI0egs6XBZlMypYpLpdfKVVCo2KpUpU516shgJ2w4fB2V9UrEeNnCQael+9tzImEuYdPvhgoaG3t9luF5ObTls2cJcrFEcbV+4SoAmIgEXH1Qg/fuiOY9Lqysxz8X2CJo+n9LbmUUjJAOV1GnwMObzqBWrsLwQEc8OyGky967sl7B6/Vx3zA/vV8IjV3KqeCWX16bEQGJWP+vxd9nc1FQKdN7XleNTImLOezQv0/mx+Lj/de4126P9+K+nv/lyWa/j38M9KUAwN0n6X7+Thb4+5zh/08AcN9wP+zWdFMFAA9bM71Ge9+fuAmFikG8j53RPiWE3AooGCEdSq1msPzXc8goqYWHrRk+nh/bZNFoR3trZwoXNPg4mOPpZgIhtZrBy39fgpoBpke7Y2ig/owctZrBhiP6rbwbS7xZBoEA+GBeDNe8CmCbnzUU7V7MruAt6xhy5NkxvILYBi9MDuWG75Hu98TYIOzVaf2vy9FSitHBzkjVqSf55aHBvGPqFSr8eIoNLikrQm51FIyQDvXR/mvYn1IIqViIzxfFw95C0mXvfSq9BD+d0gYBa2ZHwkzS9PLM74lZOJtZDguJCC9NDTN4zN4rBUjXNDNrzuNjAjEq2Ik3h2REELsrp6JOgemf/tvsNf4+Z7i49VxmeYvugXSNTANNzho8PykEm5Oyec952fOb521JykFZrQIetmaYEN41fXcI6akoGCEdZl9yAT7SLE28eVsk+nXhro96hQordCbyzh/ojaEBTU8CLq+V462dKQCAZeODeQPLGjAMw7V+b86wQAc8mRCMF//ULhNte3w4AG3GqDl7lo3E+wb6jywZFYBdl/MNnEG6wyOjA7huwo252ZgiIcyF60cDALueGsE7hmEYbDzG1iAtHubbpdlDQnoi+htAOkR6UTWWaX7Z3jPEB3Piu7Zx0ycHriG9mM1euFqbYsWU0GbOYLcdl9UqEOxiiXuG+ho85vSNUpxtQUbCxVqKj+6MhVKt5i3RNARkDRmj5jR0qW3M2ox6T/Qk7jameg3tGqxbEMcLRAAg1JW/rfzw1SKkFVbDQiLCHQO8QMitjoIR0m7VMiUe3pSIKpkSA3zt8JKBHh2dKTm3Ep8f1k7kfXN2P1ibNt3P5HxWOX7SBA2rZ/aDiZFPpoayIkIBYGuuvb5IKMCnd8XB0VKKx386yz2//+lRAPgZo6aMC3XGfxlles8P8XfAO7sMzzchXS/ExQrH0gx3XAWAGE9bvKHZJg4AP9w/SO+Yhp1ZdwzwavZnlZBbAQUjpF0YhsFzf5zHtcJquFhLsW5BnNFf7J2hYSJvwxbbmTHuGBva9Pq7SlO0yjDAbbEeGOTvYPC4lPxKHEwt0ns+1tsO5bUK7vHzk0IwwNceRVUy7NEUNIqFAgQ4WSK9qBpP/HJW7xqGGMucdHWWiTRtRoy70SWz/U+PwuFr/J+Z4UH85cKrBVU4eq0YAgGweCgVrhIC0Gwa0k6fH0nHjov5MBEJsH5BPJyt9OsuOtO3xzNwIZttAuZgIcGq6RHNnvPLf5m4kF0BK6m4yeUc3WxLAz9HC1TWaQORCeEueHCEPwBgyQ+J3PO7nhrJZYxq5aoWfz+GPPP7+XadTzpWrdz4bqgAJ0tM/ugo9/iN2/T7xTQ0OZsQ7gJvB3O91wm5FVFmhLTZ0WtFeGcXWwD6yowIxPs03c+jo2WW1OK9Pdrli1dmRDS7e6e0Rs4teSyfEGw0eMouq8VWA70+Zsd64FohOxRPJBTg3dujIRAIkJxbicSb7BKLk5UUAU4WePb389yxbWVsh09H8Hdqenox0Tcrxh2/nck2+Nr6BXHIKq3lbb++a6A375iSahm2aEYB3D/cv/NulJBehoIR0iZZpbV4/OezUDPAHf099f7R7WwMw+DFPy+iXsH+wz8+3AXTWtDl9e2dKaioUyDMzRqLBvsYPe6rozeg0umuCrCFubo7Xf5+bBhszEzAMAwvK7LxngH47PB17LzU/t0vr2+/0vxBbeTSxVmsvsDd1gxFVYYLV8eHu+BpnSzWQyP9IWg0KfGnU5mQK9WI9LDBAN+uDd4J6ckoGCGtVq9QYckPiSivVSDa0wavzeyn949uZ9uclIN/04oBAFamYrw+q/l7SMosw69nsgAAq2dGGN1OWVYjx6//ZfGe87Qz49XCPDEuiNspsze5gOs54e9ogbJaOd7b3bqC0wh3/SF+EyM6t/fECSNj74lhVlIxbhQb7jdzR39PqNQMN8kZYOfW6JIpVfj+pLbJWVf/nSGkJ6NghLQKwzB4cctFXM6thIOFBJ8tjIepSdONxTpaUZUMq3UGzb00NcxgjxBdKjWDl/9i+3/MjfdEf197o8d+dyIDdQp+ncezE0PwlWatHwCWJbC/aGRKFZb/pv00vGRUAJcxaqknxwXxBuo12H3ZcHfPjmBtSuVirTU9xt1otmveAG+8qbODJiHMGRZS/n/jbefzUFQlg4u1FFMiu25WEyG9AQUjpFW+O56BLWdzuO2s3TFl9NV/LqNCU0Q6PNARd/Rvvk/Dj6du4nJuJaxNxXhhsvGi1Vq5Et8dz+A9N6+/F5785Rz3+PCzo7lPtd8fv8m1d/e0M8M3xzO4e2t4rjnRXl3XHK5Bc51piT6miQAzztuW1wRt5TR+ITXDMNx23ruH+Bqcf0TIrYw+HpEWO32jlKthWDE5FEMCDG+J7Uz7kguw7UIeAMDMRIQ1syObTXcXV8vwrmbZ5NmJIXDUmabb2G//ZaFMZ9suAJiaaH9xjA11ho8DW/hZUi3j9ZMorZEju6yOe+zvaME1YjNm2+PDMe2T5lvEd7Tmhv4RvmhPG+y7YjhT9fjYQPygM4bA0VKit0vmZHopkvMqYWoixIJBXVtfRUhvQOE5aZH8ino8+mMSlGoGM6Ldu2WwV1W9Ai/rTOR9dmKI3rwPQ9bsSEFVvRL9PKxx1yDjRasKlRpfHr3Be+7eob74TucT7ztzo7iv1zZq2667hVckFGBSP9cm70sgAJytjAdGpOfwd7I0Wrg6K9aDWwIEgI/vjNU7piErMifOE7bmXTeviZDegoIR0iyZUoVHfkxEcbUMoa5WeGtO89mIzvDOrlTkVdQDYNPixlq46/ovoxSbk7IhELCdVkVC4/e9/UIecsq1mY0QFyts0Rl29sjoAC6rkpJfiR91Pg039sBwP96wPEPemBWJR35MavZ7IN1Pd+lNl4OFhJcNA6CXMcworsH+FDarch9N5yXEIApGSLNe/ScZZzPLYW0qxueL4mEu6frVvf8ySrFJsxNBIhLinblRTQYWANudteET650DvBDrbXwrJcMw+PgAv2W7XKVGZT1bDyIRC/GQprkZwzC8AtrGor1soVA1X8E6JdKV601Ceq6RwU44YKQ77mNjAnHPxtPc4zdu09/V9c2xG2AYYEyIEwKcLDv1XgnprSgYIU369b9M/HQqEwIB8PH8WK5eoivVK1R4YfMF7vGTCUEIdLZq9rzvT9xESn4VbM1N8OzEpgfnHb5ahPQibX2HvYWEt41zyUh/2Gkaqu2/Umh0NomZiQgPjvDjJrIaMzXSDa/9YzygIT1HUzGvT6PakNmx/Nb9FXUK/K4ZmkdNzggxjoIRYtS5rHK8/NdlAMDT44MxOsS5W+5j/cE0XNcECuFu1nhoZPP/qBdW1uMDTU3HcxNDm+3M+kaj5mKlNXLuaytTMe7XZEXkSjWvaLWxFVNC8cUR/Tbyjd0W68F14iQ926Uc/W3XABDvY4eHN2mb3d0zxEdvl9IvpzNRK1ch1NUKwwK7vuCbkN6CghFiUHG1DI/8kAi5So0J4S54dHRgt9xHSn4lV3shEgrwztyoFg3ie3PHFVTJlIj2ssWdzYxoP5dV3mTb9gdH+MPGjJ2s+v2JDKONr0aHOEGpYrhZOcY4WEhw/Do1HOsNBvrZo7jacOFqjJctN6ARAB5sFCQrVWpum/h9w6jJGSFNoWCE6FGo1HjsxyTkVdQjwMkC798RDWEz9RmdQaVm8Pzmi9w/+A+P9Oe6njblZHoJ/jqXqylajWj23u/YcMLoa7bmJlg8zBcAmy35aP81g8fZmZtgWUIwXmuilqTB9Gj3ZpdxSM8g05kz09ieZG0DtFBXK3ja8Zdsdl7KR25FPRwsJJgR495p90hIX0DBCNHz1s4UnLpRCkupGJ8v6g8rU5NuuY/vjmfgfFY5AHao2xON2msbolCpsVKz/XfBIG9Eedo2efzVgirIVfxfOPYWElho0u0Pjwzgvv8P911FVT1/YmvDh901syPxyYG0Zu8PAC7mNJ05IT2DtamY+/lrzN/JAlml2l00r8zQnxbdsJ13wWCfLu9STEhvQ8EI4fn7XA73j+h7t0cj0Ll7qv+zSmu5RmUCAfDOnKgW/YP+7bEMXC2ohr2FBM9MCGn2+AkfHOE9FgkFGB3ihBq5Cg4WEtw9hO1LcrWgitdhswHDsO3lARhtiqXL38mCdtD0Em42xrvn6hY7A8AgP/54gcSbZTiXVQ6JSNjkQEZCCIuCEcJJzq3E85pdK4+NCWi2aVdnYRgG//vrEjcf5p4hvk3OkmmQX1GPD/exRasvTApttrnU0WtFes89OS4Ip9LZYWePjA6AhVTc5FZeD1szPD0hGC9sudjs/QH6v8RIz5VaUNWi4wx1Ad6oCehnxLjDiRrbEdIsCkYIAKC8Vo6HfziDeoUaI4OdsHx881mFzvLn2RwcucoGCh62Znh2Ysvu5fXtyaiRqxDnbctlK4xRqtRY9PVp3nMJYc6ws5Agp7wOTlZSLNB0az2UWoSj14r1riEQAGvviMZnh66jvNZwUyzSO9mat3xp8rZYD97j7LJa7LzEjiy4bxg1OSOkJSgYIVCpGTzxyzlkldbB294cH98Z02xDsc5SXC3jFYGumR2pN/3UkGNpxdh2IQ9CAbB6Vr9mi1Ybt3L3tDPDm7Mjsf4gW/fx2OgAmElEUKjUWPztfwav8dBIf4hFQoPLN6R3a2lweecAL73lw++OZ0DNAEMDHBDubt0Zt0dIn0OD8gjW7k3FkatFMDURYsPC+G6dnbF6WzL3i+D2eE+MDHZq9hy5Ulu0evcQX0S4N73jJq2wWq9V+/oFcdhxIQ95FfVwszHFnQPZYWYfG9k9E+ZmjSfHBWHmp8eavT/SdzUuqq6WKfHL6SwA6Jb5TYT0VpQZucXtupSPdQfZX8xvz4nq1k9yB1IK8Pe5XACAk5UUL00Nb9F5X/97A9eLauBoKcWy8cFNHqtSM3is0TyY12f1Q5CzFdZpApTHxgTC1ESE4mqZwR0yEpEQH86LwbfHM5rsT0L6Ng9bM7jb8otcfz+ThSqZEv6OFhjTTU0CCemNKBi5haUVVuPp384BYD/FzYzxaPqETlQtU+KlP7WTT1+f1Q82LVi3zymv47IXL04J5ZqTGfPt8QxeYeLYUGcsGOSNH0/dRFGVDJ52ZrijP9skrf/r+wxe47lJITA1EeKdXanN3h/puz68M4b3WKVm8M2xDADA4mG+3dKbh5DeioKRW1RVvQIPbTqDGrkKg/zs8cLkpme3dLb3dqciVzORd2qkGyZGtGwnz+vbklGnUGGAr51eIWFjN0tq9HbFfDI/FrVyFT7TZEWeGBsEiViItXsMBxpD/B2weJgf/qcTOBlDDTf7tv4+/MGL+64UILO0FjZmJpjTTAE1IYSPgpFbkFrN4OnfziO9qAZuNqZYtyCuRS3WO0vizTJ8dyIDALuLwVADKUMOXy3Czkv5EAkFWD1Lf1qqLrWawXN/XOA9t/mRobCQivHdiQyU1Mjh42CO2+I8cCWvEh8baWD23h3R2Ho+B/+m6e+uacyhmXk4pPcy9PPW0J9n/kDvbplsTUhvRsHILWj9oTTsSS6ARCTEZwvj4WjZfX0QZEoVnt98AYxmxMeq6eEt6ssgU6rwylZ2iN+9Q30R6tp0rcuPpzNx6kYp77l4HztU1Su4wXZPjgtCjUyJyR8d5Y7xd9JOKf5gXjTMTURY9uv5Fn1vzQ3nI73X7Y0yH5dyKnD6RinEQgHuGUpNzghpLQpGbjEHUwvxvmZb6+pZEYjxsu3W+/ns0HWkaYpAx4Q4YVYL61a+PJKOG8U1cLaS4qmEptvEZ5fV4uW/+MsqZ15KAAB8cywD5bUK+DtZYFqUO5b+dJY7JiHMmdekbFaMB95sYmKvrmGBDrhaQMWtfdGMaHe97bwNWZEpkW5Ndm4lhBhGwcgt5GZJDZ78+SwYBrhrkDfmDfDu1vu5WlCFdZq+HpZSMd64Tb+TpSFZpbX4VHPe/6aGNTk7h2HYJSldwS6WcLSUoqJOgS+PslmRpxKC8fH+a7zll31XCrmvz7yUgBPpJfg9MZt3rdWz+hl83+7MNpHO9b+pYbzHBZX1+Oc8uwuMtvMS0jYUjNwiauVKPLwpEZX1SsR622LV9JZtm+0s7ETeC1Co2PWZFyaH6m2TNOa1bcmoV6gx2N8eM6Kbnob625ksveWZr+4eAAD4+mg6quqVCHaxhIlQwAU4AJulaTApwhWWUjGW/XqOd50vFsXjjzNZeu85IsiR26JM+hZLqRgu1qa85zaduAmlmkF/HztEd3OmkZDeioKRWwDDMHhh80Wk5FfB0VKKzxbEQyru3imim05k4GxmOQB2yNhdA1uWpTmQUoC9yQUQCwVYPbPpotW8ijo8v5k/MybSwwbeDuYoq5Fjo2Yb5oxodzzzuzZ74mwlxcFU7dyaD++MwfqDaSiolHHPTQh3wSA/B5zP1p/AG99olwXpO767bwDvcb1ChR9PsR14KStCSNtRMHIL+PrfG9h6PhdioQDrF8TB1ca0+ZM6UU55Hd7RTOSVioV4e05Ui3oy1CtUeGUruzX3/uF+CHKxMnoswzC468tTes+vmR0JAPjiaDqqZUp425tjS1IOauQq7pg6na+fHBeErNJavd01GxbGY81O/fqRACcLfLjPcNdW0vvF+/AHNm5JykFZrQKedmaY0MLt6IQQfRSM9HHHrxdjzc4UAMBLU8Mw0K/56bediWEYvPTnRdRqfuE/PSEYvo4WzZzF2nD4OjJLa+FqbarXhruxn09n4UYxf0JuuJs1+nnYoLhahm81WZHsslqkNzquSqbkvr5vuB+WN6o5ObdyPIRCAX75T3+JZnYc9Zfoq1ZO4y9tMgyDjcfYwtV7h/p22zwnQvoCCkb6sNzyOjz+01mo1Axmx3rgnqG+3X1L2Ho+l1sCifa0afFU05slNdw8mZenhTc5PK+wqh4v/nlR7/mXNIWHnx++jjoFGwypGePv+diYAGy/kIeLOdqlmLfnRMLWXIJvNb+EGnt3t7ZZmqkJ/fXqSxYO5m/ZPXy1CGmF1bCUijFvgFc33RUhfUOb/rVct24dfH19YWpqikGDBuH06dNGj/3yyy8xYsQI2NnZwc7ODgkJCU0eTzpGvUKFJT8koqRGjgh3a7w5u2U7VTpTaY0cr/7DLrOYiAR4Z240xC1otsYwDF7ZehlypRrDAx0xJdJ4OpxhGAx8Y7/e84HOlhgS4IDCyvoWTdk1EQkwPdpdL6iZN8CbvZ9/kvXOmduo90S9Qt3s+5DeYUyIEyRi/s9qw3beO/p7NbmjixDSvFYHI7/++iuWL1+OVatWISkpCdHR0Zg4cSIKCwsNHn/o0CHMnz8fBw8exIkTJ+Dl5YUJEyYgJyen3TdPDGMYBiv/voQL2RWwMzfBhoXxen0RusPr25JRWiMHADw6OhAhrsZrPnTtTS7AwdQimIgEeHVmRJNB1XtG2rgvHx8MgUCA9YeuQ6ZsPki4a6A3nvj5LO+59DenAAB2Xso3eM5unecpY9+3vD03ivf4akEVjl4rhlDAzqEhhLRPq4ORtWvX4sEHH8TixYsRHh6ODRs2wNzcHBs3bjR4/I8//ohHH30UMTExCA0NxVdffQW1Wo39+/U/vZKO8dPpTPx2JhtCAfDJ/Dh42Zt39y3hUGohtpxlA9AQFys8NiawRefVyVVcNuXBEf4IcLI0euzNkhpuArEuL3szTIxwRV5FHb49nsE9H+hsCUsDyz0ioQCuNma8pmWb7h8IoVAAlZrBo42m/gKAq7Upr9akqeUf0vs4W/GLvjdqsiITwl17xN8vQnq7VgUjcrkciYmJSEhI0F5AKERCQgJOnDjRomvU1tZCoVDA3t54IaVMJkNlZSXvD2mZxJtlXJv05yaFYniQYzffEVAjU3KD5YQC4J25UXopb2PWH0pDTnkdPGzNsHSs8QCGYRiMeveQwdceGRUIkVCAT3V2xDhZSRHmZo1qnQCiQUKYM97elcI9tjIVY0QQ23dk63nDGb38yvqWfDukF/rt4SG8xyXVMi6wvn8EbeclpCO0KhgpLi6GSqWCi4sL73kXFxfk5xtOXTf2/PPPw93dnRfQNLZmzRrY2Nhwf7y8qDisJQqr6vHoj4lQqBhMiXTFwyP9u/uWAADv77mKnPI6AMADI/xb3BjqRnENPj/Mdkh9eVp4k8PH7vzipMHnHS2lmB3ngazSWvx4KpN7/rmJIdh5Mc/gObsvF/AeJ708HgAgV6rxzO8XDJ1C+rDGO9B+PJUJuVKNKE8bvcm9hJC26dJy/7feegu//PIL/vzzT5iaGu91sWLFClRUVHB/srL0t1ASPrlSjcd+TEJBpQxBzpZ4Z250txesAsDZzDJ8c5xNafs6mGNZQnCLzmuoe5Gr1BgV7ISJES5Gj91/pYDXZVX3275vuC9MTUS8YGX1zAjsvlwApc5aip254QLELxbFcxONf/kvEypaf7mlPDsxhPdYplRxBdD3D/frEX/HCOkLWhWMODo6QiQSoaCA/8mxoKAArq5NN/x577338NZbb2HPnj2Iiopq8lipVApra2veH9K0N7Yn47+MMlhJxfh8UbzBWoiuJleq8cLmi9xE3rfmRMFM0rJC2l2X8nH0WjEkIiFenWG8aLWkWob7vzvDPR4W6MC9n6VUjAWDfHAsrZjLzPg7WcDP0RL7rmh/hkcEOaKqXn+5xtbchGtkVStX4iNqZnbLeahRdvGf83korpbBxVqKKZFu3XRXhPQ9rQpGJBIJ4uPjecWnDcWoQ4YMMXreO++8g9WrV2PXrl3o379/2++WGLQ5MRvfaT6tfXhnDPybKPLsShsOX0dqQRUAYMEgbwz2d2jRebVyJV7bxhatLhnlb7QpmkrNIP71fdzjx8YE4FhaCfd4wSBvSMVCLPhK24n1n6XDsXqbdluut7053G3MeFmSBideGMd9/c2xDJRodgKRvsVYs7I4b1suKwaw2bqG7bx3D/HlvUYIaZ9W/21avnw5vvzyS3z33Xe4cuUKHnnkEdTU1GDx4sUAgLvvvhsrVqzgjn/77bfx8ssvY+PGjfD19UV+fj7y8/NRXU3j1TvCpZwKrhfGk+OCMC7M+HJGV0orrOIKRt1sTPHC5NAWn/vx/jTkVdTD084Mjzax6+bNHdp27COCHHH0mnbirkQkxH3D/XjLMxsWxuGvczlcgASwtShbz+sPtXvv9mgui1NeK8eGw/q7dEjfYGzpbcOieN7jE+kluJJXCVMTIRYM6t6J14T0Na3O5c+bNw9FRUVYuXIl8vPzERMTg127dnFFrZmZmRAKtTHOZ599Brlcjrlz5/Kus2rV/9u787ioyjUO4L8ZBoZ9k032TUFUQME9TdzLXMo9F1JbNM2Me9X0Zpotlt00M1O7lW1umaktapopmrsiKioiILIouwwwwKzn/nGGwxwGhFHgDPp8P58+H+dwzsw7J3Seed/nfZ5lWL58+cON/jFXLFfilR8uQKHWYmCoG15voER6S9Fq2cZ8Sg1bz+ODZzs3uihUan4ZvjrOJq0uH9Gx3voox28WcN9SAWBEhCcW/lyTXPpsFy8cSMpFYlYJAHbJpnewC8KXH+TOmRMThCs5Mq4aqz79AmYb4tPqXMYhj7b6tvOO6eoNR2sLIYZEyCPrgRIL5s6di7lz59b5s6NHj/IeZ2RkPMhLkAaoNVrM23YROSWV8G9jjdUTIhvVbK4lbDlzG+dv3wPABgUxoW6Nuo5hGCz79SrUWgYDQ90wKKzuWZ67skpM/bqmiu+PM3vwKqWKREAXX0e8+UvNsR2v9ORt7Q31sMNLfQMRueKQwfNf1O2eAYBcWRXXx4Y8Pra82IP3+FahHIeT2cKOM6g7LyFNjhY9W6mPD97AP6mFsLYww6ap0XCwMo1y1HdKKvHRAbYKqouthUFzsfv5/fJdnEgtglQixvKRHes8R6XRYvrmc9zjCdE+uJlfhsziCu5YuLcjrxLrU508YGMhwZfH0rlj6yZ1wbpanXgB4D9Pd4CTTc233s/+vtmoiq3k0dInmF+fZ/OJW2AYtiz8/QrvEUIeDAUjrdAfl+9y9TdWjQ1vdFn15sYwDJbuSeIKib0zshPvg/1+yhVqvPcHm1j6av/geqtafrQ/Gcm5NTkfbwxubxBUXM4uQWG5knfOS9/X7LhZNiIMHg6WvGWeai/qFbG6VSjHjjo685JHg3M9v5uvPMnfQSOrUGHn+WwAwMwnTKN2DyGPGuH3fxKj3Mgtw4Kf2Zb2r/QLxDPhngKPqMbvl+9yU9lDwtzv29CutrV/pSCvVAG/NtYGHwbVDiTdxVd6AcSPM3vgh9MZXL+baoxePuLICE/kyqpwM59NmPawt0RsL38E/2efwfP/syiGt4X4k4M3qK7II6z27021BUP4tUW2nctEpUqDUA879Alu3I4wQohxaGakFZFVqvDKD+dRodSgT3Abg4JMQronV3Jl6O0tJXhvdKdGF4S6kVuGb3R5GctH1p20mlEox9ytNY3rJnX3QbCbbZ2zG9XEIuC1AcGY9k1NfsnuOb2x7VymQe+Y2f2D4O1UMxuTlCPD75frrtBKWj87y7q/hwW52vA6Sas0Wnyn62c0ow8VOSOkuVAw0kpotQzidiQio6gCXo5WWDepK+8fTaG9v+86V4fjrWfC4GZff4VdfdWVVjVaBkPC3BETYpjsWqXSYPaWBK4WiIutFIuf7oA1h1JQpao/n2N0Fy98dbwmWFkxqiPyShVcnxx9/671bfjjP9mcE4mJJAWTplXf7qgtL/bkPd6flIu7siq42FpgZKTpzEIS8qgxnU8zcl+f/X0Th5PzIZWIsWlqVL3r3UI4frMAP19g19T7tnPBOL1tsQ3Zm3gHZ24Vw9JcjLdH1J3sumzvVVy/W9Ms8eNx4ciVVWHnBcN8Dlc7KQC2kNWk7r7Ycb7mnKc7t8WsHy4YXHNgfl9e4avT6UWITymARCyCt5NVo98Laf08HGqCaP0iZ5N7+NW7zZwQ8vAoGGkFDl/Pw6e6UuTvP9sZnbwcBB5RjQqlmttWa21hhg+e7dzoqezSKhXe1xUue21AO94ySbWd57N4AcWYrt6ICXHDR/uTDZZa/NtYw9ORDR7GdvXGuI01naTPLBmIOVsSDLrrToj2QahHTbsBhmGwStex98n2rritt0uHPNq+rFXkLCHzHi5llcDCTIwpPf0EGhUhjwcKRkzcrUI55u9IBABM6+XHK8ZlClYfTEFWMdv3ZeHQkHp3wdRlzaEUFJQpEOhiw9vFUi05txRL99YsqbjaSbH0mQ44nV7EJcrqe7lfEC5llcDcTAR7q5qcgBl9AvDlsXReM71q74zibyE+fD0fCZklsDQXw9PRipcM+7Dqa8ZHTEN1H6Jq1bMioyI9uRk3QkjzoGDEhMkVarz8/XmUVakR7eeEt4Y3vmZHS7iUVYJvTrD/YEf7OWFaL/9GX3vtTimXGPjOqI6QSvhT4GVVKsz+MYGXE/L+6E5wsDLHSr0y8NXWTozEnsQcAMDgMHf8Ty9XJMLHoc5E1x0v9+RNvWu0DJcrEtvbH0dTDAOeh3GvQtWkz0eazqTu/PLuWcUVOJCUCwCYWUegTAhpWhSMmCiGYbDg50u4mV8ONzspvpjSFRYS0/nfpdJosWjXZWgZwEIixodjwhtdAVarZZNWtQwwvHNb9G3nyvs5w7Dl5G8VyrljIyI8MaSjB/64cheXsmUGz+liK8XZW8WwMBNj35Vc7viqMeFYtOuywfkxIa7oUatx315d3xp7Swm6+DhyMz5NoV9714ZPIoJZUWuG7LuTGdAybBdo/WU8QkjzMJ1PN8Kz6Vg69l3JhbmZCBumRBn0yRDal8fSueJjrw9sh2C3xlel/OViDs7fvgdrCzO89UwHg59/dzIDf1yp2VbbxsYC74zsCKVay81c6Dv/1iB8oqu4KjGrCYiCXG3w+ZHUOnfcfDqxC++xUq3F6kMpAIBZ/YO4b8VN5VhKQZM+H2k6LrZSXgfecoWaK3Y3k0q/E9IiKBgxQcdvFnBJlMtGdESUn5PAI+JLKyjH2sNsQm1HT3u83K/xVSlllSpumWXewHZo68DfrZKQeY9Laq32zqiOcLaxwNYzt3G7iJ9Q+lwXL1zJkSEhswQAUKGsaXpnK5Ugs7jCIFdj45SuBuXzt53NRPa9SrjaSTGmqzf2JBp28n1Qc2KCmuy5SNPbNbsX7/HO81koU6gR6GqD/u0b11eJEPJwKBgxMVnFFZi37SK0DDA+2tvkWpVrtQwW/3IFSrUWZmIRVo0N532rbMgnB2+gSK5EsJstZvThf+u8J1di7pYEqDQ1WaPDOnpgeOe2KKtS4bM6esm8Mbg91uhmNPRJJWJcypZBKhEb5GoM69SW91iuUHMl5ecNbIdD1/Ia/X4aYiER47uTt5vs+UjT82tjw/1Zo2WwWVeAb3qfAJNpPknIo46CERNSpdJg1o8XcK9ChXBvB6wY1fgqpi1l27lMnNXtSpn1ZCA6ejZ+m3FSjgw/nmY/mFeM6sjLgdFqGczfkYg7spqtt47W5lgxuiNEIhE2xacblO8eHemJ5NwyXK4jh6S6uV33AGfe8dOLBxqcu/nELRSWs6XoJ3bzwYajaY1+Tw1ZOyGS69VDTM/q8RG8x39dz0NmcQUcrMwxpquXQKMi5PFDwYiJYBgGS3ZfwdU7pXC2scCGKVEmV2QpV1aFD/exy0dBrjZ4bUC7Rl+r1TJ4aw+btDoywhO9g/hdUdcfSUV8rbyKZSPC4GZniVxZFT4/Yjgr8nK/IC7Poy6Tuvvg+M1C7vHw8La8olYAOxtT3XQwbnB7pOaXI6ekaRJXRSJg/VHDcRPT8VxX/lb56l1Xz/fwhbUFte4ipKVQMGIivj91G78k5MBMLMLnz3eBl6NpVf5kGAZL9yahTKGGSASsGhthVLC080IWErNKYCuV4D/D+UmrJ1ILseYvflAxMNQNoyPZb6Yrfr9q8Hz9Q1xxu0jOq8yqr7u/M36/xO8ts65W0ioAbIxPQ5lCjVAPO4wI98T3pzIa/Z4acuiNfkjKqXt8RHjDatUVScqR4eytYkjEIsQasU2dEPLwKBgxAWdvFePd368BABY/FWowa2AK9iflcrkUL/T2Nyqp9p5ciQ/3szMq8we1g7te35pcWRVe336RV03VzlKC93WVXG/klvG26lZ7uV+gQQBTzd1eitFdvFCmtzyycFiIwfp/rqwK3+pqnSwcFgKVVottZw1LzD+o6qq5xDStmRDJe1w9K1LXDBohpHlRMCKwXFkVXtU1gRsR4WmSWwllFSq8vZednfB2sjJoKteQjw/ewL0KFULc7RDb2587rtJo8dq2BBSWK2FpXvOruHR4GPdhMPTTY9zx6lodkT6OKChTICWv3OC1zM1E+HRCF65EfbVZ/Qx3tKw9fBMKtRbd/J0QE+LWpNt5E5YOpq6/Js7KomZmL6+0Cr9dYndQmeLfQUIedRSMCEih1mD2lgsoLFcg1MMOH41pfF+XlvT+vmsoLFcAAD58Lhw20savpV/KKsG2s5kA2KRV/Z03//3zBs5l3IONhRlspexW277tXDAuml3Hf/+Pa9y5L/T2x8XMewDYWZF3fzeswgqwW6GX/8pf1vnwuc4GsyLpBeX4SdfzZuGwUIhEIry+PbHR76sh39RR8ZWYjn3z+vIef38qA2otg27+Tgj3dhRmUIQ8xigYEdCK367hYmYJ7C0l2DQ1yiQT5k6kFuKn82xH3gnRPniiXeOXkDRaNs+EYdh6IPoVTw9ezcWmY2ziaCcvBxSWK2BjYYaVz7EBWWp+Oa+ku6ejJcqq2NoPFUoNFxzpGx/tjQAXG9zIK+MdH1NHP5/Vh1Kg0TIYEOqGbv7OyCxquoZ4Z/8zsM6EW2I6wjxrqqpWKjXYcoYNmGlWhBBhUDAikJ/OZWHLmUyIRMDaSV14tQ5MRaVSwy13uNlJsWS4YbXU+9l+LhOXs2Wwk0rw5tOh3PHMogr8a+clAGwfmeqtuW8+3QHeTtYoV6gxaHU8d378gv7cev7MJwLwb921+kI97PCf4WGY/NUZ3vHlI8IM6qAk5cjw++W7EImABUPZJad+Hx8x6r3dz9/Xm7anDWlar9Qq0vfLxWyUVKjg42yFwWEe9VxFCGlOpvdV/DFwKasEb+1hu9HGDWqPmBDTrPL46V8pXMXT93RN6hqrqFyBVQfYEu3/GtKeK2dfpWKXpsqq1Ojq64iSCiUqVRr0DHTG5O6+YBgG87df5J7n+R6+OJNejLxSBdztpbhbUlXn6339QjfM/vEC75hUIsaEboZF46pLyo+M8ESHtvaQVTZdA7u/4p7kBVLE9CwaVhMYa7UMt6T2Qu8AmFGRM0IEQTMjLaywXIFZP16AUqPF4DB3zIkJFnpIdUrKkeF/x9lllGfC2xq0V2/IqgM3IKtUoUNbe0zp6ccdf+e3a1wtld5BLjiXcQ9W5mb4SNdo74ujafhLb2Zh8VOh2HiMLUI2pYdfncsfW1/sgZx7lTiZVsQ7/tqAYF6SIgCcSitCfEoBJGIR4ga3BwBErjho1Hu7nxu5ZQ2fRASlnz8Uf7MAaQVy2EolGB9tuJxHCGkZFIy0ILVGi7lbE3BXVoVAVxusHh9hkuWmVRotFv7MduR1sjbH8pEdG75IT0LmPezQJYe+N7ojJLplkl8SsrHtLLs0tXBoCDafYL+RLhgaAr82NohPKeA1wnt3dCecSitCeoEcdpYSbl1f37NdvNDF1wnjN53iHbexMMPUnv68YwzDYNWf7Bbjid194NfGBjkllWAYNImtL/bAnK0JTfNkpFkcXxjDe1w9KzI+2gd2lo2f+SOENC0KRlrQyv3JOJ1eDBsLM3w5Ncpk//H76vgtXNMVE1s2oiNcbKWNvlajZbBUtwQ1LsobUX5sOfaUvDL8Zzd7fN6Advjjyl3IlRpE+Tkhtrc/MovYnjzVAl1sMLGbDzbGs7MiXXydkFtquESzenwE4n5KNDg+pacfHGo1yPvrej4uZpbA0lyMebrqsVNr5Zg8jMJa5eqJ6fFxtub+fCO3DMdvFkIsAqb38RduUIQQCkZayt7EHC4J85PxkQh2sxN4RHW7VSjHp7piYgNC3TAq0tOo67ecuY2rd0phbynBoqfYtflyhRqzfryASpUGfdu5oK2DJY7fLIRUIsaqseFQqDV4+YfzvNyNhcNCcDGzBAmZJRCJgGO1SsUDwLEFMTh/+x7216oPYiERG+yK0GgZfKybFZneJwBu9pZIypEhvVBe5/twsZXC0brxweKHz3XmBVPE9LxY63eielZkSJgHL0ghhLQ8CkZawPW7pVi06zIAtp38sE6mmbHPMAwW/3IZCrUWdlIJ3n/WuEZ9BWUKbpllwbBQuNhKdc95BekFcnjYW+LNp0Lx/j62Rkjc4PYIdLHBm7uuIFkv16KrryOGdvTgZkXqWkaZ2M0HrnZSjNt4yuBnY6O84WbPr6C5NzEHKXnlsLeUYFa/IDAMg7n3WVKZ2tMPJRWNT2zVNNVaD2k2C/USVwvLFdidmAMAmNmXtvMSIjQKRppZSYUSr/xwAVUqLfq1d0XcYOOql7akHeeycDqd7ci7+OkOaOtgXH+cD/cno6xKjc5eDni+O7uL5YfTt/HbpTuQiEVYP7kLVh9MQVmVGhHeDpj5RAC+/ucWftVVvqy25OkOSMkrx9/J9W+RXT6yI5buTTI4LhYZbt1UqrVcQ73Z/YPhYG2Ov5PzkVFPbZEXevujSG5Yx6Q+c2KCuHL3xHTpd4necjoTSrUW4d4OiDaitQEhpHlQMNKMNFoGr29PRGZxBXycrfDZxEiT3TqYX1rFzVj0DHTGxG4+Rl1/LqMYuxKyIRKxiadmYhESs0q4njtvPhWKrOJKHE7Oh7mZCB+Pi8DZjGKsrPUhPiTMHdH+ztikmxWpy4bJXXEpqwQ/X8g2+NnwcE+Dmi3bzmYi+14l3OykeKG3P9QaLWZ+d77O527vbou4Ie0NAqT7kUrMUFalbvjEh/T2M2HN/hqPqi0v9uD+rFBr8MPp2wDYujWmWPWYkMcNBSPNaM2hFMSnFMDSXIxNU6LhaG0h9JDq9fbeqyirUsPSXMxts20stUbLJa1O7OaDSB+2fsicLQlQaRgM6+iBkZGeWP4bW6Z93oB2sJFK8NrWi9BoGXg7sTMwZmIRFg4LRU5JZb3BQDd/J/Rr74oJX56u8+ezn+T3oJEr1Fj3N9uwbt7AdrCyMONVdq1t7cQuOJVW1OglmuHhbZu00+/9fE0l5h9Y76Ca6r+/Jt5BYbkCHvaWeLpzWwFHRQipRsFIM/nzai5XE+OjMeG88tOm5kDSXRy4yiaB/ntIiNHVYL8/dRvJuWVwtDbHgqGh0GoZxP10CTkllfBvY41V48KxbO9VlFSoENbWHtOfCMDsHy+gSK5EWFt72Op63Uzo5oNgN1t8dTwdam3dORjLRnTEe3/w+9J09nIAAMSEuBrc52/+uYXCciX82lhjQjcflFWp8NGBupdUXu0fhA5t7fFLguGMS32szc1QWN78u2hWjOqInJLKZn+dR9HoSE9u9oNhGC6om9bbz6A6LyFEGPQ3sRmk5pfjXz+xJctn9AnAqEgvgUdUP1llTUfeCB9HTO9jXDJffmkVl4+xaFgonG0ssCE+DX8n50MqEWP95K44nlKI/Um5kIhF+HhcON759SouZ8vgZG2O0V08kZxbBitzM8wf2A735EpsPpFR52uNj/ZGaZWKa7wHsJ18qwuNze7PLyB3T67El7r+N3GD28PcTIzBq4+hPv8eEoJ7ciUON7Kce0dPe/x5tek6/d6PjxPt9nhQcwfU/F6cSivift+q85oIIcKjYKSJlVWp8PIP51GuUKNHgDMW6/VkMUUf7r+O/DIFm8cxNtzonJYP9l1HuUKNCB9HTIj2wcm0QnxykN1Rs2JUR7R1sMLbukTTV/sHISGzBDsvZEMsAlZPiMRWXSGzl/oFws3eEt+ful3n69hYmGF2/2A8/z9+XRA/Z2soNVpE+zmhe4Az72cb4tNQplCjQ1t7jAj3xMnUwjprlQDAR2PYzr6/X75T76xMbeZmYpS2QK4IgBYLeh5F+tvoq2dFxkR5mfSyKSGPGwpGmpBWy+BfP13itrGun9zVpKeBT6UVYdtZtlLq3Jh2aO9uXO2TU2lF2JN4ByIR8N6oTigsV2DetkRoGXZ77fhoHyz/9SqK5Eq0d7dFryAXrNDljSwaFoqs4gpkFFXAxdYCL/cLRKVSgzW6Gie1vRoTjK905emrrZvUhVtSeTWGnytyV1aJ705mAGCrvaq1DJ6/T4GzsVFswu7G+PR6z9FnJ5W0WOn31we2w/ZzWS3yWo+at/SaO6YXlOOwboeWsTOAhJDmZbqflK3Qhvg0HLyWBwszMTZOjTKqcmlLq1LVdOQN9bDD7P5BDVzBp9JouRmPyT180aGtHeZuu4jCcgVCPezw7qhOOHQtD79eugOxCFgwNBTztl+ESsNgeHhbPN/DF2v/YhNLXx/YDrZSCa8UvD4vRyt0aGvHKwcf7eeEjEI55EoNQj3sDJoNfnb4JhRqLbr7O6N/iCtmfHuu3vcS28sPZmIR0grKG52XwQCoVGkade7DCnAxvY7OrcXIiJqifdXLfwNC3RDkaivQiAghdaFgpIkcvZGP/+otT0T6OAo7oAasPXwTtwrlEIuAVWPDeTUYGuPbExm4mV8OZxsL/HtICD45lIKzt4phK5Xgi8ldoVRr8R/dDpvpfQKwMT4NBWUKhLjbYdWYcPzvWDqK5EoEuNhgYndfVKk0+OZE3btF5g0Mxtyt/Oqmayd1wWbdzMfs/kG87ZnpBeX46Tw7Y7JwWAj+SS3EP6mF9b6XGbrKnHO2NL6vTLmiZZZnANy33gqpX4S3A1f8rqRCyW0Fr12dlxAiPApGmkBmUQVe354IhgEmdffFRBNPjLt6R8Yldr7UNxDh3o5GXZ8rq+JKxr/5VCjOZ9zDhqNsXZCPxoQj0NUWK36/hoIyBQJdbVBaqcKF2/dgZynBpqlRkCvU3PbahUNDYG4mxoh1/9T5WtF+TkjMkqFCWTML8fHYcBy8motiuRK+ztYYXmt75ieHUqDRMhgY6gZ/FxtM/frsfd+PXxsblFapeFVgTcXQju5G1TwhNab18uf+vP1cFipV7Cya/jZfQohpoGDkIVUo1VxflS6+jlg+0rQLU6k1WizadRkaLYMAFxu8Mbi90c/x3h/XIFdq0NXXET0D2nCN6l7o7Y/h4W1x5EY+VwCtR4Azdl5g/7x2YiT8XWyw5q+bqFRp0MXXEcM6eeBydglu5pfX+VoxoW683TP2lhKMivTC/3TB1Mv9ArmuwACQlCPDH5fvQiQC/jUkBG/sSLzve/l4bDgAYHwdZeVNgY1u2zMx3lBd2wWVRsvlD82gImeEmCQKRh4CwzBcXxUXWyk2TI6CVGIm9LDu65sTt5CUw3bk/fC5zrA0N268J1IL8fvluxCLgKXPhGHO1gSUVqkR6eOIJU93QGmVCkt+YXNRov2csCuB7f/xxqD2GBDqjtT8Muw4xwYXS57uAIVai5Gfn6jztYZ2dOeamVX7Y15f/HrpDu7IquBqJ8XYKG/ez1fp8k5GRXjidHoRjt+sf3kGAJ4J98SF2/dMclYEAH7R3T9inJERnlz9mv1Jubgrq4KLrQUvh4QQYjooGHkI35zIwK+6vitfTO4KDwfLhi8S0O0iOVcTZGpPP/QING66WqnWcv1gpvXyx66EbFzJYeuFrJ/cFRYSMVbuS8ZdWRVspRKk5pdDqdZiUAd3zI1haz18uP8GtAwwOMwd3fyduSTY2qzMzaBUa1Ekryko9sag9vBytOIa6M18IoAXTJ1KK8KxlAJIxCIM6+SBFbpS9PXp5u8EM7EI83dQt91HzegubNChX+RsSk8/o4NvQkjLoGDkAZ1KK8IHul4ubw3vYFDjwtRUd8+tUmnh6WCJhcOMb9j31T/pSC+Qw8VWiiA3W/x4OhMiEbBmQiS8HK1wIrWQW1KRK9W4V6FCoIsNVk+IgFgswtlbxfjreh7EImDRsBAcSyngEk1r6+RljyM3CnjH5g4IxsFreUjNL4edpQSTe9Tk5jAMg1V/spVVR0V61bszR9/SZ8KwMT4NWcVU2fRRYieVoG87VwBAQuY9XMoqgYVEjCk9/QQeGSGkPhSMPIA7JZWYuzUBGi2DZ7t4Iba3v9BDatDOC9k4mVYEAPjguc6wszQ36vqckkqsO8yWtx8X7Y2VukDstZhg9A9xg1yhxqJdl7nzGYYtVPbltCjYW5qDYRis3M9eM6GbL1xspZj2Td2JpXaWEqTk8XNI9s3rC7EI2HCUHcO0Xn6893DoWh4uZpbAytwMskol0grkDb4nawsJPv871Yi7wHYFtragb9em7LmuXlx9n+pZkdGRnia91Z6Qxx0FI0aqUml4fVU+eLazySfE5ZdV4X1dP5fnunqhf62aHI3x3u/XUKnSoJOXPQ5ezUWFUoM+wW3w+iA2AXbVgWRk3+PPMHwyPoKrfnkgKZcLFt4Y1A6DVsfX+1pqDQNZZU2juue6eCHM0x6n0opwKVsGqUTMK1ql0TLctmoPB0v81Yhy7nNjgrHklytQarSNvwkA2rvb8Xb2ENMzqgvbfiGruAIHktjKtTNoOy8hJo2CESMwDINle6/iUrYMjtbm2DQ1Clat4FvyO79eg6xSBRdbCywdbvxun/iUAuxPyoWZWAS1hkFagRzu9lKsndgFZrrll+9qlXGfExOEYZ3YLbcqjZZLLH2pbwB+Tsi+b3O52sXEPniuMwDgC9324YndfHjfcvdczOFmUm4VNjwjAgBWFmY4m1HcqHOrmZuJ4GxDJcRNXRddjZ/vTmZAywBPBLsg1MN0G1USQigYMcrWs5nYcT4LYhFbitzH2fSblx28mos/rtwFAKwY1QlORn6YKtQaLNMlmVqYiZGcWwYzsQifP98VLrZSVCo1WPjzJd41/dq7Im5wTU7K9rOZuFUoRxsbCwzp6IFVBxrO56i25cUesDQ3w+XsEvyTWggzsQgv9g3kja++EvL3s1EX2Bjj6c5tuaUuYppm9GG37pYr1NihK6FPRc4IMX0UjDTShdv3sPxXtq/KgqGhXIKcKSutUnG7X4Z19MDTtYqDNcaX8enIKKoAUDNjsWhYCLr5swm7nxy8wf0cAHydrfHZxEiu4V65Qo1PdWXfXxsQjGfqKW5Wl3BvB/QJdgEAfHGEDR5GRXjygsBtZzINlocaYm4mQpmRFVSlEjHaOlgZdQ1peVN6sknNP53LQplCjUBXGzzZ3vT/rhLyuKNgpBHyy6rw6pYLUGkYPN3ZA7OeDGz4IhPw0f5k5JUqYG8pwYrRHY2+Pqu4Ap8f4Sd4Dglzx0u6mYmEzHv4Wq+Eu6W5GBunRPG6oX6pV/a9unx7Y/0wowcAIDW/HH9eY9f+Z+n10JEr1FhnZAIqAKg0jevKq29aLz9uSzExXYGuttBoGWw+yf5ezugTALGRnagJIS2PgpEGqDRazN1yEXmlCrRzs8WqsREmn7AKAGdvFXON5ZY+EwY3O+NroLzz2zUo1DUJnr7O1vh4HPv+q1QaLNh5CYze5/pHY8IR5lmzNp9fWsVVSvV1tsZtvRmUhvx3XAQcrNndMpvi08DoapPodxb+5p9bvDokzcVWKkGkj1Ozvw5pGoeu5SGruBIOVuYY09W74QsIIYKjYKQB7/9xHWczimEnZfuq2LaC8txVKg3e1G2z7dfe1aBKaWMcvp6Hv67ncY8tJGJ8MbkrHKzYAOGzwzd522dffCIAoyK9eM9RXfbd3V6K+JSamiENbbG0kIgxpiv7XHdKKrH7IluFVL+z8D25kuuvU/2czRUjznwiAIt/udzwiURQ1c0eq6v2Pt/Dt1UkmBNCKBi5r18SsvGtbmlh9YRIBLaStuOf/52K9EI5bCzM8MGznYyeyalSabD8t6u8Y++M7IhOXg4AgCvZMm5nCwD0CmyDN58K5Z2fml+Gn86zCYR5pQru+CtPBqKwXIH7iV/Qnxvz/46nQ61l0DPQGV19a2YnNsSncXkfZmIROnnZ82ZpmoqDlTlGRHiitKrluvSSBzMkzB1XsmU4m1EMiViEWL1GeYQQ00bBSD2ScmRYrOuxMm9gOwwOcxd4RI1z/W4pl9uw6KlQeDsZv+Nnw1F+VdLnunhhYjcfAGxJ+H/tTOR+5ulgic+f78JrVgcAHx24AY2WHx0sGBqCg1fzcD/zBrbjEkWL5UpsP8sGNK/2D+bOuSur5M2KTO3ph6O1qrU2lVf7B+Hpz443y3OTpuXlaIWv/2F/L4aHtzX59gyEkBoUjNShWK7EKz9cgEKtxYBQN8wf2E7oITWKRsvgzV2XodYy6ObvhCk9jC9/fbtIjg16iZrt3W3xnt7syvojqbzqqBunRqFNrWWXcxnFOHSNH3Q4Wpsj0MWmwTog+vf625MZXKG1vu1cuOP6pd77BLdpdG0RY9lZSjCskweUauMKoxFhqLUMfr/MbmOn7byEtC4UjNSi1mgxb9tF5JRUwr+NNdZMiGw12fibT9zCpWwZLCRifDgm3OhxMwyD5b9e5T58bSzM8MXkKFhbsHky1++WYu3hm9z5q8aGI9zb0eA5qnv26Du+MKbB3SgH3+jHjblcoebavs9+MpgLhtIKynmdbF/qG8jLR2lKC4aG4MmPjzbLc5Omt+/KXS4Qr/17SQgxbRSM1PLfgyn4J7UQVuZm2DQ1mkvYNHVZxRX45CBb/OuNQe0R9AD5LYeu5fGa060cE45gN/Z5VBotxm88xf1sSk9fjI/2MXiOP6+yZd/1bX+5J67kyHApW1bvaz8T3pa3U2bbmUzIKtlGe8M6eXDHR+rVKfk6NhovbD7X+DdoBHMzEaQS+uvRmtyVVQGgWRFCWiP611bPvit3uW/vH48LR4iHXQNXmAaGYbBk9xVuSeOlvsb/Y1yp1OCd365xj2N7+WFkhCf3eM2hFC5h1K+NNd5+xrBuiUqjxcr9ybxjk7r7omdgG2yMTzc4X98n4yO4PyvUGnylW/t/5clAroDakeR8yHV9YXoGOiO9Ec3wHtS8Ae2waNeVZnt+0jx8nK0wOMyj4RMJISaFghGdlLwy/HsnW9b85X6BeCbcs4ErTMcvCTk4frMQErEIq8ZEGCSTNsb6I6nIKWGTViO8HbBkeAfuZyl5ZbzdMztf6cVto9S3/VwWr5aISMTuwrl6R4Zj91lK2fpiD0glNVswdyfkIK9UAQ97S4zWNT3TahlM/7ZmFmTjlCi8X8dyEAAueHkYp9Kp7Htr9ELvgCb5/08IaVkPFIysX78e/v7+sLS0RI8ePXD2bN2t4Kvt3LkToaGhsLS0ROfOnbFv374HGmxzkVWq8MoPF7hOtAuHhjR8kYkoLFfg3T/YGY3Z/YN4RccaK72gnNud4mBljvWTu3LBgUbLYMiaY9y5u2b3gpu94S6FcoUaS/ck8Y4deL0fLCRibLrPrEh7d1v0Dq5JTtVoGWzSjeXFvgHcOF78/jx3ztex0ej70RHucYSuMVr189XexWOsXoFtqAdNKySViDE+moqcEdIaGR2M7NixA3FxcVi2bBkSEhIQERGBoUOHIj+/7rbtJ0+exKRJkzBz5kxcvHgRo0ePxujRo5GUlFTn+S1Nq2UQtyMRtwrl8HK0wrpJXR9oZkEo7/x2DSUVKgS72WLugOCGL6iFYRgs+/UqlBo2aXXNhAjedmD92Yi5McGI8nOu83kW7eIXBXtreAeEeNghq7gCv1++U+/r75rdm/d4f9Jd3CqUw9HaHJO6s31GLmeX4O9k9vdLIhZBpWG4JSMPe0tcyirhrm+KHJ+LWfce+jlIy5vS0w92lq0jx4sQwmf0p+7q1avx0ksvYfr06QgLC8PGjRthbW2Nb775ps7z165di2HDhmHBggXo0KED3n33XXTt2hWff/75Qw++KXz2900cTs6HhYTtq9KaWsQfvp6H3y7dgUjElmLXX+porANJuTh+sxAAMCcmCANCa+qpHL9ZwFte+deQ9nU+R3pBOf7QbakEgO7+zpjRh81b+d/xdNQ3UfHx2HDehwfDMNigWw6K7eUPG6kEcoUaIz8/wZ3zx7y+mPXjBe6xr17TvGm9/HAu4+EDiSoVbeVtjV7o7S/0EAghD0jEMI2vW6lUKmFtbY2ff/4Zo0eP5o7HxsaipKQEe/fuNbjG19cXcXFxmD9/Pnds2bJl2LNnDy5dumRwPgAoFAooFDVVOktLS+Hj4wOZTAZ7e+OXIepzJDmf++Yf4m6H3sFtmuy5m0tCZglvJoAQwsr4cLjQQyCE1FJaWgoHB4cGP7+NarRSWFgIjUYDd3d+NVJ3d3ckJyfXeU1ubm6d5+fm5tb7OitXrsQ777xjzNAeyPZzmdyfb+SV4UZeWbO/JiGk6fm1Mb7SMCHEdJhk17fFixcjLi6Oe1w9M9LUFgwNQYi7HTTN0dSkmVy7U8qrBULI487GwgxbX+op9DAIIQ/BqGDExcUFZmZmyMvjl/rOy8uDh0fde/s9PDyMOh8ApFIppNL7d3ZtCsFudogb0np2zhBCCCGPIqMSWC0sLBAVFYXDhw9zx7RaLQ4fPoxevXrVeU2vXr145wPAoUOH6j2fEEIIIY8Xo5dp4uLiEBsbi+joaHTv3h2ffvop5HI5pk+fDgCYNm0avLy8sHLlSgDA66+/jieffBKffPIJhg8fju3bt+P8+fP48ssvm/adEEIIIaRVMjoYmTBhAgoKCvD2228jNzcXkZGROHDgAJekmpmZCbG4ZsKld+/e2Lp1K9566y0sWbIE7dq1w549e9CpU6emexeEEEIIabWM2torlMZuDSKEEEKI6Wjs53frKTVKCCGEkEcSBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRlNHl4IVQXSS2tLRU4JEQQgghpLGqP7cbKvbeKoKRsrIyAICPj4/AIyGEEEKIscrKyuDg4FDvz1tFbxqtVos7d+7Azs4OIpFI6OEIorS0FD4+PsjKynqs+/PQfWDRfWDRfWDRfWDRfWCZ0n1gGAZlZWXw9PTkNdGtrVXMjIjFYnh7ews9DJNgb28v+C+XKaD7wKL7wKL7wKL7wKL7wDKV+3C/GZFqlMBKCCGEEEFRMEIIIYQQQVEw0kpIpVIsW7YMUqlU6KEIiu4Di+4Di+4Di+4Di+4DqzXeh1aRwEoIIYSQRxfNjBBCCCFEUBSMEEIIIURQFIwQQgghRFAUjBBCCCFEUBSMtEIjR46Er68vLC0t0bZtW0ydOhV37twRelgtKiMjAzNnzkRAQACsrKwQFBSEZcuWQalUCj20Fvf++++jd+/esLa2hqOjo9DDaVHr16+Hv78/LC0t0aNHD5w9e1boIbWoY8eOYcSIEfD09IRIJMKePXuEHpIgVq5ciW7dusHOzg5ubm4YPXo0bty4IfSwWtyGDRsQHh7OFTvr1asX9u/fL/SwGoWCkVYoJiYGP/30E27cuIFdu3YhLS0NY8eOFXpYLSo5ORlarRabNm3C1atXsWbNGmzcuBFLliwRemgtTqlUYty4cZg9e7bQQ2lRO3bsQFxcHJYtW4aEhARERERg6NChyM/PF3poLUYulyMiIgLr168XeiiCio+Px5w5c3D69GkcOnQIKpUKQ4YMgVwuF3poLcrb2xsffvghLly4gPPnz2PAgAEYNWoUrl69KvTQGsaQVm/v3r2MSCRilEql0EMR1KpVq5iAgAChhyGYzZs3Mw4ODkIPo8V0796dmTNnDvdYo9Ewnp6ezMqVKwUclXAAMLt37xZ6GCYhPz+fAcDEx8cLPRTBOTk5MV999ZXQw2gQzYy0csXFxdiyZQt69+4Nc3NzoYcjKJlMBmdnZ6GHQVqAUqnEhQsXMGjQIO6YWCzGoEGDcOrUKQFHRkyBTCYDgMf63wONRoPt27dDLpejV69eQg+nQRSMtFKLFi2CjY0N2rRpg8zMTOzdu1foIQkqNTUV69atwyuvvCL0UEgLKCwshEajgbu7O++4u7s7cnNzBRoVMQVarRbz589Hnz590KlTJ6GH0+KuXLkCW1tbSKVSzJo1C7t370ZYWJjQw2oQBSMm4s0334RIJLrvf8nJydz5CxYswMWLF3Hw4EGYmZlh2rRpYB6BYrrG3gcAyMnJwbBhwzBu3Di89NJLAo28aT3IfSCEAHPmzEFSUhK2b98u9FAEERISgsTERJw5cwazZ89GbGwsrl27JvSwGkTl4E1EQUEBioqK7ntOYGAgLCwsDI5nZ2fDx8cHJ0+ebBXTcfdj7H24c+cO+vfvj549e+Lbb7+FWPxoxNcP8vvw7bffYv78+SgpKWnm0QlPqVTC2toaP//8M0aPHs0dj42NRUlJyWM5UygSibB7927e/XjczJ07F3v37sWxY8cQEBAg9HBMwqBBgxAUFIRNmzYJPZT7kgg9AMJydXWFq6vrA12r1WoBAAqFoimHJAhj7kNOTg5iYmIQFRWFzZs3PzKBCPBwvw+PAwsLC0RFReHw4cPch69Wq8Xhw4cxd+5cYQdHWhzDMHjttdewe/duHD16lAIRPVqttlV8NlAw0sqcOXMG586dwxNPPAEnJyekpaVh6dKlCAoKavWzIsbIyclB//794efnh//+978oKCjgfubh4SHgyFpeZmYmiouLkZmZCY1Gg8TERABAcHAwbG1thR1cM4qLi0NsbCyio6PRvXt3fPrpp5DL5Zg+fbrQQ2sx5eXlSE1N5R7funULiYmJcHZ2hq+vr4Aja1lz5szB1q1bsXfvXtjZ2XF5Qw4ODrCyshJ4dC1n8eLFeOqpp+Dr64uysjJs3boVR48exZ9//in00Bom7GYeYqzLly8zMTExjLOzMyOVShl/f39m1qxZTHZ2ttBDa1GbN29mANT53+MmNja2zvtw5MgRoYfW7NatW8f4+voyFhYWTPfu3ZnTp08LPaQWdeTIkTr/38fGxgo9tBZV378FmzdvFnpoLWrGjBmMn58fY2Fhwbi6ujIDBw5kDh48KPSwGoVyRgghhBAiqEdnkZ0QQgghrRIFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBEUBSOEEEIIERQFI4QQQggRFAUjhBBCCBHU/wHt5m/0Q97diwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(X, y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b249fd51", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv (3.11.7.final.0)", - "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.11.7" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/experiments/knn/scratch.ipynb b/experiments/knn/scratch.ipynb new file mode 100644 index 0000000..b3d78b4 --- /dev/null +++ b/experiments/knn/scratch.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8cb78c58-1868-4794-aef3-e8f6a68944c0", + "metadata": {}, + "outputs": [], + "source": [ + "from glassboxml.data.generators import generate_classification_dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8eb1f929-9680-424e-83a5-eee52144719f", + "metadata": {}, + "outputs": [], + "source": [ + "X, y, w_true, b_true = generate_classification_dataset([1.5])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "330bc2ee", + "metadata": {}, + "outputs": [], + "source": [ + "from glassboxml.models.knn import KNN\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.33, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1b0358e9", + "metadata": {}, + "outputs": [], + "source": [ + "model = KNN(5)\n", + "model.fit(X_train, y_train)\n", + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b811db49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.996969696969697)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from glassboxml.metrics.classification import accuracy\n", + "\n", + "accuracy(y_test, y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "88c483ad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0,\n", + " 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0,\n", + " 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1,\n", + " 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0,\n", + " 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1,\n", + " 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1,\n", + " 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n", + " 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", + " 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0,\n", + " 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", + " 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1,\n", + " 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,\n", + " 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1,\n", + " 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "18c7f19d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,\n", + " 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1,\n", + " 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0,\n", + " 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1,\n", + " 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0,\n", + " 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", + " 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0,\n", + " 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n", + " 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", + " 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n", + " 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", + " 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,\n", + " 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0,\n", + " 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0,\n", + " 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pred" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba8799d1", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv (3.11.7.final.0)", + "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.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/glassboxml/distances/distances.py b/glassboxml/distances/distances.py new file mode 100644 index 0000000..6756553 --- /dev/null +++ b/glassboxml/distances/distances.py @@ -0,0 +1,8 @@ +import numpy as np + +def calculate_euclidean(point1, point2): + if (len(point1) != len(point2)): + raise Exception("Dimensions of points are not equal!") + n_features = len(point1) + + return np.sqrt(np.sum(np.square([point1[i] - point2[i] for i in range(len(point1))]))) \ No newline at end of file diff --git a/glassboxml/models/knn.py b/glassboxml/models/knn.py index 34da20e..a748027 100644 --- a/glassboxml/models/knn.py +++ b/glassboxml/models/knn.py @@ -1,5 +1,5 @@ import numpy as np -from collections import Counter +from glassboxml.distances.distances import calculate_euclidean class KNN: def __init__(self, k=5): @@ -13,7 +13,13 @@ def predict(self, X): return np.array([self._predict_sample(x) for x in np.array(X)]) def _predict_sample(self, x): - distances = np.linalg.norm(self.X_train - x, axis=1) - k_indices = np.argsort(distances)[:self.k] - k_labels = self.y_train[k_indices] - return Counter(k_labels).most_common(1)[0][0] + distances = [] + for i in range(len(self.X_train)): + distances.append((calculate_euclidean(self.X_train[i], x), i)) + + k_closest_points = sorted(distances)[:self.k] + if np.sum([1 if self.y_train[i] == 1 else 0 for _, i in k_closest_points]) > (self.k / 2): + result = 1 + else: + result = 0 + return result \ No newline at end of file From 7d5aa328d9c257973e03bca68a8d1ac23e996627 Mon Sep 17 00:00:00 2001 From: Iskken Date: Mon, 13 Jul 2026 20:46:33 +0200 Subject: [PATCH 3/7] Optimize KNN's prediction code --- experiments/knn/scratch.ipynb | 68 +++++++++++-------------------- glassboxml/distances/distances.py | 3 +- glassboxml/models/knn.py | 16 ++++---- 3 files changed, 33 insertions(+), 54 deletions(-) diff --git a/experiments/knn/scratch.ipynb b/experiments/knn/scratch.ipynb index b3d78b4..d15a512 100644 --- a/experiments/knn/scratch.ipynb +++ b/experiments/knn/scratch.ipynb @@ -17,7 +17,7 @@ "metadata": {}, "outputs": [], "source": [ - "X, y, w_true, b_true = generate_classification_dataset([1.5])" + "X, y, w_true, b_true = generate_classification_dataset([1.5, 2.0, 0.4, 0.1])" ] }, { @@ -55,7 +55,7 @@ { "data": { "text/plain": [ - "np.float64(0.996969696969697)" + "np.float64(0.9545454545454546)" ] }, "execution_count": 5, @@ -72,62 +72,39 @@ { "cell_type": "code", "execution_count": 6, - "id": "88c483ad", + "id": "b4a63140", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0,\n", - " 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0,\n", - " 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1,\n", - " 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0,\n", - " 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1,\n", - " 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", - " 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1,\n", - " 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0,\n", - " 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1,\n", - " 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,\n", - " 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "predictions on training data: [0 0 0 1 1 1 2 2 2]\n", + "expected: [0 0 0 1 1 1 2 2 2]\n" + ] } ], "source": [ - "y_test" + "import numpy as np\n", + "X = np.array([[0.0],[0.1],[0.2], [5.0],[5.1],[5.2], [10.0],[10.1],[10.2]])\n", + "y = np.array([0,0,0, 1,1,1, 2,2,2])\n", + "\n", + "model = KNN(k=3)\n", + "model.fit(X, y)\n", + "print('predictions on training data:', model.predict(X))\n", + "print('expected: ', y)" ] }, { "cell_type": "code", "execution_count": 7, - "id": "18c7f19d", + "id": "9df85a4e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,\n", - " 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1,\n", - " 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0,\n", - " 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1,\n", - " 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0,\n", - " 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", - " 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0,\n", - " 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n", - " 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", - " 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n", - " 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", - " 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0,\n", - " 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0,\n", - " 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1])" + "array([1.73205081, 6.4807407 , 3.74165739])" ] }, "execution_count": 7, @@ -136,13 +113,16 @@ } ], "source": [ - "y_pred" + "X_sample = np.array([[1,1,1], [1,4,5], [3,2,1]])\n", + "x = np.array([0,0,0])\n", + "\n", + "np.linalg.norm(X_sample - x, axis=1)" ] }, { "cell_type": "code", "execution_count": null, - "id": "ba8799d1", + "id": "ddf12c44", "metadata": {}, "outputs": [], "source": [] diff --git a/glassboxml/distances/distances.py b/glassboxml/distances/distances.py index 6756553..f31a422 100644 --- a/glassboxml/distances/distances.py +++ b/glassboxml/distances/distances.py @@ -3,6 +3,5 @@ def calculate_euclidean(point1, point2): if (len(point1) != len(point2)): raise Exception("Dimensions of points are not equal!") - n_features = len(point1) - + return np.sqrt(np.sum(np.square([point1[i] - point2[i] for i in range(len(point1))]))) \ No newline at end of file diff --git a/glassboxml/models/knn.py b/glassboxml/models/knn.py index a748027..f844fca 100644 --- a/glassboxml/models/knn.py +++ b/glassboxml/models/knn.py @@ -1,4 +1,5 @@ import numpy as np +from collections import Counter from glassboxml.distances.distances import calculate_euclidean class KNN: @@ -13,13 +14,12 @@ def predict(self, X): return np.array([self._predict_sample(x) for x in np.array(X)]) def _predict_sample(self, x): - distances = [] - for i in range(len(self.X_train)): - distances.append((calculate_euclidean(self.X_train[i], x), i)) + #Use vectorized calculations for calculating distances + distances = np.linalg.norm(self.X_train - x, axis=1) - k_closest_points = sorted(distances)[:self.k] - if np.sum([1 if self.y_train[i] == 1 else 0 for _, i in k_closest_points]) > (self.k / 2): - result = 1 - else: - result = 0 + #Use argpartition to obtain k closest neighbours + partitioned_indices = np.argpartition(distances, self.k) #Put k closest elements at the front of the index list + k_closest_indices = partitioned_indices[:self.k] + + result = Counter(self.y_train[k_closest_indices]).most_common(1)[0][0] return result \ No newline at end of file From 28caf1eaee0539124b00ff8fe71a5d9c5d248ce8 Mon Sep 17 00:00:00 2001 From: Iskken Date: Tue, 14 Jul 2026 02:59:34 +0200 Subject: [PATCH 4/7] Partition KNN into KNNClassifier and KNNRegressor --- glassboxml/models/knn.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/glassboxml/models/knn.py b/glassboxml/models/knn.py index f844fca..e324971 100644 --- a/glassboxml/models/knn.py +++ b/glassboxml/models/knn.py @@ -1,8 +1,7 @@ import numpy as np from collections import Counter -from glassboxml.distances.distances import calculate_euclidean -class KNN: +class _KNNBase: def __init__(self, k=5): self.k = k @@ -13,7 +12,7 @@ def fit(self, X, y): def predict(self, X): return np.array([self._predict_sample(x) for x in np.array(X)]) - def _predict_sample(self, x): + def _k_nearest_labels(self, x): #Use vectorized calculations for calculating distances distances = np.linalg.norm(self.X_train - x, axis=1) @@ -21,5 +20,17 @@ def _predict_sample(self, x): partitioned_indices = np.argpartition(distances, self.k) #Put k closest elements at the front of the index list k_closest_indices = partitioned_indices[:self.k] - result = Counter(self.y_train[k_closest_indices]).most_common(1)[0][0] - return result \ No newline at end of file + return self.y_train[k_closest_indices] + + def _predict_sample(self, x): + raise NotImplementedError + +class KNNClassifier(_KNNBase): + def _predict_sample(self, x): + k_labels = self._k_nearest_labels(x) + return Counter(k_labels).most_common(1)[0][0] + +class KNNRegressor(_KNNBase): + def _predict_sample(self, x): + k_labels = self._k_nearest_labels(x) + return np.mean(k_labels) \ No newline at end of file From 081338853fce0dfd10f602f7457120bedf92733c Mon Sep 17 00:00:00 2001 From: Iskken Date: Tue, 14 Jul 2026 20:35:45 +0200 Subject: [PATCH 5/7] Code tests for knn --- .vscode/settings.json | 7 ++ experiments/knn/scratch.ipynb | 42 +++++++++++- glassboxml/models/knn.py | 7 ++ tests/models/test_knn.py | 118 ++++++++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 tests/models/test_knn.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3e99ede --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "." + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/experiments/knn/scratch.ipynb b/experiments/knn/scratch.ipynb index d15a512..aaa4250 100644 --- a/experiments/knn/scratch.ipynb +++ b/experiments/knn/scratch.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 8, "id": "8cb78c58-1868-4794-aef3-e8f6a68944c0", "metadata": {}, "outputs": [], @@ -121,16 +121,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "ddf12c44", "metadata": {}, + "outputs": [ + { + "ename": "AxisError", + "evalue": "axis 1 is out of bounds for array of dimension 1", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mAxisError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m model = KNNClassifier(k = \u001b[32m3\u001b[39m)\n\u001b[32m 8\u001b[39m model.fit(X,y)\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m y_pred = \u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43mpredict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GlassBoxML/glassboxml/models/knn.py:13\u001b[39m, in \u001b[36m_KNNBase.predict\u001b[39m\u001b[34m(self, X)\u001b[39m\n\u001b[32m 12\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mpredict\u001b[39m(\u001b[38;5;28mself\u001b[39m, X):\n\u001b[32m---> \u001b[39m\u001b[32m13\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m np.array(\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_predict_sample\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GlassBoxML/glassboxml/models/knn.py:13\u001b[39m, in \u001b[36m\u001b[39m\u001b[34m(.0)\u001b[39m\n\u001b[32m 12\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mpredict\u001b[39m(\u001b[38;5;28mself\u001b[39m, X):\n\u001b[32m---> \u001b[39m\u001b[32m13\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m np.array([\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_predict_sample\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m np.array(X)])\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GlassBoxML/glassboxml/models/knn.py:37\u001b[39m, in \u001b[36mKNNClassifier._predict_sample\u001b[39m\u001b[34m(self, x)\u001b[39m\n\u001b[32m 36\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_predict_sample\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[32m---> \u001b[39m\u001b[32m37\u001b[39m k_labels = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_k_nearest_labels\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 38\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m Counter(k_labels).most_common(\u001b[32m1\u001b[39m)[\u001b[32m0\u001b[39m][\u001b[32m0\u001b[39m]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GlassBoxML/glassboxml/models/knn.py:17\u001b[39m, in \u001b[36m_KNNBase._k_nearest_labels\u001b[39m\u001b[34m(self, x)\u001b[39m\n\u001b[32m 15\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_k_nearest_labels\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m#Use vectorized calculations for calculating distances\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m17\u001b[39m distances = \u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mlinalg\u001b[49m\u001b[43m.\u001b[49m\u001b[43mnorm\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m \u001b[49m\u001b[43m-\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 19\u001b[39m \u001b[38;5;66;03m# argpartition(distances, k) needs an extra element past the k we\u001b[39;00m\n\u001b[32m 20\u001b[39m \u001b[38;5;66;03m# keep to anchor the partition, so it only works for k < n_samples.\u001b[39;00m\n\u001b[32m 21\u001b[39m \u001b[38;5;66;03m# If k covers the whole training set (or more), there's nothing to\u001b[39;00m\n\u001b[32m 22\u001b[39m \u001b[38;5;66;03m# partition - every point is a \"k nearest\" neighbour.\u001b[39;00m\n\u001b[32m 23\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.k >= \u001b[38;5;28mlen\u001b[39m(distances):\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GlassBoxML/.venv/lib/python3.11/site-packages/numpy/linalg/_linalg.py:2804\u001b[39m, in \u001b[36mnorm\u001b[39m\u001b[34m(x, ord, axis, keepdims)\u001b[39m\n\u001b[32m 2801\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mord\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mord\u001b[39m == \u001b[32m2\u001b[39m:\n\u001b[32m 2802\u001b[39m \u001b[38;5;66;03m# special case for speedup\u001b[39;00m\n\u001b[32m 2803\u001b[39m s = (x.conj() * x).real\n\u001b[32m-> \u001b[39m\u001b[32m2804\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m sqrt(\u001b[43madd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mreduce\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m=\u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[32m 2805\u001b[39m \u001b[38;5;66;03m# None of the str-type keywords for ord ('fro', 'nuc')\u001b[39;00m\n\u001b[32m 2806\u001b[39m \u001b[38;5;66;03m# are valid for vectors\u001b[39;00m\n\u001b[32m 2807\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mord\u001b[39m, \u001b[38;5;28mstr\u001b[39m):\n", + "\u001b[31mAxisError\u001b[39m: axis 1 is out of bounds for array of dimension 1" + ] + } + ], + "source": [ + "from glassboxml.models.knn import KNNClassifier\n", + "import numpy as np\n", + "\n", + "X = np.array([0.0, 0.1, 0.2, 5.1, 5.2, 5.5, 10.245, 11, 12.5])\n", + "y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])\n", + "\n", + "model = KNNClassifier(k = 3)\n", + "model.fit(X,y)\n", + "\n", + "y_pred = model.predict(X)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4150c622", + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": ".venv (3.11.7.final.0)", + "display_name": ".venv (3.11.7)", "language": "python", "name": "python3" }, diff --git a/glassboxml/models/knn.py b/glassboxml/models/knn.py index e324971..d2f3609 100644 --- a/glassboxml/models/knn.py +++ b/glassboxml/models/knn.py @@ -16,6 +16,13 @@ def _k_nearest_labels(self, x): #Use vectorized calculations for calculating distances distances = np.linalg.norm(self.X_train - x, axis=1) + # argpartition(distances, k) needs an extra element past the k we + # keep to anchor the partition, so it only works for k < n_samples. + # If k covers the whole training set (or more), there's nothing to + # partition - every point is a "k nearest" neighbour. + if self.k >= len(distances): + return self.y_train + #Use argpartition to obtain k closest neighbours partitioned_indices = np.argpartition(distances, self.k) #Put k closest elements at the front of the index list k_closest_indices = partitioned_indices[:self.k] diff --git a/tests/models/test_knn.py b/tests/models/test_knn.py new file mode 100644 index 0000000..6501901 --- /dev/null +++ b/tests/models/test_knn.py @@ -0,0 +1,118 @@ +import numpy as np +from glassboxml.models.knn import KNNClassifier, KNNRegressor + +# Test KNNClassifier +def test_multi_class_classification(): + X = np.array([[0.0], [0.1], [0.2], [5.1], [5.2], [5.5], [10.245], [11], [12.5]]) + y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + + model = KNNClassifier(k = 3) + model.fit(X,y) + + y_pred = model.predict(X) + + assert np.array_equal(y, y_pred) + +def test_KNNClassifier_k_equal_1(): + X = np.array([[0.0], [0.1], [0.456]]) + y = np.array([0, 1, 2]) + X_test = np.array([[0.01], [0.245], [0.5555]]) + + model = KNNClassifier(k = 1) + model.fit(X,y) + + y_pred = model.predict(X_test) + + assert np.array_equal(y, y_pred) + +def test_majority_vote_sanity(): + X = np.array([[0.3], [0.4], [0.5] + , [0.6], [0.7], [0.8], [0.9], [0.10]]) + y = np.array([0, 1, 1, + 1, 1, 0, 0, 0]) + x_test = [0.51] + + model = KNNClassifier(k = 5) + model.fit(X,y) + + y_pred = model.predict(x_test) + + assert y_pred == [1] + +def test_equal_class_labels(): + X = [[1], [2], [3], [4]] + y = [0, 0, 1, 1] + + x_test = [2.1] + + model = KNNClassifier(k = 4) + model.fit(X,y) + + y_pred = model.predict(x_test) + + assert y_pred == [0] + +def test_KNNClassifier_prediction_accuracy(): + from glassboxml.data.generators import generate_classification_dataset + from sklearn.model_selection import train_test_split + from glassboxml.metrics.classification import accuracy + + X, y, w_true, b_true = generate_classification_dataset([1.555, 0.245, 6.777, 0.123]) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) + + model = KNNClassifier() + model.fit(X_train, y_train) + + y_pred = model.predict(X_test) + + assert accuracy(y_test, y_pred) >= 0.9 + +def test_k_equal_n_samples_collapses_to_global_majority(): + # 5 points clustered near 0 labeled class 0, 2 points clustered near 10 labeled class 1 + X = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [10.0], [10.1]]) + y = np.array([0, 0, 0, 0, 0, 1, 1]) + + query_near_class_1 = np.array([[10.05]]) + + # With k=1, the nearest neighbour is a class-1 point, so k changes the prediction + model_k1 = KNNClassifier(k = 1) + model_k1.fit(X, y) + assert model_k1.predict(query_near_class_1) == [1] + + # With k=n_samples, every training point is used regardless of query location, + # so the prediction must collapse to the global majority class (0) everywhere, + # even for a query sitting right next to the minority cluster + model_k_all = KNNClassifier(k = len(X)) + model_k_all.fit(X, y) + + query_near_class_0 = np.array([[0.05]]) + assert model_k_all.predict(query_near_class_1) == [0] + assert model_k_all.predict(query_near_class_0) == [0] + +# Test KNNRegressor +def test_exact_mean(): + X = np.array([[1], [2], [3], [4], [5]]) + y = np.array([1.5, 0.5, 2.9, 3.4, 5.25]) + + x_test = np.array([[1.6], [3.1], [4.1]]) + + y_expected = np.array([np.mean([1.5,0.5,2.9]), np.mean([0.5, 2.9, 3.4]), np.mean([2.9, 3.4, 5.25])]) + + model = KNNRegressor(k = 3) + model.fit(X,y) + y_pred = model.predict(x_test) + + assert np.array_equal(y_expected, y_pred) + +def test_KNNRegressor_k_equal_1(): + X = np.array([[0.0], [0.1], [0.456]]) + y = np.array([0, 1, 2]) + X_test = np.array([[0.01], [0.245], [0.5555]]) + + model = KNNRegressor(k = 1) + model.fit(X,y) + + y_pred = model.predict(X_test) + + assert np.array_equal(y, y_pred) \ No newline at end of file From 5ffb6f0fe8d0287e53b293b1737a5bcade87bf36 Mon Sep 17 00:00:00 2001 From: Iskken Date: Tue, 14 Jul 2026 22:30:20 +0200 Subject: [PATCH 6/7] Fix CI: add scikit-learn as a test extra instead of relying on local install --- .github/workflows/tests.yml | 3 +-- Jenkinsfile | 3 +-- pyproject.toml | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 77a5694..3fd684c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,8 +21,7 @@ jobs: - name: Install dependencies run: | - pip install -e . - pip install pytest + pip install -e ".[test]" - name: Run tests run: pytest diff --git a/Jenkinsfile b/Jenkinsfile index 4083153..d3d4b36 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,8 +17,7 @@ pipeline { sh ''' python3 -m venv .venv .venv/bin/pip install --upgrade pip - .venv/bin/pip install -e . - .venv/bin/pip install pytest + .venv/bin/pip install -e ".[test]" ''' } } diff --git a/pyproject.toml b/pyproject.toml index 8667383..65b0fde 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,9 @@ dependencies = [ "matplotlib" ] +[project.optional-dependencies] +test = ["pytest", "scikit-learn"] + [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" From 0d13707a0713338fa700ca4f511d7eeff24fc62a Mon Sep 17 00:00:00 2001 From: Iskken Date: Wed, 15 Jul 2026 03:33:10 +0200 Subject: [PATCH 7/7] Update: KNN for WebApp, ReadMe --- README.md | 5 +++++ docs/generate_plots.py | 29 +++++++++++++++++++++++++++++ docs/images/knn.png | Bin 0 -> 127357 bytes webapp/app.py | 29 +++++++++++++++++++++++++++++ webapp/static/index.html | 6 ++++++ 5 files changed, 69 insertions(+) create mode 100644 docs/images/knn.png diff --git a/README.md b/README.md index 6ce3da9..898d3f7 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,11 @@ Gini-impurity splitting, recursive binary partitioning, configurable max depth. ![Decision tree decision regions](docs/images/decision_tree.png) +### K-Nearest Neighbors +Instance-based classification (and regression) via majority vote / mean over the `k` closest training points, vectorized distance computation. + +![KNN decision regions](docs/images/knn.png) + Plots were generated with `python docs/generate_plots.py` — rerun it after changing a model to refresh them. ## Project layout diff --git a/docs/generate_plots.py b/docs/generate_plots.py index 9a1ecd7..f8d3cdc 100644 --- a/docs/generate_plots.py +++ b/docs/generate_plots.py @@ -9,6 +9,7 @@ generate_regression_dataset, ) from glassboxml.models.decision_tree import DecisionTree +from glassboxml.models.knn import KNNClassifier from glassboxml.models.linear_regression import LinearRegression from glassboxml.models.logistic_regression import LogisticRegression @@ -87,8 +88,36 @@ def plot_decision_tree(): plt.close() +def plot_knn(): + X, y, w_true, b_true = generate_classification_dataset( + w_true=[1.5, -2.0], b_true=0.5, n_samples=300, noise_std=0.5, + ) + model = KNNClassifier(k=5) + model.fit(X, y) + + x0_min, x0_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5 + x1_min, x1_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5 + xx0, xx1 = np.meshgrid( + np.linspace(x0_min, x0_max, 200), + np.linspace(x1_min, x1_max, 200), + ) + grid = np.column_stack([xx0.ravel(), xx1.ravel()]) + zz = model.predict(grid).reshape(xx0.shape) + + plt.figure(figsize=(6, 4.5)) + plt.contourf(xx0, xx1, zz, alpha=0.3, cmap="coolwarm") + plt.scatter(X[:, 0], X[:, 1], c=y, cmap="coolwarm", alpha=0.8, edgecolors="k", linewidths=0.3) + plt.title(f"K-Nearest Neighbors (k={model.k})") + plt.xlabel("x1") + plt.ylabel("x2") + plt.tight_layout() + plt.savefig(f"{OUT_DIR}/knn.png", dpi=150) + plt.close() + + if __name__ == "__main__": plot_linear_regression() plot_logistic_regression() plot_decision_tree() + plot_knn() print(f"Saved plots to {OUT_DIR}/") diff --git a/docs/images/knn.png b/docs/images/knn.png new file mode 100644 index 0000000000000000000000000000000000000000..7918aea1cac074829cd0515bc7ca8eb5f3d2fe9b GIT binary patch literal 127357 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
)G2%xIyA%F1c2dN@p`JOjZ$AB_e_sbtHqkh=py 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

oT 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 — Interactive Demo +

@@ -128,6 +129,11 @@

GlassBoxML — Interactive Demo

{ id: "noise_std", label: "Noise std", value: 0.3, min: 0, max: 3, step: 0.1 }, { id: "max_depth", label: "Max depth", value: 3, min: 1, max: 10, step: 1 }, ], + knn: [ + { id: "n_samples", label: "Samples", value: 200, min: 20, max: 500, step: 10 }, + { id: "noise_std", label: "Noise std", value: 0.3, min: 0, max: 3, step: 0.1 }, + { id: "k", label: "k (neighbors)", value: 5, min: 1, max: 25, step: 1 }, + ], }; let chart = null;