diff --git a/Homework 04 - Logistic Regression.ipynb b/Homework 04 - Logistic Regression.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..63dcdbc77efce815073207744abaf609356bb9d3 --- /dev/null +++ b/Homework 04 - Logistic Regression.ipynb @@ -0,0 +1,229 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "89b9e03e", + "metadata": {}, + "source": [ + "自己编程实现Logistic Regression的多分类问题。使用的数据可以是sklearn的digital数据。\n", + "\n", + "要求:\n", + "自己编程实现Logistic Regression的多分类。\n", + "对比自己实现与sklearn的方法的精度。\n", + "如何将分类错误的样本可视化出来?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "2a179846", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#加载数据的方式\n", + "import matplotlib.pyplot as plt \n", + "from sklearn.datasets import load_digits\n", + "\n", + "# load data\n", + "digits = load_digits()\n", + "\n", + "# plot the digits\n", + "fig = plt.figure(figsize=(6, 6)) # figure size in inches\n", + "fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05)\n", + "\n", + "# plot the digits: each image is 8x8 pixels\n", + "for i in range(64):\n", + " ax = fig.add_subplot(8, 8, i + 1, xticks=[], yticks=[])\n", + " ax.imshow(digits.images[i], cmap=plt.cm.binary)\n", + " \n", + " # label the image with the target value\n", + " ax.text(0, 7, str(digits.target[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "cef60da9", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1797, 64)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy train = 0.995825, score_train= 0.995825\n", + "accuracy test = 0.961111, score_test = 0.961111\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.datasets import load_digits\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.manifold import Isomap\n", + "\n", + "import matplotlib.pyplot as plt \n", + "\n", + "# 加载示例数据\n", + "xy_digits, dig_label = load_digits(return_X_y=True)\n", + "digits = load_digits()\n", + "print(xy_digits.shape)\n", + "\n", + "#数据可视化设置\n", + "fig = plt.figure(figsize=(6,6)) #以英寸为单位的图像尺寸\n", + "fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05,) #图像间隔调整\n", + "\n", + "#图像可视化,每个图像的像素是 8x8 \n", + "for i in range(64):\n", + " ax = fig.add_subplot(8, 8, i+1, xticks=[], yticks=[])\n", + " ax.imshow(digits.images[i], cmap=plt.cm.binary)\n", + "\n", + " #用目标值标记图像\n", + " ax.text(0, 7, str(digits.target[i]))\n", + "\n", + "# 进行特征降维\n", + "feature_trans = True\n", + "if feature_trans:\n", + " iso = Isomap(n_neighbors=5, n_components=8)\n", + " xy_digits = iso.fit_transform(xy_digits)\n", + "\n", + "# 计算训练/测试数据个数\n", + "A = len(xy_digits)\n", + "Atrain = int(A*0.8)\n", + "Atest = A - Atrain\n", + "\n", + "# 分割训练/测试数据集\n", + "xtrain = xy_digits[:Atrain, :]\n", + "ytrain = dig_label[:Atrain]\n", + "xtest = xy_digits[Atrain:, :]\n", + "ytest = dig_label[Atrain:]\n", + "\n", + "# 进行逻辑回归分类\n", + "lr = LogisticRegression()\n", + "lr.fit(xtrain,ytrain)\n", + "\n", + "pred_train = lr.predict(xtrain)\n", + "pred_test = lr.predict(xtest)\n", + "\n", + "# 计算测试、训练精度\n", + "a_train = accuracy_score(y_train, pred_train)\n", + "s_train = lr.score(x_train, y_train)\n", + "print(\"accuracy train = %f, score_train= %f\" % (a_train, s_train))\n", + "\n", + "a_test = accuracy_score(y_test, pred_test)\n", + "s_test = lr.score(x_test, y_test)\n", + "print(\"accuracy test = %f, score_test = %f\" % (a_test, s_test))\n", + "\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "# plot confusion matrix\n", + "cm1 = confusion_matrix(ytest, pred_test)\n", + "cm2 = confusion_matrix(ytrain, pred_train)\n", + "\n", + "plt.matshow(cm1)\n", + "plt.title(u'Confusion Matrix')\n", + "plt.colorbar()\n", + "plt.ylabel(u'Groundtruth')\n", + "plt.xlabel(u'Test Predict')\n", + "plt.savefig(\"sklean_isomap_confusion_matrix.pdf\")\n", + "plt.show()\n", + "\n", + "plt.matshow(cm2)\n", + "plt.title(u'Confusion Matrix')\n", + "plt.colorbar()\n", + "plt.ylabel(u'Groundtruth')\n", + "plt.xlabel(u'Train Predict')\n", + "plt.savefig(\"sklean_isomap_confusion_matrix.pdf\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/dataset_circles.csv b/dataset_circles.csv new file mode 100644 index 0000000000000000000000000000000000000000..8304452e0611a9570a84b5e305181ab70214e0f0 --- /dev/null +++ b/dataset_circles.csv @@ -0,0 +1,400 @@ +9.062095432950300733e+00,8.410568609122412553e+00,0.000000000000000000e+00 +-1.343405517875576327e-01,9.609814870236448314e+00,0.000000000000000000e+00 +-1.176738926012567887e+01,4.803147976205272840e-02,0.000000000000000000e+00 +-8.187928226885320404e-01,1.049254653793298786e+01,0.000000000000000000e+00 +4.191120791997052564e+00,-4.859337353049694386e+00,0.000000000000000000e+00 +7.278099468846941811e+00,4.440088331048181125e+00,0.000000000000000000e+00 +-1.900275675122245822e+00,-6.757950269983900249e+00,0.000000000000000000e+00 +-1.160051532664573593e+01,1.280720324354462258e+00,0.000000000000000000e+00 +-6.734042851045059841e+00,-9.662029276543851353e+00,0.000000000000000000e+00 +-1.590917618471234363e+00,-6.644126612710519630e+00,0.000000000000000000e+00 +-9.658061682157873307e+00,-5.631666951657030573e+00,0.000000000000000000e+00 +6.546514702885141146e-01,6.904946644254467358e+00,0.000000000000000000e+00 +5.825089114426075909e+00,-2.076091058228922481e+00,0.000000000000000000e+00 +-9.910757689306716856e+00,-5.394888599354432657e+00,0.000000000000000000e+00 +-1.066332396060839649e+01,-3.174463528066445495e+00,0.000000000000000000e+00 +-1.099429752168805585e+01,-5.286987975574418464e+00,0.000000000000000000e+00 +8.375759989492184587e+00,6.733285003867059082e+00,0.000000000000000000e+00 +8.244104799198593625e+00,-1.003506301778202925e+01,0.000000000000000000e+00 +9.942981682567344492e+00,-8.636124563447859614e+00,0.000000000000000000e+00 +8.033997548512344267e+00,2.515512562581684874e-01,0.000000000000000000e+00 +-6.428504738220388148e+00,-5.097581256039596553e+00,0.000000000000000000e+00 +-6.314421031249486838e+00,-5.175909050362075270e-01,0.000000000000000000e+00 +1.164619887502898354e+00,-1.320994498120528782e+01,0.000000000000000000e+00 +6.696829444560168376e+00,7.182729888738806245e+00,0.000000000000000000e+00 +-4.235246305491734198e+00,-7.159356454934342473e+00,0.000000000000000000e+00 +5.383052664452613989e+00,6.014628330823282631e+00,0.000000000000000000e+00 +-7.446474143451298211e+00,-3.072619184086839539e+00,0.000000000000000000e+00 +6.760530300065351383e+00,6.491756034733043634e+00,0.000000000000000000e+00 +2.734445225180177186e+00,-6.903850617524835087e+00,0.000000000000000000e+00 +-1.253932770562744814e+01,2.506102182116135779e+00,0.000000000000000000e+00 +-8.312994495650205096e+00,-9.668901686019307107e+00,0.000000000000000000e+00 +3.575184886406485685e+00,9.829701914520594386e+00,0.000000000000000000e+00 +9.210873348198441946e+00,-4.658467065733349899e-01,0.000000000000000000e+00 +2.294493514654305955e+00,-1.135717565800940143e+01,0.000000000000000000e+00 +7.417559270330603916e+00,-4.122257939560736162e+00,0.000000000000000000e+00 +7.852285329993975438e-01,-1.377764842065872308e+01,0.000000000000000000e+00 +-8.592381094680053621e+00,-1.036725741900020736e+01,0.000000000000000000e+00 +-9.463897506708443430e+00,-3.630513378318991791e+00,0.000000000000000000e+00 +2.926882716663875783e+00,5.282811617135619642e+00,0.000000000000000000e+00 +6.636824917046443950e+00,-6.325590953010028272e+00,0.000000000000000000e+00 +-3.206988557987293653e+00,7.029410513631201063e+00,0.000000000000000000e+00 +-4.483462085384717355e+00,-1.248765239318190368e+01,0.000000000000000000e+00 +-8.204039706532734400e+00,-8.828124739392466225e+00,0.000000000000000000e+00 +-4.491149550111644961e-01,-1.294422352630821038e+01,0.000000000000000000e+00 +7.584652864309679998e+00,-5.780844478800141850e+00,0.000000000000000000e+00 +-8.397574930127827741e+00,-6.072174091712802202e+00,0.000000000000000000e+00 +9.536024040617339992e+00,-4.885791167647323796e+00,0.000000000000000000e+00 +6.204913449369826139e+00,3.534932823231177856e+00,0.000000000000000000e+00 +5.343362143920028728e+00,8.020288325263983609e+00,0.000000000000000000e+00 +-1.100612678432352354e+01,8.711273195141605585e-01,0.000000000000000000e+00 +4.041258899744661015e+00,-4.531661311465215114e+00,0.000000000000000000e+00 +-1.081323332747492927e+01,-3.850249842643757026e-01,0.000000000000000000e+00 +-1.651469177720229942e+00,9.092961241515524762e+00,0.000000000000000000e+00 +-3.598983124757430652e+00,6.034186070324961015e+00,0.000000000000000000e+00 +4.857977932252491193e+00,-4.455138316533950871e+00,0.000000000000000000e+00 +-8.556999694314926685e+00,-9.276087351455689856e+00,0.000000000000000000e+00 +1.646002476627940636e+00,5.914559167101281822e+00,0.000000000000000000e+00 +-6.747697232463481853e+00,1.166916843249992475e+01,0.000000000000000000e+00 +1.119233611961231745e+01,-7.945378535110935836e+00,0.000000000000000000e+00 +-4.891468942769719774e+00,5.718555798419916236e+00,0.000000000000000000e+00 +-5.016619212735019540e-01,6.283371595425017553e+00,0.000000000000000000e+00 +-7.914146529220673187e+00,2.297769580684648982e+00,0.000000000000000000e+00 +-6.976824699389136519e+00,-7.473491510144525840e+00,0.000000000000000000e+00 +2.279976267026866676e-01,6.685022805602209850e+00,0.000000000000000000e+00 +2.775182125658465004e+00,-6.530772876454421727e+00,0.000000000000000000e+00 +-1.152484573953299751e+01,-3.781685492550360461e+00,0.000000000000000000e+00 +-7.665724454478979766e+00,1.061841609529312258e+01,0.000000000000000000e+00 +-6.050947749312078017e+00,-8.308928997465619304e+00,0.000000000000000000e+00 +1.127772297836719950e+01,5.211296464343789125e+00,0.000000000000000000e+00 +-1.113470689407102654e+01,6.260234650393305067e+00,0.000000000000000000e+00 +2.341543601664675567e+00,7.532088552934100179e+00,0.000000000000000000e+00 +-4.151751846745349361e+00,-7.490335637551074122e+00,0.000000000000000000e+00 +-7.805147815211818774e+00,3.243245274640753184e+00,0.000000000000000000e+00 +4.336434630574473204e+00,6.006705659813466269e+00,0.000000000000000000e+00 +2.212679442407554653e+00,7.218280668172093684e+00,0.000000000000000000e+00 +5.220755351664055688e+00,-4.094926467596918584e+00,0.000000000000000000e+00 +1.112747926534001941e+01,3.850834041798686602e+00,0.000000000000000000e+00 +-2.595587501786106532e+00,-9.806357366695770850e+00,0.000000000000000000e+00 +-9.028343948742850955e+00,8.915749548117700485e+00,0.000000000000000000e+00 +1.126634632652508117e+01,-6.482595170923743488e+00,0.000000000000000000e+00 +-3.286842484116981655e+00,-7.646127648092450713e+00,0.000000000000000000e+00 +7.419845811945131153e+00,9.565847320886607719e+00,0.000000000000000000e+00 +5.978018377910639281e+00,1.217238176923184412e+01,0.000000000000000000e+00 +-6.711146678585069303e+00,-4.722415378405640851e+00,0.000000000000000000e+00 +-8.485783184510578891e+00,5.672952800632031334e+00,0.000000000000000000e+00 +-1.144014291076578083e+01,-3.478202066131522052e+00,0.000000000000000000e+00 +4.384873230300504687e+00,-5.549646589217950066e+00,0.000000000000000000e+00 +-1.168300744153292747e+01,-5.194818386960251999e+00,0.000000000000000000e+00 +-9.644136031176124835e-01,1.049805166565995762e+01,0.000000000000000000e+00 +-6.536842892201116584e+00,5.345306757313686319e+00,0.000000000000000000e+00 +8.438989962482976281e+00,-3.475208865011710557e+00,0.000000000000000000e+00 +6.506186462480673782e+00,-3.744626303119004684e-01,0.000000000000000000e+00 +-3.862160515126369820e+00,5.446476112276574355e+00,0.000000000000000000e+00 +6.134051169689144878e+00,-1.978516060449600378e+00,0.000000000000000000e+00 +1.185204996490637264e+01,-6.124766316013841028e+00,0.000000000000000000e+00 +-4.859569339875388749e+00,6.353425638518374718e+00,0.000000000000000000e+00 +-1.519343617847903394e+00,-1.248943950276429504e+01,0.000000000000000000e+00 +-1.144861509135489541e+01,6.053286005181219842e+00,0.000000000000000000e+00 +4.331788290673597608e+00,-6.109292230414607339e+00,0.000000000000000000e+00 +3.334070762472415517e+00,5.456281297241006634e+00,0.000000000000000000e+00 +-1.065870788968298122e+01,-2.340567870836013586e+00,0.000000000000000000e+00 +-1.463630422294582845e+00,-1.001221660907637023e+01,0.000000000000000000e+00 +-3.258706257441662313e+00,-1.088106300955284844e+01,0.000000000000000000e+00 +6.275135646820408475e+00,-1.534938715019705135e+00,0.000000000000000000e+00 +2.021073821693852857e+00,-8.018368767233782890e+00,0.000000000000000000e+00 +-3.182102089242570653e+00,-1.088037918116285319e+01,0.000000000000000000e+00 +5.481629019877129139e+00,1.022320040714743250e+01,0.000000000000000000e+00 +-8.330105300232894194e+00,-8.288555228352629811e+00,0.000000000000000000e+00 +-2.755674768703163746e+00,1.187433721777218132e+01,0.000000000000000000e+00 +-4.683040648747073043e+00,8.164208797263796669e+00,0.000000000000000000e+00 +1.119515335900578279e-01,1.335746486991257598e+01,0.000000000000000000e+00 +6.700119633932653862e+00,1.082193885842432124e+01,0.000000000000000000e+00 +-8.550301619333071201e+00,3.419675931901079213e+00,0.000000000000000000e+00 +7.176748453521003768e+00,-1.025820308032380268e+01,0.000000000000000000e+00 +-5.041595214606491737e+00,9.063531739248613661e+00,0.000000000000000000e+00 +1.194486108691321880e+00,-1.044990485316076168e+01,0.000000000000000000e+00 +-9.686906870031076977e+00,-3.619449339125635490e+00,0.000000000000000000e+00 +-1.313845064569455801e+01,-8.365893417087570949e-01,0.000000000000000000e+00 +4.065075556680537439e+00,-5.805028193121499314e+00,0.000000000000000000e+00 +8.590045804906507598e+00,-1.083068171753233067e+01,0.000000000000000000e+00 +5.126125837069420932e+00,-4.406654442924812010e+00,0.000000000000000000e+00 +1.353837046348684758e+01,-5.790225488579785473e-01,0.000000000000000000e+00 +1.111931563740836282e+01,-2.045835439299618752e+00,0.000000000000000000e+00 +8.023788031578961366e+00,8.147772272168204211e+00,0.000000000000000000e+00 +-7.017294184359236908e+00,5.831118776551057259e+00,0.000000000000000000e+00 +-1.141949019659495335e+01,3.877836369592378762e+00,0.000000000000000000e+00 +-6.568151289332938014e-02,1.385097687202117989e+01,0.000000000000000000e+00 +1.198497403418259211e+01,5.562064536545864579e-02,0.000000000000000000e+00 +-8.044794464020926128e+00,7.363341681713536646e-01,0.000000000000000000e+00 +-1.338591590468644377e+01,-4.094229452548190373e+00,0.000000000000000000e+00 +5.673372417420740055e-01,8.086269673969569638e+00,0.000000000000000000e+00 +3.516308154983770695e+00,-6.695867415477852802e+00,0.000000000000000000e+00 +1.281549230629557101e+01,5.502104265343782608e+00,0.000000000000000000e+00 +6.978521281232607620e+00,4.489103854629955315e+00,0.000000000000000000e+00 +-9.492072557224918938e+00,-2.860723420255278260e+00,0.000000000000000000e+00 +6.435965292187971976e+00,-2.007430821741474691e+00,0.000000000000000000e+00 +9.787301848081414235e+00,-3.385987285381478085e+00,0.000000000000000000e+00 +-2.560272080421012397e+00,-1.060761918876632492e+01,0.000000000000000000e+00 +-5.741879482881461882e+00,7.675351118488469737e+00,0.000000000000000000e+00 +4.909833311186836191e+00,-7.884078238568854147e+00,0.000000000000000000e+00 +8.530059544583025399e+00,-8.271604816591201725e+00,0.000000000000000000e+00 +-8.137833035927506842e+00,4.752299354840485712e+00,0.000000000000000000e+00 +-2.945364290828344167e+00,1.181024110146612216e+01,0.000000000000000000e+00 +6.413013358841276101e+00,2.686811429118250771e+00,0.000000000000000000e+00 +-4.330576883415815814e+00,-4.312151816386741388e+00,0.000000000000000000e+00 +7.819651364870956911e+00,5.581944049584605771e+00,0.000000000000000000e+00 +6.374923678964727003e+00,-3.591063433682733397e+00,0.000000000000000000e+00 +3.920317473054968804e+00,-1.285867128337139675e+01,0.000000000000000000e+00 +5.969112688202600658e+00,-1.199043474049174485e+01,0.000000000000000000e+00 +2.206761741887119044e+00,1.231498183866549212e+01,0.000000000000000000e+00 +-4.493238306901402301e-02,-1.241246581439543739e+01,0.000000000000000000e+00 +-1.229500249305082527e+01,-3.152142610476000417e+00,0.000000000000000000e+00 +-4.249457240746512987e+00,9.692207951492818552e+00,0.000000000000000000e+00 +1.124606336305911114e+01,-7.885118833499940028e-01,0.000000000000000000e+00 +-1.059106427242662107e+01,7.468063051536828034e+00,0.000000000000000000e+00 +2.281377873306516868e+00,8.258766252373336059e+00,0.000000000000000000e+00 +2.776342194763606885e-01,1.145304502140566072e+01,0.000000000000000000e+00 +-1.779778342255576185e+00,1.103845161819147513e+01,0.000000000000000000e+00 +-1.138825413050090596e+01,1.875254253119878145e+00,0.000000000000000000e+00 +6.794503066116404089e-01,6.595367984622427571e+00,0.000000000000000000e+00 +4.977831129044696823e+00,-4.344026277914559309e+00,0.000000000000000000e+00 +1.741129599087095914e-01,-6.894034268664321452e+00,0.000000000000000000e+00 +2.475097088111755106e+00,-1.093174226816173800e+01,0.000000000000000000e+00 +3.991853833727508238e+00,1.121533736074506393e+01,0.000000000000000000e+00 +-1.686119504345058084e+00,1.009423236139700819e+01,0.000000000000000000e+00 +-1.317728548656465115e+01,4.029926630934554055e+00,0.000000000000000000e+00 +-7.730210435536935876e+00,-3.848806311305841277e+00,0.000000000000000000e+00 +-5.953807133460072620e+00,-6.561968042369668019e+00,0.000000000000000000e+00 +4.341106468164319665e+00,5.866644648406567519e+00,0.000000000000000000e+00 +-1.305998549861713798e+01,-3.139159220886123869e+00,0.000000000000000000e+00 +-6.907088887148628231e+00,2.993819425329168560e+00,0.000000000000000000e+00 +-7.307345974834201563e+00,-4.562759938513091029e+00,0.000000000000000000e+00 +6.485560801850815515e+00,9.021112597985857517e-01,0.000000000000000000e+00 +-9.370938668690817153e+00,-5.994195588713087552e+00,0.000000000000000000e+00 +9.617050841017174889e+00,-8.612082699874843428e+00,0.000000000000000000e+00 +9.409055950093341281e+00,-4.741431344911000156e-01,0.000000000000000000e+00 +-2.289336158713492608e+00,-7.659638808729879678e+00,0.000000000000000000e+00 +-1.380307893247301410e+00,-1.191093891786717762e+01,0.000000000000000000e+00 +9.393772070883024128e+00,1.529664323780117297e+00,0.000000000000000000e+00 +-1.516956642220887330e+00,-1.318124950821260200e+01,0.000000000000000000e+00 +-7.540611170155883336e+00,-6.656209192745754955e+00,0.000000000000000000e+00 +6.043360171054082741e+00,2.972465656442218052e+00,0.000000000000000000e+00 +1.043883027536696773e+01,-9.223050403079646742e+00,0.000000000000000000e+00 +-6.494305285412059980e+00,-9.357575042166038637e-01,0.000000000000000000e+00 +-8.233458392848859830e+00,5.152019730950110343e+00,0.000000000000000000e+00 +-8.182185219358300898e+00,2.576432004853596691e+00,0.000000000000000000e+00 +-7.296388033822859498e+00,-9.827599822187037759e+00,0.000000000000000000e+00 +1.086329745254326973e+01,-5.918393716619380074e-01,0.000000000000000000e+00 +3.517974198525071650e+00,-6.776790760325667407e+00,0.000000000000000000e+00 +-4.619640812695988252e+00,4.293083132292331072e+00,0.000000000000000000e+00 +-7.575960827573930523e+00,1.906506832631534865e+00,0.000000000000000000e+00 +4.216280904076635139e+00,-9.501055347552291863e+00,0.000000000000000000e+00 +-3.913629666268576557e+00,-1.058803850666876833e+01,0.000000000000000000e+00 +-5.407697948813054545e+00,9.037098612814480347e+00,0.000000000000000000e+00 +-9.573363214934863308e+00,5.940753943407081294e+00,0.000000000000000000e+00 +-4.206161487099325136e+00,-1.309635619914643634e+01,0.000000000000000000e+00 +-1.847425878338489147e+00,-1.136719147233808869e+01,0.000000000000000000e+00 +-6.538610721752731614e+00,6.888582381247962516e+00,0.000000000000000000e+00 +7.392422157939151361e+00,-2.466102574943974446e+00,0.000000000000000000e+00 +1.481439456830948798e+00,1.123186173935424748e+01,0.000000000000000000e+00 +1.573273104063076921e+01,1.868971488131447956e+01,1.000000000000000000e+00 +-1.099399377759256780e+01,2.390619522460748669e+01,1.000000000000000000e+00 +2.147678989689537588e+01,-8.599456107960150586e-01,1.000000000000000000e+00 +-2.627270035353325994e+01,-1.252577732524266185e+00,1.000000000000000000e+00 +-2.818139029858682676e+01,-3.649359736607879157e+00,1.000000000000000000e+00 +-2.628880642668411927e+00,2.321951252726932324e+01,1.000000000000000000e+00 +4.756784474337030666e+00,2.277609552632346990e+01,1.000000000000000000e+00 +1.085358516551754704e+01,2.244033595971868067e+01,1.000000000000000000e+00 +9.953077736469481351e+00,2.433413308722969148e+01,1.000000000000000000e+00 +7.897350785936433581e+00,-2.511574616187301956e+01,1.000000000000000000e+00 +-2.686822103988273369e+01,-6.847214913897639477e+00,1.000000000000000000e+00 +-2.281779599215670640e+00,-2.525501734479204430e+01,1.000000000000000000e+00 +1.939928400570243738e+01,-1.464288091459299856e+01,1.000000000000000000e+00 +-2.137322440460813056e+01,-4.253473020316800857e-01,1.000000000000000000e+00 +-2.801982415469146659e+01,6.797937345022894706e-02,1.000000000000000000e+00 +1.580530092266972098e+01,-1.944844405031079404e+01,1.000000000000000000e+00 +8.514232141761185702e+00,2.578196439746885105e+01,1.000000000000000000e+00 +9.161537436501838716e-01,2.126087176747068952e+01,1.000000000000000000e+00 +-2.100910930376482355e+01,5.187756086794577115e+00,1.000000000000000000e+00 +-1.887413186880452898e+01,-9.446453231504504444e+00,1.000000000000000000e+00 +-1.244973267290554908e+01,-2.376720011280642453e+01,1.000000000000000000e+00 +-8.636428179695197827e+00,-2.346212683200547389e+01,1.000000000000000000e+00 +-2.000836523737761397e+01,-1.425301495177956035e+01,1.000000000000000000e+00 +1.940837366976037259e+01,-1.393076839654248467e+01,1.000000000000000000e+00 +-1.833469807838950416e+01,-1.346167122655688431e+01,1.000000000000000000e+00 +2.494705394044481750e+01,-5.494995405026316782e+00,1.000000000000000000e+00 +-1.665557705744208761e+01,-1.798221914000725263e+01,1.000000000000000000e+00 +2.572752693938492641e+01,-1.311370549041896538e+01,1.000000000000000000e+00 +-8.244290646775706222e+00,2.084206231459166858e+01,1.000000000000000000e+00 +-7.885354738212532411e+00,2.116800800201663435e+01,1.000000000000000000e+00 +-2.003647125145762686e+01,-6.608417731861560895e+00,1.000000000000000000e+00 +6.209578562958157910e+00,-2.452260025417416500e+01,1.000000000000000000e+00 +-2.173539700526108120e+01,-9.535163494027462106e-01,1.000000000000000000e+00 +-1.224412708268634908e+01,-2.009421260915946306e+01,1.000000000000000000e+00 +-1.075840330797242572e+01,1.858300890695775820e+01,1.000000000000000000e+00 +-2.600534803198775435e+01,1.591213249083642367e+00,1.000000000000000000e+00 +9.361088087715186745e+00,2.230199633678528315e+01,1.000000000000000000e+00 +2.624073342088111715e+01,5.375489823808733192e+00,1.000000000000000000e+00 +5.292561881430067672e+00,2.830901784997630344e+01,1.000000000000000000e+00 +2.078059335633197335e+01,-5.406876312280275876e+00,1.000000000000000000e+00 +1.797212134077285128e+01,1.974674511194298177e+01,1.000000000000000000e+00 +1.418423831415259961e+00,2.824393733375810811e+01,1.000000000000000000e+00 +-2.523700214170278855e+01,-1.302431052248969046e+01,1.000000000000000000e+00 +-2.359325729631554225e+01,1.193588174281041958e+01,1.000000000000000000e+00 +4.894404473767219876e+00,2.115271000609101293e+01,1.000000000000000000e+00 +-1.569787656706957790e+01,-2.226072207802415903e+01,1.000000000000000000e+00 +2.768855825457124098e+01,5.605075740675674822e+00,1.000000000000000000e+00 +-2.387485343307933405e+01,8.035087859152445944e+00,1.000000000000000000e+00 +2.228670073867370860e+01,-1.148109322020260592e+01,1.000000000000000000e+00 +-1.585909433097451071e+01,2.303658854092108399e+01,1.000000000000000000e+00 +2.357944877093274982e+01,-1.175374184082949114e+01,1.000000000000000000e+00 +-1.480393836152355291e+01,2.187304118659174179e+01,1.000000000000000000e+00 +1.913088892130262053e+01,-9.150390103571130140e+00,1.000000000000000000e+00 +1.376147828505578374e+01,2.459517012664668911e+01,1.000000000000000000e+00 +1.443518228384972168e+01,1.539166840543182602e+01,1.000000000000000000e+00 +-1.093411572583228342e+01,2.157779792143726638e+01,1.000000000000000000e+00 +1.457084675867774415e+01,2.058110886110986470e+01,1.000000000000000000e+00 +1.456059238093794583e+01,-2.130944108185470753e+01,1.000000000000000000e+00 +-8.355501425562577023e-01,-2.281181486053621299e+01,1.000000000000000000e+00 +2.704093247153310031e+01,-8.429506993953767235e+00,1.000000000000000000e+00 +-2.124312453800017408e+01,-1.526040990890658122e+01,1.000000000000000000e+00 +-2.136641894209649095e+01,3.040648060253774432e-01,1.000000000000000000e+00 +-2.612199279305723820e+01,2.209045858016001618e-01,1.000000000000000000e+00 +-1.850413196330870136e+01,-1.133828795179985072e+01,1.000000000000000000e+00 +2.110676114344656895e+01,-1.966560125193576170e+01,1.000000000000000000e+00 +-1.065571376892860300e+01,-2.383858015746411851e+01,1.000000000000000000e+00 +-2.481993646286784028e+01,-5.096020447884035853e+00,1.000000000000000000e+00 +2.623216441805807619e+01,1.074989474234195796e+01,1.000000000000000000e+00 +2.147028827385963012e+01,1.653440992215027450e+01,1.000000000000000000e+00 +-9.217202701913098650e+00,2.489761654565133853e+01,1.000000000000000000e+00 +-1.937546768872905290e+01,2.127878701127900740e+01,1.000000000000000000e+00 +-5.924662594668204108e+00,-2.798573897331829130e+01,1.000000000000000000e+00 +1.249879505486993736e+01,2.054501486018938294e+01,1.000000000000000000e+00 +-1.429705926472585453e+01,1.731857462323765162e+01,1.000000000000000000e+00 +2.506288393682114446e+01,1.023037004319879095e+00,1.000000000000000000e+00 +-2.374518316171267429e+01,-4.110056212841346479e+00,1.000000000000000000e+00 +-4.685801268652608265e+00,2.681770544346142415e+01,1.000000000000000000e+00 +-1.636465900606647139e+01,-1.400104502066578860e+01,1.000000000000000000e+00 +-3.820694096413083773e+00,-2.344946840684222877e+01,1.000000000000000000e+00 +-2.730718148408208990e+01,-5.702233129672412026e+00,1.000000000000000000e+00 +1.526350021196561180e+01,-2.195423474625367533e+01,1.000000000000000000e+00 +-2.310367333743900531e+01,-3.529448810485903198e+00,1.000000000000000000e+00 +2.214294872855819918e+01,-2.554368757533279410e+00,1.000000000000000000e+00 +2.515511456743908880e+01,5.638475578451005443e-01,1.000000000000000000e+00 +-2.610666366339259170e+01,6.393728951851616493e+00,1.000000000000000000e+00 +-2.613636115978982843e+01,2.234408800128391270e+00,1.000000000000000000e+00 +2.072443839280482791e+01,-4.241044169515961748e+00,1.000000000000000000e+00 +-2.179363306807708511e+01,-2.219080654082041804e+00,1.000000000000000000e+00 +-5.755683200863610516e+00,-2.649364343689698842e+01,1.000000000000000000e+00 +-5.857497203861713686e+00,-2.647591147085865870e+01,1.000000000000000000e+00 +-5.459558693088531811e+00,2.788104381472268400e+01,1.000000000000000000e+00 +3.427184099803823325e-01,-2.407137911651751949e+01,1.000000000000000000e+00 +1.061809394417809038e+01,-1.913013651650792468e+01,1.000000000000000000e+00 +-6.170046215751034957e+00,2.688331541601552033e+01,1.000000000000000000e+00 +2.677989002899861504e+01,3.021183912819540573e+00,1.000000000000000000e+00 +1.083062130122765510e+01,-1.830172721846291850e+01,1.000000000000000000e+00 +3.580835672240723522e+00,-2.239452967733392796e+01,1.000000000000000000e+00 +-3.044557199432845529e+00,-2.688141071009908600e+01,1.000000000000000000e+00 +-2.583745747369688672e+01,8.347225757017310954e+00,1.000000000000000000e+00 +1.762724598409085175e+01,1.726998052121857441e+01,1.000000000000000000e+00 +1.643060907548389693e+01,1.973520095431023336e+01,1.000000000000000000e+00 +2.741842920091284341e+01,-2.610174934885582942e+00,1.000000000000000000e+00 +-2.672059870628813272e+01,3.910225727005835900e-02,1.000000000000000000e+00 +1.605260460268317502e+01,2.345994894291840183e+01,1.000000000000000000e+00 +-2.049497282996839687e+01,-1.594388950125812521e+01,1.000000000000000000e+00 +-2.638077417794028179e+01,-7.506860614897715500e+00,1.000000000000000000e+00 +1.135912814594559705e+01,2.263410882293552362e+01,1.000000000000000000e+00 +-2.131198135157140072e+01,5.342497366994218844e-01,1.000000000000000000e+00 +-2.493192955221257279e+01,-3.390420038797758551e+00,1.000000000000000000e+00 +-1.920154011348070000e+01,-1.668775834010846637e+01,1.000000000000000000e+00 +-2.373950481351785768e+01,-1.189906327932049734e+01,1.000000000000000000e+00 +1.720133100073515919e+01,-1.298798646107649546e+01,1.000000000000000000e+00 +1.032928046222053275e+01,-2.109396432727021065e+01,1.000000000000000000e+00 +1.632802282077261680e+01,2.024775105547126941e+01,1.000000000000000000e+00 +1.994211809924351186e+01,2.077471006435687784e+01,1.000000000000000000e+00 +2.568300097148087247e+01,-8.861716607679204216e+00,1.000000000000000000e+00 +-2.239700074240493777e+01,3.534284268236923765e+00,1.000000000000000000e+00 +-1.004781490610434602e+01,1.987594221138026285e+01,1.000000000000000000e+00 +-2.291267046192328394e+01,-1.312952385196898675e+01,1.000000000000000000e+00 +-2.083400139916478011e+01,1.367840467092887025e+01,1.000000000000000000e+00 +-3.221901391570413331e+00,2.319656316993572887e+01,1.000000000000000000e+00 +-1.615965062141641084e+01,-1.387331136271443199e+01,1.000000000000000000e+00 +2.069747316736948761e+01,-1.147884159567122353e+01,1.000000000000000000e+00 +2.486770183110991184e+01,-2.339728497108470862e-01,1.000000000000000000e+00 +2.149483025993792040e+01,-5.457067273154549980e+00,1.000000000000000000e+00 +2.178731583466868216e+01,-8.611277695152226741e+00,1.000000000000000000e+00 +-2.819828929677607476e+01,1.494550304680388964e+00,1.000000000000000000e+00 +2.497391257077165960e+01,-2.050764603404877651e+00,1.000000000000000000e+00 +2.271904439997901903e+01,-5.323111949980447122e+00,1.000000000000000000e+00 +-2.328784573925989676e+01,6.785810459573639042e-01,1.000000000000000000e+00 +-2.848732005134823453e+01,-4.982707054711080219e-01,1.000000000000000000e+00 +-2.165765020607312863e+01,1.352688804656367871e+01,1.000000000000000000e+00 +7.967025472762848004e+00,-2.433312685834100009e+01,1.000000000000000000e+00 +-2.119818411541692527e+01,-2.418414204064400330e+00,1.000000000000000000e+00 +-1.558443623565947433e+01,1.641174419907369142e+01,1.000000000000000000e+00 +-2.082915539559499862e+01,-7.437332431993692872e+00,1.000000000000000000e+00 +2.559979330876547721e+01,-3.001953567538953926e+00,1.000000000000000000e+00 +-1.360557447237118245e+00,-2.281304107613448906e+01,1.000000000000000000e+00 +2.120883803732100858e+01,-1.446018697744938741e+01,1.000000000000000000e+00 +1.391155978732186327e+01,-1.747318229034387826e+01,1.000000000000000000e+00 +1.144475890863789580e+01,-1.972159647135347171e+01,1.000000000000000000e+00 +-1.535318812347566109e+01,-2.144716578645262572e+01,1.000000000000000000e+00 +-2.607594731370153074e+00,2.701312253739854796e+01,1.000000000000000000e+00 +-1.334053456404284077e+01,-2.084889283182081599e+01,1.000000000000000000e+00 +1.998640594085265221e+01,1.720332962609349536e+01,1.000000000000000000e+00 +2.600535599273910492e+01,-1.276148460329973844e+01,1.000000000000000000e+00 +2.053596390340138811e+01,6.685120048962751582e+00,1.000000000000000000e+00 +2.218491300901504459e+01,2.621424574218144343e+00,1.000000000000000000e+00 +2.422636853488194930e+01,-9.948171788084671618e+00,1.000000000000000000e+00 +-2.033677988510935464e+01,1.620601851879276722e+01,1.000000000000000000e+00 +1.779272758076690408e+01,1.297545655685749999e+01,1.000000000000000000e+00 +1.170332534869767827e+01,2.323496705447028177e+01,1.000000000000000000e+00 +1.943385226906604757e+01,-9.425801367760476168e+00,1.000000000000000000e+00 +1.772384009512879643e+01,-1.820490739410527681e+01,1.000000000000000000e+00 +1.840152047079322983e+01,-1.589728872981584828e+01,1.000000000000000000e+00 +3.254618704199605528e+00,-2.694420946928563154e+01,1.000000000000000000e+00 +-2.027940100142528124e+00,-2.357110419141051239e+01,1.000000000000000000e+00 +-2.079785053187988808e+01,6.969151913322670033e+00,1.000000000000000000e+00 +1.333160136635900805e+01,1.955228905670615447e+01,1.000000000000000000e+00 +-2.337230297711032279e+01,4.946199771144971002e+00,1.000000000000000000e+00 +2.824049165135675921e+01,2.421501932209903785e-01,1.000000000000000000e+00 +-1.924952663450711654e+01,1.001865500041339097e+01,1.000000000000000000e+00 +1.161828018995340273e+01,-2.316147917217766761e+01,1.000000000000000000e+00 +-2.115519342857973228e+01,9.507389082689076787e+00,1.000000000000000000e+00 +-1.631523968261841162e+01,1.663595577256764457e+01,1.000000000000000000e+00 +2.478598127000429940e+01,-1.099951470185801483e+01,1.000000000000000000e+00 +2.714127299805003801e+01,-4.214881301056182750e+00,1.000000000000000000e+00 +-2.031208480873932842e+01,5.489224324605968874e+00,1.000000000000000000e+00 +1.131393395507636335e+01,-1.911809820478688593e+01,1.000000000000000000e+00 +9.872220307355086266e-01,2.477132951265166483e+01,1.000000000000000000e+00 +2.368443361556522220e+01,6.908070614196779147e+00,1.000000000000000000e+00 +-6.550111289632817524e+00,-2.362637227568149356e+01,1.000000000000000000e+00 +7.142292479753053591e+00,-2.807003130402094726e+01,1.000000000000000000e+00 +9.220217262888104059e+00,2.318491894192909797e+01,1.000000000000000000e+00 +-1.278070362574096563e+01,2.491815532847987313e+01,1.000000000000000000e+00 +1.544822472767310906e+01,-1.905927650362333736e+01,1.000000000000000000e+00 +-1.782148007375803545e+01,-1.270499655956880680e+01,1.000000000000000000e+00 +-2.598083105734318821e+01,-1.166340717489061873e+01,1.000000000000000000e+00 +-2.115329431705612961e+01,1.922103940750838902e+01,1.000000000000000000e+00 +-8.572106253750373384e+00,2.167156366831950720e+01,1.000000000000000000e+00 +-2.222844308368978616e+01,1.216371128338294305e+01,1.000000000000000000e+00 +-1.460159793703849296e+01,-1.873375216063436000e+01,1.000000000000000000e+00 +-2.171765776703275463e+01,-1.476020540458901920e+01,1.000000000000000000e+00 +-4.238550116190669570e+00,-2.389972003984688698e+01,1.000000000000000000e+00 +6.165939327369154732e+00,-2.683570375136353903e+01,1.000000000000000000e+00 +1.719572832923617156e+01,1.677410597119486368e+01,1.000000000000000000e+00 +1.873103075511164661e+01,1.918492263728331793e+01,1.000000000000000000e+00 +-9.227368178597460613e+00,-2.473440238093422394e+01,1.000000000000000000e+00 +-1.831003118936073193e+01,2.071120293221047959e+01,1.000000000000000000e+00 +1.351990022808921310e+01,-2.261653460112551173e+01,1.000000000000000000e+00 +2.850165519451800833e+01,4.157533834040251897e+00,1.000000000000000000e+00 +-1.993243840613153850e+01,8.919474195504907499e+00,1.000000000000000000e+00 +2.363463868162161319e+01,1.369461759608625684e+01,1.000000000000000000e+00 +-2.178992915483502557e+01,1.301881154832546628e+00,1.000000000000000000e+00 +2.022320544459192959e+01,-1.805379750173514708e+01,1.000000000000000000e+00 +-7.998643143606845918e+00,-2.319610733875643760e+01,1.000000000000000000e+00 +2.618081162402923923e+01,1.037024573479389034e+01,1.000000000000000000e+00 +2.127632507298599407e+01,8.437198622827882799e-01,1.000000000000000000e+00 +-1.407077715450147792e+01,-2.020577296356315955e+01,1.000000000000000000e+00 +2.293969907863483115e+01,-1.194796862278524108e+00,1.000000000000000000e+00 diff --git a/dataset_circles.txt b/dataset_circles.txt new file mode 100644 index 0000000000000000000000000000000000000000..75af2df1e6ee39e175f8ce48f412701d869aa29f --- /dev/null +++ b/dataset_circles.txt @@ -0,0 +1,400 @@ +9.062095433,8.410568609 +-0.134340552,9.60981487 +-11.76738926,0.04803148 +-0.818792823,10.49254654 +4.191120792,-4.859337353 +7.278099469,4.440088331 +-1.900275675,-6.75795027 +-11.60051533,1.280720324 +-6.734042851,-9.662029277 +-1.590917618,-6.644126613 +-9.658061682,-5.631666952 +0.65465147,6.904946644 +5.825089114,-2.076091058 +-9.910757689,-5.394888599 +-10.66332396,-3.174463528 +-10.99429752,-5.286987976 +8.375759989,6.733285004 +8.244104799,-10.03506302 +9.942981683,-8.636124563 +8.033997549,0.251551256 +-6.428504738,-5.097581256 +-6.314421031,-0.517590905 +1.164619888,-13.20994498 +6.696829445,7.182729889 +-4.235246305,-7.159356455 +5.383052664,6.014628331 +-7.446474143,-3.072619184 +6.7605303,6.491756035 +2.734445225,-6.903850618 +-12.53932771,2.506102182 +-8.312994496,-9.668901686 +3.575184886,9.829701915 +9.210873348,-0.465846707 +2.294493515,-11.35717566 +7.41755927,-4.12225794 +0.785228533,-13.77764842 +-8.592381095,-10.36725742 +-9.463897507,-3.630513378 +2.926882717,5.282811617 +6.636824917,-6.325590953 +-3.206988558,7.029410514 +-4.483462085,-12.48765239 +-8.204039707,-8.828124739 +-0.449114955,-12.94422353 +7.584652864,-5.780844479 +-8.39757493,-6.072174092 +9.536024041,-4.885791168 +6.204913449,3.534932823 +5.343362144,8.020288325 +-11.00612678,0.87112732 +4.0412589,-4.531661311 +-10.81323333,-0.385024984 +-1.651469178,9.092961242 +-3.598983125,6.03418607 +4.857977932,-4.455138317 +-8.556999694,-9.276087351 +1.646002477,5.914559167 +-6.747697232,11.66916843 +11.19233612,-7.945378535 +-4.891468943,5.718555798 +-0.501661921,6.283371595 +-7.914146529,2.297769581 +-6.976824699,-7.47349151 +0.227997627,6.685022806 +2.775182126,-6.530772876 +-11.52484574,-3.781685493 +-7.665724454,10.6184161 +-6.050947749,-8.308928997 +11.27772298,5.211296464 +-11.13470689,6.26023465 +2.341543602,7.532088553 +-4.151751847,-7.490335638 +-7.805147815,3.243245275 +4.336434631,6.00670566 +2.212679442,7.218280668 +5.220755352,-4.094926468 +11.12747927,3.850834042 +-2.595587502,-9.806357367 +-9.028343949,8.915749548 +11.26634633,-6.482595171 +-3.286842484,-7.646127648 +7.419845812,9.565847321 +5.978018378,12.17238177 +-6.711146679,-4.722415378 +-8.485783185,5.672952801 +-11.44014291,-3.478202066 +4.38487323,-5.549646589 +-11.68300744,-5.194818387 +-0.964413603,10.49805167 +-6.536842892,5.345306757 +8.438989962,-3.475208865 +6.506186462,-0.37446263 +-3.862160515,5.446476112 +6.13405117,-1.97851606 +11.85204996,-6.124766316 +-4.85956934,6.353425639 +-1.519343618,-12.4894395 +-11.44861509,6.053286005 +4.331788291,-6.10929223 +3.334070762,5.456281297 +-10.65870789,-2.340567871 +-1.463630422,-10.01221661 +-3.258706257,-10.88106301 +6.275135647,-1.534938715 +2.021073822,-8.018368767 +-3.182102089,-10.88037918 +5.48162902,10.22320041 +-8.3301053,-8.288555228 +-2.755674769,11.87433722 +-4.683040649,8.164208797 +0.111951534,13.35746487 +6.700119634,10.82193886 +-8.550301619,3.419675932 +7.176748454,-10.25820308 +-5.041595215,9.063531739 +1.194486109,-10.44990485 +-9.68690687,-3.619449339 +-13.13845065,-0.836589342 +4.065075557,-5.805028193 +8.590045805,-10.83068172 +5.126125837,-4.406654443 +13.53837046,-0.579022549 +11.11931564,-2.045835439 +8.023788032,8.147772272 +-7.017294184,5.831118777 +-11.4194902,3.87783637 +-0.065681513,13.85097687 +11.98497403,0.055620645 +-8.044794464,0.736334168 +-13.3859159,-4.094229453 +0.567337242,8.086269674 +3.516308155,-6.695867415 +12.81549231,5.502104265 +6.978521281,4.489103855 +-9.492072557,-2.86072342 +6.435965292,-2.007430822 +9.787301848,-3.385987285 +-2.56027208,-10.60761919 +-5.741879483,7.675351118 +4.909833311,-7.884078239 +8.530059545,-8.271604817 +-8.137833036,4.752299355 +-2.945364291,11.8102411 +6.413013359,2.686811429 +-4.330576883,-4.312151816 +7.819651365,5.58194405 +6.374923679,-3.591063434 +3.920317473,-12.85867128 +5.969112688,-11.99043474 +2.206761742,12.31498184 +-0.044932383,-12.41246581 +-12.29500249,-3.15214261 +-4.249457241,9.692207951 +11.24606336,-0.788511883 +-10.59106427,7.468063052 +2.281377873,8.258766252 +0.277634219,11.45304502 +-1.779778342,11.03845162 +-11.38825413,1.875254253 +0.679450307,6.595367985 +4.977831129,-4.344026278 +0.17411296,-6.894034269 +2.475097088,-10.93174227 +3.991853834,11.21533736 +-1.686119504,10.09423236 +-13.17728549,4.029926631 +-7.730210436,-3.848806311 +-5.953807133,-6.561968042 +4.341106468,5.866644648 +-13.0599855,-3.139159221 +-6.907088887,2.993819425 +-7.307345975,-4.562759939 +6.485560802,0.90211126 +-9.370938669,-5.994195589 +9.617050841,-8.6120827 +9.40905595,-0.474143134 +-2.289336159,-7.659638809 +-1.380307893,-11.91093892 +9.393772071,1.529664324 +-1.516956642,-13.18124951 +-7.54061117,-6.656209193 +6.043360171,2.972465656 +10.43883028,-9.223050403 +-6.494305285,-0.935757504 +-8.233458393,5.152019731 +-8.182185219,2.576432005 +-7.296388034,-9.827599822 +10.86329745,-0.591839372 +3.517974199,-6.77679076 +-4.619640813,4.293083132 +-7.575960828,1.906506833 +4.216280904,-9.501055348 +-3.913629666,-10.58803851 +-5.407697949,9.037098613 +-9.573363215,5.940753943 +-4.206161487,-13.0963562 +-1.847425878,-11.36719147 +-6.538610722,6.888582381 +7.392422158,-2.466102575 +1.481439457,11.23186174 +15.73273104,18.68971488 +-10.99399378,23.90619522 +21.4767899,-0.859945611 +-26.27270035,-1.252577733 +-28.1813903,-3.649359737 +-2.628880643,23.21951253 +4.756784474,22.77609553 +10.85358517,22.44033596 +9.953077736,24.33413309 +7.897350786,-25.11574616 +-26.86822104,-6.847214914 +-2.281779599,-25.25501734 +19.39928401,-14.64288091 +-21.3732244,-0.425347302 +-28.01982415,0.067979373 +15.80530092,-19.44844405 +8.514232142,25.7819644 +0.916153744,21.26087177 +-21.0091093,5.187756087 +-18.87413187,-9.446453232 +-12.44973267,-23.76720011 +-8.63642818,-23.46212683 +-20.00836524,-14.25301495 +19.40837367,-13.9307684 +-18.33469808,-13.46167123 +24.94705394,-5.494995405 +-16.65557706,-17.98221914 +25.72752694,-13.11370549 +-8.244290647,20.84206231 +-7.885354738,21.168008 +-20.03647125,-6.608417732 +6.209578563,-24.52260025 +-21.73539701,-0.953516349 +-12.24412708,-20.09421261 +-10.75840331,18.58300891 +-26.00534803,1.591213249 +9.361088088,22.30199634 +26.24073342,5.375489824 +5.292561881,28.30901785 +20.78059336,-5.406876312 +17.97212134,19.74674511 +1.418423831,28.24393733 +-25.23700214,-13.02431052 +-23.5932573,11.93588174 +4.894404474,21.15271001 +-15.69787657,-22.26072208 +27.68855825,5.605075741 +-23.87485343,8.035087859 +22.28670074,-11.48109322 +-15.85909433,23.03658854 +23.57944877,-11.75374184 +-14.80393836,21.87304119 +19.13088892,-9.150390104 +13.76147829,24.59517013 +14.43518228,15.39166841 +-10.93411573,21.57779792 +14.57084676,20.58110886 +14.56059238,-21.30944108 +-0.835550143,-22.81181486 +27.04093247,-8.429506994 +-21.24312454,-15.26040991 +-21.36641894,0.304064806 +-26.12199279,0.220904586 +-18.50413196,-11.33828795 +21.10676114,-19.66560125 +-10.65571377,-23.83858016 +-24.81993646,-5.096020448 +26.23216442,10.74989474 +21.47028827,16.53440992 +-9.217202702,24.89761655 +-19.37546769,21.27878701 +-5.924662595,-27.98573897 +12.49879505,20.54501486 +-14.29705926,17.31857462 +25.06288394,1.023037004 +-23.74518316,-4.110056213 +-4.685801269,26.81770544 +-16.36465901,-14.00104502 +-3.820694096,-23.44946841 +-27.30718148,-5.70223313 +15.26350021,-21.95423475 +-23.10367334,-3.52944881 +22.14294873,-2.554368758 +25.15511457,0.563847558 +-26.10666366,6.393728952 +-26.13636116,2.2344088 +20.72443839,-4.24104417 +-21.79363307,-2.219080654 +-5.755683201,-26.49364344 +-5.857497204,-26.47591147 +-5.459558693,27.88104381 +0.34271841,-24.07137912 +10.61809394,-19.13013652 +-6.170046216,26.88331542 +26.77989003,3.021183913 +10.8306213,-18.30172722 +3.580835672,-22.39452968 +-3.044557199,-26.88141071 +-25.83745747,8.347225757 +17.62724598,17.26998052 +16.43060908,19.73520095 +27.4184292,-2.610174935 +-26.72059871,0.039102257 +16.0526046,23.45994894 +-20.49497283,-15.9438895 +-26.38077418,-7.506860615 +11.35912815,22.63410882 +-21.31198135,0.534249737 +-24.93192955,-3.390420039 +-19.20154011,-16.68775834 +-23.73950481,-11.89906328 +17.201331,-12.98798646 +10.32928046,-21.09396433 +16.32802282,20.24775106 +19.9421181,20.77471006 +25.68300097,-8.861716608 +-22.39700074,3.534284268 +-10.04781491,19.87594221 +-22.91267046,-13.12952385 +-20.8340014,13.67840467 +-3.221901392,23.19656317 +-16.15965062,-13.87331136 +20.69747317,-11.4788416 +24.86770183,-0.23397285 +21.49483026,-5.457067273 +21.78731583,-8.611277695 +-28.1982893,1.494550305 +24.97391257,-2.050764603 +22.7190444,-5.32311195 +-23.28784574,0.678581046 +-28.48732005,-0.498270705 +-21.65765021,13.52688805 +7.967025473,-24.33312686 +-21.19818412,-2.418414204 +-15.58443624,16.4117442 +-20.8291554,-7.437332432 +25.59979331,-3.001953568 +-1.360557447,-22.81304108 +21.20883804,-14.46018698 +13.91155979,-17.47318229 +11.44475891,-19.72159647 +-15.35318812,-21.44716579 +-2.607594731,27.01312254 +-13.34053456,-20.84889283 +19.98640594,17.20332963 +26.00535599,-12.7614846 +20.5359639,6.685120049 +22.18491301,2.621424574 +24.22636853,-9.948171788 +-20.33677989,16.20601852 +17.79272758,12.97545656 +11.70332535,23.23496705 +19.43385227,-9.425801368 +17.7238401,-18.20490739 +18.40152047,-15.89728873 +3.254618704,-26.94420947 +-2.0279401,-23.57110419 +-20.79785053,6.969151913 +13.33160137,19.55228906 +-23.37230298,4.946199771 +28.24049165,0.242150193 +-19.24952663,10.018655 +11.61828019,-23.16147917 +-21.15519343,9.507389083 +-16.31523968,16.63595577 +24.78598127,-10.9995147 +27.141273,-4.214881301 +-20.31208481,5.489224325 +11.31393396,-19.1180982 +0.987222031,24.77132951 +23.68443362,6.908070614 +-6.55011129,-23.62637228 +7.14229248,-28.0700313 +9.220217263,23.18491894 +-12.78070363,24.91815533 +15.44822473,-19.0592765 +-17.82148007,-12.70499656 +-25.98083106,-11.66340717 +-21.15329432,19.22103941 +-8.572106254,21.67156367 +-22.22844308,12.16371128 +-14.60159794,-18.73375216 +-21.71765777,-14.7602054 +-4.238550116,-23.89972004 +6.165939327,-26.83570375 +17.19572833,16.77410597 +18.73103076,19.18492264 +-9.227368179,-24.73440238 +-18.31003119,20.71120293 +13.51990023,-22.6165346 +28.50165519,4.157533834 +-19.93243841,8.919474196 +23.63463868,13.6946176 +-21.78992915,1.301881155 +20.22320544,-18.0537975 +-7.998643144,-23.19610734 +26.18081162,10.37024573 +21.27632507,0.843719862 +-14.07077715,-20.20577296 +22.93969908,-1.194796862 diff --git a/homework-python.ipynb b/homework-python.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..4a2340a9a61a73380d0459a949e6ab416faa63c1 --- /dev/null +++ b/homework-python.ipynb @@ -0,0 +1,1076 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b2535f92", + "metadata": {}, + "source": [ + "Homework_python" + ] + }, + { + "cell_type": "markdown", + "id": "354df0f8", + "metadata": {}, + "source": [ + "学号:2021100204\n", + "姓名:曾延" + ] + }, + { + "cell_type": "markdown", + "id": "c3ac5cce", + "metadata": { + "scrolled": false + }, + "source": [ + "1. 字符串\n", + "给定一个文章,找出每个单词的出现次数。例如给定下面的一篇短文,进行操作。\n", + "One is always on a strange road, watching strange scenery and listening to strange music. \n", + "Then one day, you will find that the things you try hard to forget are already gone. " + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "a55ada57", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入您想要查找单词出现次数的短文:One is always on a strange road, watching strange scenery and listening to strange music. Then one day, you will find that the things you try hard to forget are already gone.One is always on a strange road, watching strange scenery and listening to strange music. Then one day, you will find that the things you try hard to forget are already gone.\n", + "['one', 'is', 'always', 'on', 'a', 'strange', 'road,', 'watching', 'strange', 'scenery', 'and', 'listening', 'to', 'strange', 'music.', 'then', 'one', 'day,', 'you', 'will', 'find', 'that', 'the', 'things', 'you', 'try', 'hard', 'to', 'forget', 'are', 'already', 'gone.one', 'is', 'always', 'on', 'a', 'strange', 'road,', 'watching', 'strange', 'scenery', 'and', 'listening', 'to', 'strange', 'music.', 'then', 'one', 'day,', 'you', 'will', 'find', 'that', 'the', 'things', 'you', 'try', 'hard', 'to', 'forget', 'are', 'already', 'gone.']\n", + "请输入您想要查找的单词: one\n", + "one出现了3次\n" + ] + } + ], + "source": [ + "paper = input(\"请输入您想要查找单词出现次数的短文:\")\n", + "paperlist = paper.lower()\n", + "paperlist = paperlist.split()\n", + "print(paperlist)\n", + "word = input(\"请输入您想要查找的单词: \")\n", + "word = word.lower()\n", + "b = paperlist.count(word)\n", + "print(\"%s出现了%d次\" %(word,b))" + ] + }, + { + "cell_type": "markdown", + "id": "43c0116b", + "metadata": {}, + "source": [ + "2. 组合\n", + "有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "40fda69a", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1,2,3,4这几个数字可以组织 24 个互不相同且无重复数字\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'd' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_26764/433604032.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;32mwhile\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m!=\u001b[0m\u001b[0mj\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m!=\u001b[0m\u001b[0mk\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m!=\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0md\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0md\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;32mcontinue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'd' is not defined" + ] + } + ], + "source": [ + "a = 4*3*2\n", + "print(\"1,2,3,4这几个数字可以组织 %d 个互不相同且无重复数字\" %a)\n", + "for i in range(4):\n", + " for j in range(4):\n", + " for k in range(4):\n", + " while i!=j and i!=k and i!=k:\n", + " d=i*100+j*10+k\n", + " print(d)\n", + " continue\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "35e8f40e", + "metadata": {}, + "source": [ + "3. 判断\n", + "企业发放的奖金根据利润提成。利润(I):\n", + "\n", + "低于或等于 10 万元时,奖金可提 10%;\n", + "高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可提成 7.5%;\n", + "20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;\n", + "40 万到 60 万之间时,高于 40 万元的部分,可提成 3%;\n", + "60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,\n", + "高于 100 万元时, 超过 100 万元的部分按 1%提成, 从键盘输入当月利润 I,求应发放奖金总数?" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "40dd44be", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入您的利润: 10000\n", + "利润高于 0 的奖金为: 1000.0\n", + "应发放奖金总数: 1000.0\n" + ] + } + ], + "source": [ + "a = int(input(\"请输入您的利润: \"))\n", + "b = [1000000,600000,400000,200000,100000,0]\n", + "c = [0.01,0.015,0.03,0.05,0.075,0.1]\n", + "r = 0\n", + "for i in range(6):\n", + " if a>b[i]:\n", + " r+=(a-b[i])*c[i]\n", + " print('利润高于',b[i],'的奖金为:',(a-b[i])*c[i])\n", + " a=b[i]\n", + "print('应发放奖金总数:',r)" + ] + }, + { + "cell_type": "markdown", + "id": "c7e4fa9a", + "metadata": {}, + "source": [ + "4. 循环\n", + "输出9x9的乘法口诀表" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1e29d7b7", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1*1= 1 \n", + "1*2= 2 2*2= 4 \n", + "1*3= 3 2*3= 6 3*3= 9 \n", + "1*4= 4 2*4= 8 3*4= 12 4*4= 16 \n", + "1*5= 5 2*5= 10 3*5= 15 4*5= 20 5*5= 25 \n", + "1*6= 6 2*6= 12 3*6= 18 4*6= 24 5*6= 30 6*6= 36 \n", + "1*7= 7 2*7= 14 3*7= 21 4*7= 28 5*7= 35 6*7= 42 7*7= 49 \n", + "1*8= 8 2*8= 16 3*8= 24 4*8= 32 5*8= 40 6*8= 48 7*8= 56 8*8= 64 \n", + "1*9= 9 2*9= 18 3*9= 27 4*9= 36 5*9= 45 6*9= 54 7*9= 63 8*9= 72 9*9= 81 \n" + ] + } + ], + "source": [ + "a=[1,2,3,4,5,6,7,8,9]\n", + "for i in range(9):\n", + " for j in range(i+1):\n", + " print(\"%d*%d=\"%(a[j],a[i]),a[j]*a[i],end=\" \")\n", + " print(\" \")" + ] + }, + { + "cell_type": "markdown", + "id": "031e7e57", + "metadata": {}, + "source": [ + "5. 使用while循环实现输出2-3+4-5+6.....+100的和" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "b164e448", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "51\n" + ] + } + ], + "source": [ + "a=list(range(2,101))\n", + "#print(a)\n", + "i=0\n", + "b=0\n", + "#print(a[0])\n", + "while i<=98:\n", + " b=b+(-1)**(i)*a[i]\n", + " i=i+1\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "id": "90744e2e", + "metadata": {}, + "source": [ + "6. 排序算法\n", + "给一个数字列表,将其按照由大到小的顺序排列\n", + "\n", + "例如输入数据为:\n", + "\n", + "1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0\n", + "输出为:\n", + "\n", + "0, 1, 2, 2, 4, 5, 5, 8, 9, 9, 10, 34" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "1f32eecc", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入需要排序的数据,按逗号隔开: 1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0\n", + "[0, 1, 2, 2, 4, 5, 5, 8, 9, 9, 10, 34]\n" + ] + } + ], + "source": [ + "a = list(input(\"请输入需要排序的数据,按逗号隔开: \").split(','))\n", + "#print(a)\n", + "a = [int(a[i]) for i in range(len(a))] #for循环,把每个字符转成int值\n", + "#print(a)\n", + "b = sorted(a)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "id": "314c4290", + "metadata": {}, + "source": [ + "7. 矩阵搜索\n", + "编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:\n", + "\n", + "每行的元素从左到右升序排列。\n", + "每列的元素从上到下升序排列。\n", + "示例: 现有矩阵 matrix 如下:\n", + "\n", + "[\n", + "[1, 4, 7, 11, 15],\n", + "[2, 5, 8, 12, 19],\n", + "[3, 6, 9, 16, 22],\n", + "[10, 13, 14, 17, 24],\n", + "[18, 21, 23, 26, 30]\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "d5ec32d7", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入目标值: 30\n", + "True\n" + ] + } + ], + "source": [ + "def target_matrix(matrix: list, target: int):\n", + " for i in matrix:\n", + " for j in i:\n", + " if target < j:\n", + " # 当要搜索的数字小于当前数字的时候,结束本次遍历,减少遍历次数\n", + " break\n", + " elif target == j:\n", + " return True\n", + " else:\n", + " pass\n", + " return False\n", + "\n", + "\n", + "if __name__ == '__main__':\n", + " m = [\n", + " [1, 4, 7, 11, 15],\n", + " [2, 5, 8, 12, 19],\n", + " [3, 6, 9, 16, 22],\n", + " [10, 13, 14, 17, 24],\n", + " [18, 21, 23, 26, 30]\n", + " ]\n", + " t = int(input(\"请输入目标值: \"))\n", + " print(target_matrix(m, t))" + ] + }, + { + "cell_type": "markdown", + "id": "060d7256", + "metadata": {}, + "source": [ + "8. 完数计算\n", + "找出1000以内的所有完数,并打印输出。\n", + "\n", + "什么是完数? 完全数,又被称作完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "abeac3b8", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n", + "28\n", + "496\n" + ] + } + ], + "source": [ + "for i in range(1, 1000):\n", + " sum = 0\n", + " for j in range(1, i):\n", + " if i%j == 0:\n", + " sum += j;\n", + " if sum == i:\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "50afb8ed", + "metadata": {}, + "source": [ + "9. 快乐数\n", + "编写一个算法来判断一个数 n 是不是快乐数。如果 n 是快乐数打印True ;不是,则打印输出False。\n", + "\n", + "「快乐数」定义为:\n", + "\n", + "对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。\n", + "然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。\n", + "如果 可以变为 1,那么这个数就是快乐数。\n", + "示例1:\n", + "\n", + "输入:n = 19\n", + "输出:true\n", + "解释:(这里的个位数2是平方)\n", + "12 + 92 = 82\n", + "82 + 22 = 68\n", + "62 + 82 = 100\n", + "12 + 02 + 02 = 1\n", + "示例 2:\n", + "\n", + "输入:n = 2\n", + "输出:false" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "a52c9b19", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入需要判断的数据: 45\n", + "False\n" + ] + } + ], + "source": [ + "def happy(num):\n", + " b = 0\n", + " for i in range(10):\n", + " if num // (10**i) == 0:\n", + " x = i\n", + " break\n", + " if num == 1:\n", + " print(True)\n", + " elif num < 10:\n", + " print(False)\n", + " else:\n", + " c = num\n", + " for j in range(x-1):\n", + " b = b + (c%10)**2\n", + " c = c//10\n", + " b = b + c**2\n", + " num = b\n", + " return happy(num)\n", + " \n", + "a = int(input(\"请输入需要判断的数据: \"))\n", + "happy(a)" + ] + }, + { + "cell_type": "markdown", + "id": "a8b7b3e7", + "metadata": {}, + "source": [ + "10. 连续的子数组和\n", + "给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:\n", + "\n", + "子数组大小 至少为 2 ,且\n", + "子数组元素总和为 k 的倍数。\n", + "如果存在,返回 True ;否则,返回 False 。\n", + "\n", + "如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。0 始终视为 k 的一个倍数。\n", + "\n", + "示例 1:\n", + "\n", + "输入:nums = [23,2,4,6,7], k = 6\n", + "输出:true\n", + "解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。\n", + "示例 2:\n", + "\n", + "输入:nums = [23,2,6,4,7], k = 6\n", + "输出:true\n", + "解释:[23, 2, 6, 4, 7] 是大小为 5 的子数组,并且和为 42 。 \n", + "42 是 6 的倍数,因为 42 = 7 * 6 且 7 是一个整数。\n", + "示例 3:\n", + "\n", + "输入:nums = [23,2,6,4,7], k = 13\n", + "输出:false" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "id": "ca2711e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入需要判断的数组 23,2,4,6,7\n", + "请输入整数 6\n", + "[23, 2, 4, 6, 7]\n" + ] + }, + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 201, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def CheckSum(nums, k):\n", + " n = len(nums)\n", + " nums = [int(nums[i]) for i in range(n)]\n", + " k = int(k)\n", + " print(nums)\n", + " if k == 0:\n", + " for i in range(1, n):\n", + " if nums[i] == 0 and nums[i-1] == 0:\n", + " return True\n", + " return False\n", + " mp = {}\n", + " mp[0] = 0\n", + " sum = 0\n", + " for i in range(n):\n", + " sum = sum+nums[i]\n", + " sum = sum%k\n", + " if sum not in mp:\n", + " mp[sum] = i+1\n", + " elif (i+1-mp[sum])>= 2:\n", + " return True\n", + " return False\n", + "c = input(\"请输入需要判断的数组 \" ).split(',')\n", + "k = input(\"请输入整数 \" )\n", + "CheckSum(c,k)" + ] + }, + { + "cell_type": "markdown", + "id": "99057af2", + "metadata": {}, + "source": [ + "11. 确定字符串是否包含唯一字符\n", + "实现一个算法:识别一个字符串中,是否包含唯一的字符。\n", + "\n", + "如果字符串中的字符都是唯一的,则返回 True,如 '123';如果字符串中的字符有重复,则返回 False,如 '1223'。\n", + "\n", + "样例1:\n", + "\n", + "输入:123\n", + "输出:True\n", + "样例2:\n", + "\n", + "输入:1223\n", + "输出:False" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "95dca010", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入需要判断的字符串: 15864\n", + "True\n" + ] + } + ], + "source": [ + "a = input(\"请输入需要判断的字符串: \")\n", + "if len(set(a)) == len(a):\n", + " print('True')\n", + "else:\n", + " print('False')" + ] + }, + { + "cell_type": "markdown", + "id": "8a04fb04", + "metadata": {}, + "source": [ + "12. 能够拼成多少个单词\n", + "给出一个由小写字母组成的字符串 s,使用 s 中的字符来拼凑单词 'balloon'(气球)。字符串 s 中的每个字符最多只能被使用一次,求出 s 中的字符最多可以拼凑出多少个单词 'balloon'。\n", + "\n", + "例如:\n", + "\n", + "字符串 'nlaebolko' 中的字符最多可以拼凑出1个 'balloon';\n", + "字符串 'loonbalxballpoon' 中的字符最多可以拼凑出2个 'balloon';\n", + "字符串 'ballopq' 中的字符最多可以拼凑出0个 'balloon'。\n", + "输入与输出\n", + "\n", + "输入: 共一行,一个字符串。\n", + "输出: 共一行,一个整数,表示能拼凑出单词 \"balloon\"的总个数。\n", + "样例1:\n", + "\n", + "输入: \n", + "nlaebolko\n", + "\n", + "输出: \n", + "1\n", + "样例2:\n", + "\n", + "输入: \n", + "loonbalxballpoon\n", + "\n", + "输出: \n", + "2\n", + "样例3:\n", + "\n", + "输入: \n", + "ballopq\n", + "\n", + "输出: \n", + "0" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "id": "bb89bf6e", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请输入需要判断的字符串: loonbalxballpoon\n" + ] + }, + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def Balloons(string: str):\n", + " a = [0,0,0,0,0]\n", + " b = len(string)\n", + " for i in range(b):\n", + " if string[i] == 'b':\n", + " a[0]=a[0]+1;\n", + " elif string[i] == 'a':\n", + " a[1]=a[1]+1;\n", + " elif string[i] == 'l':\n", + " a[2]=a[2]+1;\n", + " elif string[i] == 'o':\n", + " a[3]=a[3]+1;\n", + " elif string[i] == 'n':\n", + " a[4]=a[4]+1;\n", + " minn = a[0];\n", + " for i in range(5):\n", + " minn = min(a[i], minn);\n", + " return minn;\n", + "c = input(\"请输入需要判断的字符串: \")\n", + "Balloons(c)" + ] + }, + { + "cell_type": "markdown", + "id": "23c5ad62", + "metadata": {}, + "source": [ + "13. 生成激活码\n", + "做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?\n", + "\n", + "需要考虑什么是激活码?有什么特性?例如KR603guyVvR是一个激活码" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "b3bb51dc", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y3kzizQYJqG\n", + "P0FwamviJXT\n", + "RCOe5EegDW6\n", + "2vmXG8DYk3C\n", + "GhOrar5iWMT\n", + "Hjcxzx7nHiS\n", + "qwrF2Bf6spW\n", + "4Ft4tNhrd8z\n", + "XhqsViTKZ6X\n", + "aQNrW9rDnP3\n", + "fA4Ymw4V9yt\n", + "UOqP3Xuwi4P\n", + "3UrWz4ubOSQ\n", + "OBCmDjqHBk2\n", + "HabAWJJjkU1\n", + "iP5752BmLos\n", + "XnlufffsXeL\n", + "0QrpBilYaW9\n", + "fmx4ca8tjSn\n", + "UTCLpXbm2V7\n", + "FGkBAwVhh8n\n", + "JqnDKsvAZG9\n", + "JtVlpXwUATl\n", + "O5fKbEjn8Yr\n", + "9WLw5i4BCE9\n", + "TCA5YBi7id1\n", + "6E7hPN2qQ8l\n", + "7tSiB8NSMha\n", + "36lPDRg1hB9\n", + "OiHc1A05ltJ\n", + "E0Vw7DAGPnj\n", + "5Spg5IKPugo\n", + "39LCifBnYAH\n", + "Ua5Xxwb7hpR\n", + "5bGcVE5OlDz\n", + "1enEhg5D2St\n", + "f1UGcdudRPm\n", + "ob46BubN020\n", + "00zI7vXw6fm\n", + "rFBDhCAOk7g\n", + "OqoMA6YrhzH\n", + "TVenLUtcSQq\n", + "Co3cyJ8MYe6\n", + "NqbSR1o6gbo\n", + "5Vc3LYpKyW7\n", + "MJCyDfZaH7q\n", + "wZRfYSZMEA9\n", + "cMyBKUCWJXc\n", + "DJ77V7A2q4S\n", + "ye1MQZN5LJL\n", + "mucSJ1P0lXk\n", + "xnqmPclkiwE\n", + "RW8zxDAUndG\n", + "5nQ2IlYwmlI\n", + "EgaabB6hzvD\n", + "QhmayVxv2Sa\n", + "ob9Z6fADdhO\n", + "BtyQd45bhg7\n", + "HGxSIhOaEih\n", + "lDIE7fB7yy9\n", + "IDFGsJogrqG\n", + "aHVWzei7EQZ\n", + "OFHj9xA0Drr\n", + "X1olEaQBoH1\n", + "FXWICipSFSF\n", + "1hTPqcJonwn\n", + "cceeCvYs28o\n", + "VulQw7XUUpH\n", + "uesChJbyBTy\n", + "cqFihTct3JG\n", + "Myia3FIr3Tw\n", + "316uDAWqbxC\n", + "nYMwvgLF4iv\n", + "fqDtQSdcaaT\n", + "plq2c5cyLZx\n", + "9gSVRbWCjhb\n", + "Yx1JIbnDMFT\n", + "DDVOnfiUJca\n", + "7DI3ZaPQiHr\n", + "UOFk3jLoYmz\n", + "zymwhqLCKLA\n", + "FPktr8MpEww\n", + "AvXBG5NBR9f\n", + "GSkamNkJStI\n", + "p7werD4V2V2\n", + "dVEoj3r8yyF\n", + "455CAlgUf8L\n", + "iPBKmgToL6K\n", + "jPgjfHOsLkb\n", + "3gwe7einNII\n", + "BcVGsilXN3E\n", + "VZJnduVtolZ\n", + "5y45XqHUpO2\n", + "iJd3Mn24Mji\n", + "RxoZZ6peUF8\n", + "OWnIzVvE7D7\n", + "CRa9YxyW3Qh\n", + "NDCe2600EAf\n", + "tfcdHI0XfgJ\n", + "35d9y6djSLY\n", + "lcbezw0SNYr\n", + "QskjgAIWiA0\n", + "aX3YBosW4MF\n", + "4OpjjKVskBP\n", + "Ugch5bDGdLe\n", + "srElFK5J0D8\n", + "uACwNTmXjP3\n", + "0RGM375yU1W\n", + "tVrfCEeH8Rz\n", + "ybfjb9gl4bL\n", + "bvvmKlycDMM\n", + "r0JmJ6ojWak\n", + "dP8mPiGovFm\n", + "kIoms5cFEum\n", + "E7yQdENUdUt\n", + "KaMAC0nuy4H\n", + "8126fOAHELq\n", + "RoTNbKNztSq\n", + "i535YuZHPz3\n", + "dvuM7mofi3A\n", + "2BvxRvlLJhM\n", + "yHHj4YTOsLs\n", + "OUAJvY5G1pf\n", + "FIP1kiQSCI3\n", + "WR0bsXenTdp\n", + "UJvUmxiQDyZ\n", + "dKzdfRnrtbb\n", + "lejd6sqDpQX\n", + "dVoNZso12ry\n", + "F5or5f8MpLQ\n", + "mkIaqajJu5y\n", + "x8HtHlCc60n\n", + "vUPhQAH4OSY\n", + "mtjaJ0y32Cy\n", + "LALkFUs83dt\n", + "VwYI64Glgoc\n", + "fKhHCUR2kwi\n", + "JlQ1bmRka5B\n", + "1VZHAbcEr5I\n", + "CwjPsS8GBbs\n", + "6f96lCPmQhT\n", + "0AptrGtzrzZ\n", + "avkbM4FyLt9\n", + "LY390lIV0gY\n", + "6rTO0TQUMI5\n", + "OLvpVVAjBhU\n", + "DaA4XvnTyEr\n", + "QECwNFy4Mf7\n", + "szB1i8EYXqU\n", + "LgRVnWmH0eQ\n", + "Gbj0PDsb9tT\n", + "gUutTrTmul2\n", + "wn2y3T4HGaH\n", + "70uwaRkCJ2k\n", + "4vvs5MgmsKc\n", + "EBcVsBnnlbs\n", + "O9NCENxJwoN\n", + "EJXOH8hKHRG\n", + "LZNvya3RQiY\n", + "kE74AuxKnHr\n", + "kEBcctmwIBl\n", + "chjg0dd2EW9\n", + "LiWLJZi9mUc\n", + "RZSz6jUllBS\n", + "cB0u0cNo2c5\n", + "UEFdZiqUL8h\n", + "h4iD4nCDZdL\n", + "MrkhRUMiBdk\n", + "9yFhQ5YjFJY\n", + "0aRwvvSUnKb\n", + "AbfocNzyZSs\n", + "QMph6J0BrlI\n", + "1bTJzSIsI8M\n", + "Xr2ezBIEgWm\n", + "hdfz1il02Vg\n", + "pKIqD8B2NZ0\n", + "A7kjVq3zRcj\n", + "WuAHfxfaMXl\n", + "vNdLLYiOnPY\n", + "fXvQoI5wMbZ\n", + "wSyA4dht9zP\n", + "A8Z6GkAt06W\n", + "geuREg5tkNO\n", + "bKO7yUefckP\n", + "uq6cfhoMlB6\n", + "7GRsfNrHOIx\n", + "XgiZNJBfOm1\n", + "0T2G7NgPa8t\n", + "N9WorapbUTd\n", + "sRaSXBD1JkL\n", + "XJQ6CFV8RqQ\n", + "O50DGcQRmTx\n", + "hiPVIpycif5\n", + "MuoqEfrHXqx\n", + "uF42cu0ahIh\n", + "yJvLGgUxbRn\n", + "b801TJzQob3\n", + "fiWCnHxq21i\n", + "GiCCHp1lBCW\n", + "aLeUgXuukUN\n" + ] + } + ], + "source": [ + "import random\n", + "list=[]\n", + "for x in range(65,91):\n", + " a=str(chr(x)) \n", + " list.append(a)\n", + "for x in range(97,123):\n", + " a=str(chr(x)) \n", + " list.append(a) \n", + "#生成10个数字\n", + "for x in range(10):\n", + " list.append(str(x))\n", + "'''\n", + "def gen_code():\n", + " a=random.sample(list,16)\n", + " print a\n", + "'''\n", + "def gen_code():\n", + " s=''\n", + " for x in range(11):\n", + " a=random.choice(list)\n", + " s=s+a\n", + " print(s)\n", + "\n", + "#生成200个激活码\n", + "for x in range(200):\n", + " gen_code()" + ] + }, + { + "cell_type": "markdown", + "id": "a7770aed", + "metadata": {}, + "source": [ + "14. 遍历目录\n", + "需要把某个目录下面所有的某种类型的文件找到。 例如把c:下面所有的.dll文件找到。需要注意的是,需要递归到每一个目录去查找。" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "7113a03d", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1: D:\\machine learning\\machinelearning_notebook\\studing1\n", + "2: ['.ipynb_checkpoints']\n", + "3: ['example01.py', 'homewokr-python.ipynb']\n", + "1: D:\\machine learning\\machinelearning_notebook\\studing1\\.ipynb_checkpoints\n", + "2: []\n", + "3: ['homewokr-python-checkpoint.ipynb']\n", + "['D:\\\\machine learning\\\\machinelearning_notebook\\\\studing1\\\\example01.py', 'D:\\\\machine learning\\\\machinelearning_notebook\\\\studing1\\\\homewokr-python.ipynb', 'D:\\\\machine learning\\\\machinelearning_notebook\\\\studing1\\\\.ipynb_checkpoints\\\\homewokr-python-checkpoint.ipynb']\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "def all_path(dirname):\n", + "\n", + " result = []#所有的文件\n", + "\n", + " for maindir, subdir, file_name_list in os.walk(dirname):\n", + "\n", + " print(\"1:\",maindir) \n", + " print(\"2:\",subdir) \n", + " print(\"3:\",file_name_list)\n", + "\n", + " for filename in file_name_list:\n", + " apath = os.path.join(maindir, filename)\n", + " result.append(apath)\n", + "\n", + " return result\n", + "\n", + "print(all_path(\"D:\\machine learning\\machinelearning_notebook\\studing1\"))" + ] + }, + { + "cell_type": "markdown", + "id": "a44892a9", + "metadata": {}, + "source": [ + "15. 统计代码行数\n", + "你有个目录,里面是程序(假如是C或者是Python),统计一下你写过多少行代码。包括空行和注释,但是要分别(例如C程序多少行,Python程序多少行,等等)列出来。" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "a7906e49", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "代码总行数为: 60\n", + "空行总行数为: 9\n", + "注释行总行数为: 0\n" + ] + } + ], + "source": [ + "\n", + "import os\n", + "#定义代码所在的目录\n", + "base_path = 'D:\\machine learning\\machinelearning_notebook\\studing1'\n", + "\n", + "#在指定目录下统计所有的py文件,以列表形式返回\n", + "def collect_files(dir):\n", + " filelist = []\n", + " for parent,dirnames,filenames in os.walk(dir):\n", + " for filename in filenames:\n", + " if filename.endswith('.py'):\n", + " #将文件名和目录名拼成绝对路径,添加到列表里\n", + " filelist.append(os.path.join(parent,filename))\n", + " return filelist\n", + "\n", + "#计算单个文件内的代码行数\n", + "def calc_linenum(file):\n", + " with open(file,encoding='UTF-8') as fp:\n", + " content_list = fp.readlines()\n", + " code_num = 0 #当前文件代码行数计数变量\n", + " blank_num = 0 #当前文件空行数计数变量\n", + " annotate_num =0 #当前文件注释行数计数变量\n", + " for content in content_list:\n", + " content = content.strip()\n", + " # 统计空行\n", + " if content == '':\n", + " blank_num += 1\n", + " # 统计注释行\n", + " elif content.startswith('#'):\n", + " annotate_num += 1\n", + " # 统计代码行\n", + " else:\n", + " code_num += 1\n", + " # 返回代码行数,空行数,注释行数\n", + " return code_num,blank_num,annotate_num\n", + "\n", + "if __name__ == '__main__':\n", + " files = collect_files(base_path)\n", + " total_code_num = 0 #统计文件代码行数计数变量\n", + " total_blank_num = 0 #统计文件空行数计数变量\n", + " total_annotate_num = 0 #统计文件注释行数计数变量\n", + " for f in files:\n", + " code_num, blank_num, annotate_num = calc_linenum(f)\n", + " total_code_num += code_num\n", + " total_blank_num += blank_num\n", + " total_annotate_num += annotate_num\n", + "\n", + " print(u'代码总行数为: %s' % total_code_num)\n", + " print(u'空行总行数为: %s' % total_blank_num)\n", + " print(u'注释行总行数为: %s' % total_annotate_num)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/homework_02_numpy_matplotlib.ipynb b/homework_02_numpy_matplotlib.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..ca88d99f1680f2c99cd46048a8251554a6705545 --- /dev/null +++ b/homework_02_numpy_matplotlib.ipynb @@ -0,0 +1,810 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e5927991", + "metadata": {}, + "source": [ + "学号:2021100204\n", + "姓名:曾延" + ] + }, + { + "cell_type": "markdown", + "id": "cd1209f9", + "metadata": {}, + "source": [ + "1.1 对于一个存在在数组,如何添加一个用0填充的边界?\n", + "例如对一个二维矩阵\n", + "\n", + "10, 34, 54, 23\n", + "31, 87, 53, 68\n", + "98, 49, 25, 11\n", + "84, 32, 67, 88\n", + "变换成\n", + "\n", + " 0, 0, 0, 0, 0, 0\n", + " 0, 10, 34, 54, 23, 0\n", + " 0, 31, 87, 53, 68, 0\n", + " 0, 98, 49, 25, 11, 0\n", + " 0, 84, 32, 67, 88, 0\n", + " 0, 0, 0, 0, 0, 0" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "3941dfad", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[10 34 54 23]\n", + " [31 87 53 68]\n", + " [98 49 25 11]\n", + " [84 32 67 88]]\n", + "[[ 0. 0. 0. 0. 0. 0.]\n", + " [ 0. 10. 34. 54. 23. 0.]\n", + " [ 0. 31. 87. 53. 68. 0.]\n", + " [ 0. 98. 49. 25. 11. 0.]\n", + " [ 0. 84. 32. 67. 88. 0.]\n", + " [ 0. 0. 0. 0. 0. 0.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "a = np.array([[10,34,54,23],\\\n", + " [31,87,53,68],\\\n", + " [98,49,25,11],\\\n", + " [84,32,67,88]])\n", + "print(a)\n", + "b = np.shape(a)\n", + "#print(b)\n", + "c = np.zeros((6,6))\n", + "#print(c)\n", + "c[1:5,1:5] = a\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "id": "2953359f", + "metadata": {}, + "source": [ + "1.2 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f7ec1d8d", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0 0 0 0 0]\n", + " [1 0 0 0 0]\n", + " [0 2 0 0 0]\n", + " [0 0 3 0 0]\n", + " [0 0 0 4 0]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "a = np.diag([1,2,3,4], k=-1)\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "id": "7cc7be45", + "metadata": {}, + "source": [ + "1.3 创建一个8x8 的矩阵,并且设置成国际象棋棋盘样式(黑可以用0, 白可以用1)" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "id": "9591b343", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "国际象棋棋盘样式(0表示黑, 1表示白)\n", + "[[1. 0. 1. 0. 1. 0. 1. 0.]\n", + " [0. 1. 0. 1. 0. 1. 0. 1.]\n", + " [1. 0. 1. 0. 1. 0. 1. 0.]\n", + " [0. 1. 0. 1. 0. 1. 0. 1.]\n", + " [1. 0. 1. 0. 1. 0. 1. 0.]\n", + " [0. 1. 0. 1. 0. 1. 0. 1.]\n", + " [1. 0. 1. 0. 1. 0. 1. 0.]\n", + " [0. 1. 0. 1. 0. 1. 0. 1.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "a = np.zeros((8,8))\n", + "a\n", + "for i in range(8):\n", + " for j in range(8):\n", + " if (-1)**(i+j)>0:\n", + " a[i,j]=1\n", + "print(\"国际象棋棋盘样式(0表示黑, 1表示白)\")\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "id": "722a7360", + "metadata": {}, + "source": [ + "1.4 求解线性方程组\n", + "给定一个方程组,如何求出其的方程解。有多种方法,分析各种方法的优缺点(最简单的方式是消元方)。\n", + "\n", + "例如\n", + "\n", + "3x + 4y + 2z = 10\n", + "5x + 3y + 4z = 14\n", + "8x + 2y + 7z = 20\n", + "编程写出求解的程序" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "9677189e", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6.],\n", + " [ 0.],\n", + " [-4.]])" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "a = np.array([[3,4,2],[5,3,4],[8,2,7]])\n", + "#print(a)\n", + "b = np.array([[10],[14],[20]])\n", + "#print(b)\n", + "c = np.linalg.inv(a)\n", + "#print(c)\n", + "#a.shape\n", + "np.dot(c, b)" + ] + }, + { + "cell_type": "markdown", + "id": "e22b09f2", + "metadata": {}, + "source": [ + "1.5 翻转一个数组(第一个元素变成最后一个)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "c4df84ad", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "翻转后的数组: [[88 67 32 84]\n", + " [11 25 49 98]\n", + " [98 49 25 11]\n", + " [84 32 67 88]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "a = np.array([[10,34,54,23],\\\n", + " [31,87,53,68],\\\n", + " [98,49,25,11],\\\n", + " [84,32,67,88]])\n", + "for i in range(4):\n", + " for j in range(4):\n", + " a[i,j]=a[3-i,3-j]\n", + "print(\"翻转后的数组:\",a)" + ] + }, + { + "cell_type": "markdown", + "id": "2cf38521", + "metadata": {}, + "source": [ + "1.6 产生一个10x10大小的随机数组,并且找出最大和最小值" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "c0556cd7", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.20350372 2.06473564 -1.06802034 -0.28286087 -1.57128987 0.79740774\n", + " 0.28199015 0.16268785 -0.29150064 -1.1821662 ]\n", + " [-0.16864447 1.490153 -0.89699502 1.6904879 1.27681944 -0.31615288\n", + " 1.34265123 -0.85239028 -0.41947129 0.23917748]\n", + " [-1.65537239 0.69647722 -0.2810413 -0.06412286 -1.51891824 0.01433117\n", + " -1.79122658 0.73706222 -0.13897824 0.11257307]\n", + " [ 0.52443681 0.86324995 -0.45999741 -0.71315841 0.82056634 0.11133349\n", + " -0.47798407 0.5701645 0.45544361 0.19218825]\n", + " [-2.01339597 -0.3324441 -0.62437632 -0.47611825 0.14217562 -0.79754976\n", + " -0.05036679 0.60541843 0.61316935 -0.1916818 ]\n", + " [-1.23988413 1.19050957 1.29802403 2.16707672 1.15225346 -1.06246352\n", + " 0.83655653 -0.50517878 -0.90418293 -1.15985027]\n", + " [ 0.51310362 0.13908421 0.49700705 -0.11607198 0.52832443 0.68643355\n", + " -0.13451339 -0.92426474 -2.95127614 0.6098658 ]\n", + " [-0.27735159 -1.94592682 1.31970682 0.76034711 0.02184816 -1.27433982\n", + " 1.39070956 1.4041426 -1.20675935 -2.55012788]\n", + " [ 0.92061716 1.5117966 0.86459958 1.06330231 -1.22320671 0.09885143\n", + " 1.14729136 -1.70526258 -0.26628212 -0.38941063]\n", + " [ 1.68545977 -1.66387934 -0.21604393 -0.36371669 -0.19457283 -0.5686105\n", + " -0.36311426 0.54157042 1.23048197 0.61227593]]\n", + "2.167076721026069 (array([5], dtype=int64), array([3], dtype=int64)) -2.951276141988252 (array([6], dtype=int64), array([8], dtype=int64))\n" + ] + } + ], + "source": [ + "from numpy import random\n", + "a = random.randn(10,10)\n", + "print(a)\n", + "maxnum = a.max()\n", + "minnum = a.min()\n", + "maxlocal = np.where(a==a.max())\n", + "minlocal = np.where(a==a.min())\n", + "print(maxnum,maxlocal,minnum,minlocal)\n", + "#print(\"数组的最大值%d的\")" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "4c24ae13", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[10 34 54 23]\n", + " [31 87 53 68]\n", + " [98 49 25 11]\n", + " [84 32 67 88]]\n" + ] + }, + { + "data": { + "text/plain": [ + "(98, 10)" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from numpy import random\n", + "a = np.array([[10,34,54,23],\\\n", + " [31,87,53,68],\\\n", + " [98,49,25,11],\\\n", + " [84,32,67,88]])\n", + "print(a)\n", + "def extemum(jizhi):\n", + " b = a[0,0]\n", + " c = a[0,0]\n", + " for i in range(4):\n", + " for j in range(4):\n", + " if jizhi[i,j]>=b:\n", + " b=a[i,j]\n", + " if jizhi[i,j]<=c:\n", + " c=jizhi[i,j]\n", + " return b,c\n", + "extemum(a)" + ] + }, + { + "cell_type": "markdown", + "id": "92bdecb9", + "metadata": {}, + "source": [ + "2.1 画出一个二次函数,同时画出梯形法求积分时的各个梯形\n", + "例如: matplot_ex1" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "74c86450", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0f7dfb32c4244f03a291868a2b668494", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=15, description='laddernum', max=30, min=1), Output()), _dom_classes=('w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def Quadratic(x): # 定义二次函数\n", + " return 2*x**2 +3*x +4\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_ladder(laddernum):\n", + " x = np.linspace(-5, 5, num=100)\n", + " y = Quadratic(x)\n", + " plt.plot(x,y,'r-') # 先画出原函数的图形\n", + " \n", + " a = np.linspace(-5, 5, num=laddernum)\n", + " for i in range(laddernum):\n", + " plt.plot([a[i],a[i]],[0,Quadratic(a[i])],color=\"black\") # 画梯形的上底和下底\n", + "\n", + " ladders = [];\n", + " for i in range(laddernum):\n", + " ladders.append([a[i],Quadratic(a[i])]) # 因为梯形的腰是呈一条直线,所以这里存下各点坐标\n", + " \n", + " npladders = np.array(ladders)\n", + " plt.plot(npladders[:,0],npladders[:,1]); # 把梯形的斜腰连起来\n", + "\n", + "interact(plot_ladder, laddernum=(1, 30, 1)) # 滑动模块在 1 和 30 之间变化,变化区间是 1" + ] + }, + { + "cell_type": "markdown", + "id": "360d84c6", + "metadata": {}, + "source": [ + "2.2 绘制函数 f(x)=sin2(x−2)e−x2\n", + "需要画出标题,x,y轴。x的取值范围是[0, 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "7938c1dd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "x1 = np.arange(0.0, 2.0, 0.1)\n", + "\n", + "def f(x):\n", + " y=x*x\n", + " return np.sin(x-2)*np.sin(x-2)*np.exp(-y) \n", + "\n", + "#plt.figure(1)\n", + "#plt.subplot(2,1,1)\n", + "plt.plot(x1, f(x1), 'g-')\n", + "plt.xlabel(\"X\")\n", + "plt.ylabel(\"Y\")\n", + "plt.show\n" + ] + }, + { + "cell_type": "markdown", + "id": "e05d3efc", + "metadata": {}, + "source": [ + "2.3 模拟一个醉汉在二维空间上的随机漫步。\n", + "例如1维的情况是: random_walk x轴表示步子,y轴表示游走的位置\n", + "\n", + "如果对于二维,则x,y分别是游走的位置。当然也可以画成三维,其中z比表示步子。" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "27ca479c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import math\n", + "\n", + "# 目前的位置\n", + "cur = [0, 0]\n", + "# 总步数\n", + "allstep = 1000\n", + "# 用于存储移动后的每一次位置\n", + "movex, movey = [0], [0]\n", + "while (allstep > 0):\n", + " angle = np.random.randint(360)\n", + " # 将随机角度转化为对应的弧度制\n", + " index = np.deg2rad(angle)\n", + " # 随机移动的x轴与y轴坐标\n", + " x = math.cos(index)\n", + " y = math.sin(index)\n", + " # 移动当前位置\n", + " cur[0] = cur[0] + x\n", + " cur[1] = cur[1] + y\n", + " # 保存目前的位置信息,方便绘制图像\n", + " movex.append(cur[0])\n", + " movey.append(cur[1])\n", + " allstep -= 1\n", + "\n", + "plt.title('random walk')\n", + "# 初始点\n", + "plt.scatter(0, 0, c='r')\n", + "plt.plot(movex, movey)\n", + "# 结束点\n", + "plt.scatter(cur[0], cur[1], c='gold')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "4f3cdd51", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Argument Z must be 2-dimensional.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_18568/2125968188.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[1;31m#作图\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 17\u001b[1;33m \u001b[0max3\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot_surface\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mz1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'rainbow'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 18\u001b[0m \u001b[1;31m#ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow) #等高线图,要设置offset,为Z的最小值\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\_api\\deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*inner_args, **inner_kwargs)\u001b[0m\n\u001b[0;32m 429\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mdeprecation_addendum\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 430\u001b[0m **kwargs)\n\u001b[1;32m--> 431\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minner_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0minner_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 432\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 433\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\mpl_toolkits\\mplot3d\\axes3d.py\u001b[0m in \u001b[0;36mplot_surface\u001b[1;34m(self, X, Y, Z, norm, vmin, vmax, lightsource, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1656\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1657\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mZ\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1658\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Argument Z must be 2-dimensional.\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1659\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0many\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misnan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1660\u001b[0m _api.warn_external(\n", + "\u001b[1;31mValueError\u001b[0m: Argument Z must be 2-dimensional." + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPgAAADzCAYAAACrFtvIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABcyElEQVR4nO19aXhb5Zn2fWQttrzJltc4ju14i3fH2QgzQIeWshRIaEtLC0MZyrRAoaXfDNPyzXSGtgyFi37ttIVuFy18DGVaSMpWAgxfodsEAgmJ93jfN9laLFn78n4/nPflSNZyjqQjLzn3deUC29LRkXTu8z7v8zz3/XCEEMiQIWNrQrHeJyBDhgzpIBNchowtDJngMmRsYcgElyFjC0MmuAwZWxjKGH+XU+wyZEgPTqoDyyu4DBlbGDLBZcjYwpAJLkPGFoZMcBkytjBkgsuQsYUhE1yGjC0MmeAyZGxhyASXIWMLQya4DBlbGDLBZcjYwpAJLkPGFoZMcBkytjBkgsuQsYUhE1yGjC0MmeAyZGxhxNKDy5AAhBD4/X5wHAeFQgGOk0wOLOM8h0zwFCMQCMDr9cLpdAIAlpeXkZ+fD41GA6VSCY7jZMLLSBpkgqcIdNWenp6Gw+EAIQRZWVmYmpqCRqOBz+cDACgUCqhUKqhUKqSlpcmEl5EQuBiDD2TLpiSAEAKv1wu/34/R0VFMTU2hvLwcLpcL8/PzyMjIgF6vR15eHnJycthzaAivVCoZ4RUKOW2yBSHZHVxewSVGIBCAx+NBIBDAxMQE5ubmUFpaivLycnAcB4/Hg/LycrjdbhgMBgwPD0OpVEKn00Gn0yEnJwcejwcejwcAZMLLEAWZ4BKBhuRerxcejwc9PT3Izs5GbW0tVlZW2OM4joNSqURubi6KiooAAG63GxaLBQsLCxgaGoJarWaEz87OlgkvQzBkgksAQghbtY1GIwYHB1FfX4+CggIYDAaEbotCf9ZoNCguLkZxcTGAVcKbzWbMzc1hcHAQGo0GeXl50Ol0yMzMXEN4lUoFpVIpE16GTPBkg4bkfr8fIyMjsNls2Lt3LzQaDYDVFZsSmu6zY0Gj0aCkpAQlJSUAAKfTCYvFgunpaaysrCA9PZ0RXqvVwu12Y3p6GiqVCvn5+YzwNEsv4/yBTPAkgRACn88Hn88Hp9OJnp4eFBYWYs+ePWFJRYnOJ7xQZGRkICMjA6WlpSCEwOl0wmw2Y3JyEisrK9BqtSCEIDc3FzqdDm63G263G4SQoHBeJvzWh0zwJIDWtgOBAObn5zE2NoampibodLo1jw1H6ERGOHMcB61WC61Wi7KyMhBC4HA4MDIygsXFRczPzyMzM5Ot8BzHwe/3s+enpaUFhfQy4bcWZIInAH4ize/34+zZs/D7/di/fz9UKlXY54QSPNmE4jgOmZmZyM3NRXp6OoqKimC322E2mzEyMgKXyxVE+PT0dLhcLvZ8mfBbCzLB4wQNjTmOw8rKCnp6erBjxw6UlZVFJUU4gieygscCx3HIyspCVlYWysvLQQjBysoKzGYzhoaG4Ha7kZWVxQiv0Whkwm8hyASPAzQkf/vtt1FeXo7Z2Vm0trYiKysr5nNTTfBwr5+dnY3s7Gzs2LEDgUCAEX5gYAAejwfZ2dlBIT29kQEy4TcbZIKLAD8k9/l8cLlcWFlZwf79+5GWliboGKkmdCwoFArk5OQgJycHFRUVCAQCsNlsMJvN6O/vh8/nQ05ODvLy8pCbmwuO43D8+HF0dHQAAMvOy4TfmJAJLhD82rbFYkF/fz9UKhUaGxtFXdTrvYLHgkKhQG5uLnJzc1FZWYlAIIDl5WVWlvP7/XC5XDCZTIzwXq+XfQY0S69UKmWl3AaATHAB4Lebjo2NwWg0oqOjA52dnQgEAoJXb2BtUm2jETwUCoUCeXl5yMvLQ1VVFfx+P959913YbDZMTk6ychxd4f1+P3w+HwghUCgUQSG9TPjUQyZ4FPBr2263Gz09PcjNzcW+ffvYxSqWnBud0LFA6+c7d+4EAPj9flgsFlgsFkxMTIAQAp1OFyScoUo52pZL/8mElx4ywSOAH5IvLS1haGgIu3btgl6vZ49RKBRxkXUjh+hikZaWBr1ezz4Xn88Hi8UCk8mEsbExcBwXRHifzwev1wtAJnwqIBM8DOhFGAgEMDQ0BIfDgX379kGtVgc9juM4BAIBUcfe6HvwRKFUKlFQUICCggIAgNfrhcViwdLSEkZGRpCWlhZEeK/XG0R4v9+PzMxMmfBJgkxwHvghucPhQE9PD0pKSrBr166o7aZiQJ9js9lYM8xWIngoVCoVCgsLUVhYCADweDywWCxrpLF5eXnIzs5Gd3c3mpqaWBttqHBGJrw4yAQ/B3676dzcHCYmJtDU1ITc3NyIz1EoFKJXcEIIrFYrRkZGQAiB3W5HVlYWCCHIy8uL2AG3VaBWq1FUVLRGGjs/P4/BwUG4XC7Mzs4iPz8fWVlZ8Hg8cLvdAIKVcrK9lTCc9wQPrW2fPXsWALB//34oldE/HrEruNPpRFdXFxQKBdrb20EIwfj4OOsum5qaCkpS6XQ6URn6zYhQaey7774LjUaD2dlZ2Gw2Jo3Ny8tj0li3283ILdtbRcd5TXBqpXTy5Ens3LkT/f39qKioQFlZmaDniyG4wWDA0NAQampqMD09HaQm02q17ALnJ6lGR0eRlpaGvLw85OfnIzs7e8vruzmOQ2lpKbZt2wbgA2ns1NTUGmlsOC28bH4RjPOW4Pzatt1uR39/v+B2UwohBA8EAhgcHITdbse+fftACMH09HTQMfgITVJ5PB5m9jAwMMBWtPz8fGRmZm7JFYv/noRIY/laeJnwwTjvCM5PpHm9XvT29iIQCGD37t3IyMgQdaxYe3AakhcWFqK+vp55sInJoqvV6qAQll7gExMTWFlZYcqw/Px80ee/2RBJGms2mzE+Pg673b5GKccnPI2YMjMzzxvCn1cE59e2zWYzzp49i9ra2qAVVQyikXNxcRGDg4NobGxEXl7emvMQcoxwoCvatm3bWJKOKsNcLhcTitDmkq0MStbMzExs37496PMIJ431eDyYm5tDXV0dgPPD3uq8IThftz02Ngaz2Yw9e/YgPT0ds7OzcZWqwpGT1s5tNlvE2nmyymKhUlC+UMRgMGBhYYENVtDpdDGThpsdsaSxDocDHMfBYDAwaexWd7vZ2t84gkNyl8uFnp4e5OfnY9++fewLjKdhBVgbortcLnR1dUGv18e0aor0cyLgC0U4joNarYZGo2EhLO0qy8/PR05OzpbP0IdKY41GI+bn5+HxeJg0NicnhznWKhQKuFwuFspvBWnsliY4v7a9uLiI4eFhNDQ0ID8/P+hx8dSzgWByLi0tYWBgIOzxIz0n3M/JhEKhQH5+Pjsf2lVGPwulUhmUod+MF7AYBAIBZGRkoKKiQrA0drObX2xJgodaKdH9abiQGYif4AqFgh3fYrEEuadGwnq2poZ2lVE7Zr47a35+PvLy8qDVajfFBSwGgUAgaJ8tRBrLV8ptRsJvOYLzxwQ5HA50d3dj27ZtaGhoiPgFxEtwSu6SkhLs3btX0BdMCU5fM97tQTLAt2Pml6BGR0fhcDiQlZXFCJ+eng5gc7fVxpL2hpPGUsKHk8aGut3QsD49PX3DEH5LEZxf256bm8Pk5CSam5uZbDES4iG40WjE7OwsysvLUVNTI/pcKVE2itgkXAmKJqjOnj0btF+V6nyl/hxCV/BYSEtLC9rixJLGOhwOzMzMoL6+Hvfffz/uvvtuVFdXS/V2BGFLEJy/+uTm5qKvrw8KhUJQuykgTvZJCMHw8DAsFgvKy8uRmZkp6lw3wl1dCMJ5t1mtVhiNRjidTpw8eRK5ubnIz89Hbm5uUjL0QgdBxItAIJDQecaSxvr9figUCpw+fRpDQ0Oik5gcx/0SwNUADISQ5jB/5wD8AMBVABwAbiGEvB/tmJue4LS2bbfbMT4+Do/Hg8rKStbqKARCw2S3242uri7odDrs3buX3cUTwUZZwWNBoVCw2WgWiwVtbW1YXl5mFzf9O83Qx1NTplsXqeD3+8PmYOJFaNfhwsICDAYDnn32WZw+fRo33ngjLrvsMvzDP/wDsrOzhRzySQCPAngqwt+vBFB77t8BAD8599/I5yjsrWxMhIbky8vLOHjwILRarajjCAnRjUYjzp49y2aMAYmTM97JJusJes5KpTJoNaMyUKoKU6vVbP+elZUlaGWmOQmpINZeSyxo1PPtb38bx48fx29+8xucOHEiZuKVghDyJ47jKqM85BCAp8jqBfMOx3E6juNKCSFzkZ6wKQnOr217PB709vZCo9EgNzdXNLmB6AQnhGB0dBRGo5E1xlAkK0G2mQgeCaEyUJfLtaZnnBI+IyMjLJGlXsHF7sHFwu/3sxuIx+NBWVkZPvGJTyTzJcoATPF+nj73u61DcH5t22QyYWBgAHV1dcjNzUVnZ2dcx4xEcI/Hg66uLuTk5GDv3r1rLg5aJosHVquVOZlsJgjdJ6enp6O0tJSJRGjP+PDwMFwuV1CGnq5wqVjBU0Vwid5HuINGXR02DcH5te1AIIDR0VEsLy+zVdXv98e9moYjqslkQn9/P+rq6ljdOBTxhNeEELjdbgwODiI9PR0Wi4WpnqhgZCMn4uJJhIXrGbfZbDCZTOjr64PP50Nubi4yMzMljWZSQXCVSgVCiFTvYxpAOe/n7QBmoz1hUxA8tN20u7sbBQUFQbXnRFZThULBxBk0JF9aWloTkod7npgv0uv1oqenB4QQdHR0MENHs9kMAGx1y87OZqtbMpNCyUKiNyCO49iwhcrKSvj9flitViwsLMBqteLkyZOsHp2bm5u0fXMqV3BAklX8JQB3cRz3a6wm15aj7b+BTUBwfki+sLCA0dHRsAqtRD5Mupf2eDzo7u5GVlYWs0YW8jwhsNls6O7uRlVVFZxOJ9sWUEXT9u3bsX37dtY+aTKZMDMzg0AgwLLTybzY44UUKxM1tVCpVAgEAqirqwsyaqQttdS3LV6S0jKWVKAEDyW6UHAc918APgSggOO4aQD/BkAFAISQnwI4htUS2TBWy2R/F+uYG5bgoSE5FQdEm9wZLxQKBex2O9577z3U1tayRFEsCA3RZ2dnMT4+zgwlxsbGIh6D3z5ZVVXFaq30YlepVKx/XGh2OpmQslZNk2zhTC9MJhOzcaKuLtTGSej5SJ1Fp8R2OBxxJXsJIZ+J8XcC4EtijrkhCc7XbdvtdvT09LAVLtkXFyEEBoMBRqMRBw4cEGWaEKu8FggEWBdYaNMN/31Eu0mEXuyh2Wk6GTQ/Pz/qdiJZkJLgkZJsarWatdQCq6YXJpOJmTzQz4Bm6KMdPxUr+PLysugGKKmw4QjOr23PzMxgenoaLS0tQhsFRIGG5AqFAsXFxaIdUaKt4NTNpbi4OGofvFiyhGanQ9tJaevkevW3JwKhZbKMjAyUlZWxllq73Q6TyYTBwUG43e6IOYxUEZzedDYCNgzBabvp/Pw8CgsL0dfXB6VSiQMHDkgSVlksFvT29qK2thYqlQpzc1FzFWERieBUOhouVyD0GEJfn99OSsURZrMZ8/Pz7GJLpLssFOuxgkcD3+SBttTycxh+v5/d9FK1B5cJHgIaknu9XkxMTGB8fBzV1dUsJBN7rGgXCSEEExMTWFhYwO7du6HVamGxWOIiWWiITjPwJpNJkHSU/7xkgC+OoN7hKpWKdZclQw4q9R480WOH5jCoQMRsNsPhcOD9998PytAnk/CU4LSxZyNg3QlOzQ+p26jD4cCFF14Y1wfEtyIOB6/Xi+7ubmRkZARlyZNh+OD1etHV1YWsrCzs2bNH8IUjZZJMqVSy7jIaIVE7ZqfTyfzb8vPzN0Q5TooQmi8QMZvNaG1tZZZWQ0NDUKlU7KaXqOkF3WLIKzjWtpv29PQgOzsbGRkZcd/90tLSIl4ky8vL6OnpQU1NDXMopUiU4FarFT09Paiurl5zbKHHkBp8OWhoOa6np0dwOW6jr+CxoFKp1kxWMZlMmJ6ehs1mYzbMiUQ5drtdkpxRPFgXgvNr20ajEYODg0zEYTQa4z4ubXbhZ6tpSD4/P89C8nDPi9fRZWVlBb29vWhraxOVOV1vPXikcpzRaGS1Zxru88txUu/BU+1sqtFogpKW/CjH4XCwKIdvehELDofj/Myih9a2R0ZGYLPZRO1Xo4Gu4BS0c0yj0WD//v0RL554CO73+zE8PAy3242//uu/TigRuBHEJqHlOLqyTU1NwWazITMzE/n5+VCpVJt6BY+G0CiHVilMJhOrUlBHl2hz5FZWVmKajKQKKSM430rJ6XSiu7sbxcXFEd1H4wG/XXV5eRm9vb3YuXNnzGSd2JZTh8OBrq4uRoY4hP1BK/hGROjKRktRs7OzzKaI2jEnq/FISjVZvLbYtEpBTRpplSJ0jhx/SKXdbhc8/kpqpITgtLZNCMH8/DzGx8fR2NgInU6X1NehBJ+cnMTMzIzgsFlMyylNzjQ3N0OtVqO/v1/0eYYSfCOs4NHAL0Xl5uZibm4ORUVFMJlMmJycBACWrEukHCdliJ4MpRrfsw1YO0fO4XDgpZdewvT0NFpbW0Udm+O4K7Dq1pIG4HFCyEMhf88F8DSAHVjl7XcJIU/EOq6kBOcn0vx+P86ePYtAIBDTSineUI3jOAwMDCAzMxP79+8XvLIKCdGpVdPy8jJzZ6Ue2vGcZ+ixNwvoKsu/0L1eL6u9Dw4OQqPRsP27mESV1Pv7ZPdT8Lc11JdgZWUFPT09+MMf/oDHH38c3/ve97Br166ox+E4Lg3AYwAuw6pi7D2O414ihPTxHvYlAH2EkGs4jisEMMBx3K8IIZ6o55jYW4wMfrspfdM7duxAWVlZ1C+R7qPFfhlWqxUGgwHl5eWora0V9dxYBKe68Nzc3KAtRbyr72YI0SMhHAlDM9PhElWU8NHKcVKv4FI3uSiVSnzsYx/Da6+9hjvuuAMlJSVRPfJ52A9gmBAyCgDn1GKHAPAJTgBkn/NlywJgAhBzPpUkBOcn0qanpzE7Oyt4cicNs4USnBCCqakpzMzMoKioKK6wPxrJaMdbOF14vNl3AJiZmYHNZkNWVlbcMteNitBWUlqO6+3thc/nY+W40PnnmzlDz79mqUagoqJC6NPDObWEeq09ilW56CyAbACfJoTEvPiSSnD6ZdIVqq+vj2WwhRKWyu2EwOfzobe3F2lpadi/fz/GxsaS1oNNbxyzs7MRy2vxrOB+vx92ux1qtRqlpaVYXFyExWLBqVOnkrKPlRpiSRhO+83ft/Knq0jZSppKgtOoRQSEOLVcDuAMgEsBVAN4g+O4PxNCrNEOnDSC05B8dHSUDfQL11QSC0IJTvXVfAfV0DJZvPD5fMx6ed++fRFvTmIJ7nQ60dnZCZVKhbq6OigUCqSnp8PtdmPXrl1B+9iMjAwW1m6kscCJrrKh1sP86SpGoxEWiwVutzvp7zuVBKdjjEVAiFPL3wF46JxkdJjjuDEAuwC8G+3ASSM4vdhtNhszKIznC4pFcEIIZmZmMDU1tSbsT8TVhcJut6Orqwvl5eXYvn171MeKCdGpK2tjYyNGR0fZ7+nnxt/HUg8zvkKKH9ZupSmh/OkqQ0NDyMzMhN/vZ+87JyeHtZImUo5LlRYcQDytqu8BqOU4rgrADIAbAHw25DGTAD4M4M8cxxUDqAcwihhI6pXS1dUFjuNQVVUV9903GsHpyspxXNiwP5E9MbDqaz0yMiJoGgogLEHGF7dQC6hYZTK+hxkdC0zD2vHxcTZUUK/Xp9z0QepWVa1WC51Ox9631WplDTcAgtppxazIqVKS0f8X09tPCPFxHHcXgNexWib7JSGkl+O428/9/acAvg3gSY7jurEa0n+NELIU69hJJXhzczOT6MWLSKswDckrKioiNhGkpaXB44laNQiLQCAAl8uF6elp7Nu3L2mNG36/Hz09PVAqlUHiFrGhfeiUUNplxjd9oH9PRkdgNKTC0YWCDlOgiVOfzxckFNFoNGz/HsvZJZUhejyVFULIMaxaMvF/91Pe/88C+KjY4yaV4HTSotvtjvsYSqVyzSo8MzODiYmJmMYP8YTobrcbnZ2d4DgOHR0dSbt4HQ4HOjs7w4b6iTa6hHaZ0XZK6lCal5cHr9e7IRRiYhCrGUWpVAZNR6XjqvjOLpFudKkguFqt3nDlz6QSnDs3XTFZK7jf70dfXx8IIYLmjIkN0c1mM/r6+lBfX4/BwcG4zzkU1PChqakpbNmOX0dPtJMttJ2SdldNTEyw1S6eppNI2EhqsoyMDGRkZGDbtm1hb3S0jVSn06XcUXWjIOnZGqVSySyI4wG9QaysrKC7uxvl5eUxm2P4zxVC8HD74qGhoYQvXkIIxsbGsLS0FFVAE0rqZHay0e4qu92O9PR05OTkrNGA6/X6uJNWG7VWHXqjo+42NG/h9Xqh1WqRm5uLnJycpL8HSnCfz7ehkqBJP5NEV/C0tDQsLS1hampKtBebkBDd5/Ohp6cHarU6rOlDvBcYPa5Gowk7BYWPVHay8ZtOqAbcaDSypFVeXh70er1gO+KNtIJHQ+jo37GxMbjdbszOzmJgYICVIaONUhIDvl3TRnFzASRaweMluN/vx8zMDLxeLw4cOCD6ThgrRF9ZWUFXV1fY6aOJZOBpaa2iokLQVNP1EpvwNeDABz3k1I54vWvvUqrJaP98cXExK0PyRyklWo6jBLdYLBvGzQWQaA8eT4hOSULdROIJc6KF6HNzcxgbG4sYFcRLcK/XizNnzqC5uTlIMhgLhDfeZr3EJvHU3jea6aKYY/OrGPxRSnx3m+npaQQCASam0el0gm46G9FwEdggITolX3NzM3w+HxYWFuJ67XAhOh2a4HK5oibqxBKcGix6PB4cPHhQVMY6lnfceiC09s7fw46NjTGHFzp/SwpIuYJH236Fc7cxm81BwyZoZBOpHMcn+EZxcwHWOclGJaRer5eRb3l5OaEhgvznulwudHZ2oqioCLt27YpKKDGacJ/Ph66uLmRmZkKr1YouR/HPY6PqwUP3sLT2PjMzA5fLBavVypptklWOS9UKHguh5TiXywWTyYSJiYmIfQd8R9UtS3CO4wS7o9CQvKysDOXl5eyLTaTdlB+i09bQhoYGQZI9oedN9/FVVVUoLS2F0WiMS4AhVRZdKtDaeyAQACEEubm5MBqNawwbhYa04bBR9eDp6enYtm1bUDnObDajv78fXq8Xubm5QZN4xIboscwezj3mQwD+A6uzypYIIZcIOfa65PPn5+cxOjqKpqamNfvWRLLwdEqo0Omgoc+NtYLTVlb+Pj6ecHuz68EVCgUrSVVWVgbNTxseHt6Qhg/JalXll+P4wyYMBgN+8Ytf4IknnsC2bdtw/PhxQb0b5671qGYPHMfpAPwYwBWEkEmO44QNz0OKCU5ndbnd7ogtoYkQnEoxPR5PzFJVKKIRnO/msnfv3qCQNJ4Qm+M4JpvMzc3dVCQP915DDRtD/dfFZKg3QoguBnQro9FocPvtt4MQgt7eXjzxxBOYmprCpz/96ajPf/fdd4HYZg+fBfBbQsgkABBCDELPL+kheiRQo8LS0tKos7riJTj1JlepVDEtcsIhEsHpQIPs7OywBpHxENzn82FgYAA5OTkYGhqC0+nE9PQ09Hr9hpKGRkIsEobW3kMFI3R1T2QUsFikypKZEIKLLroIt912m6DHz8zMALHNHuoAqDiO+wNWzR5+QAh5SsjxJVnBacKKfqALCwsYHh4WVEqKh+AzMzOYnJxEa2srurq6EjpnPqjAJZozq9jsu9FoxMLCAqqqqrBt2zZwHId33nkHAILKU3q9fo3jyUaA2DA6VDDi9XqZO6vVaoVWq2XJOikhJcH5N3i73S7GySXS4hD6SyWAPViVi2YAeJvjuHcIITH7qyUhOJ+kAwMDcDqdgud6i7l4/H4/+vv74ff7sW/fvoRaBEOTbDRPEMtqSugKTh1i5ubmUFpaGtTtlJaWxsYj0z2d0WjE6OgoVCoV9Hp90nrJE0Wi+2SVSoXi4uKghhPqO2632zE4OMjC+WTe3KSUi/I/E4fDISrJdk6IFMvsYRqriTU7ADvHcX8C0AYgtQSnb1KpVGJlZQWDg4MoLi6OWaKKB/yQf8eOHUmxxKUZ4sHBQdjtdkHSUSEEDwQC6OvrQyAQwN69ezE2NhYxix5annK5XIzsTqcTubm5jADr0fOczIx/aO393XffRUFBwZrae+h0lXgg5QqeiJvLvn37gNhmDy8CeJTjOCUANVZD+O8LOb4kVwidKNLS0pJ073MAWFxcxODgYES1VjxQKBTweDw4deoUdDoddu/eLeiCihWiUzlqUVERKioqRCvI0tPTg/azdHUfHx+HUqlkq3ssPXQyIdXrcOeGKUTSvQt1Z42EVBFczAp+7iYd1eyBENLPcdxrALoABLBaSusRdHwxbyQWCCEsJG9ubk46uQkhGBkZgdlsZt7kkR4n9iL0eDyYm5tDY2Mjs/8VgmhktVqt6O7uZnPXIj1H6LmG+pG73W5GdrvdjpycHEZ4qZDKDrxQ3Xu4YYl6vT7pY4DFIkG7pphmD+d+fgTAI2LPLekreH5+flI6kkIvJOpNnpOTg71790Y8fjx16dnZWczNzaGsrEwUufmvFwraftve3r4mZEtWo4tGo2ENGPxs9eTkJDweD3JycqDVapNq67ReLbZciDtrOHcXmqxLhjpMDBIluJRI+h68qKgIFoslYdMHfucRHf1bW1sbk4DRRgiHgt+nXlVVFRfRQkN0QgiGhoawsrISsdFBiouPn63euXMnRkZG4PP5gsJburpL1UueCMR+9uHcXUwmU9LUYWIQSvCNMjoYkGAF5zguaaYPCoUC09PTmJ6ejuhNHopwI4TDwePxoLOzE/n5+di1axfm5ubisprir8Y+nw+dnZ3Izs6OuYePJ0QXA6VSiaysLJatpjrw6elpAGCrndih91Kt4IkeN1bt3e12Y3l5WVKzB2BjjQ4GUlAmi/f5Xq8XZ8+ejeigGu25serSNCLgTytJZEY47UHu7OxkPeqxnpPKXnR+eFtVVcVq0XTofVZWFlvdYyWvpCR4svbRobV3j8eDkydPYnZ2FmfPnoVWq2XvV2grczTwCR4IBLa2owuwunrE425KEQgEcObMGezYsQPl5eWxn8BDLLHK9PQ0pqam1kQE8RKc4zhYLBbMzs6K0oSvp8AktBa9srISJBzhr+6p7DSTat+sVCqhVqvR0NAAQj4YhUyVjLm5uQk1FlGC8zX+GwWShOjxmj4Aq+N5l5eX0dDQIMgdJRSRiEr74D0eT9immHgITghhoWA0D7ZQhHbNrWfzCl88QZNX/E6zzMxMRniNRrMpVvBQhJo90FHIfLEI7TWIp/YeuiVc72YkPjZMiB4IBDA8PAybzYaioqKEBieEEpXWogsLCyP2wYsluN/vZ8P0ampqRPmRb2S5qFKpDHJ5sdvtMBqNzKkUWK3NJ7s0tV5a8Ei694mJCZYwi1V79/v9kvvRxwvJQnQxK7jb7UZXVxfy8vLQ0dGBwcHBhCSj/OfS6aC7du2K2u8spvmEGkmUlJSwSSVisFFNHkLBX+2oJXNvby8sFgvm5uaYh5ter094L7tR3Fpj1d7poAX+DY6G6B6PZ8N50UsWogslKPUm5ye8EtWE05V4ampKcAZe6ApOE3T0hjE8PByXXDTazxsVSqUS6enpKCkpQU5OTlAfudfrDRLJiF3dU9VKKgZCau96vR4ulwscx8XlqPraa6/hyiuvHEAUs4dz57IPwDtYHRt8ROjxJVvBYxGUEILJyUnMzc2ho6MjKCRPhOB0/0/vuEIz8EIIPjs7i4mJiaAbRrx6cEII3G4329duFtCVNpyHW6jpA50iKmS7tVFW8GgIrb3TG5zFYsH09DSeeuop+Hw+LC8vC0q2+v1+fOlLXwKAKxHB7AEAOI5LA/AwVttZxZ2z2CcIQawkGyWgSqXC/v3713z4iYwB9vv9GBoaQkVFhSgRSizDB9qCG5qgizf7bjAYMDc3h0AgALfbzSaQbKQSSzhEImLoWOBwDq3RMtXrZbiYCLRaLbRaLSwWCxobG7GwsICf/exnuPLKK/GRj3wE3/rWt6I+/91330VNTQ1GRkaimT0AwN0AjgLYJ/YcJWt0ibQCU0+zaEME4/VlM5vNmJmZwbZt20RpculrRjJ86OzshE6nQ3t7e8KGD16vlymlWlpaAAAnT56E1WrFxMQEc0dZj5bLZIJe/EIlsBvFcDHe42u1WjQ1NWHv3r345S9/Kej6nZmZCS0DrzF74DiuDMB1AC7FRiA4ENmhlGqsY00sETsllB/uV1ZWxrXfCme6SG9G0QwfIr3XcHA4HDhz5gzy8/PhdrtZmE4IwY4dO1BRUcGaUGjL5UYzf4gnlA7NVNO20pGREbhcLuTm5kqahU7FXDKFQsEcVwEI+q4Emj38B1ZHBfvjuQFKRnA+aM83DXFj9QaL2YPTAYXAqrZ2YWEh7pZTPlGpJLW1tTXmRFMhK7jJZEJ/fz8aGhqQkZGBiYkJnD59Gi6XC9u2bYPX64VGo2HDCIqLiwGAeZOPjIyI3tdKgWTslUPbSpeXlzEzMwOLxQKHw5F0CWyqBg/yCS4E27dvZ6209FdYa/awF8Cvz30OBQCu4jjORwh5QchrSL7hc7lc6OrqQkFBgWDjB6EEdzqd6OzsxLZt25j1cqItp+TcAEGj0RhVkkohZAWn/fTt7e1Qq9XgOA5arRYqlQrNzc2wWq0YGxtjhg56vZ71TNNheZWVlXC73TCbzRgYGIDX62VzxdZbLpkIqAQ2EAggIyMD27dvjyiBjTc/IfXkT5o/EOvmsm/fPgwNDSGa2QMhpIr+P8dxTwL4nVByAxLtwSnoqhWrBh0KIQSnvueNjY1MH02fGy/B/X4/urq6oFKpsGfPHkGkUSgU8Hq9Yf/GT87xZ48PDQ3B5XKho6MDaWlpyMnJYSN06ESN0dFRtmJTBZhGo0FJSQlKSkpACIHFYmElm4yMDLa6SxnuSpXtpqtsNAmsQqFgdXcxEthUGS6KdXNRKpV49NFH8bGPfSyi2UOi5yTJCk73lkNDQ6K8ySmiEZyEGf3LR7wJOrfbDbvdjvLyclH975GSbHT6SXZ2NlpaWkAIYd1v9HehF6hCoViTiV5aWsLg4CBbsakbKYAg8weXywWz2Yze3l4mtdXpdEknZCrVZKESWI/HA6PRKFoCmyqCr6yssK2VUFx11VUghNTxfxeJ2ISQW8SeU9IJ7vP5cObMGQBAe3t7XKtJpFXY7/ejp6cHSqUyaPQvH/GE6LTZRqPRiBa3hCO4w+FAZ2cnKioqWMun2+1m885jqc0otFotduzYwXqmTSYTW7EzMzNZ8k2lUiE9PR2lpaVsdR8aGmJNGVQtptfrE9ZGS1WzF0JCtVq9pstMiAQ2VQovsSF6KiDJbLLy8nK2n40H4VZhSpry8nLqRBnxuWIITtVlHR0dOH36dFznyn89erNobGxEVlYWuxD7+vrQ0NAQt41VWloaa7KgCrClpSX09/cHKcC0Wi0jS2lpKQoKClhNmlpKU7LH6/SyEfTgYiSwqbRM3khacECiPXhhYSFmZmbiVpSFhuhLS0sYGBgQZLIodA/OV5eJ0ZuHgr+CU392fjJtYWEBExMTaG9vT1rmm68Aoxe30WjEzMwMbDYbAoEA1Go18vLyWEKPX5M2m80szBWbxNqoarJoElin0wmdTgeNRpN0w4eNbNcESJhFT7Td1O/3s4z20tKSYDmmkD04380l2pQVIaBZ9MHBQaysrARNPxkdHYXVasWePXskDRFVKhVKSkpQWFiIrq4uaDQaqNVq9Pb2Bu3rNRoN0tLSWCONQqFgYorJycmgbrRIHuxSJ9mSgVAJ7MDAANRqNTN8oNsb/nTQeCETPA7QsLezsxMajUbUnLFYITqdVlJTUyPaYDEcAoEAFhYWUFpaitbWVhBCEAgE0N/fD7VaHbb7TQpQRV5ZWVmQjt7tdmNpaQljY2NwOBwsUZeTkwMAQdpoqgXne7Dr9fqgIQRS7cGlNnOkCrBQCazf7w+rEBOKULum84bgifiy2e122O12Nt5HDKKF6HQ6aKxpJULhdDoxODgIrVaLnTt3ghACj8eD7u5ulJaWRs0VJBN2ux3d3d2oq6tbY5ms0WiCmkqoIIRfhsvLy4NGownSggOrts9msxljY2NQq9XQ6/Xw+/0bfgWPduxwEli+QkysBJZPcLGNLqmAZJ1s8a7g/A86XkeX0NelfuoWi0VQJ50QUJ15RUUFpqenYTaboVQq0dvbi/r6ekm9yfmgjS/Nzc0xLy5aR6bnRstwQ0ND8Hg8rHGGluH4UknaZONwOHD69Gn22ETmgfOxXmoyvkIsdJSSEAnsRnZUBTbQCh461ODkyZNxvW5oiO7z+dDd3Y2MjAx0dHTEvBiFXGhUNtrW1ga1Wg2lUonx8XGYzWbo9Xp4PB54vV7J7Xrn5uaYv1w8e8lwZbjFxUUMDQ0xY0JahlOr1SguLsb8/DyamppYFn94eDgpTTapWsGjIZwEljYeDQ8PIz09Pch7HQgmuNPpFK0HlxqS7sEjdXiFgjaFaLVawR1kkcAnJy2t7dixI6JyjY9QP/ZQkHNzwq1Wa9DNwul0srGxLpcLi4uLrPOqsLAQBQUFSS2fEEIwPj4Oi8WCjo6OpCTwQstwdrsdS0tLOHv2LHMy8Xg8UKlUrImGVjSozRF/T0vbbYV+l1Ku4PG2qtKEJJ1KE04Cyz8uIUT068QyfOA47kYAXzv34wqAOwghnUKPL1mIrlQq4XK5Yj6WKrZC7YZpdjpestM2WTHzy6IRnLaxZmRkoK2tjTloDgwMAAB2794NhUIBtVqNnJwcVFdXw+12sxXR5XIhLy8PhYWFCYW1tLwHAG1tbZKsevx9amVlJcsruFwuKBQKjIyMsB54pVLJbI74LbTz8/MYGBhgGWu9Xh+1r38z6MHDSWAnJydht9vxL//yL/D7/RgYGEB9fb1gs0YBhg9jAC4hhJg5jrsSwM+xdn54REi6gscK0WnSK5x8lD/8QCw8Hg8GBwdFt8lGysC7XC6cOXMG27dvZxcxDf0LCgoiGktoNJqgscA0mUMvfLo6CPXxoq+p0+lQWVmZkuw8HdFM20WB1eTb0tISpqamWBmOeowTQthEEY7jmDS0p6eH/S1St9lm0oNTCazD4UBhYSG++c1v4sYbb8R9990HQgheeOGFmMcQYvhACDnOe8o7WFWcCca6lMloqLu8vIy9e/eGvcDp88XsY2l5is4LFxsuhSM49WBraGhAdnY2CCFwOp3o7u5GdXU1s++JBX64x+9E6+xcjbYKCgpQWFgYUSJJVXk7duyIqE1PNrxeL7q6ulBcXBxUEcjNzUVubi6LUoxGI3MhpUkp2lDCl4ZSWyfabZadnY2CggLk5+dLuoJLncBTq9WoqalBRkYGnn/+ecGlRCGGDyH4PIBXxZyfpCF6uBWcXjTZ2dlBTSGhEJuF51sjp6enJ8X0YX5+HmNjY2hra4NGowHHcTCZTBgaGkJTU1PcGdPQTjSPx8NKV3a7HXl5eSgoKGD155WVFfT09KC+vj5IOScl6OdZWVkZtV8gVP3FL8PR0ho/PKc/cxyHlZUV1mRDjQsVCoUko5ClIrjP50NGRkaQo6rQ1xJo+ECP+TdYJfhfizm/lK7gtMkkmkMK//lCe8rpmF7qzDo3NxfXXZvu+2lGf3l5mSXTOI7DzMwM5ubm4s5aR4JarV5DksXFRQwPD0OhUMDlcqGlpSVl5KZ1dbE3lNAynNPpZGU4t9u9pgzHz1j39/dDpVJhfHwcDocjbJPNRgTN2aysrIhOpAo0fADHca0AHgdwJSHEKOY1JC2T8QlO7ZqENpkIXcHpcfljeulKLJbgVNtNO+ja2trYTWZwcBAej4dpuKUCnyQzMzOYmppCWVkZRkZGEAgEoNfrUVhYKHpooFAsLy+jr68Pzc3NCdd0MzIymPyWX3Lil+Go2YPT6UR1dTVbBWkL7djYGPNwoy20Gwk0Q2+1WkU3uQgxfOA4bgeA3wL4W0LIoNjzk7TRxefzgRCCwcFB2O12UU0msXrK+SWr0OPS54rd0xFC0NfXh/Lycmzbto21nfb09CA3Nxd1dXUpSWwRQjA6OgqbzRaUS6CikomJCaysrCA3N5f1lSfjpmM0GjE0NJRUYQxFaA6CluF6e3ths9lQWFgIn8+H9PR0BAKBoF5yj8cDs9m8xqcuLy9v3Z1sKMHjaVMVaPjwrwD0AH587trzEUL2Cn4NUWckAgqFAj6fD6dOnYJOp4s5TjcU0VZwWjfPysoKckrhP1esJtxqtWJxcRHV1dWM3LS/u6KiImWJLZooTEtLQ1tbW9B7o6KSkpIS5mVG+8zVajUjUDzknJubw/T0NDo6OiSfzkHLcBzHYX5+Hm1tbfD7/Zibm4PVamXjgnQ6HZRKJfOpKywsBMdxQT516enpbHVPxqRQsaAEj2foARDb8IEQchuA2+I9P8kIbrPZ4HA4UFdXF5eoIxLBqTNpZWVlxFZWsa4utFxXWFiIQCCAQCAAm82G/v5+NDY2Cp4Ymii8Xi+6u7uh1+tjerpTLzO6R6Ztp/39/fB6vdDr9SgoKEBubm7MG+vExASMRiN2796dMl92m82Gnp6eoK0Af5Y5Xd0BBBGYEMKy+FVVVczJhraWhvrUST1UIl7DxVRBkm/Tbrejp6cHGRkZcSu2whGc6sJjjekVavpAQ2Gz2YyOjg643W5MTU3h+PHj8Pv92LlzZ8r2fHTeWWVlpWjbHyC47ZSqwmZmZtDf34/s7GwUFhZCr9cHEZhuc9xuN9rb21MW7i4vL6O/vx+tra1rElN8Iwdq07S0tMTKcHxTSurhVlJSwj4zvk+dVquVPDHJX8HPG4JnZmbiwIEDOHHiRNzH4BOc78MmRBcuhODUH02pVKKtrQ0AmNNpVlYWqqqqYDKZcPr0adbGWVBQIAnh6WqWiOMLH6ETQun2Y2Jigr2X/Px8jI+PQ61Wo6mpKWUDFmirZ1tbm6CtRGiFgW5LxsfHoVKpgkYb05ZanU4HjuNY27DT6cTJkyfZY5Np+kCbaM4rgtMkGxB/kwHtZQ8EAujt7QXHcRF92MI9N1qI7na7cebMGZSUlKCsrIwl0/r6+pCens403LR7y+VysejB4/EgPz8fhYWFgsLfWKBChra2NkluHtR6mUY8LpcLBoMBJ0+ehEKhQElJCcxmc9JUYdFgMBgwPj4ed5kxdFvidDphNBpZFBJahktPT0dhYSGsVisaGhpgNpuZ6YNQw0YhoDX9jWbXBEjsi06JFs++Li0tDW63G++99x5KSkqSNmfMZrOhq6sL9fX1zHXU4/Ews4RwopT09HTWchoa/ubk5LDwV2wme3p6mg1fTNXYWYVCgYWFBdTV1aG4uBgmk4n1jWdlZbFEXbKVcDSJt3v37qQdm/qo81uBaRkuIyMDeXl5mJ+fx/bt24Msl7lzk0CphxvHcXHZMfNht9sFCZpSDUknm9ButngI7nQ6MTs7i7a2NlGe6kBkghsMBgwPD6OlpYWFhysrK6I03KHh7/LyMhYXF5mBAlVkRVuhaCON3W6XvK7OBx0UUVNTwxRSoUaOi4uLOH36NBQKBSN7op1lU1NTWFxclDSJF1qGs1qt6OrqglKpxPT0NJuYQo0wtVotu0HQFloqHKE+dXl5eYLP1+l0nl8reCKmD7Ozs5icnGQ1XrEILZNReeXS0hIjFMdxjJjxhsc0jNfpdKitrWW13e7ubgQCAdZfzl8V6JZDo9GgtbU1ZXvflZUVdHd3R6wK8Ntnd+7cyayeRkZGmNVTYWGh6Nrz2NgYlpeX0dbWlrIbmc/nw+DgIOrr61FUVMSiLlqGo46rVBDD96LjOI412dCcRSSfOqooBDammwsgcYgej+nD4OAgHA4Hmpubmd+1WPDLZJRQCoUC7e3t7DHUoGHPnj1JCxlp6yUdIkhr1LS/PD8/H5OTkygqKsKOHTuS8ppCQF1fwmWtIyHU6slsNrN5bVqtliUdI20t+Bn61tbWlGXoPR4Pzpw5g6qqKiYECo26aBmup6cHwAd+6tRymm/p5PV6YTabmU8d3+EF+GDI4HmVZKMQs4JTEUpOTg7a29vhcDgSNm2kX3ZRURHbHxFCcPbsWUZ4qS48lUrFTPoDgQDm5+fR19eHtLQ0WCwWqFQqSfa6oTAYDBgbG0N7e3vcjSB8Z1Z+F1pXV1fYSIXq5AkhKc3QezwenD59GtXV1WwLEopwZTij0YipqSnWHcg3YKSWTgUFBeA4jo1SGh0dhVKpZF128RD8tddew1e+8hUMDg4OI7zZAwfgBwCuAuAAcAsh5H0xr8HFaASIu0vA6/ViYGAAOp0upqQy3Jhel8uF3t5e7NmzR/Rr0z3X4uIi6urqkJeXB0IIayQpKipiwwpTAdrf3djYiJycHLbXXVpaYnvHwsLCpGfRp6enWaeYVDcSSpDFxUVWp3Y4HMjOzk5Zay/wQWWkpqYmrm0dADYLbWlpCUajEUqlMkgNx+cKJfvw8DCeeeYZvP7667jiiivw2c9+FhdffHHMvbvf70ddXR3eeOMNVFdXawC8B+AzfLMHjuOuAnA3Vgl+AMAPCCGCzR6AFKzgsUL0SGN64x0iCKzeMObm5rB37162ajkcDvT09AQlmFKBxcVFjIyMBPV38/e6/BKc2+1mYpJESnDUT95ms2H37t2S7n3544R8Ph+bDmM2m3HmzBm2+knZRkoNOcK5yooBfxZaTU0N+27oHHMantPr1Ov1IjMzE4888giGhobwoQ99CM8//zwOHjwYk+DU7OGcG68nnNnDuZ+fIqt3lnc4jtNxHFdKCJkT+p7WLUTnJ77CjemNJ0FHG2KWlpZQWlqK9PT0IA23EOfRZGJqaooNSYy0gvJLcH6/n00oibcER8PjQCCQ0iQetbQqKSlhJgZ8QYnP52M3r2Q2mlByS6GV5383/MmvIyMjSEtLg9PpRFlZGUZHR9HX14ePfOQjuOmmmwQdW6DZQxmAqZDHlAHYGARXKpVhjRfpEMFoY3qpNlsoaKMKIQS7du1CX18f24tTc8JU1Zrp8D+32y3IyZUiLS0tZgku2mpIlW+ZmZnYuXNnysjt9XqZpRXfVy806WgymTA1NQWbzcZuXonM/aZlv127diWlAzAa+HkIq9WKnp4elJaW4o477sDZs2dxzTXXYHR0VLAoSaDZQ7gvUNS2WfIyWajxIr3jlpWVRZ3kKebipKOICgoKUF5eDkII9uzZg97eXjgcDiiVSoyNjaGoqIi1MUoF2gKbkZGB5ubmuF8rtARHcwq9vb3w+/1rEls+nw+dnZ0sv5AqhMtah0Po7DC+Eo4mHAsLCwUr4Si5GxoaUiYGAlYbpXp7e9He3o7FxUXYbDb89re/hdlsxsmTJ3HhhRcKOo5As4dpAOUxHhMVKQ3R6eTNhoaGpA0GoAm6mpoa5u3l9/vR19eH/Px8dHR0IBAIsDro2bNnE+o+iwbaEVdSUpL0qSZarRYVFRVhS3A5OTlYXl5e40wrNeLd+/JvXjU1Ncz5pb+/Hx6PJ0gJFy76oXbYTU1NbARTKkCts9ra2mAymfCZz3wGP/vZz3DBBReIPhY1exgbG8POnTvVCGP2AOAlAHed258fALAsZv8NpLAOzh/TmywzAZqcop1phBC4XC50d3cHqbJCPb/5oW96ejqKiopEuZuGg8PhYDcaqZN4/BLcysoKzpw5g6ysLIyPj2NxcZGF8lKW4KitUzJW0FDnF6PRyG7G1JiRzja32+3o6upKiuOMGNBGodbWViwvL+OGG27AD3/4w7jIDXxg9nD55ZcDQD/Cmz0cw2oGfRirZbK/E/s6kpXJaG8wDcHcbjdaWlpErZjHjx8PG/IQQjA5OYn5+Xm0trZCqVSC4zhYLBacPXtW1J3dbrfDYDBgaWmJjT4WW7KyWCzMgz2VK4rVakVvby+72PntpktLS2zwQrJLcOG03FKANqUsLi7CaDSyG3hjY6NgN9tkgN5UWlpaYLfb8clPfhKPPPIILr300mS9hGR7RkkJbjQacerUKVRUVMSV9Hn77bdx4MCBoDCNb43c0NAAYDXko2KG1tbWuEsydFCBwWBgpglFRUVR/c9oI0lra2vSbY6igdorRZNd0vezuLiYtBIcvYm2tLSktPeaioRKSkpgs9mSNkgiFuh2oLm5GW63Gx//+Mfx7//+73TlTRY2H8EtFgtOnToFjuPwV3/1V3Ed48SJE0GztWm2ljqe0HOn/dLNzc1J21P7fD4YjUYYDAasrKyE7cWmJbnW1lbJO9L4mJ+fx+TkJNrb2wVvK+gNd3FxEVarNa48BNVyJ9IVFw9oxMBvtaUR4uLiIiwWS1yDJGKBJvIaGxvh8/nwiU98At/4xjdw9dVXJ+X4PGw+glutVrhcLpw9exYHDohqvmE4efIkWlpaoNFoYLfb0dnZierqatYySfvMtVotampqJDW3pxeT2WxGVlYWfD4f0tLS0NzcnFLjv8nJSXZTibe8xM9DGI1GQSU4quUWc1NJBqxWK/r6+tDa2hpxm8EfJLG0tAQAjOzxyj9pApFGiZ/4xCdw77334rrrrov/zUTG5iM47QV/++23BZcOQnH69GnU19fD6XSysJCGozRjvX379rjGDMcLn8+HM2fOsBuMWq0WJBFNFFS84XK50NTUlNSbCi3BLS0thS3B0e1Pe3t7SiMVau0k1P2Fgto8LS0thR0kEQuU3Lt27UJaWho++clP4u6778anPvWpRN5ONGxOgnu93oiJMiGgw/5MJhNaWlqgUqlYD3BfXx927dqVsmEAwAf19m3btjHxCiXH4uIiCCEoKChAUVFRUvenNO+gVCol7++mJTjaW0797ZOpuhMCutcXS+5Q8DvQTCYTMjIyWLQS7obsdrvZwqJWq3H99dfjtttuE9yhFic2H8GpU0q8BA8EAjh+/DgbQMBxHDiOY6FiS0tLSk3waVmotrY2opiBrhwGgwEulyspSS3aApqXl4eKioqUdacBwOjoKIxGI7Kystg+NxUlOCpvTfZenxASFK2EDpLwer04ffo0amtrkZ6ejk9/+tO46aab8Hd/J7o6JRbnF8HpdBGfz4edO3eyVXpiYgJms5mt5qkCteUVUxYKTWrl5uaiqKgI+fn5gsNrmlQsKytL6TaEr+VubGxk9sO0BGc0GuMuKcYCTeQlezxUONBBErQjzePxQKPRoLq6Gl/84hfx8Y9/HF/4whdScVOV7AVSYoItxniRJtOoVndoaIgZ52VkZKTU3hf4IGO9e/duUasJv6+cuoFSO18hKyG1Ud65c2dKa75UL89xXJCWO5zjy+LiYlJVcNRAMRXkBj4YJKHX6/H++++jsrISL730Em655Rbk5OSwGeBS97lLCclWcGB1PxNa6ooGk8mE/v5+NDc3s1XB6XTizJkzbAAgrU0nU5EUDlSZZjKZEspYhztuqB6cTu2gNxDaNZUsG2Wh4DvLVldXC/58I5XgxAhJ6ETSVGfpaVheVVUFnU6Hz33uc7joootw3XXX4dixY/jkJz+Ziqk2my9EB1YJfurUKTQ3N8e8I09PT7NGFZpMowMU6L6XXkgGgwE2mw15eXlMQJLMVT0QCDBHkl27dkkaMVDvboPBAL/fj6ysLJjN5jX6eKnh9/vR3d0NnU6HysrKuI/DF5IYjUZWZYhWgltcXGSuM6kkN9WvV1RUID8/H7feeiv27NmDr3/96wkvHrfeeit+97vfoaioiFlD8UEIwVe+8hUcO3YMIyMj3YjDrUUIJCU4tdCpra2NmFWm+mXagkiTaTRci9QxRbOjBoMBFosFOTk5bI+bSLMLTWrR0TipTGrNzc1hZGQEmZmZcLlcyM/PT4kCjs56KywsTLoSjY5UWlxchN/vZxEYLcEZDAZMTEykvARHy53l5eUoKCjAF7/4RdTV1eHf/u3fkvJZ/+lPf0JWVhZuvvnmsAQ/duwYfvSjH+HYsWNQKBQHEYdbixBIvgePNUSws7MTOTk5aG5uZvrvqakpGAyGqBruUJ8wuscdGRmBVqtlAhIxoTUdel9eXp5SVRYANnv8wIEDUKlUrFNLagVcJC13ssAfqUSTWuPj41hZWYFGo4HL5Up5Cc7v96OzsxNlZWUoKCjA3XffjcrKyqSRGwAuvvhijI+PR/z7iy++iJtvvpl62MXl1iIEkhM8dE44Be3xraysZCovAMyNRIxRAl9+SPe4dGVQq9Vsjxst/KNSwERtf8SCOtssLy8H2SuF+nxLoYCjN7RYWu5kgT8ddXZ2FhMTE8jLy8P7778vyKk1GfD7/Thz5gxKS0tRXFyMr371q9Dr9XjggQdSGq1FcHQR5dYiBJISnD8nnA+qC29qamJG9D6fDz09PcjPz0+o3svP9lZXV8PhcMBgMKCzsxMcxzGy85snaGkm1ZZOofZKkW5o4fzX+e8pnnIV7bNO9Q0NWPW9n5ubw759+6BUKplT6+LiIntPtJsumQ1DdOWmN5mvfe1rSE9PxyOPPJLyOeMCHV0SRspDdJpM4ydUXC4Xc1WNdxppJGi1WlRWVqKyshJutxsGgwH9/f3w+XzMCpdO3UhFaYaC2itptVpRGWtg1QqpqqoKVVVVQeUqapYQSwGXTC23WMzMzGBhYQHt7e0sWqHzwunQRzp0YWhoiDUMFRQUJJSLCAQC6OrqQlFREUpLS/GNb3wDfr8fP/rRj1JObkCwo0vCkDTJ5vV6MTY2hrS0NJSVlbGhBrS+ynEc61pKtZba4/Ggv78fFosFarWatZhKXX4DPkhqFRQUJHUAghAFXKq03OEwPT0Ng8EgasqJ3++HyWTC4uIilpeXI45CjoZAIIDu7m7k5+dj+/bt+Na3vgWDwYDHH39cUsfZ8fFxXH311WGTbK+88goeffRRfpLth4SQ/ck+B0kJ7vP5MDExwaZDZGVlUZtYcByH2dlZzM7OorW1NeWrJ23mqK+vByEkJeU34IN9744dOyStr4ZTwGVmZmJhYUGySabRMDk5CaPRiNbW1rhJxR+FbDQaoVKp2PYkmhElLf/t2LEDDz30EMbGxvB//+//lZTcn/nMZ/CHP/wBS0tLKC4uxje/+U1mQHr77beDEIK77roLr732GkZHR3sA/B0h5GSyz0Nygo+NjWF0dBS1tbXMcA9AkDIqVTOr6Dl1dXVF3OtLVX4DPrB1Wo9E3vT0NEZHR6FWq9lYXakVcBS0xTjZI4ycTicT+tASHO0rpxNWuru7kZOTg4qKCnz/+99Hd3c3fvWrX0k2BDFObM5GFzqpMi8vD42NjcwQsbe3l7U8pjJzSff6QldPfvnNaDQiMzMzrvIb8IG9Uqq3IsBaLXcqFHAUtELQ0tIi6V6X31e+srICnU4Hh8PBZrw/9thjePvtt/Hss8+mtCQnEJuT4HNzc3C5XJiYmEBNTQ0yMjLQ3d29LnVmuveMV2LKL78tLS0JLr8BH2Tpo5kWSIW5uTnMzMxEHF8khQKOYnR0FCsrKyk3xaDZcq/Xi2eeeYb9/+9+97sNOcMbm5Xg5+YuIS0tjX3Z1LtcSh+tUFD/smT6iNHy2+LiYsTyG/CBWKWtrS2leQbgg7ncQpNayVDAAas3QzqNk6rRUgVCCPr7+6FSqVBdXY0nn3wSL7zwAi655BL893//N37+858zl5YNhM1J8B//+Md4+umn4XQ64XA48NxzzyEvL4/tb+O9gMRgZmYGs7OzaGtrk6yBIrSfnO5vTSZTwvZK8WJsbAxWqzXu0JivgDOZTIK14IQQjIyMMKlpKrdgtK9AoVCgtrYWv/rVr/Dss8/ipZdeSlrkRCeC+v1+3Hbbbfj6178e9Pfl5WXcdNNNmJychM/nwz/+4z8K0ZNvToIDwEMPPYT/9//+Hy699FK8+uqrIITgmmuuwaFDh5Cdnc0uoOzsbBQXFyclmQV8sIrQEDFViTyv18vEEx6PB2VlZSguLk5J+Q0Ir+VOxjH59tLUZ76oqCgoe01HNvl8PjQ0NKSc3IODgwCAuro6PPfcc3jyySfxyiuvJC1q408E3b59O/bt24f/+q//QmNjI3vMgw8+iOXlZTz88MNYXFxEfX095ufnYy0um1cPfsUVV+Dee+9FWloa7rvvPszNzeHo0aO488474XA4cPXVV+Paa69FQUEBDAYDhoeHkZWVxZJZ8RCTyh5VKlVKB/ABq409ZrMZer0eNTU1bPa01OU3ILKWO1HwG1HoRNRwY5RmZmYAYF3IPTw8jEAggF27duGFF17AL3/5y6SSGwieCAoAN9xwA1588cUggnMcB5vNxnI2icxeSwYkX8EjHpgQGAwGPP/882y201VXXYVDhw6htLSU6aUzMjLY/lbIB+X1epkyKplNJEJAJZe5ubmorKwMusilLL/R49OZaGI74xIB9XAbGRmBz+dDaWkpioqKIo4dkgLDw8PweDxoaGjAK6+8gv/4j//AK6+8knS/viNHjuC1117D448/DgD4z//8T5w4cQKPPvooe4zNZsO1116Ls2fPwmaz4Te/+Q0+9rGPxTr05l3BI4HjOBQXF+P222/H7bffDqPRiBdffBHf+MY3MD8/j8svvxyHDx/Gjh07sLi4iFOnTkGtVqO4uBiFhYVh94FOpxNdXV2oqqpKestrLFCbqdLS0rCZ2kjqt+Hh4YTKb0DytNzxQKlUwmw2o6ioCNXV1SlRwPHB3+//93//N773ve9JQm4gfP946I309ddfR3t7O958802MjIzgsssuw0UXXZTy0ijFhqn26/V63Hrrrbj11lthsVjw8ssv48EHH8T4+Dguu+wyXHfddaipqWG1daVSySyR1Go1qzOn2gUFEG+vlAz1GwWV3BYXFyd94GEsEELQ19fHfMyoSERKBRwfY2NjbODFW2+9hQcffBDHjh2LaIqZKEL7x6enp9d45T3xxBPMMKKmpgZVVVU4e/Ys9u9PeheqIKxbiC4UNpsNr7zyCo4ePYqBgQF8+MMfxqFDh9DU1MSaNXw+H7xeL1pbW1NObiozTdaM6nDlt9BkFoXUWu5ooHmOjIwMQQ1LVC1G31eiho3j4+OwWq1obm7GX/7yF/zLv/wLfve730na/uvz+VBXV4ff//73KCsrw759+/DMM8+gqamJPeaOO+5AcXEx7r//fiwsLKCjo4ONto6CzZtFTyYcDgdee+01HD16FF1dXbjkkkugUCiQn5+P66+/ng2oo6SQelYYHTrY0tIiicw0XPmNdpylWsvNB1XC0aSbWPBnpglVwPExOTnJ3HXfeecd/NM//RNefvnllDSxHDt2DPfccw/8fj9uvfVW/PM//zN++tOfAljtMZ+dncUtt9yCubk5EELw9a9/XYinukzwUDgcDtx8883o6upCeno6LrjgAlx33XXYt28fTCYTFhYWEAgEGCmS3UFGQ8+2traUzOmi5TeDwQCHwwGv14udO3di+/btKc1YU/EGTSQmCiEKOD6mpqaYaOXUqVP4yle+gpdffjnpVlMphkzwUExOTuLxxx/H/fffD5/PhzfffBNHjx7F8ePHceDAARw+fBgHDx6ExWJh00ILCgpQXFyccOlkdnYWMzMzKfcRAz4YZVtSUoKVlRVGiqKiIuTl5UlKdqqppkMYpDh+qAKuqKiISUOnp6dZZ15nZyfuvPNOvPDCC6iqqkr6uaQYMsGFwufz4U9/+hOee+45/OlPf0JHRwcOHz6Miy66CDabDQsLC3C5XGxlFzOcjlopU2VUKlVwwAf99PwtASXFwsIClpeXWflNr9cntUxFzSjpZFepwZ8NTqeQEEJQXl4Oi8WCv//7v8fRo0dRW1sr+bmkADLB44Hf78f//M//4MiRI3jrrbfQ1NSEw4cP42/+5m9YZ5bD4RDktU47pWiXVqpdQOisrlhTNpOlfuODijeKiopSnqkHVgUzU1NT0Ol0uOWWWzAzM4Obb74Zf//3f49du3al/HwkgEzwRBEIBPDuu+/iueeewxtvvIHa2locPnwYH/nIR+B2u7GwsMA6j4qLi4PUVLSJJD09XdIxxZFALaTF7PcTUb/xQcldXFy8Lkqs+fl5TE9PY/fu3RgeHsbnPvc5PPbYYxgdHcXY2Bjuv//+lJ+TBJAJnkwEAgGcPn2adSbt2LED1157La644gr4fD4YDAZYrVbk5eVBr9djcnJyXTrjgOTN5RZTfqOgNfbS0tKUzkajWFhYYGOjJiYmcOONN+Kpp55Ce3t70l4jlngEAP7whz/gnnvuYXmcP/7xj0l7/XOQCS4VCCHo6enBc889h2PHjqGwsBCHDh3Cxz72MSwtLWFsbAyZmZnQ6/UoLi6OmN2VArG03PEiWvmNgg4GKCsrS3mNHVitUtAb2+zsLG644Qb84he/wN69e5P2GkLEIxaLBRdeeCFbCAwGgxRdkjLBUwEq1jhy5AiOHDmCxcVF3HjjjbjzzjuhUqlgMBhgNpslS2TxIVbLHS/45TeXy4WCggLk5+djeHgYFRUVKC4uluy1I4HOKdu9ezcWFhbwqU99Cj/96U9xwQUXJPV13n77bdx///14/fXXAQDf+c53AAD33Xcfe8yPf/xjzM7O4oEHHkjqa4dAMoKn3i92A4PjODQ0NODmm28GsPrl6vV63Hjjjfjbv/1b/PGPf0RlZSW2bdsGk8mEEydOoLu7m62EycLY2BhMJlOQtbBUUKlU2LZtG9rb27Fv3z5otVp0dXXB7XbDYrHAZDJF8vCWBEajkZF7aWkJN9xwA374wx8mndzA2uED27dvZ4o4isHBQZjNZnzoQx/Cnj178NRTTyX9PKSE6NRqrD0Lf6iaVqvFk08+iY6OjqSdcCqwfft2vPLKKyxj/LWvfQ0TExP47W9/i1tuuQUAmKY9JycHBoMBo6OjcY9MouBruaX2MAsHv9+P6elpNDU1Qa/Xw2QyYX5+HgMDAymJWkwmExsfbDKZcP311+O73/0uLr74YkleT4h4xOfz4dSpU/j9738Pp9OJgwcP4oILLkBdXZ0k55RsiLoK/X4/vvSlLwXtWa699tqgPcurr76KoaEhDA0N4cSJE7jjjjtw4sSJpJ+4lEhLSwsqB3Ech8rKSvyv//W/8NWvfhWzs7M4evQobr/9drhcLqZpLyoqYqIRjUaD4uLimA4oFFJpuYWCDoqsrq5mfdOhwpGFhYWkqN/CwWw2Y2hoCO3t7bBarbj++uvxne98B5deemlSjh8OQsQj27dvR0FBATIzM5GZmYmLL76YTYTZDBB1K+YL3tVqNRO888EfqnbBBRfAYrFgbi6p45bWFRzHoaysDF/+8pfx5ptv4oUXXoBer8c//MM/4JprrsHRo0eh0+lQU1MDp9OJ06dP4/Tp05iZmYHH4wl7TNrbrVKpUF9fn3Jyu91unD59GjU1NWFFEVT9Vl9fjwsuuABVVVWw2+04depUzPcmBBaLBQMDA2hvb4fdbsf111+Pb37zm7j88ssTeVsxsW/fPgwNDTH3nV//+te49tprgx5z6NAh/PnPf4bP54PD4cCJEyc2oqdbRIi6/Ybbs4SuzpH2NeuRiZUa4TTtL7zwAv75n/8ZBoMBl19+Oa677jpUVFSwuVsKhYKVqDQazbpquYEPyC3Uqz109ht/pphCoQhr5RQNy8vLOHv2LNrb2+F0OnH99dfj61//uhCThIShVCrx6KOP4vLLL2fikaampiDxSENDA6644grm6X7bbbehublZ8nNLFkQRXMieRchjtir0ej0+//nP4/Of/zwsFgteeuklPPDAA5iYmGCa9traWiwuLqK7uxuEEHg8Hmzbtm1dyO1yuXDmzBnU19fHbZBAQ9fKyso1Vk7hym98WK1W9Pf3o62tDR6PB5/61Kfw1a9+Fdddd10ib0sUrrrqKlx11VVBv7v99tuDfr733ntx7733puyckglRBBe6Z4n1mPMBOp0ON998M26++WZYrVa88sor+N73vofBwUF8+MMfxiWXXIKXX34ZX/jCF5j7amFhIYqLiyWXuQIfTBdNlo4dANLT01FeXo7y8nJWfqMDBOlwBSoJtdls6OvrQ1tbG/x+P2644Qbccccd+NSnPpWUc5GxClF1cCGCd/5QtRMnTuDLX/4y3n33XYlOf/PB4XDgmWeewX333Yeamhrs3bsXhw4dwu7du5ls0ufzxVz9EgEld6qmi/r9fjZcYWVlBVlZWVheXkZ7ezsUCgU+/elP46abbhJiL7xVsTE82YTsWa666iocO3YMNTU10Gq1eOKJJyQ58c0KrVaL9957D88++ywOHjyIN954A0899RTuuece/NVf/RXTtNOsstvtDpK5JrrdcTgc6OzsTOkIpbS0NBQXF6O4uBhWqxWdnZ3IycnBFVdcAbfbjUsvvRSf+cxnUnIu5xs2VCdbrBr7r371Kzz88MMAgKysLPzkJz9BW1tbKk8xKaDTVfnweDx48803ceTIEbzzzjtBmnar1YqFhQU4nc41oa4YUC35eowO5r9+S0sLVCoVbrrpJtTX1wMATp06hbfeemtdZnVvAGz9VlUhfcHHjx9HQ0MD8vLy8Oqrr+L+++/fdDV2IfD5fPjjH/+II0eO4M9//jM6Ojpw6NAhXHLJJbDZbDAYDLDb7Uz5JmSowsrKCrq7u9eN3HSyalNTE9LT0/G5z30OF198Mb761a8mNQkrRDwCAO+99x4uuOAC/OY3v8EnP/nJpL1+nNj6BBfSF8yH2WxGc3PzmtbCrQa/34+//OUvOHr0KN566y00Nzfj8OHDuPTSS+FwOLCwsACbzYb8/Hw2VCGUMJTcUnnHxQLd8zc1NSEjIwOf//znsWfPHnzta19LKrmFLBL0cZdddhnS09Nx6623bmmCbxjbZCE1dj5+8Ytf4Morr0zFqa0r0tLScMkll+CSSy5BIBDAiRMncOTIEfz7v/876urqmKbd4/EwP3KdTscsnOx2O3p6etDa2ipJwi4WqKV0Q0MDtFotvvjFL6K5uTnp5AaETR4BgB/96Ef4xCc+gffeey+pr78RsWEILqZ+/tZbb+EXv/gF/vKXv0h9WhsKCoUCBw8exMGDB5mm/bnnnsN3v/tdVFZWMk17IBCAwWBAf38/vF4v6urqUlJ6CwWtszc0NCArKwt33303Kisr8a//+q+S9EYIbcR6/vnn8eabb8oETyWE1s+7urpw22234dVXX5XM4H4zQKFQYM+ePdizZw8efPBBpmmnPfG7d+/G6dOn8dhjj8FiseDEiRPIzs5mghGpVWputxtnzpzBrl27kJ2djXvuuQcFBQV44IEHJGt8ErJI3HPPPXj44YdT7qe3Xtgwe3AhNfbJyUlceumleOqpp3DhhRem6tQ2FQgheOaZZ3Dvvfdi586d0Gq1zMBCo9EwvzatVsvEMMm+2Klwpba2FjqdDv/0T/+EtLQ0/OAHP5A0Sy4kj1NVVcVuBEtLS9Bqtfj5z3+Ow4cPS3ZeArD19+BCauzf+ta3YDQaceedd7LnnDx5cj1Pe8OB4zh0dnbi3XffRVlZGYaHh3H06FF89rOfRXp6Oq699lpcc801yMzMhMFgwNjYmOgBj9FAyV1TUwOdTodvfOMbCAQCePTRRyUvgfHFI2VlZfj1r3+NZ555JugxY2Nj7P9vueUWXH311etNbkmxYVZwqbFJyydJA7V8Pnr0KF544QVwHIdrrrkGhw8fRk5ODps0EmvAYzR4vV6cPn0aO3fuhF6vx7e+9S0YDAY8/vjjKQuJY00e4YMSfAN8z1u/TCYlNnH5RBIQQpim/fnnn4fb7cbVV1+NQ4cOMU374uLimgGP0UDJXVVVhYKCAjz00EMYHx/Hk08+ed7sdxOAbNmUCITo2IEPyiepHj2caoRq2p9//nnk5eXhnnvuwdVXX40jR45Ap9Nh165dzDb51KlTmJqagsvlWnM8atBYWVmJgoICfP/738fg4CCeeOIJmdzrjPOC4EK8t2j5JDSM2+qgmvY77rgDb7zxBrOq+t//+3/jiiuuwDPPPIPMzEw0NjaCEILe3l689957mJiYgNPpZOTesWMHCgsL8dhjj+H999/H008/nTS3Fxnx47z4BuTyiXAUFBQwTbvZbMbLL7+Mb3/725icnMRHP/pRHD58GPX19VhaWkJvby9sNhsyMjJgMBjw4osv4s9//jOOHj2a8pltMsLjvCC4kBr7yZMnccMNNwBYLZ8cO3YMSqVyS2dYYyEvL2+Npv3//J//g6GhIVxyySV455138Mgjj8Dj8eCOO+7AxMQE7rrrLoyNjTERiYx1BiEk2r8tAa/XS6qqqsjo6Chxu92ktbWV9PT0RHz85z73OfLcc8+l8Aw3F4xGI2lvbycXX3wxaWlpIR/5yEfIxRdfTGZnZ8nTTz9NnnzyyaS8zquvvkrq6upIdXU1+c53vrPm708//TRpaWkhLS0t5ODBg+TMmTNJed11QCwexv3vvCA4IYS88sorpLa2luzcuZM88MADhBBCfvKTn5Cf/OQnax4rEzw6/vjHP5Kf/exnhBBCnE4n+c53vkMWFhaS+ho+n4/s3LmTjIyMsJtyb29v0GP+53/+h5hMJkIIIceOHSP79+9P6jmkEDLBNzJirTSEEPLWW2+RtrY20tjYSC6++OIUn+Hmw/Hjx8lHP/pR9vODDz5IHnzwwYiPN5lMZNu2bak4NSkgGcHPiz24lBDiFW+xWHDnnXcGzbeSER2yujA5kAmeIIRIFJ955hl8/OMfZ9NJt3qdPRkgsrowKTgv6uBS4nyYb7UeEKsufPHFF89rdWEkyCt4ghCy0mz2+VbrASHCkcnJSXz84x/Hf/7nf8qfZQTIBE8Q58N8q/WArC5MEmJk4WTEgJAae19fH7n00kuJ1+sldrudNDU1ke7u7nU6YxkbEHIWfaPifJhvJWPz4ryQi252xNKyLy8v46abbsLk5CR8Ph/+8R//8XyeErIZIevBz1cI0bI/+OCDWF5exsMPP4zFxUXU19djfn4+poZbxoaBrAc/XyFEy06H+RFCsLKygvz8fFmqKQOATPANDyF19rvuugv9/f3Ytm0bWlpaJDc3lLF5IF8FGxzhtlChdfbXX38d7e3tmJ2dxZkzZ3DXXXfBarWm6hQF4bXXXkN9fT1qamrw0EMPrfk7IQRf/vKXUVNTg9bWVrz//vvrcJZbEFKm6OV/if8DcBDA67yf7wNwX8hjXgFwEe/nNwHsX+9z551PGoARADsBqAF0AmgMecxVAF7F6n70AgAn1vu8t8I/eQXf+HgPQC3HcVUcx6kB3ADgpZDHTAL4MABwHFcMoB7AaErPMjr2AxgmhIwSQjwAfg3gUMhjDgF4iqziHQA6juNKU32iWw0ywTc4CCE+AHcBeB1AP4BnCSG9HMfdznEcNZD7NoALOY7rBvB7AF8jhCytzxmHRRmAKd7P0+d+J/YxMkRCTrVuAhBCjgE4FvK7n/L+fxbAR+M9PsdxvwRwNQADIWRNBw63uun/AVbDaAeAWwghYjbJ4cpAockFIY+RIRLyCi4DAJ4EcEWUv18JoPbcvy8A+InI408DKOf9vB3AbByPkSESMsFlgBDyJwCmKA9JdH8sJI/wEoCbuVVcAGCZEDIn4jVkhIEcossQgkj7Y0EEJIT4OI6jeYQ0AL+keYRzf/8pVrcgVwEYxuo2QO61TQJkgssQgoT3xwLyCATAl+I6OxkRIYfoMoRA3h9vUsgElyEE8v54k0IO0WWA47j/AvAhAAUcx00D+DcAKkDeH292xJKLypAhYxNDDtFlyNjCkAkuQ8YWhkxwGTK2MGSCy5CxhSETXIaMLQyZ4DJkbGHIBJchYwvj/wMxSPPOedjAkAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "from numpy import random\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import pyplot as plt\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "x=np.random.rand(10)\n", + "y=np.random.rand(10)\n", + "x1=sorted(x)\n", + "y1=sorted(y)\n", + "z1=np.arange(0,10,1)\n", + "\n", + "fig = plt.figure() #定义新的三维坐标轴\n", + "ax3 = plt.axes(projection='3d')\n", + "\n", + "#作图\n", + "ax3.plot_surface(x1,y1,z1,cmap='rainbow')\n", + "#ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow) #等高线图,要设置offset,为Z的最小值\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "5d4060cc", + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function subplot in module matplotlib.pyplot:\n", + "\n", + "subplot(*args, **kwargs)\n", + " Add an Axes to the current figure or retrieve an existing Axes.\n", + " \n", + " This is a wrapper of `.Figure.add_subplot` which provides additional\n", + " behavior when working with the implicit API (see the notes section).\n", + " \n", + " Call signatures::\n", + " \n", + " subplot(nrows, ncols, index, **kwargs)\n", + " subplot(pos, **kwargs)\n", + " subplot(**kwargs)\n", + " subplot(ax)\n", + " \n", + " Parameters\n", + " ----------\n", + " *args : int, (int, int, *index*), or `.SubplotSpec`, default: (1, 1, 1)\n", + " The position of the subplot described by one of\n", + " \n", + " - Three integers (*nrows*, *ncols*, *index*). The subplot will take the\n", + " *index* position on a grid with *nrows* rows and *ncols* columns.\n", + " *index* starts at 1 in the upper left corner and increases to the\n", + " right. *index* can also be a two-tuple specifying the (*first*,\n", + " *last*) indices (1-based, and including *last*) of the subplot, e.g.,\n", + " ``fig.add_subplot(3, 1, (1, 2))`` makes a subplot that spans the\n", + " upper 2/3 of the figure.\n", + " - A 3-digit integer. The digits are interpreted as if given separately\n", + " as three single-digit integers, i.e. ``fig.add_subplot(235)`` is the\n", + " same as ``fig.add_subplot(2, 3, 5)``. Note that this can only be used\n", + " if there are no more than 9 subplots.\n", + " - A `.SubplotSpec`.\n", + " \n", + " projection : {None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str}, optional\n", + " The projection type of the subplot (`~.axes.Axes`). *str* is the name\n", + " of a custom projection, see `~matplotlib.projections`. The default\n", + " None results in a 'rectilinear' projection.\n", + " \n", + " polar : bool, default: False\n", + " If True, equivalent to projection='polar'.\n", + " \n", + " sharex, sharey : `~.axes.Axes`, optional\n", + " Share the x or y `~matplotlib.axis` with sharex and/or sharey. The\n", + " axis will have the same limits, ticks, and scale as the axis of the\n", + " shared axes.\n", + " \n", + " label : str\n", + " A label for the returned axes.\n", + " \n", + " Returns\n", + " -------\n", + " `.axes.SubplotBase`, or another subclass of `~.axes.Axes`\n", + " \n", + " The axes of the subplot. The returned axes base class depends on\n", + " the projection used. It is `~.axes.Axes` if rectilinear projection\n", + " is used and `.projections.polar.PolarAxes` if polar projection\n", + " is used. The returned axes is then a subplot subclass of the\n", + " base class.\n", + " \n", + " Other Parameters\n", + " ----------------\n", + " **kwargs\n", + " This method also takes the keyword arguments for the returned axes\n", + " base class; except for the *figure* argument. The keyword arguments\n", + " for the rectilinear base class `~.axes.Axes` can be found in\n", + " the following table but there might also be other keyword\n", + " arguments if another projection is used.\n", + " \n", + " Properties:\n", + " adjustable: {'box', 'datalim'}\n", + " agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n", + " alpha: scalar or None\n", + " anchor: 2-tuple of floats or {'C', 'SW', 'S', 'SE', ...}\n", + " animated: bool\n", + " aspect: {'auto', 'equal'} or float\n", + " autoscale_on: bool\n", + " autoscalex_on: bool\n", + " autoscaley_on: bool\n", + " axes_locator: Callable[[Axes, Renderer], Bbox]\n", + " axisbelow: bool or 'line'\n", + " box_aspect: float or None\n", + " clip_box: `.Bbox`\n", + " clip_on: bool\n", + " clip_path: Patch or (Path, Transform) or None\n", + " contains: unknown\n", + " facecolor or fc: color\n", + " figure: `.Figure`\n", + " frame_on: bool\n", + " gid: str\n", + " in_layout: bool\n", + " label: object\n", + " navigate: bool\n", + " navigate_mode: unknown\n", + " path_effects: `.AbstractPathEffect`\n", + " picker: None or bool or float or callable\n", + " position: [left, bottom, width, height] or `~matplotlib.transforms.Bbox`\n", + " prop_cycle: unknown\n", + " rasterization_zorder: float or None\n", + " rasterized: bool\n", + " sketch_params: (scale: float, length: float, randomness: float)\n", + " snap: bool or None\n", + " title: str\n", + " transform: `.Transform`\n", + " url: str\n", + " visible: bool\n", + " xbound: unknown\n", + " xlabel: str\n", + " xlim: (bottom: float, top: float)\n", + " xmargin: float greater than -0.5\n", + " xscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...} or `.ScaleBase`\n", + " xticklabels: unknown\n", + " xticks: unknown\n", + " ybound: unknown\n", + " ylabel: str\n", + " ylim: (bottom: float, top: float)\n", + " ymargin: float greater than -0.5\n", + " yscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...} or `.ScaleBase`\n", + " yticklabels: unknown\n", + " yticks: unknown\n", + " zorder: float\n", + " \n", + " Notes\n", + " -----\n", + " Creating a new Axes will delete any pre-existing Axes that\n", + " overlaps with it beyond sharing a boundary::\n", + " \n", + " import matplotlib.pyplot as plt\n", + " # plot a line, implicitly creating a subplot(111)\n", + " plt.plot([1, 2, 3])\n", + " # now create a subplot which represents the top plot of a grid\n", + " # with 2 rows and 1 column. Since this subplot will overlap the\n", + " # first, the plot (and its axes) previously created, will be removed\n", + " plt.subplot(211)\n", + " \n", + " If you do not want this behavior, use the `.Figure.add_subplot` method\n", + " or the `.pyplot.axes` function instead.\n", + " \n", + " If no *kwargs* are passed and there exists an Axes in the location\n", + " specified by *args* then that Axes will be returned rather than a new\n", + " Axes being created.\n", + " \n", + " If *kwargs* are passed and there exists an Axes in the location\n", + " specified by *args*, the projection type is the same, and the\n", + " *kwargs* match with the existing Axes, then the existing Axes is\n", + " returned. Otherwise a new Axes is created with the specified\n", + " parameters. We save a reference to the *kwargs* which we use\n", + " for this comparison. If any of the values in *kwargs* are\n", + " mutable we will not detect the case where they are mutated.\n", + " In these cases we suggest using `.Figure.add_subplot` and the\n", + " explicit Axes API rather than the implicit pyplot API.\n", + " \n", + " See Also\n", + " --------\n", + " .Figure.add_subplot\n", + " .pyplot.subplots\n", + " .pyplot.axes\n", + " .Figure.subplots\n", + " \n", + " Examples\n", + " --------\n", + " ::\n", + " \n", + " plt.subplot(221)\n", + " \n", + " # equivalent but more general\n", + " ax1 = plt.subplot(2, 2, 1)\n", + " \n", + " # add a subplot with no frame\n", + " ax2 = plt.subplot(222, frameon=False)\n", + " \n", + " # add a polar subplot\n", + " plt.subplot(223, projection='polar')\n", + " \n", + " # add a red subplot that shares the x-axis with ax1\n", + " plt.subplot(224, sharex=ax1, facecolor='red')\n", + " \n", + " # delete ax2 from the figure\n", + " plt.delaxes(ax2)\n", + " \n", + " # add ax2 to the figure again\n", + " plt.subplot(ax2)\n", + " \n", + " # make the first axes \"current\" again\n", + " plt.subplot(221)\n", + "\n" + ] + } + ], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/homework_03_kmeans.ipynb b/homework_03_kmeans.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..25a1708ce2333ee25630ddb45c06bacd03fe89b9 --- /dev/null +++ b/homework_03_kmeans.ipynb @@ -0,0 +1,249 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aeff4918", + "metadata": {}, + "source": [ + "Homework 03 - kMeans\n", + "自己编写kMeans方法,并使用下面的数据来做聚类\n", + "\n", + "数据文件是:dataset_circles.csv,其中\n", + "\n", + "数据的第一列是x坐标,\n", + "第二列是y坐标,\n", + "第三列是样本点的类别。\n", + "要求:\n", + "\n", + "使用自己编写的聚类方法对数据进行聚类\n", + "将数据可视化出来,自己分析数据的特点,找到一种方法将数据进行某种变换,在变换后的空间上使用自己编写的kMeans方法对数据进行聚类处理\n", + "自己查找其他的聚类方法,尝试使用一下,看看效果如何。(最好能自己编写)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "2825d328", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy \n", + "import csv\n", + "from sklearn import datasets\n", + "import sklearn.cluster as sc\n", + "import sklearn.metrics as sm\n", + "import matplotlib.pyplot as mp\n", + "\n", + "datasets = numpy.loadtxt(open(\"D:\\machine learning\\machinelearning_notebook\\studing1\\dataset_circles.csv\",\"rb\"),delimiter=\",\",skiprows=0) \n", + "a = datasets.shape\n", + "quanty = a[0]\n", + "#print(a[0])\n", + "#print(type(a[0]))\n", + "\n", + "x = datasets[:,0]\n", + "y = datasets[:,1]\n", + "z = datasets[:,2]\n", + "#print(type(z))\n", + "#循环, 根据0和1区分下标\n", + "b1 = np.argwhere(z == 0)\n", + "b2 = np.argwhere(z == 1)\n", + "first1 = b1.tolist()\n", + "first2 = b2.tolist()\n", + "#print(type(first1)) \n", + "\n", + "xc1, yc1 = x[first1], y[first1]\n", + "xc2, yc2 = x[first2], y[first2]\n", + "plt.figure()\n", + "plt.title('Original results')\n", + "plt.axis([-35, 35, -35, 35])\n", + "plt.grid(True)\n", + "plt.plot(xc1,yc1, 'rx')\n", + "plt.plot(xc2,yc2, 'g.')\n" + ] + }, + { + "cell_type": "markdown", + "id": "6b45cd46", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "cd8e04f3", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGMCAYAAAB6R8ChAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAxOAAAMTgF/d4wjAADr3ElEQVR4nOyddZwU9RvH39+Zzes7uiQtRDFAlBAbWyxUVCzsbmyxwMIfil2IioWCBWIQIqCEhAIi3XkdmzPf3x+zHCy7e7l7xff9evHSm9mZ77N3uzPPPPF5hJQShUKhUCgUippCq20DFAqFQqFQ7Fso50OhUCgUCkWNopwPhUKhUCgUNYpyPhQKhUKhUNQoyvlQKBQKhUJRoyjnQ6FQKBQKRY2inA+FQqFQKBQ1iq22DSgLp9MpmzRpUttmKBQKhUKhqASbNm3ySymdsfbXaeejSZMmbNy4sbbNUCgUCoVCUQmEEDvK2q/SLgqFQqFQKGqUuDofQoifhBCLhRALhRAzhBCHh7Y3FUL8KIRYIYT4RwjRO57rKhQKhUKhqD/EO+0yQEqZByCE6A+8DxwJDAf+kFKeJoToDowTQnSUUgbjvL5CoVAoFIo6Tlydj12OR4h0wAz9/wCgfeg1c4UQ24DewLR4rq9QKBQKhaLuE/eCUyHEGOCE0I+nCSEaAZqUcs/ik7XAflGOvRu4e9fP6enp8TZPoVAoFApFLRP3glMp5SApZRvgEeCFXZv3epmIcewIKWXrXf9SUlLibZ5CoVAoFIpaJmHdLlLKD9kdAUEIsadgR1tgfaLWVigUCoVCUXeJm/MhhEgTQrTc4+fzgGwgB/gSuCW0vTvQHPg9XmsrFAqFQqGoP8Sz5iMd+EoI4cYqNN0BnCWllEKIB4CPhBArAD9whep0USgUCoVi3yRuzoeUcgNwdIx924BT47WWQqFQKBSK+kudlldXKBSKnK257NyUQ/N2TUlrlFpj6/47ZwW/fTkbvy9A99OOoFu/rui6XmPrKxQNGeV8KBSKOklBTiEvXPUacyYtQLdpmIbJiQP7cMcb1+F0x5xXVW2klIy86W0mfzAVaUoM02Tiu79ywFEdeO6nRxO6tkKxr6BmuygUDYTighKK84tr24y4IKXkwdOeYd5PizANk4AviBE0mfb5LIZf8WpC1/59/Bx++nA6wYCBYZggIeAN8N/81Xzy9FcJXVuh2FdQzodCUc9Z8ddqbu/5MP0zrqR/5lXc3P0Bls5eXttmVYsls5azevE6gv7wuvSAL8CsCXPYsmZbwtb+/s3JBHyBiO0Bb4Af3v4lYesqFPsSyvlQKOoxG5Zv4s4+j7Lsz/9Kt62Yv5p7T3iCVYvW1p5h1WTF/NXoevTLk8PtYNXCtQlbO2drfsx9xfklCVtXodiXUM6HQlGP+XTYeIyAEaEhbBgmHz35Ze0YFQcymqbH0EEGI2hY+xPEoX0OwuaIXljaoWvbhK2rUOxLKOdDoajHLJjyN0bQiNhuGiaLpy+tBYviw7HndEOL0lkihCCzWQadjz0gYWtfePfZaJqG2Mv5sdl1rnrykoStq1DsSyjnQ6GoxySlJcXc505xxW0d0zTLf1EccSU5eXLC/ThcdpxuBwBOt4Pk9CSe+nYImpa4S1fLjs15YcoTtD6wFUITaLpGZrN0HhhzG0effkTC1lUo9iWElHvPfKs7tG7dWm7cuLG2zVAo6hSbVm5h58YcWh/YkulfzOK9Bz/B7w0vkHS47Fz60Plc/siFVV5HSsmk96bwydPj2L5+J6lZKfS/7XQGPnQ+NnvNdOkX5BQy5ZPf2bp2O/sd3JoTLumJO8VdI2tLKdm6djsBX5BW+zdXGh8KRSUQQmySUraOuV85HwpF/WDnpmyeGjCCf+esxO60EfAF6X1+D3K25PLfvFWlDojD7aD9ofvx9HdD+OHtX5g8eir+Ej/dTjucgQ+dT8uOzSu03sdPj2PsM1+HdX44XHa6nXY4Q7++PyHvUaFQNAyU86FQNAAMw+Cag+9k27odVoFpCLvLzjFnHsnxF/di+hezMAyT4y48lh5nHsk9JzzOhmWbSp0S3a5jd9gY9ecw2nZuU+Z6xfnFXNhscESrK4Bu0xk1ZxidDm8f3zepUCgaDOU5H0rhVKGoB8z7cSE7NmaHOR5gaU/MHD+Xm16+muMuPLZ0+8R3fmHDv5vD0jFGwEAaJm/dO4ZnJz5c5nrL/lyJbtMI+iP36TadBb/8rZwPhUJRZVTBqUJRD1i9eH1EO+0uHG47a5dsCNs25bPf8XsiPQfTlMz7aRGGEdkhsydOtwPTjL6g0KzUjkKhUFQV5XwoFPWARi0z0WKIbgV8QRq3ygrfWM1saudjDyApRrfMrloThUKhqCrK+VAo6gF9LuiB2Ft4AtB0jbaHtKZ9l/3Cth9/ca+o0QmhCY48+bByOzd0m84DY27D5rCVdrZouobNrnPDi4No1CKzGu9GoVDs66iCU4WinrBo+hIePnMYIAkGDHSbRlqjNEZMH0qL9s3CXuvz+LjtmIfYuGILgV0Fpzar4PSVP56NcFZisf7fTYwf+QMrFqyhRfumnHvr6XTpdVC839o+y79zVvD589+watFamrdrwvl3nMUxZx1V22YpFNVGdbsoFA2I4oISpn8xm50bs2nXpQ09z+0eU3OjpNDDVy9/z4/vT8Hv8XNUv8O5/JELaH1Ayxq2WhGN6V/OZtjlI5GmxDRMhACbw8YlQ85j0OMDats8haJaKOdDoVAo6hgBf4CLmg2OOqhO0zU+WjWKpvs1qQXLFIr4UJ7zoWo+FAqFooZZMnN5mHjbntidNmZ9M6+GLVIoahblfCgUCkUNYwSNqAXEAFJCMBAp7qZQNCSUyJiiweL3BfhlzHR++nAafl+AXv2P5uybTiUtKzVha65csIZJ7/1K7rY8uvQ6mFOvOp6UjOSEraeon3TueWDMbuigP8jRZxxZo/YoFDWNqvlQNEj8vgD3nzSUFX+t3j3zxGUnrVEqo+YMT0ir6OfPT+CDRz4DrCdbp9uBM9nJyJnP0Hr/FnFfryGSszWXsc98zbQvZiFNSc/+3bni0QsbZP3D+Fcn8vZ9H4VJ2Dtcdk64pDf3vn9zLVqmUFQfVXCq2Cf5/q2feeOuDyKmvdrsOidfcRz3vBvfi/u6ZRu5oes9GMHw0fOarnHQ0Z0YOfOZuK7XEMndns+NR9xHQXZh6Q1Zt+u4U1y8teCFBumAzPj6Tz55ehwb/9tCVvMMLrjrLM6+6VQ0re5kxIvzi/nype/4ecx0Av4gPc48koEPnR/R3q1Q7IlyPhT7JLf3fIhlf6yIus+V4uK7go/iut77j3zKly98QzAQKVsuhGDshjdp3DIrypGKXbzzwEeMf2UiAV94vYNu1zn1yuO5++0ba8myukNBTiELp/yDEIIjTz6U5PTEpvQ8RR5u6T6ErWt3lBbI6nYdp9vBa3OGq7ZtRUxUt4tin8QXZa7JLqJNaq0uRblFUR0PAE0XUVsqFeH8Nu6PCMcDrIF4MyfMqQWL6hafPTeBAS2u44WrX+P5q0ZxUfPBfPPapISuOfGdX9m2bkdYZ44RMPAW+3j/4U8TuraiYaOcD0WDpFf/o3G47BHbhRAccWKXuK/XpffBMYetuZJdtOyoQtTlUVaqQdOid4bsK8z46g/GPP556Y3fW+wj4Avy5j1jmP/zooStO+Wz3yNSlwCmYfLH96odWFF1lPOhaJCce8tpJKcno9t3zzARQmBz2LjmmYFlHhsMBJkwahKDD72bS9vcwPArXmHd0g1lHtPngh40bpWFzR4+M8XutHHF4xdhd0Q6QopwThjYC7sz8vdkc+j0HdCzFiyqO3w6fDyBKBE7IxDk8+cnJGxdwb7t9CkSh3I+FA2S9MZpvD5vuDVgzWVHt+kcefKhvDLrGTod0T7mcYZh8MhZw3jn/o9Yt2QDOzflMO3zmdx01AMs/eO/mMfZHXb+9/vTHHtO99Lps+lN0rjhpSs5/44z4/7+GiIX3HkWjVtlhjkgdqeNtEZpDHzo/Fq0rPbZvGpr1O1SwoZ/Nyds3RMv7R01gqjpGsec1S1h6yoaPqrgVKHYg9nfzeOpi0eUDmPbhRDQ8fD2vDH/+XLP4SnyUFzgIbNZernTYxXhFOYW8fXIH5gy9nekaXLchcdywd1nk9k0vbZNq1VuOPxeVi9eF7FdCDi0T2demjY0Iet6ijzccvSDbF2zPbLgdO5zlW4hl1Ky9p/1FOYW07Fr24QXzCpqD9XtolBUgucGvcovH/8Wc/+X294lo8m+fSNU1DxTxs7gxWvfiJBktzlsPPHVvfQ4M3GTcIsLShg3wmq1DfqC9DjrKC598Dyat2taqfOsXLiGpy9+ma1rtqPbdaRpcsHdZ3P1U5fUqdZiRXwoz/lQCqcKxR6U54zXYV+92uRuy+OHt39m4dQlZDZL5/TBJ1NSUMJXL3/PtnU7aH/oflzywHkc2ufg2ja1QSOlZMnMf/nl498oLvBw1CldOf7inly0dCOfPTehNA0S8AW46qmLy3U8Vvy1mg8f/5zF05fiTHLQ76oTuPSh80lOS6qQPclpSVz5xMVc+cTFVX5P+TsLuLvv43iKPCAtET6Ar1/+nuRUN5cMOa/K51bUT1TkQ1FrbFu3g6/+9wOLpv5DepNUzrrhVPpccEzMmRc1wYyv/2T45SOjVvi369KGdxaPqAWrEs+6pRu4o9cjBHwB/N4AQhMIIZBSIk3rGiE0ga5r3Pv+LZx0WZ9atrhhIqVk1O3vM/GdXzANE9MwcbgdNG6ZxchZT2METeZNXoimaXQ//fByo3BLZy/n3hOeIBg0Sv+OdqedVvs3Z9Sfw3C6nTXxtvj8+QmMGfol/igt8MnpSYzb/h42u3oWbkgonQ9FnWTlwjUMPuQuvn9jMqsXr2PBr/8wfNCrvHDNa+VGHxJJz3O6cUC3jmFFdppmdcncNmpwrdmVaF685nU8hZ5Sp0uaEtMwS29Yu7YFAwYjb34bvze2jkp9xVPs5e8Zy1g+bxWmaZZ/QAL465fFTHr3F4L+IKZh2eD3+Nm+fidv3jOGRi0y6XfVCZwyqG+F0n9v3DWagD8Y9ncM+AJsXrWNqZ/OTNj72Jt/56yM6ngAFOeXkLstv8ZsUdQNlPOhqBVGDH4Tr8cX1j4Y8AaY+ulM/p6xrNbs0m06z/30KFc8fhHN2jUhNTOZHmcdxSuznuGw4zrXml2JJGdrLsvnrsQ0K+b0GUGTf37/N8FW1RxSSr548VsuanotQ/o9xZ29HubydjezaPqSGrdl0nu/EvRHitUFA0GmfT6zNF1REbav38G/c1ZG3ef3+Jnx1R9VtrOyNGvXBJsjevG1btdJyVSFp/saKs6lqHFytuay4q/VUfeZQZOpn82s1Ru9w+XgkgfO45IH9o08tLfYZ7VNVDDiJKDCjkp94KcPpzH60U/D1FV3bMzmwdOe4d1/RtCyY/MasyV/R2HMyJ8RMPD7Arht0W/iwUCQJbOWE/QHWbVoLe89OLbMtXR7zXVinX7tSUx4JVKN1e60cdxFx+JOdtWYLYq6gXI+FDVOwBe07mBRrrGmaTbIkH5dplm7JqQ3TiNve8VD34f0OjCBFtUsHw39MqqsO1Iy4dVJ3Py/q2vMliNPOYyls5dHrTlq2al5zJv0rG/n8uI1r+Mt8YEpowqS7YnDZefES3vHxeaK0Pbg1tz55vW8fMNb2Bw2jKCBpgnaHbIft716bY3Zoag7KOdDUeM03a8xTVo3ZseGnRH7HC4HxySwbVARia7rXPfc5bx8w1thc280TWBKGeYk2hw2rn9hUIN5Ug0GgmxbtyPqvoA/yLI/ow8nTBRnDD6JcS99F1GnAVbkoyCnkLSs1LDtqxat5amLXoo5W2hvHC47nY89gD4XHBM3uyvCadecSPfTj2D657MoyivmkF4HcsRJh6o2230U9VdX1DhCCG4ZeXUUKXI7+3VuxbHnKOXEmubUK4/ngQ9vpUUHawaNzWHjlEHHc/PLV7Pfwa1JTk/ioKM78diX93DOzf1q2dr4odt0ktLcUfdpukbzdk1q1J70xmk8Mf6+qKmX7C25jBj8ZsT2cSO+q1SR9g0vXsmzkx5Gj5G+SSSNWmRy/p1nMuiJARx1SlfleOzDqMiHolbo1f9onvruQT545FNWLliDO9XFadecyJVPDChtudu5OYf3HxrLb+P+wAgaHHnyoVz77GV0OKxtLVvfMDn+4l70HdATb4nPkqQPqbOed/sZtWxZ4hBCcPZN/Rg/8oeIVIema5xz82k1btPfvy3D4bRH2BP0B5n93TwKsgtJa7Q7+rHyrzUYwYp157Ts1LxBOY+K+otyPhS1RrdTu9Lt1K5R9+XvLOCWbg+Qn12IEQonz/1xIQun/MOoP4fR/tDEOyAFOYWs/WcD6Y1Tadu5TZXPM2fSAsa/8gPb1u1g/yM6cNF959Dp8NjzZWoTIUSDSalUlEGPX8SK+atYPH0pCIGmawT9Qa568uJaEVTbtm571JoPsOqCc7fnhzkfzdo3Yd3SjeVGP+xOO5cqMS9FHUE5H4o6yYRRkyjMLS51PCCkM+EP8v7Dn/LUt0MStrYRNHjj7g/5/q2fsNl0ggGDNge15NEv7mG/g1pV6lwfPvE5nw+fQDAQRErYvHIrv42bzaNf3kPPc7on6B0oKoPD5WD45EdZMms5C379G1eSkz4XHlNp+fB40bFre5xuB74ouhi6Tafpfo3Dtp1/x1nM/2lxWL1O6evtOnaHjYAvyMX3n0u/q09ImN0KRWVQCqeKMJbPW8W8Hxdic9joff7RtOpUucFR8SLWIC2wnuAmespuI6wO79z/ERNGTQp7+tQ0QUpWCh+vfg13SvQagb3ZunY7V+5/W6lY1J6kNUrliy3v1ErevS5jmiYLp/zD1jXbaXVACw47rnOtKt7WBsUFJVze7maKC0rCik4dLjtn39SPG1+6MuKYz56bwAePfIrdaUNKSdBv0Pv8ozn58r4YQYPDjuscFi1RKBKNmu2iqBBG0ODpS15m9nfz0IRAaIL3Hx7LgPvP5dpnBta4PTZn7I/m3oWq8cRT7I1wPMDStfAV+5gy9nfOvP6UCp1r5vg52By2qMqOJYUeHj/veVYtWoc7xcnp157Mubf0w+FyxOV91Ec2rtjCkH5PkbM1D13XCAYMWnRoxvDJj9C0TePyT1BNivOL+eGdX/jtyz/Q7TonX9aHflefUON/k+S0JEb89iRDL3iRrWu3Y7PbCPgCnDKoL4OHXxb1mEse6M9Jl/Vh5oQ5BHxBuvXrSvsu+9Wo3QpFZVDOhwKAcS9/z5yJf2EEDPZs2PtqxHd06XlgQqdmRqPflSew9u/1EU6Aza7Td0DPhK27be0OjCiRCgCfx8/KBWsqfK5gwIgp3BX0B5n748LSqMjoRz9lxlezeWnaUOwOe9RjGjKGYTDk1KfYsTEb0zDZ9VffvHIrD5/5LG8veimhEZCC7EJuOXoIOVtySz9zK/9azaT3pzBi+pO4kmpmBsou2nfZjw/+HcmqhWvJ31lAh67tyGxatpx6k9aN6H/r6TVkoUJRPVSfkwKA8SMnRi1yC/qDjH9lYti27C25rFq01ppQmSBOu+YEOnRti8O9+6nT4bKT3iSNq5++JGHrZjRNi5omAbC77DRu3ajC5+rWr2uZcth7ruP3Bli1aB3TPp9VcWMbEAt+/YecbXkRv3sjaLDxvy0snxtdJjxefPzUOLI35YR9B/zeAOuWbOCHt35O6NqxEELQ6Yj2HHVK13IdD0XZSClZOns57z34Ce8O+Zgls5bX6gwphYp8KELk7yyIul1K2L4hG7CcjucGvcrCqf+g6xqartH/1tO5ZtjA0rbMeOFwOXhp6lAmfzCVn8ZMJ+AN0PuCHpxzU7+E5q4zmqRz9OlHMP/nyAI+0zA5ZVDfCp+rY9d29LngGGZ9Mzdm98Ke+D1+pn02k1OuqPgaDYUtq7ehaxrRfkt2h40tq7dz0NH7J2z9Xz+ZEVUV1O8NMHn0VC6466yErV2bSClZt3Qjfq+f9ofuV+mom2EY/PXzYjat3ErLjs056tTD4n4tqC6GYTD8ilf5/as/LIdDwlcv/0DPc7vx0Kd31jl79xWU86EAoM1BrVgTpcBTt2kc0K0DwUCQu497jG3rd1hdJ6YBAYMJoyZhGGbUIrjq4nA5OPumfpx9U83qEtz7/s3cc/wTbF2zDdMw0e1Wx8uDH99R6dqDIR/fztcjJzLm8c+tGSrlUFvTVGubVvu3iJnuCvgCtNo/sfNVAv7YzmG0rpOGwN8zlvH8VaPYsWEnQtNwuh1c//wVnHHdyRU6fvOqrdx38lDytuUjNA1pmqQ3SeP5nx+j9QEtE2x9xfnxvSnMmjAnXAHWMPnj+/lMfPuXGr++KCxU2kUBWFoHNkekLyqEYMC95zL7u/ns3JQT1voK1pPhN6/9SFFecU2ZmnAymqTz9uIXeezLe7j0wfMZPPxyPtv4Fn0vOrbS59J1nYvuPht3SvnaGQ63g74XJa6epS5z+AmH0KR1I3Rb+CVJt+u0P3Q/9j+yQ0LX73bq4Wh65OXQ7rTR89yG1xK9aeUWHjj1Kbau2Y4RNAn6gxTnl/Dqbe9VaNqtlJIHT3uGnRutVJWvxIffGyB7cy4PnvZMuU60t8THzx9N59Nh45n17dxKTeutLBNG/Rg18uj3BpgwKnLYnaJmUM6HAoDe5/Xg5v9dhTvFhd1lx+awkdEsnaETHqDDYW35b+5KgoHow6o0TbD+3001bHFi0XWdHmcexaAnBtD/1tPJaFK9nHt5LbV2p502B7TkxIE1N+yrLqFpGs/9/CgtO7XA5rDhSnFhs+u077IfT333YMLbba8cOgC704bQdq+j2TRcya4GmXL56uXvkTLSQQj6g3z4+OflHv/3jGXs2LgzokbHNEyyt+SyaNqSmMcunb2ci1tex8ib3uajJ7/gmUte5sr9b2Pr2u2VfyMVIH9H7IGJ+Tuip5sViSduaRchhAv4DOgMlABbgRullGuFEE2BMUBHwBfa/nu81lbEh7Nv7Ee/q07gv3mrsDls7H9Uh9J8aEbT9Jhto8GAQUaTtJo2t1bZuSmblQvWktYohYN67F/ujIqTLuvD1yN/iDo9NSnNzfl3nsmAe8/Zp1ttm7dryntLXmbp7P/YumY7rQ9owQHdOtaIzkfbzm14dfazvPvgJ8z/aTGaLuh57tEMHn4ZjVtmJXz9mmbp7P8I+qNHGyryILFt7Q50uy3q51m3aWxbG31Yn7fEx0NnPEtJQXix+s5N2Txx/gu8+dcLFbC+chzYvRN/TvwrYlCfEIIDuneK+3qKihHvmo+3gUlSSimEuDX086nAcOAPKeVpQojuwDghREcpZdlznxU1jsPloEvvSEnpEy7txTtDPo7YrukanY5oT8uOic3J1xWCgSAvX/8Wv3z8Gw6XHSNokNksgye+vq/M1MCA+8/lt3Gzyd68u5XT4bLTpE0jRv05nJSM5Jp6C3UaIQSH9DyQQ3oeWONrtz+0Lc98/1CNr1sbNG6VxapFa8MmFu+iIp/FNge1JBjF8QDrYaT1gdFrPmaOnxM1gmoETdb+s4E1f6+LOTqhILuQXz+Zwfb1O2l7SBuOv7hnhVqgBz58AfMmL7Tq1PZAs2lc/sgF5R6vSAxxS7tIKb1Syolyd//SH8Cuq/EA4LXQ6+YC24B9M75cT8lqnsmDH92ObtdxuKyKeKfbQXrjNB7+9M7aNa4Geeu+j5j2+UxMw8Rb7CPgC7JjQzb3nvAEhblFMY9Ly0rl9XnPc9mjF9LukDa067IfVzx+Ea/NfU45Hooa59xbTsMepcbL4bJz9o2nAvDf/FV89+ZP/DZuNn5veMTzwO6daHtI6wjBP92u0/qAFjGdxx0bsyMiELswTZNNK7ZE3ffXL4u5pM0NvPfgJ4x7+TtG3fYul7W9iXVLN5T7Xg/usT9PfH0fjVpmots0dJtOVotMHvvyHjofW/NOrsIiYfLqQogxQDbwNLBBSpm0x74vgO+llGPKOoeSV6977NiYzS8f/UbO1lw6HdGevgMq9vTREPAUe7mg8TUEfJHFa063g2uHXdagJ8AqGhbvDPmYr0Z8h6ZpGIaJrmt07nkgj3x+F08NGMGSWctDE6Yluk3nia/v44gTDy09PmdrLo+e8xyrFq7F4bLj9wXocOh+PPntkJipqj9/mM/QC16M2tYM0HfAsTzy2d1h2zxFHga0uC6iW0xoghYdmjF6+SsVSs2Zpsm6pdb9pG3n1uWmShXVo1bk1YUQDwH7AzcCbiKDe1E/KUKIu4HST156uhLWqSrL560qHZLV+4IecctbN2ndiEsf3DcnY+7YkB2zKt/n8bP67+izaBSKush1wy/n1EF9+e3LP/B7/Rx1ale6Hn8Iz142kmV//GepHe/R3fbIWcP4ZN0bpcXXWc0zeW3OcFYuXMPmkM5HpyPKntbc7bTDcbgdMZ2PmRPm4vP4cLp3P9D8Pn5OVKFgaUq2r9vJf/NXk5zmZvv6nbQ+sGXMdnhN05TkfB0i7s6HEOJe4HzgZCllCVAihEAI0URKuasKqS2wfu9jpZQjgBG7fm7durWSoKskfl+AoRe8yPyfF6HpGpomeOPu0dw44krOu009lVeHzGaxnWGHy06L9rUzBVWhqCptO7fhisfblP5ckFPIb1/Ojq7yKwQ/j/mNi+45O2xzp8Pb0+nwsp2OXei6zkE9OjH/p8VR9wf9QYrySsKcj7xt+cgYrbu6TeO5Qa+yacUW7E47AV+AY87uxpAxt1Z4AKSidohr3CkUubgUOEVKmbfHri+BW0Kv6Q40B1S3SwL4+MkvWTDlb4yAQcAbwFfixzRM3r53DEv/+K+2zavXpGam0OeCHtijDL0zTcmpVx5f80YpFHEke3NuWLvxnvg9fras3lrtNQ7t07m0bmxvktOTIjrnOh3ZPqYUus/jZ/PKLZiGia/Eh2mYzJ20gGcvG1ltOxWJJW7OhxCiNfASkAFMFUIsFEL8Gdr9ANBTCLECGA1coTpd4o+Ukm9fn0wgiqCOaUq+fe3HWrCqYXHXWzfQ6YgO2Bw2HG4HziQnDpedx8fdS+NWFZ/7olDURZq2aRQ9J45V19TmwFZVOu+6pRv4ecx05kxawKlX9kXTNfYu03C47Ay479wITZzDT+hCmwNbRYgg2uw6QhMYwfCoSMAXYM7EBWxZs61KtipqhrilXaSUG4lRyyGl3IbVcqtIIMGApVIYDdMw2bomMSI+DZWAP8CUsb/z80fT8XsC9DrvaM687mRGznyaJbOW8++fK0hvnEav844mKVWFeBX1n+T0ZE4e1NeadbPHQ4wQVlv9yVccV6nzeYq9PDVgBPN/WoTDZcc0Ja5kJzeOuIqxz3xFztY8dJtGMGBwzi2nccmQ/hHnEELw/C+P8dygV5n/02J0u45pGHQ8vB1roky+BksteO0/G2jRvlmlfweKmkHNdmlA2B12GrfKYuemnIh9u0TDFBUj4A8wpN/T/DtnZamw2qqFa/j2tR8Z9ecwuvQ6iC69DqplKxWK+HPrK9dQmFPE7G/nWVo2hklKRjJPTrif1MyUSp3r1VveZeGUf0pb08FK37x592g+Xvs6W1dvpzi/hE5HtictK/bAyPTGaTw78WGyt+SSvTmH5u2bMv+nxbw0+PWorw/4AjSpxARqRc2TsFbbeKBabSvPD2//zGt3fBDRDmp32HjnnxG06tSiliyrX0x85xdeu/ODCEVXm93GyYOO4553bqolyxSKmmHzqq2smL+atMapHNa3c6WnvxblFXNh02si0iJgpXCueXYg599xZpXt83l8XNzy+ohor6ZrtDmoFe8sfqlG1HEV0Smv1VY1OjcwzrjuZAY+fD52pw2n24HdaSOzWTpP//CQcjwqweTRU2NIyQeZ9vmsWrBIoahZWnZsTt8BPTnixEOrNHZ+x4adMW/+Po+fjf9trpZ9TreTZ354iKRUN84kR2kdVlbzDJ6ccL9yPOo4Ku3SwBBCcPkjF3Le7WewfM5KnElODurRqUoXj30Zb4kv5r5YstIKhWI3jVs3itml4nQ74vIwdEjPA/ls89vMGPeHJbveuTXHntMtJI6mqMuov1ADJTktiSNPPqy2zai3HHtONzYs3xzROSSE4LC+nWvJKoWi/pCamcIJl/Rm+pezI1WBBZwyqG9c1nEnu1Sbez1EpV0Uiiice8vpJKe6I9r+bHada4cNrCWrFIr6xe2vD6br8Z3RbRquZCcOt4PUrBSGTXqEtEaxC0wVDR9VcKqoV3iKPMz/eTEBX5Cux3cmq3lmwtbavn4Hb9//MTMnzMEIGhx2XGeue+5yDlRjuBWKSrHmn/Usn7uKjCZpHHXqYdgd0UXGomGaJkW5xbhSXDicFT9OUbuUV3CqnA9FveGXj3/j5RvewpLrB783wIV3n83g4ZcltLhs13dEFbApFDXLxHd+4cMnviBnSy42u87xl/Ti5v9dXemWX7Cm9H7/1s9sX7+Tg4/ZnzOvPyVuM68UkSjnQ9Eg+HfOCu7q8yjBQPhgN7vLzi3/u5ozrz+llixTKBSJYPwrP/DOAx8T2KPA2+aw0Xr/Fry54IWIlGhZfD3yB96+/yOQEiNo4nDZ0XSNF6cO5cBuHRNh/j6ParVVNAi+evl7TDPSUQ54A3z23ISaN0ihUCSMrWu388Ejn4U5HmANntu8aiuzv5tX4XNtW7eDt+4dY03pDWmO+L0BfCU+nh34v5gdOYrEopwPRY3iKfIw4+s/+fWTGezYmF3h49b+syH6pE1g+/qd8TJPoVDUIlvXbueu4x5lUMdb8RR5o77G7w2w+LelFT7n9C9mYbNHRkmkhG1rd7D2n4gB64oaQLXaKmqMqZ/NDMkh767ZOOvGU7hl5DVomoan2Iuuazhcjohj2xzUivXLNkaNfjRupfK2CkV9x1Ps5Y5ej5C/Pb/MaITNYavULKWSAk9UlVWw1FBLCiOdHL8vwE+jp/HTh9MI+AL06t+dc24+TXXoxBHlfChqhJUL1vDcla9i7FWz8eN7UxBCsHTWclb8tQYhBEeechi3jLw6bILmBXedxexv52Ka4cfvmoSpUCjqN9M+m0lxXjFGjAjnLkzD5MSBfSp83sP6duaLF7/BiKINKDRBh65tw7b5fQHuO/EJVi5cW6pyvH7ZRr5782demztcFanGCZV22YcwTZOJ7/7KDUfcyyWtrmfohS/y3/xVNbL2+FcmWnHOvfB7A3wz6kdW/LUGsDpLFvzyN7cd8xA7N+1OyxzS80BuGzUYm8OGM8mJK9mJpmmcdu1JnH2TGpisUNR3lv7xH74oIw12ITSBza5z5ZMXs99BrWK+bm8OP7ELnQ5vj90Z/qxtd9q47OHzcSe7wrZP/mBqmOMB1nUqf2cBHzzyaYXXVZSN6nbZR5BS8uzA/zHrm7mlI6g1XUPTBE9+O4Tu/Q5P6Pq3HD2E/+ZV3NGxO230v+0Mrn/+irDtRXnFzJn4F35fkCNP6kLT/ZrE21SFQlELvP/wWL586TuC/ujjC04c2Jvzbj+Dg47ev9Ln9hR5ePPeMfz84XQCvgAZTdO5/LELOeemfhEt9Lf3fIhlf6yIeh5XspPvCj+u9Pr7IqrVVgHAklnLufeExyNaVQGa7teYj9e8nlAdi+evGsWUsTNi5l6j0faQNrz794iE2aRQKOoOG//bzLWH3BVRWK7bdQ4//hCGT3602msEA0G8xT6S0txoWvTA/41H3seqhWuj7rM5bEzyquhHRVCttgoAZn0zFxmlWBNg5+Yc1v+7KaHrn3f7GVBJ5yY5reJFZQqFon7T+oCW3PrqNWg2rTRF4nA7aNwyi3s/uCUua9jsNlIykmM6HgC9+h+NwxWppCo0wREndomLHQrlfOw7SIkkuvMhQvsTyf5HduC+92/B7rTvUbMhaHdIG/QobXAOl53TB5+cUJsUCkX18Hv9ZG/JJRiIz6Tns2/sxwfLRnLpkPM555bTuPvtG3n/35E1WuR57i2nkZKZEnZdEprA7rBxzbNqrlO8UGmXfYTFvy3lgVOfippPbdQqi7Hr3ijzaSBelBR6mDtpAT6Pn8NPOAR3qpvbez7M9vU7Swu8HC47h/U9hKe/G1IpFUOFQlEzeEt8vH3fGH58fyoBX4CkVDfn33Umlz96Ibpe/7+zOzfn8P5DY/lt3B8YAYMjTurCNc8OpNPh7WvbtHqDqvlQAFbB6RPnv8C8yQtLC06FEGg2jce+vIee53SvNdu8JT6mfDKD3yfMweG0c9JlfejZv3uDuIgpFA2RB/o9xd8zlhEIXUvAemjod9UJ3P76dbVomaKuoJwPRSlG0ODb1yfzzWs/UpBdyAHdOnL5oxfSpddBtW2aQqGoJyyft4o7ej6MEYwsXtd0jU83vJnQadOK+kF5zocSGduH0G06591+hlX8qVAoFFVgycx/sdn1qM6Hw2Xn3zkrazWSqqgfqIJThUKhUFSY5PSkmJ1rRtAkJSO5hi1S1EeU86FQKBSKCtOr/9FRox4AKZnJHNLrwBq2SFEfUc6HQqFQKCpMSkYyQ8bchm7XsTlCehwuOw63g0c/v1sViisqhCo4VSgUCkWl2bhiCxPf+YVNK7bQ8fB2nHHdyWromqIU1e2iUCjqFFKaYOaAlowQSsVWoWiIKHl1BX5fgNzt+RhG9DytQlETSCkxiz9F7uiF3NETue1IzLw7kGZObZumUCSM7et3sObvdfh9gfJfvA+hWm0bCAF/gHVLN+J0O2h9QEuEEJQUenjz7tH8/NFvBP1BUrNSuGTIeVx0z9kJHSKnUERDlnwIhS8Cu0aVG+D9BRn4Fxp/jxCR8zQUivrK+n838fygV/nvr9VomobT7eCKxy/igrvOUtdflPPRIPj+rZ94d8gn+Ep8mKakZcdm3Df6Vt6850NW/rW6VFK9MKeI0Y99RnF+MVc/dWktW63Yl5DSD0WvsNvx2EUAjM3g/RncSn9G0TAozC3izt6PUJxXjDQlhmlQUujh/YfHYnfZOffm02rbxFpHpV3qOVM/m8lrd3xAcX4JwYCBaZhsWrGFe094nBXzVhHwhc9yCXgDfPnitxQXlNSSxYp9kuA6kJ4YO33Iks9q1ByFIpFM/mAqPo8fc69J4gFfkI+GfqlS4Cjno94z+rHPIobFSWmJ/cT6gAtNY+WCNTVhnkJhoaUCZuz9gTlI7081Zo5CkUj+mflv6aDMvcnfUUD+joIatqjuoZyPeowRNNi8cmvUfaZhgoylQmiQnJaUSNMUijCE3hxsh5bxChNZNLLG7FHUHzau2MLQC1/kDPelnOG+lKEXvsjGFVtq26wyadQiM+ZEbk3XcKeqLi/lfNRjNF3DneKKuk9ogmht1EJAk9aN6Hh4uwRbp1CEIzKep8xLTnBVjdmiqB9sXbudW7o/wKxv5hLwBQn4gsz6Zi63dH+ArWu317Z5MTntmhOjbrc5bPS5oAfu5OjX7X0J5XzUY4QQnD74JOzOyC4Bm03ngjvPRLfp6HbLA3e47DiTnDzy2V2q2lpR4whbB7AfU8YL0mvOGEW9YOyzX1u1E8bulJ1pmPg8fsY++3UtWlY2+x/ZgWueHYima7tVYN0OWrRvym2jBteydXUDJTJWz/EUexnS72lWzF+FETDQbDrSNBlwf3+uefpS1vyznh/e/pmta3dwUPeOnHHdyWrctaLWkL5pyNxbiex6cULytWipd1b8XDIA5g4QaQgtJZ5mKuoIF7e6jpwteVH3ZbXI4PNN79SsQZVk43+b+fWTGRTlF3No74PpeW53bPZ9o8lUKZw2UDat3ELu1jz2O7g1KZnJzP95MQt//RtnkpO+A46lbec2tW2iQhGBlBJZ+AKUfIAVeDWt/zqOQmS+ixCOip2j+H0ofgNkgXW882RE+pMILfHy3jK4Doy1oLexojmKhHF5+5vZtm5H1H3N2jbh4zWv17BFiopSnvOxb7hgDYita7fz9MUjWPHXGmwOG0YgyGnXnMitr15L936H17Z5CkWZCCEQafcj3eeB70ek9CEcfcBxdIVTgbL4TSh6jd3RExN8U5HZlyZUrEyauci8O8A/F4QTpA9p74rIGIXQGydkzX2dkwcdxxfPf0tgL3VQu9POyYOOqyWrFPFART7qCDMnzOHTYV+zccUWmrZpzEX3nsPJlx8XdkH2+wJcuf9t5G7JxdgjB+pw2el31Qnc/vp1tWG6ogEipYEM/A2+6WB6EPYDwH16rc9ikdKL3N4jhmaIE5HxIsLVLyFrm9mXQOBvYM8boR1snRCNJqg6qgRQnF/Mbcc+xLa1O/B7rd+7w2WnWbsmvDr7WZLTk2vZQkUsVNqlHjBuxHe899DYML0Ou9POebedznXPX1G6bepnM3np2tfxRekf1+06X2x5h7Ss1BqxWVEzSGMb+OeDlgSOYxHCmfg1vT8i8x8Fmb/HVgeIZESjTxC2Tgm3IaZtgaXI7AuBYPQXJF2NlvZgDa9rR2R9hHAcGfd1FeAp8jDp3Sn8OnYGACcN7MPpg0/EnaLaVesyKu1SxynOL+b9h8dGCIUFfAHGjfiec287naZtrJDuqoVrIhRLd6HrGhv/20LnY5Tz0RCQ0kQWPAmez0MhfhOEDdJfRLiit/HFZV3f78i8u4m8yfpBBpC5N0PjyXF7ypfSD7IIRDpCRNdFCEOkEVuszIHQEtQxE1wJOIjufNis/cr5SAjuFDfn33km5995Zm2boogjqtW2llk0fSmaHv2i63DbmTtpQenPWS0ysTuj+4vBgEFW84xEmKioBWTxu+D5CjBAlgBekEXIvNuQwdWJW7fwZWJGFZBgbILgkuqvIz2YBUOR245Cbj8Gub0HZtGbSFmGCiogbK3BdjDRL10GuM6qtm1R0VsQ+/digt48MesqFA0U5XzUMtYTZOzUl9B2/4lOHNg7rNZjF7pN5+Bj9qd5u6aJMFFRw0gpofhdwBd9f8kniVs8+G/Z+4UNzJ3VWkJKicy9EUq+pPQ9ygIoeg1ZODz8tWYeZuHrmDvPxtx5HrL4Q0h/JhQB2SXUZAdskPoQwrZf2WubBcjiDzBzrsHMuxPp+y2qGF8E9qNAb0rkJVOAlgaOXuWfQ6FQlKLSLrXM4SccQqxrn98boMeZu0O5GU3SeezLe3jyopfQbRpBfxDdZiOrRQYPf3pXDVmsSDjSAzIvxs4ABJYnbm0tFcyc2PulD2wHWTds/yykZwJID8LZF9xnI0QFlBsDi62OkYhIgg9KPkam3IjQspBGNjL7fDCz2dXZIgtXgq09NP4O4Z2MDPwFWjOE+0KEff8yl5XGFqtuwyyw1kIgvb+A+xxIe6bMVJIQGmS+g8wZFDoeQIBIQmS+X7GUkUKhKEU5H7WMO8XNLf+7mldvfZdg0CgNgtidNgY+fAGNWoQLgh17djc+3/Q2Uz79nbxt+XQ8vB3HntNtnxGu2ScQLhCpIAuj7LRBIrUl3JdC8TtEioCF1nb1A60ZMv9+8E7C6vyQSN9vUPw2NPoCoZUjYheYB+jEKt4k8Dc4+yKLXg1FWfbsLvFBcA3C+z0i+VoEgyr81mTB0JBjtWvgorTep+cbcJ0JzrKjF8LWEZpMA98Ua0qvrQ04T0IIB1J6wPcbmPngOLJWi3IVivqAumPVAc647mRadGzG589NYN3SjTRv35SL7j2Hnud0j/r6tEap9L/19Bq2UpEopJkLxkbrCV5vihAaMmlQzNSLSLosYbaIlBuQ/j+t6ESYAyLAdQ4ifSj4fgk5Hnvu94KxGVn4IiL9mXIWSbbOFxUDREit1PsD4Y7HLnxIz3hE8rUVe1NYLbr4phG9WDWI9HyNKMf5ACwNkb1aeaVvGjLvzlBRsLD0P5wnIDL+VyPdSYp9h0XTlvD+I2NZPmcVrmQnp151AlcOHVAvB4WqVluFopaQ0ovMfwK831AaCXD0sQawiZTd0QXhDEXEDET6cIQ7QUWVpXaZ4P8d6Z0OBMDeFZwnoulWRMPMuR7802Ic7YCm88H3qxUJkEXg6I5wn4vQMqzzm7nI7b2IGvnQmiCazEAIDXPbESCLoy+jt0Nr8lPF35NZgNzeLfYLHH3Rsiov1S2NTcgdpxLpJDkg6WK0tEcrfU6FIhpzf1zAo+c+hxEwSrfZnTZaH9CSUXOG44gy46s2Ua22CkUdRebdb4XwMShNBfhnIXOuRjQaj5bxMjJ4O/j/tKIFzhNqZIaJEBo4j0M4YyhIxqxHAfDDjhNB7qQ0h+j7ySokzXgZ4TrNSsukD0PmP4gVAQlgtbEKRMZIa30Ax3Hg+4ndaZJdOMB1aiXfVCrobcFYF2WnC+HsU7nzhZAlXxA9iuOHki+Qqfer6Iei2kgpef3OD8IcD4CAL8imlVv57cvZnHx5/VJ8Vd0uCkUtII1NoRvr3rUVAQiugMBcAIStPSLpEoT77LozPM3RB4h1Q3WC3EFkB5eBzLsLGdwAYEVCGn8LSZeC8wRIHoxo8jPCsTs6IVLvwHJK9rxM2UCkIJKuqpTJQghE6hAin7dsoKWD+/yox0nfDMzsSzG3dcfceRay5Kvw7pjgaqLXxwD4wMytlJ0KRTTydhSw8b8tUff5PX5mfzevhi2qPnFzPoQQrwgh1gohpBCiyx7bmwohfhRCrBBC/COE6B2vNRXxx1Ps5fu3fubB057msf7PMf3L2RjBvZ88FdUmsMwqLI2KBoHqa2kkCpE00EoFxXriLwPp+Wr3eWyd0NIeQct8Cy31TsReWhnC1gHR+CtwngQ4QSSB62xE4wlVmqUiXCchMl4FvX1oi24VjDYaF9WxM0u+sFqCA/Mttdfgf8iCJ5AFT+x+kW1/LAcpGi6ogUF3iobPzk1ldKBhKWLXN+KZdhkHPA/8vtf24cAfUsrThBDdgXFCiI5SyliKPYpaojC3iNuPfZjtG3biD0m4z/9pET++15mnvhuiOmriidYYZLRiSrC0I+ruoDKhN0Km3g8F0eoZyqohMyyRssqsZeuEyHytUsdEWGTmgGc8MrjKcmiyxlrOk3DEnKIrpRcKnyWylsMHni+QyVeFolIDkMVvRzmDE5IGVmhKr0JRHn/9vBghRExNmoO6d6xhi6pP3CIfUsrfpJTRqkMHAK+FXjMX2Aao6EcdZMwTX7B17fZSxwMsrZHFM5bxy0e/1aJlDRB715AqZpSvoNBCT/vxRQaWYubdg7njNMyca6322KpS8jFlOxrRsIPtAKRvNtI7xXIKEoz0z0VuPx5ZOBI845CFryB3HA+BJWU7Bv4FIGNF/OzgmwqA0JsjMt/eLXomkgANXKcgUu+xbJAepIwuGKdQVAS/149mi367Fpqg4+Hto+6ryyT0UVYI0QjQpJQ79ti8FihbhlBRLYryipn03hT+/GE+SWlu+l11Asee0w1NK9vX/HnM9IgZM2DlFCe++yunXZO4mSL7GkIIyHgDmXOZJdyFD6uOQiIy3kBo8W2dk95fkXm3YTkMBhhrkP4/kMk3oaXeWrlzSVm+EmpUNCh6C4nPcrBkAJl8NSLl3oRMhJUygMy9BfDusdX6f5l3CzSdVYYDUp49u/cLZ09oOgv8s8AsBPvhCFsbpH8+ZsGzEPwbEEhHT0TaI5ZeiEJRCY48+TDGPvNV1H1Ot4MDuiVQ+ydB1EQcfe/Ho5jfaiHE3cDdu35OT0/QkKgGzM5N2dxy9IMU5RWXRjDmTV7Esed04+FP7yzTAfF7Y+frSwqjjTBXVAdhPwCaTAfvRGRwJUJvCe5zSltS44WUgVBnyZ6OpQQCUDwKmXQeQm9VcbuFQIrkGG2wAkQjkNns/urv2pYHFOxeHqD4Q6TWDJFccbGwCuOfaanFRkP6wTcDXDEiTI4jLCn5qBELf0RkSggHOI/fffrAYksNtTRtI8E/G5l9ETT+AaG3qOy7UezDdD72AA4/8VAWT1+C37s7FWhz2LjmmUtxuutfR1VCu12klNkAQogme2xuC6yP8foRUsrWu/6lpNSR6v56xBt3jSZ/R0FY6iTgCzD723nM/rbsiuhDeh0U1TW0O20cffoR8TZVAQgtCZF0IVraEETyoLg5HtIsQhqbkTIAgYWh4XTRcID3l8ov4L6Q6IWWDkT6k4gmMyD9NUgbhmj0ZUiYK0aBavGbFZuvUlnMPCz9lCgILbQ/xm7hRKQNxZobs6fdDki6qvwZMoX/I1LHxLQEyIrfL8dwhSIcIQRDJ9zPRfeeQ2pWCghotX8L7nv/Zs67vX5O+427yJgQYi1wlpTyn9DPo4G1UsonQgWnXwEdKlJwqkTGKocRNDgjaSBmMPpk0J7ndmfo+PvDtm1etZVNK7fSokMzCnOKuLvvY2GpF03TcKe6ePefETRu1Sih9jckpFkIwWWWWqft4ISkFUrXkiayZAwUfwDmDiynwANIqxbBeXpIyMwb5WgnIvUORPLgyq1pFiGz+4Ox13OErTNkfR0RYTOzL7W6RmIgmv0ddz0MGVyN3HkmkTohADqi0bflz4Pxz0UWvQHB/0BvYbX4us4o9+9pbj2M6L9vQG+P1mRyRd6CQhEVKWVCrynxoMZExoQQrwHnAs2BX4QQRVLKTsADwEdCiBVYfXhXqE6XxGAEjZiOB0Bx/u6n34LsQp66eASLpy/F4bLj9wbo0usgHh93Dx89OY7/5q1CCMFRpx7Gzf+7WjkeFURKiSx6GYrfo1S1VG8OGf9D2A9LzJr5D4WkyHelCPb4eskC8H5N7OLQYEi3o5KYO8HYHOV0K8AzFpIvD9+ut7UiMNEcAZFK7HbVqiNsHZDOvuD7nfAWYAc4jinX8QAQju6IrOhjDso+0AUyhvMhVERXUT3quuNREeLmfEgpbwFuibJ9G1BJOUJFVXC4HHQ4rC2rF0eqODrcDnqceVTpz4+eM5z/5q/GNEy8xdZNa+kf/zFm6Je8Nmc4Po8fTdfqnGRvXUcWvwfF72Pl+kO5WWOTlf9v/DNCb1LW4ZVfL7g6FNUoS4slgPVVtxPeOuq0ujLsB1Z+3ZKPiJ5GCVhplKTLwi6QIvlypPfbKK93QtLlCbuYioz/IQueAs94LAdMWFoh6Y8lZL1S3P2hZCyRuidORNJFiV1boagHKIXTBsb1L1yBbg/Pc+s2ndTMZE6/1upWWfHXapbPXRXR2RL0B1mzeB3/zlmJK8mpHI9KIqUBxW8RecORIA1kyZfxX9T3O5ZTUR4CUm4PiWLZQWsOKXch0l+o2rqBJUQf+gaY2yP2CXsXSHsCywlyAy4ska++iJTKddtUBiFcaOnPIJrOQTT+HtF0DlrGMIRwJ2xNwHpPehus97kLJziOAvcFZR4rzSKkbzrSNxMpyxZtUyjqK0o1qpr8O2cFox/7nCUz/8WV4uK0q09k4EPn4U5J7MUtFked0pVnvn+Qd+7/mFWL1qLZNHr1785NL19FSkYyAGuXbMDhsuMpinxatjlsrFuygYN7lB+SVuyFmWspYUbFB8HF8V9TWDNRysdAuE5HpNwQn3X1/SCwiOhplBSiOURa0gCk62Tw/mp1oTh6VCnqsgspPeCdYnXR2A9H2A+J+VqhpUANytMLLQ0ajwfPt0jvZEvQzH0OOE9BiNiXXbPoHSgaiZWyM0HYIf0ZhEtNsVY0LJTzUQ0WTV/CkFOfxggaSCnxFvv46uXvmTt5Aa/Ofha7o2KRA0+Rh6K8ErKaZ6DbYlTnV4KjTunKUQu64vf60W16xDmbtG5EMBA9TG8aJo1bq/qOKqGlEpna2IUN9Ji1V1XHeRIwtAIv1JBFr0HKTQhbu2ovK5IuQ3q/j2YQ7JVyCTtOy4IoaQcZWAKBv0HLAOfxiJjS86HX+2ZYuiXSZNdwOunoFtJISa70+4m5jgy1JGOvdGpICBckDUAkDdh9vuB6zJLR4J8PWiNLqt55ktW+7Pk+5HjsEe2QPmTePdCoNcJ+aDzekkJRJ1Bpl2rw+h0fEAwEw9oEA74AG/7dzG9f/lHu8fk7C3jq4hH0z7yKgfvdyEXNB/P1yB/i1nbocDmiOjOH9e1MZrN0hBZ+MRVCkJqVwhEndYk4RlE+QjjBfS6xiieFe0DU7dVaU28CKfcS2RK6N0HwfofceS4yUBWBsL3WdXSF1EewntDdWAJpOjh7I1Juq/B5pFmEmXMFMvsiZMEwZN79yO09kb5ZsY8xtiFzbwq1D3uxOnuC4P8LWfBktd5X6RrSwCx6B7n9GOS2Lsjtx1g/y9gF3eWe07/I6r4p+dzqhPLPRObdWTorRha9TvTZOBJZ/G6V11Uo6iLK+agihblFUQs7wVIE/X38n2UeHwwEueu4x5j1zVxMw7qgFeYU8e6QT/j8+W/ibu+eaJrGsxMfIr1JGk63A7vThtPtIK1xKsMmPYyuVz/6sq8iUh8Ce2csZ8BOaW1D2hOWqFgi1ky+GjLfAcfxoHcER1+wHU7k1zsIeJGFw+KyrpY8ENFkBiLtAUTqnYhGX6FlvlGpeSay4HFLypwglhPhBVmEzL0BaWRHP8bzNTE1Q7zfIc2iKrybKHYVvQIyNJVW5kLRK9b2qp4z/0HLxj2Fx/CD50tk4O/ItuVSDIiDw6hQ1CVU2qWKaHrZfpvNUfavdva389i2dntE0WfAF+CTZ77ivNtPT6hqXdvObRi77g1mfzuPTSu20rJjM449t7sqMq0mQkuBrM/BPwcC86w2Utfpce9yAayCxMIXIbgEcFrqqBnDEVomZs61QLSn9JDSpvTHZeiZ0BtD0sAqHSvNfPBOJGanjncCJF8buT24lt1txXtjWlon1ajvkMYm8Iwj8vfnsxyFlJssNdrKnDO4EYxVRG95lkjPJGuYoBmlfRkRKl5VKBoOyvmoIslpSRzS80CWzv4vIk3icNk54eJeZR7/z8x/w2Ry9yToC7Bh+WY6JXhYkN1h57gLj03oGg0B6fsdWTwajA1gPxiRPNjq3oiBEAKcPax/CbNpGjL3ZnZrevjAMwHpnwONv6PyQ99qAXNHGTt9yODaqPENYT8A6XUS3QHRQWtWPbv8c7AiVtFUYV3Wfnf/yp4UKxIVzdGylE9F8jXIwheIfF82RPJVlVxPoajbqLRLNbjttcE43Q5sjt1pCofLzmF9D6HHWUeWeWxqZgp2Z3TfzzDM0s4URe1iFr2JzL0B/DPAWAPeycjsAVYHQy0hpUQWDCNSvjsAxjbwfIdwnUF4m+cuBNiPrhuj3rXmxK5TcSFsnaLvcp9H9KgOWJe0qtdlACDcxHbezND+SKSZizQ2WS3Xe6O3tYppo+JAOHtD0uXgOgurjsYV+qdByu3WfoWiAaGcj2rQsWs73l78EqddcyItOzZj/6M6cMvIa3j6uyHl1k2cOLA3RhQ1Uk0TdDq8Pc3bNU2U2YoKIo2toe6DALtvRgYQROY/VHsaDDLPcoSi4kX6poH7bLB1ILz4VQcciLSHYp9aepH+BcjAv4mZt7IHQksJORJ7pxeFNXvFfW50G3FSpoMRVcysEjj6UGbkaC9FWBlcbxXNbu+B3HECckdvzJLwCaRC6IjUh4lsQXaA/WBwHocQmqVB0vgHROo9iLQhiCbT0eLVHq1Q1CFU2qWatOjQjDtev77Sx7Xs2JwbXhzE2/d9BAKMgIHT7cDhdjDk49vjZt8/M//lk6e/YsX8VWQ0Taf/bWdw+uATVVFpRfD9inWziPIkK/1Wu6Qz8WkrKQ1rXLuxAfS2SFtZLZcChNvqvMkaiyz+wKpfkCXg7IVIuTlmRMEseh+KR4I0ANOShU9/EeEoO4pXHUTaY1bth+8XrMuRASIJMt+KPWSv4AliK7r6kP75VgtrVW3SkiF9GDL/vtCWILsulSJ9GEJLKn2tNAuQ2QPC9V3MbCh4DCl0xB7pGeE+C0Qysuh/EFxu6aG4L0ak3ooQu7+PwtYh5Dgq6jt+X4CZ4+ewevE6GrfK4oRLe5GWlVrbZtUJ4j5YLp7sC4Pl1vy9jonv/Ur2ply69DqIU67sS2pmfMSQZk6Yw1MXj8AMmqVPsQ6XnV7nHc1Dn9wZlzUaMrJ4NLJwBNEHhLkQmaMQzuMSa0NwLTLnKmuWCjpggN4MtCahWSl7RwAciMw3EM7KzWuRJV8jCx4jqhx4kx8ReqsqvoMy1pQGBJcj/X9D4VNY0QYDsIGWicj6JGJ6rDRLkNu7E1NdFQ2SrkRLe7D69gX+tQb2BVeBrSMiaRDCflD4a4o/QBa+TNTPiNYc0WR6TH0QSyRtMjK4HmFrC65+5eqbKOJLcUEJ65dtIq1RCq06tYjrubes3sZdxz1KYW4xQX8Qu9OGaUqGjr+f7v0Oj+tadZHyBssp56OBYhgGl7S6gbztkYqbul1n5O9Pc2D3GDl1BQAyuBK582yiP2U7EE3/sFIHiVpfmsidJ4cGuO3pZOigtQAzH8tZ2FWgGJrVkv5SpQWxzO3Hx+i0cEDSFWhpD1TlLcREeqcgCx4JjbWPNmdSA9v+aI2/Cz8uuAa583Rip10EotF3CWtr3hsz9wbwTY253/qMZEVsl4GlyJwrQfoojawIFyJrTISDo4g/hmHw7pBPmPDqJIQmMAIGHQ9vx8Of3hk3J+TGI+9jzd/rS6UUduFw2fliyzskpzfsur7ynA9V81FFgoEgM776gw8e+ZQJr04if2dBbZsUxpq/11OUG1vvYPa382rQmvqJsHUC1zlE1iQ4rLkoiZbr9v8BxnYib7QGmNsg4wVIHgy2w8DRB5HxIiL9xVLHQ5o5lhKof1GZ4lhS+mM4HgD+UIQlfkj/ImTeraFoTqwB1yYE/0MGlodv1ppQ5mXLcVyNOR4AiCysiFTUnVYKaS+kDCJzB1sTh/GyS38FmY/MvS56waoirox+7HO+fe1Hgv4gAW8A0zBZtXAtd/Z+FE9xjGnElWDdso2s/SfS8QAQmmD6F7OrvUZ9R9V8VIEdG7O5u+9j5GzJwwgEsTltvHXfGB794m56nlOF8dsJQAgRs2Su/g9jThxSBsE7EekZb9VJOE6ElFuh5FPrZqm3RaTcZOXvE42xEYQeo/bRjpCFiNQ7IPWOvd6DaQmJlXyMVXAatDQkMl6xlEmjnAvhtuatRKBBJTUtwm3xQ8mnyJKx1s3W3s2agVOhjhSJDK4Im/8itBSk66yQPsjeKSI7Iv3pKttaFUTShUjv+Bh73UR1lPyzwCwk8g8rrUiQ/09w9oyrnYrdeEt8fP2/HyKkDkzDxFPoYdpnMzn92pOqtUbOllxsDhtGMLIo3Qia5GzNq9b5GwLK+agCzw78Hzs2ZGMErScUo8T6gD110Qg+3fgmGU3Sa9M8ANp1aUNaVgq52yLTLhI49ty64STVFaT0I70/QuHLVlRh1xN5YKlVf9BoHEKv4Q4kW3uQsSIDftDbRd0ji16Dks+w0kUhh8LciswZBE1+tYTB9iS4DGxdITCXyBSThki6tErmS2mG2pTnUZoa8v0SZY0yMDZEbBJpjyPNraHz2gEJQkNkvIrQK6fxIY3NEFwHemuELVLIS5o54F8EWjLYj4wcCmc/DOsyGq3zyQDvT7C3o2psL8Op1EOfP0Wi2LpmO0aM2VY+j58V81dX2/lod0gbAr7o311NE3To2rZa528IqLRLJdm2bgdLZy0vdTz2RLdpTBn7ey1YFYmu69z55g3Y7HrYDBeHy87xA3pyYLeOtWhd3UIGNyJ3nAz5D4K5ifBUgA/MncjCl2If752MmT0Ac/uxmNmXWq2u1bXJLEBKDfQWRD4j2MC2f+jGt9dxMgAl7xMpVCUBE+n5Yo/XejBzrkZmXxBKrey6G2pYqSYNUu5AOLpV7U34poN/7l62VCaloCHQLV0T33TM3Fsxsy9DFn+ASH8Z0ehLS9o9fTii6exKFdlKsxAz+zqrNTb3WuTOkzGzL7ecDSzHySwYhtzey5q/knMNckcfpG+vmU3G+jLekw/pnxu52X6g1S0V4xhsquYjkaQ3ScM0o0fe7C47jVpG1uhUlsxmGZx0WR8crvDWat2u07hVI3qcmbgOsvqCcj4qSc7WPPQY0ukBX4CcLbk1bFFsep7bnZemDaX7aYeT2Syd9ofuxy2vXMv9H95a26bVKWTeHSG1zVgdFMFQmD8Ss3CUNXU0sNBqsQzMR+beglk8OnwN6bfk0H3TkGZhbFukgVnwLHL7MZB7VejJX8cqSEyy/ms7EJH5TvSiUjMbZHGMs/usSM6utQqeDjkHBlbtwR4X5KRBiMY/VUtjQvp+IvbvtCJoSMfRyIInkLm3gO9nKzpT/BZyZz+rpThpIMJ9BiKG8FdM23IHQ2A6lsMVtP4bmIPMHmg5O8XvQclYdkeP/GBmI3MHW1LpuxDJxE4h2UCkRWwV9kPB3oXomh9HIOwHV+q9KCpHZtN0jjrlMGz2yFodM2hy8hXx6WC7860bOPHS3ug2DYfbgaZrdD7mAF6a9oSSOkClXSpN6wNaRC0iArA57XTo2q5mDSqHzsceyDPfh4tK7dycw9Y122nergmNWzWqJcvqBjK4FoJLKf+J3I+UMuyGL40dUPxalGMDUPgC0n0BQktFeich8x8GGWCXxLZMuR0tJVIfRha+ZNWXEGR3BMZv3cRSH0LYD0DYD4ltppaB9bWOFvK1gW4Vn0uzBDzjY79OuCLaXOOPjvX7CN38w3CAo5v1O/OMI9yJ8YEMIPMfQTQaW+YKVjefF3AihPWsJYMrIbAg+gHGaqTvTyh+h1jzY2TJp4g0SwNE6M2R9q4QWEykEyIR7nNCdvjB87U1FE/6Q0JlzlCqywH4wXEsIiN2hC3RyOB6CP5ntXLbulS6Y6o+cd8Ht3D3cY+xY2M2Qb+BzWnDCBjcP/oWmrWNzxwmh9POPe/dzODnLmfjf1to1DKzRsUjg4Eg41+ZyLevT6Ywp4gDunVk0OMX0aV33XBulfNRSVIzUzjj2pOYPHpqWMGSrmukZaXQ+/zEzfOoLsX5xTx35Sj+/P4v7E4bAV+A7qcfwZCPbt935dzNHcQUEtsTe7fIi7FvBtaNI1qhpg38s5B6CysysvdNvmgkUm8ZVrgqzWIo+YioKRPpsbpf9JZIaZbeSKOuix65Hljb3OdbZ/R8E+M1AH4w1sbYV3GE81Sk5zui1kPonRAZLyK9v4A0gRJLmdTMAdyQdDEi9W5kwbPEnIcSmIc0cxFaZtgeKWXoZv8lFL9h/Y1FEtJ9KSL1TqT317IN935tqchGxR9yVvd4n+nPhYTGfFiOjg4ISLkVYd8fKX3InCsgsIzSv21wpeUoZn2BkB6wtan0sLp4Ic1iZN7d4J8OwmU5R/p+kPkmwtauVmxKNFnNM3lv6f+Y/d08ls9ZSVrjNE4c2JtGLTLLP7iSpDdOI71xZASsKhiGwZyJC1gw5W/cyS6Ov6QX7btEPiRIKXns3OdYNG1J6X1qwZS/WfzbUh4fdy/Hnl3FVGocUc5HFbh55NUATHz3V3S7RtBv0OnI9jzy+d11airsxv8288f38xFC0OOso3j5+jdZ9sd/mKaJz2PdEP76eTGPnjOcl397qpatrSVsHSk/NWBHpN5bpdPLoveIXlkYQBaOCu+aMTYS2wnyg/dbpPcHqw4k8wOELUoLvf+PGOsB2BHGeszAIigsqyvECbY4tKs6+1rRC/98djtUGqAj0p9A2Dsj7J1LXy5TH7RSRsJdqvgpZTFldsbI3Y6alD5k4UjwfBqZepIlUPIRMrgc7OUVW2tYnSoxnEo9vFhQ2NpDk1/A85VV46E1QSRdiNhVk+MZF+54AFYaJxdKPkNkPFuOPZVHGluRJV+Bsc7qFnKfF1VvBEDmPwD+mVgD7kLD9Iy1yJzLoMnUujEHKAHoNp3e5/Wg93l194FxT0oKPdx74hOsW7IBvy+Azabz2XMTuPiB/lzzdHhR+IIp/7Bw6j/hRa/SUtJ+5ZZ36HHmkWha7VZdKOejCtjsNm5//TqueuoS1v+7icxm6XFVxwsGgvg8fpJS3VUKfUopGXX7+3z/5k/YHDYE8NZ9Y6wH6L1E5QL+IMv+WMHKBWvodERip+jWRYSWhXSfD55viRpmtx1hzdhwHBG5z9mH6F0OAEFwHAuFI4jpUJirMYvHoiWHpMC1RpTdgmpY/4yNyNxroPHkyM+HmUvM7gthQxrboeglyna4BMJ9QRn7K4YQGmS+DSVjrVZbswAc3SyJ9z2cjt2vF5bk+J7bnL2R3p+JpSCKZoWxpZR7dNbE+pv4LefMfWHZhrtOBS0dSj6Jeq5o3T9CS4fkaxDJ10TskyXjiZ7CCYBvIhBf58OaeHwrVlO9D+l1QeErkPUhwnF4+GuNraEOpL0/d6b19/L9Cq7T42qfomq8O+Rj1v6zvtShCIY6dr588VuOPOlQDj9h96TtP7+fX7p/b3K25LFpxRbaHBh/1eLKoApOq0Fao1S69Doobo5HYW4RL1z9GmenXkH/jCu5rN1N/PzR9Eqf55ePfmPSe79iGiZ+jx+fx480ZcxBYXanjZUL11bT+vqLSHs8NCLdRmmXh/1IaDwVrfHn0R0PQOhNIPkmwoe3Adgh5R6ElgZ6G8pUVil8pnRCrtAbg6Mn5T8TGGBsgkAUoTj7IcSqVUD6QUsFWZaIkguR9UFkO24VEcKBSL4KrclPaM3+QMscFdXxiG3OGaGOn70jijZE6pDd6afAglDxbHnD/nSEsQHs0fROAK0ZwtkXkXq35Txiw5ou67bWTH86THekYsT4e0AZrdRVQ5olyNw7CFe+9QIeZN7NkQJmwTVEfn53YVrpIUWtY5omk0dPi9q+awQNvn/rp7BtQhPEfG6VElHLUQ9QzkedIRgIcvdxjzH1098J+q0P2I4N2Yy47s2ID1Z5jHv5OwLeincZmIZJoxYZlVqjISGEAy39KUTTWYisjxCNf0Fr9BmarfwnAy31dkTGi1bbq8i0tCAyXkVLsZ6ARfLVlO1MBJBFr+62Jf25UFGokzKdFmGHYBQNDFuHUDHj3jcUBzi6I2wHEjstY4PkaxGOo8qwt2YRwolo9HlIaTb0nvQOiIyRCPcZu1/o/yPq8VHOCCIJkfku2I+2fsbOLjl30egzawKtcKJlvWO186behUh7GNF0JiJUM1MpnKcQ/QavhRycOOKbEnufWRiKDO2B3pLYUTAdtNp9OlZYBP1B/J7ojrU0Jdmbw7sse593NFqMjpqmbZvQqlPzuNtYWVTapY4w65u5bF61jYA/3LMN+oO8//CnnHbNidjsFftz7dyYU+F1hYCktCSOPDlSM2JfQ2gZsFdYukLHuU5DuE6Lvs/ZC5lyeyjVEYPgCqT0IoTLiqY0ngi+aUjvT6Hx8FFSMTIAtuhCRSJzJDL/CfB+h3VzNcF1KiLtSas1VG8eqi+JOCnCfWY577bmEVoGImMYUj4NBK2JvREvclGxZ6mANcBNS0c0+hgZXAXB1dZN2NY5Io0l7IeEokkVw5pA/AcYm5F6e6tw030eeD4PpcR2fb81rFqiuyt87gph5pWxU48opBW2tkj74RBYREQBstAhxudaUbPYnXaat2/K1jXbI/Y5XHYO7RPewXJIr4Pofd7RzPpmbmnBqaZraLrG3e/cWCc6mVTko45gVSVH92yL80vYtHJrhc/VrkubmCE33abhTHKU/jcpLYlnfngQ3ab6zhOFlnKDJSseEwmeb0p/EsKGcJ0cioJ0IKrImN7WSg1FQQg3WsZzlvBWo6+g8SSrTsHcjhDCOi8OdqcyhPVz0tXWPJs6yq6IRFRcpxG7ewdKtVJSHw5TqhW2jgjXKQj7IdW+IMvgKuSOE5G5NyALhkLuQNjZG3aeZKnROk/ESuHYwdEL0eiL+Gt6OLoSO5LhBfuhEVtFxshQEa0jZJ8LRCoi832EFjmbRlHzCCG4+ulLse2tMSUsp+Kcm/tFvP7BT+7gtteuY/8j29OkTSP6XHAMo/4cxhEnRn4GagMV+agjJKW50e16VNlfaUrcKRUftX3Zwxfw8KzlEQVHNrvO0PH3k7s9n00rttCyY3P6XtwTd7Ia451wkq+CvNjD/KT3R0TSxWHbhBCQ9R4yZ3Co9dUOBEBvh8h6t/ybpUhClnwCnnHI0LHSdiAi4xVE4++QxR9Y4mhaM0TyZQjn8dV6i7WJ0FsiU+6Fol0FvibW5c20OndsB1vvMYoqbDyQMmhNqTV3EjVSFfgLtAxE09+tWqAEIeyHIh1HgX8B4fUvTiv6FaWdV+hNofEP4J8NweWgNQPXybEdPUWtcOKlvfEUenj3wU/wFHoxTZO2nVvzwIe3RdVr0jSN064+gdOuPiFin5SSJbOW8++fK0jNSqH3eUfX+JRdEasIsS7QunVruXFjtPBww2PN3+u46aj7MYLhFy6hCfY/oj2vzX2uUuebPHoqr93+PoZhgLQ6dG4ddS2nXNE3nmbXOaT0gudba04LutXK6joDIWq3BVpKP3Jbl9gvcPRFy3onxrHSchKM9VYY3354hZ7SzfyhIYGuPQseddCyEE2mNMibi/T/ZTlcxkawd0UkXV4DYmkgvb8i8+6kzOJSXFb9SPLVibXFLEYWPBlKu4WcsKSLEakPNNi22X2JYCDIhuWbcSU7adG+crOMAIoLSnjo9Gf4b94qNJuOEALTNHnk07voGceZX0KITVLKKHoAof3K+ag7fPj453z23ARMw8Q0TBwuO3annf/9/jTtDokcelUefq+fJbOWI4Sgc88D65QGSSKQZhEy5xJrUFjpTcAJ9i6IrA/LvPBKY6sVCfBNtdQ93RdaF+w43qDNnGtCegp7f+eciPRnEe6z47aWNAssifaoqQgXIv0phPvcuK23ryOLRyMLRxC1JXhPHMehZb2bWFv8i5CecWBsA/vB4B6IZqv8TUrRMHn2spH8/vUfEZ0zNoeND1e8StM28ep0K9v5UGmXOsSVQy/mqFMO44d3fiFnSx6HHncwZ15/CplNqzYl1+Fy1Jn8Xk0gi9+G4FrCw80+CPxjSZYnXxn9uOB6ZPb5oZHyVr5cFr4A3u8h6+O4PS2KtIeR2ReGhortyss7rTx8vAv7jLXELunyIQP/Kucjnuhtid1FtAstJH+fOMzCV6D4zZAtoeLXks+Rjb6okQiQom5TnF/M9C9mRR0RIoRg8uipXPHoRTVii3I+6hhdeh8cU3u/OL+Yb16fzNSxvyOl5PiLe9L/tjP2XWn0vfF8RXSdBx/S8wUilvNR+FxIEdMIO4bAMkt8LKkcUaoKIKUXsEPW5+D5zJr4KpIR7otCEZY4R6W0JsQuwHSGFV0qKoeUErw/WOkdc4dV+Jt0DWiZYG4ntlCcbkXUEmVXYGnI8djz7+4NzcF5CNHo44Stragf5G4viKn3FPAF2Lp6W43ZopyPekJhbhG39niQHRuzSzU8Ph02nsmjp/HanOGkNUqtZQvrAGWJZ5kl0Q+R0kq1RFUh9SE9ExDVcD6kDISGxe1Sy9TAdRai0TcILQUpfWDmILWsuObjhd4C6egekjbf2wkxQroZiqogCx4JV8Q1NoP3B0h7BopfBWMr4cPyBFbdxSXgSJyUt/RMiLHHsCb2mjkxJdYV+waNW2Vhd9jC5pLtwul20OGwdjVmi2q1rSeMG/EdOzZkh4mH+b0Bsjfn8MUL35Rx5D6EowfRP9J2cMYakx0KT8ekegqUsuCxkOPh272WdxIydzBm/lDktqOQO45DbuuOWfgCUlZnBH04Iv3FkIiUk91KnXar20Xft6cZVxUZ+Ds0DXjPwtIgELAcj0Y/I7JGQ+pTkHwjOE8F94WIrA/R0h5NrL6CmU/sz6sAsyhxayvqBa4kJ2ff1A+HKzzSKkItu6cMqrmGBBX5qCf8+skMAr7IG1PAF+TXT2YwePjltWBV3UKk3I70/UZ46kUDYUckD45+jNCQjmNiDGRzIqox10Ia28AzgUjnxm/JgQcWs/tm4YHiMUhjJyLjOaSxHVnyBQSXgb4fIuniSk8YFXozaPwj+KYiA0sRWiNwnxkxBVZRcaT3J2LWdhibEeYahKM7whG/roGKIpw9kN5JRC16FRkhR1TRkPB5fPzw9i/8NHoaPq+fXud25/w7zySreezv+ODhl1GcV8xPY6bjcNkxggYZTTN4/Kt7azSCrrpd6gmXtrmBnZuiK5dmNkvniy2JraCvL8jAYmTBMAjMBwQ4jkWkPoyw71/GMUuR2RdjFYHuytc7QG+OaDQBoaXEPLZMW7y/IvPvDhWyVhQNMkZC3n1YNzkflr6HRKS/GC4prqhRpJTI7HMh+G+MV+hWOs0eh4nAVUBKH3Ln6XukfXZhh9TH0JIvjnWooh7i9/q5u+9jrPl7fWkaxe604U518/rc52jWtkmZx2dvyWXF/NWkNUrhoB77x33KbXndLirtUk/o1f/oSHU7QLfr9Dz36FqwqG4i7IehNfoU0exvRLO/0bJGl+l4WMd0RjQaB84TQCRZT4lJlyIajauy4wFYnQ17D/IqFyfkP4T19LortB8Agsj8+5BmQdXtUVQP7/cQXFXGC+xIrfbSWUI4EVlfhJRUQ5d2rQmkDVWOR5yQUrJo+hI+Gz6e79/6mYLswlqzZfLoaaz5Z0NY/UbAF6Q4r4T3Hxpb7vGNWmRyzFlH0fnYA+PueFQEFfmoJ+zclM31Xe+lpMCDEbRuaLpNw53i5s0FL5Tr5e7LSLPI6kzwfg9Iq+Az6TKEltgQo5QmckffUAdERb9n9tBro+Xu3Yi0xxBJ1R93r6g8ZvaFoVRZLGyhaNl4hFa19vh4Ic0SkCWWoJxQz5jxoLighAf7Pc2KBWsQQqDpGkYgyP0f3sYJl/SqcXvu6PUwS2f/F3Wfw2Xnh5LyHZBEoiIfCWTnpmz+nbOC/J2Jfxpt3KoRb8x/nhMH9iYpzY071c3xl/Tm9fnlh9f2ZaRZgMw+D4pGWdLRwf+g6DVk9nnIModwVR8hNETGKBBurGLPiuCwJtZGRYKsvSetfR5jRzkvCIKxHVn8YY2YUxZCS0LojZXjEUdG3foeKxeuIegPEvAF8JX4CAYMnrvyVTavqvjsrXix9/iMPTGi6HjUNVTBaRXI25HPc1e8yl+/LMbmsGEEDU4c2Ic73rgOpztxktXN2jbh/tG3Juz8DRFZ/B4YW4gQHjO2IovfRaTem9D1haMrNJmCLHoDSsZQdgTEDunPQf4dMfYHwRF9mJyiBrAfCr5txNbxAPBbsuapt9eUVYoawFPkYepnM0ujznuiCcGk96dw7TMDa9Sm4y48hrX/rI9omxWa4KhT6v6UcuUWVxIpJQ+c8hQLpy3BNCV+bwAjaDLti1m8cPVrtW2eYm883xJdeMwf2heONHORxraYQjxVQWhZ1rRYUV70wwRbR3APwGqP3RMHOLolbDCaonxEyg1U7JJZd1PZiqpRkF0U1fEACPiDbIsy6j7RnHn9KWQ2ywirBdQ0DbvTzuBhl9W4PZVFOR+VZNG0JWxYvomgPzwnH/AGmDHuD7avLy80q6hZytLp2L1PBv7DzL4Yub0Hckcf5M6TkN4p8TNDawKyvFCoAdlngPRB0tUgdinXOsB9PiLzrfjZo6g0wn4oIuM10BpjCYdFwwEu1ZHU0MhsnoErxmRxh9tBxyPa17BFkJKRzKg5wzjzupNJzUrBlezi2HO78dqc4bQ/tG2N21NZVNqlkqz4aw0iRmWww+1g9eL1NN1P1WDUGZwngedLds9S2YXN2kdoqFzOxeEtscZGZN6tkPkOwhmHYjJnb6v2Q5Y19RTAku4m6VJE0zlg5lij2BvgBNr6iHCdAM4ZSN8MyLsLqytp1xOxHbRMRPJVcVtPygCYeaClq4m0tYjDaef8O85g3EvfhaU5hBDouhZ1bH1NkNEknVtfvZZbX722VtavDvtk5KMor5j3Hx7LwP1u5KJm1/LC1a9VuGAos1l6TJVCb7GPYKB6ipiK+CJSbrDaZ9H32KqDcCNSbgRAFo8BuafGxy6CljR6POwQjlDkwl2BV/ugZCzIAEJvphyPOoYQOprreESTieC+EESWFQ1JGhjSham+hLmUQczCl5Hbj0bu6IXcdhRmwZOWHL+iVhj0xABOH3wyuk3DmeTE5rDRtG1jXpz6BOmN02rbvHrHPtdq6ynycHP3IWxbu6NUMVS36Thcdl6bO5w2B7Yq+/hiLwOaD8ZbHP0i0Gr/5nzw7yuJlVHeg5ytuUwYNYl5Py4kKS2J0689ieMv6Ymu6+UfvI8ggxuRRSPB97O1wXkSIuWO0imf5o4zwFgZ42iBaPZv3P6e0ixE5l4HgUWULeuuIxr/gLB1iMu6ivqFmf9w+PwYAJzgOBYt6+3aMksB5O8sYMVfa0jNSuGAozrU2LW+vqFabfdi4ju/sn3djjCpciNo4Cvx8+6QT8o93p3s4tIh58Xcv23dTpb9uSIutpbHppVbuPaQuxj30ves+GsNi6YtYcR1b/DkhS9hmnW/1aqmELbWaBkvoDVbaP3LeKnU8ZDeyWU4HoBIiuvFRWipiKyPIOlyyv36aY3jtq6i/iCNraEJzXs/4PjAPwMZiKWwqqgJ0hun0e3UrhzYrWPcHQ9viY8tq7fhKS5jSGYDYZ9zPqZ+NjPqRD/TNJkzcUGFzpGSmYLDHT3/anfY2LEhu1o2VpTXbn+fkgJPmCPl9waYO3khs7+dVyM21GekWYjMu6eMV9jA0RtZKXn08hHCjpb2MDSaSPSyKwe4+iE0Fcqt60hpIH0zkMVjkN6pSBmHtGtgEbF1YRyh0QGKRGIEDXK35xPwx2/QY1n4fQFG3f4e5ze6misPuI3zG13Nyze8hc/TcNNs+5zzIbQyPNUKOrFtO7fGjCHi4vf62e/gslM35SGlZOfmHHK35cV8jc/jY97kRVHtCHgD/PLxb9WyYZ/A9zNlfwWC1lC2bcdgFr0ft2WlNJDeqQj/FEi6EktYzI3VXmsH20GItKfitp4iMcjgBuTOU5G5NyELX0Tm3Y7c0RcZLCOSVhFECmWm5ETNDf/a1zAMg4+fGscFTa5hQPPB9M+8ilG3v4ffG61dP348f+WrTHr3VwK+ANKUBP1Bfv5oOkMvjE/NWV1kn+t2OfHS3qxetC7iw6TpGsee3a1C5zisb2dadmzOppVbMPZQmbM5bBzcY3/ad9mvyvYtmPI3r97yLhuWbwagY9d23PHm9RzcI3w+iRE0y9Si2L5+J+uWbqBt5zZVtqXBU6E5KaHPSdEIpJ6JcMdOuVUEGdyIzL0CjJ2hLQJwQdIV1hwZe1ewH6XyyHUcKSUy93owNhPmKJjZyJyrock0hKhi3ZXjaKtIOmpxqRma3aJIBK/f+QE/vjelNDru9/iZ+O6vbFqxhWGTHknImltWb2PGV39GPEgGvAHmTV7Imr/X1YvW2cqyz0U+Trv2RFp2bIbdtVvC2mbXcae4uHZYxRTqhBA89/OjdDq8HbpNx5XiQtM1uvQ6iCfG31dl25b9uYKHTn+m1PEAWL14Lfcc/zjr/90U9tqkVDcdDov9gVy9eB03HH4fN3d/QGmPxMJxJGXrgOyJH1n0arWWk1Ii824MTR31hf55gUIo+dhyQBzdlONRHwgsBmM9kREK02qN9f9e5VMLYUdkjAQcoX9gzfyxITJerN6wQ0VMcrfl8f2bP0ek5QPeAAt+/YcVf61OyLrL/lyBwxVrpIKlLdUQ2eecD3eyi5GznmHgg+fRomMzGrfK4rRrT+SthS/SqlOLCp8ns1k6Vzx2EeffeSb9bz2dtxa8wAu/Pk5aVtVDoh8N/QIjGO79SgmmYfLZ8PERr79xxJXY7NGfroL+IEbQYNXCtdxzwhMYRmWnqzZ8hP0wcHRj9wW+HIyN1cvpB5dBcDWRNyxpPeX64ihqpkgsxsYyZvBoYGyKukdKD7JkHGbevVbrbIxBdcJ5DKLJL5A82NKjSRqEaDwJ4eoXpzeg2JuynACbXefvGcsSsm5qVkpYBH1PpCmZ8fWfcVvL5/ExefRURt3+HmOf/ZrtG3aWf1CC2OfSLmBFDS5/9CLOu+NMpoz9nU0rtjD7u3mcdFkfUjOjP1VsWrmFf37/l6RUN60PbMkjZw0jb3s+hJ5Sf3z/V57/+bFqhceWzFoeNZViBI2o3u8RJx7K8788zrsPfsyyP1YgzchjTcNk56Yc5kxcUOG00j5F2rOQfz8EFmA5BTox8+0iFSGq8ZUxNoNwQCwHxthS9XMrahZbhzIE4wzQI1ukpbEDmTMAjGysiJeOLPkMmTwYLfXuiNcLvTki9c54Wo0MrrdqnaQJzr4I+wFxPX99JjktKfZANiFITk9KyLpHnNilzFrEJTOX4yny4E6piEZQbLas2cadvR+lOK8Yn8ePw2VnzBNfcP/oWzhxYJ9qnbsq1JjzIYTYH/gQaAzkAVdJKZfW1Pp7s3zeKu4/eWhpm63T7eC9Bz9h2I+P0KXXQaWvCwaCPH/Va0z/YhYOlx0pJX5PAARhN/uAN8CQfk8zdv2b6Laq5XqT05MoKYjeWZGaFd0pOrTPwYz8/RlG3f4+34yaFPU1RsBg3ZINyvnYC7P4Iyh8FivyYQMk2I+GwDwiFVEdkHRp9Ra0dSrjhmVa+xX1AmE/GGk/FAJLCP+s2EBvBY4eEcfIgqFgbGN3qi/k5Ba/i3Qej0jg0EApJbLoRSh+DyuFg1XH5DoHkT5MTb8FuvQ+iOS0JPK8+RH7jKBBr/5HJ2Rdm93GIb0PYsEvf0fdbxgGeTsKqu18PDvwf+TvyC+Nru9KLz1/1SgO69uZxq0aVev8laUmP3FvAW9LKQ8Angfeq8G1wzAMg8fOGY6n0IOvxCoo9Hn8eIt9PHbO8LD2qg8f/5yZ461iIG+xD1+J3/oi7xVlkFJSlF/CvMkLq2zXGdedHDXs53DZOeuGU8s89r95q2Luk1KS0TyjynY1RKR/HhQOx7oBeLDqL0wI/AX2Y7G+GqHuE+zWULeU6k0qFbZ24DiGyDSPDfQW4IiDjLuixhCZb4K9C5ZibhJgA1snRNboiLodKT3g+4XoNUYm0vNVYo31/QTFH2Kp+O6qNzLAOxE8nyZ27XqCbtN55PO7cLjspddhm8OGbte5f/StpGQkl3OGqlGcX2w9sMYIfjjdThq1yKzWGlvWbGP53FURaX2w3veUsVWvUaoqNeJ8CCGaAkcCH4c2fQW0F0K0q4n198RT5GHCq5MoyCkiWrOIzxtg7qSFgOXtfjPqx6i6INEQQrBtXdVzaAPuPYcDunUs/eALIbA77Rxx0mGcfm3ZFe6pmWV/MXqflxivvb4ii8cQPb3iA2MpovEv4D4PtKZWbt/YBCWfIWX1amdExiuhp2Jtt+y77QBE1pgKPX1KM89q8YyHnoSiWggtC5FyM+jtQXoBNziOBy3KjcIsIVK+v3QnmOHaQNLYiSz5ArPgRcyiN0MaIlXXnJDFHxJ9urMPWTy6yudtaHTtewij/3uVi+49hx5nHcm5t/TjncUvccIliXkwKMgp5Kaj7mfR1CVRhyE7XHbOveU0HK7qzfUp2FkYsz4w4A+Sv6MinX/xpabSLm2AzTJ0xZRSSiHEemA/YG1NGCCl5NNhX/PJM19jBg2CMQp8NE1YtRxAcX4JnqKKK82ZhkHbzjHVZMvF4XLw4tQn+OO7+cycMAdN1+h70bEcdWpXtBjD7HZxwqW9mPvjgqgO1f5HdSAlPTFee73FWEfMm4GZjQz8DZ5xWA6KBGMdsvAF8M+FjKrL51sKp+9ZuffgKtBbVSjvLo2tyPyHwD8zdKJ0ZMrtiKTLVHdMLSE9PyDz72N3NKMQSt5HBuZB1sfhzqSWBVozMLdFOZML4Ti29Cez+EMoHIZ1N7K+0BINRDpkvoVwHB5pi5Tgm4b0jAdZiHD2BfcFCC1UAF9WPZEZvRuu9Jwln1h22w9HJF+DsNX8BNeapEnrRlz15CU1stZnwyewc1MOAV+UhwkBJ1/Rl2ueqWa6F2hzUGztKbvTzgHdaz7lW5MFp3vfFiOumEKIu4HSyqv09PS4Lf79mz/x8VNfhamBRiPgC7L/UVaxWHJ6EkmpbkoKy1e41O06LTo057C+natlp67r9Op/dKXzi5bTIYjmPrfev+JdPA0BKaXVWWLmgf2g6IO+bAdBcAVRw+BaSygYGmWfD3y/WgqUUW4AlUHY9gNbxfRgpPQgsweAuZPSv6/Mg8LhSEAkX14tWxSVR0oDWfg0kZ8Rv9WG658Jzt1FfEIISL0Hmf8w4TUiOmjJVpQNkP45UPg8kY6xCTIXmXsVNPk9rN1WSonMvx+8k0Lnlkj/XCgaadV0OI8H28Hg3xLlvIDeMfp7LHwBSsaUnpPgasu5yXof4dg3Iql5O/Lxe/w0bt2o3AfAqjBl7IzojgfQrG0T7nrrhrisk5Tq5rzbzmDCqElhkXzdrpPVPINe/bvHZZ3KUFM1HxuA1iLUKiCsR7U2wPo9XySlHCGlbL3rX0pKfPrZpZR8/NS4ch0Pu9NG52MPYP8jLedDt+n0v/30qHUYQlhqqa4UF7pNp2PXdjz30yO18hS6/t9NjH7ss5iiY398v+/IMcvAMkt1MvtCS3lyey/M/Ccj0iUi+eoYZ3CAuz/I2GFI6ZsaP4MrgCz5KuR4RLnRFY1UKZjawFhjObdRCSB9kQrDwt0f0p4EbY/CPsfRiKwvSqX0rRRIGX9PaYL3u/Btvmkhx8PP7ocPP8hi8HyKzLsdjBVELyqwI1JujVwmsAJKPtjrnAHAj8x7oEyBw4bAuqUbuKPXw1zUbDCXtbuZgW1vYtrnM+O+TtAfO40bS0W7qlwzbCDn33EmDrcDm11HaILDjuvMyzOewmav+cbXGllRSrldCLEAuBwYDVwArJVSrq2J9T1FXnK25sXcbzkSGj3OPIp737spbN+gxwewff1Opoz93ep2MSWaTeOhT+6kZafmbPxvMy3aN601BbpxI77jnQc+LnOQnK+k4c4H2BNp5iNzLgdZhHXBDF3EPV8itRTEHu2Mwn4QZIxE5j8AMoDlhwcg+TpwngrFb8VYRVCTddrS2A6FLxDzhiQLrBbeCkZRFPHCQdQkPWB9PqLrRWhJFyDd/a00hkhCaBnhLwiuK+O8AD5kcH2YG2EVq5Yl/+2z0i72bhD8F6QHECB0SHkQ4TohyiGTQ+8jys3R3GZFDRtom27O1lzu6PUInj0i3tmbcnhu0Ks4XA56nhs9SuD3+tm8ahspmck0bhkl2hqFHmceya+fzMAIhv+ebQ5b3LtrdF3n2mGXMfCRC9i6ehtpjdOqXchaHWrS3bkBGC2EeAgoAK6sqYWdSQ4cbgd+T+QXVLNpHH36Edz9zk1kNo1M8+g2nQc+vI1BTwxgyczlJKW6Kcot4pNnviJnSy4Hdu/EJUP618C7iGT14nW8O+STcj3kA4/ev8z9DQbPhJAjsffF2wfFHyJTbkaI3QO7hOsUcPa16jikFxxHIbQMpDSRWmaMXLiJcJ2cwDcRjiwchqUJUQa78vqKmkNvA3pbKwISgUC4T495qBA66C2j77QfBMYqYhenOhG2vR50ZGEFDPZbnVxN5yCCy0Aa4Oga9n0IO6X0lWGDoGxnp37z7RuT8fsCmHt1NAYDBu899EmE8yGl5NPh4/l02HgC3gCmadKl10Hc/+GtNG/XtMy1Ln/0QmZ8/Se+El/pdVy3abiTnQy479z4vrEQ7mRXnZBrr7FHOCnlcinlsVLKA6SU3aSUNaYZq+s6p19zInZntPSJ4PJHLozqeOxJi/bNOPny45gz6S/+d/M7/PvnCrav38nMCXO4o+fD/PlDzac2Jn8wpdxheDa7zrXPVkw2vr4jA0uIfaP2hTQWwhHCgXD2QrhOKn0KFUJDpD+D5Zvv+RVxgqs/wn5IfA2PgZRB8E4m9pOwAMexiGjdFYqEIoSAtKfZJXu+Gwe4L0TYD63aeZOvoczLstDBdVb4JmdfrLbw8ggg8FsS/s4eMR0PAOHoHdsO4QZbw4x6ACz89R8CMToc1y/bFDHp9vPnv+Hjp8bhLfJiBA2kKVk6a7kVPSku+8GhRYdmvD7vOXqf3wOH24EzyUnfAT15ff7zNGlds7obNc0+o3B67fDLWLVoLf/OWQnSingE/UGuf/4KDqxgpe/KhWv48f0pYb3SpmFiGjDiujf5dONbCSlKikXutvyYsrwArfZvzq2vDqbr8TVzs6x19JZY4fBoT2XC6jioIMJ5PDT6HFn0llVAqDVBJF8BrsQ8jUTHoOzZMzZE+rCaMkaxB2bJVyGdGDP0zw62AxEpN1hpuyoi7IdAxghk3hAsR3rXtUYHLROR+VbkbBf3hZZ4mJlDmdNwtcZWx0xFcBxtjR7w/4WlCbILO6TejxDVa/2sy6Q3TY9Vu4/dZQ+rj/D7Anz67NcRzophmBTnFTP105mcMfikMtdrvX8LHv08UuG2obPPOB/uZBcjpj/J4t+WsmjqEtypbvoOOJambRpX+Byzv5mH0DSihSMLsgtZvXgdnQ6vuTa0zj0PZNY3c/FFSSelZCbz3pL/VVlttT4i3Bcgi9+OsscBrpN2tx1W9Hz2QxGZo+JjXBUQwom07R/qytkbGyTfgtD3rU6muoD0ToaCxwjvWglCcCXYu1S76Fy4ToNmJ4L/T2RwDWBH2NqA45io8v5CS4NGXyELng4JmUVLlzgg+dYKK5kKISDzHWTRG1AyFmQ+2DoiUu5AuKruXNUHzhh8EnMn/RXRhWJ32Dj58uPC/r7b1+3AGyO64fP4WTp7ebnOx77KPuN8gPWF6tr3ELr2rVokwDCM2FXeQkRVj0skpwzqyydPjyPgD4bVfdidNgY9ftE+5XgA1gU6/cWQ9oKNUo0OWydE2pO1bF3VEKkPIHNvJDwCYgMtA5F8WW2Ztc8ipUQWjiBSft8qcJbFYxBpD1Z7HSEc4OyD2KNdt8zX680RmaOQ0m+lH/MfCE3d1S2RvORbEZUcDyCEA5F6B6TeUYV3UH85+vQjOO3ak5j0zi+YpsQ0TBxuB83bNeW658Lb2lOzUmImRW0OG1mVUJYOBoJsWrEFd4qLpvs1qfobqCeIutwy1bp1a7lx48baNqOUZX+u4K7jHo2a6khrlMoXW96p8Rv+5lVbGT7oFZbNXoGmC1zJLi5/9EIuvPvsfVZ8Spq54P0xpPNxeOiJsf7+LqRvGrJgOBirAQ2cJyDSHkXEKlpUxB1pFiOLXoKSLwlPQ+yFSEc0nV29AYTVQAb+Rebfa0Vh0LAiZDcjUm6o19+BmkZKydLZ/zFl7Aw8RV66ndqVPhceg90RWTc4pN9TLJy2JOK+oNt03v1nBK0PKP97+v1bP/HeQ2MpKfAgpaTj4e24f/SttO9Sf7vYhBCbpJQxVTeV81EJpJQ8NWAEf/4wv1SoRQjrQ3b/h7clTIK3LHu+evl7xgz9Er/Xj2mYdDisLQ9+fDv7HdyaYCCIzW5TF51qIgNLwDcThBNcp9TaTV+aRSDsCFGR4kJFvJDSsETegsspv8tDg+Tb0FJvqQnTwpBGNnLnKZa+R9jzuANSH0ZLrr5SpiKSnZuyubPPo+Rty8fn8WN32DBMk1tGXsM5N/Ur9/ifP5rOiOveJOjfHd0UmsCd4mL08lfIbJaRQOsTh3I+4owRNPj29cmMf2Ui+TsL6NC1LVc8NoAjT6padXt1+Pb1ybx5z+iw3KQQYHPacSU5KcwpIr1JGhfdew4X3XN2jRbDNgSkDCDz7gTfVECntMUw5S60lPgoDyrqPtI71RLqKivisSciHdF0DphbrRlC/jmgN0EkXQKOvgl7GDCLXoeiN6LbqTVGNPldTa+NA9vX72D7hmxa7d+itEvS7wswY9wfLJ29nPTGaZx0eR9adSq/HktKyWXtbmLHhuyIfQ6XnUsfOp/LH7kw7u+hJlDORwPFNE0ubnEdeRUYCORw2TllUF/ufFPdMCuDWfg6FEe7mNsRme8hnMfUhlmKGsYseBZKPqRs8a+9yBoHOVdg1R35sRxXOyRdgpb2SGLszBkM/khl1V2IpnMiRc0UFSZ3Wx7PDhzJ4t+WYnPYCPqDHH9xT+56+0ZcSVWLRpYUejg3fVDM/UecdCjP//xYpc/5xQvfMHn0VHzFPo44+TCueOwi2h3Spko2VpXynA/lBtdT8ncUVMjxAPB7A0x6dwrb10cfIKWIgWcM0Z92DWTJR2FbpJGNLPkcWTwGGVxZI+Ypagjhxop8VRCtCRQ8jNUquytNI63/LxmLDPwTdxMB0JsR2057aIqyoiqYpsl9Jz/JP78vwzRM/B4rzT3jqz954aqqd8Q5XHZsjuj1QZqu0ahl5TR8fB4fd/Z5hC9e+JadG3MozC3m96//5JbuD7Dir9VVtjMRKOejnpKU5q5UcavDbWfxb8sSaFEDxMyNtQOMTbt/Kv4IuaM3suBZZOGLyJ1nY+bdEzFPpjyksRkZWII0i6thtCLeCNcZVDzq4QD3pRD8L8YxEun5IX7G7YFIupjoqoMOcJ3VoLU5Es3CKf+weeWWiGnoAV+A37/+s8oPdja7jZMG9sEexQERQtCkdSOev2oUb94zmpULo6nphvPrxzPYvGJr2Bwz0zDx+wK8ec+HVbIxUSjno57idDs57qJjYnrNeyOlxFnF0GB9QxrbMQuex9xxKubOc5DFHyKl1+pYKB6DmT0QM3sQsuQrpCyjgFCPVWlug5DKqfTPC40/NwAP1tOuAd6fkMXvVcze4EbM7IuRO05EZg9Abj8Gs/BFpKzZ1m1FdIT9QEgejKVmGu3mLgAXoEPSIHCdTuxLqxGarZIIOw+DlLtCaztCdjnB1gGR9nBC1txXWLVwbcxaHYfbwZq/10fdVxFuHHElrQ9sWTrAVLfroc5FJ1//7wd+HjOdCa/+yK1HP8hHT31Z5rmmfzk7qu4TEhb/tjRCnbU22ad0PmqDgpxCFk1dgqZrHHHSoSSluuN27ltfvZZVi9axdfU2/N4Aul0vU/G0W7+ucVu7riKNTcid54EsYVfIWxa+CJ7xYBZZQ7FCqRQZWACeLyBrTPQOkuRroeBxIp9gTUi6yjpH8Riiizr5oGQ0pFxftr3Si8y5BMxsdqtlYs2iQQsbhqeoPbTUe5COY5Eln4G5HexHgPME0FsjjFWWQ+HohtCyrO4YLSP0N90bJ8LZu0o2yMByCC610joxBMe0lOuQrlPA+wPSLEI4uoOzrzVPRlFlMptnILTozkfQHySzEnoee5OSkcwb859n1jdzWThtCUmpLpb9sYIlM/8tjbTsGjz3ydNfcfTpR3Jgt45Rz6XpsYuZBaJOdT4q5yOBfDrsa8Y88QU2hw0pQYbar864rvzBZIW5RUwZ+zs7Nuyk7SFtOO7CY3C6w2+QaVmpvL3wRWZ9O49/fl9GcloSyelJvDvkYyRgBAx0u44A7nv/FtzJsWc5NBRk4YuhqbZ7inL5Qm2SknBHwQeBpVDyOdLRw1JH9f8FeiNE0kDw/0N0nWUNYW4F9g8JOcWIUJg7kVKW/YX3TgSzgEhZbB8Uf4BMuQkh4uewKqqOcPZEOHuGbZPSA7I5aFmIkHy/EDqkDkHmP0S4GJkDbJ0spwWQZg6y+H3wTLTa1FxnIJKviZjVI80iZN7N1gBEnIBhDRPMfCvqDBlhawcpt5Q39klRCXqddzSv3PxOxHZN12jRoRn7H9mhWufXbTp9LjiGPhccQ0mhh/Myr4wYbAeAlPz4/pSYzscJl/Rm8W/LIoaoCk1w5EmHhknD1zb7ZLeLETSY/MFUvnvzJ4pyi+l6wiFcfP+5tDmwVdzWmP7FLJ678tUIiV6b3cbwyY+UOW9lwZS/efTs4SAg4A1id9pwp7p4adqT7HdQ+TauXryO8a9OZP3SjbQ9pA3n3XZ6nZhiWBOYW7tQ6YmbeltrLD0mu50AJ9aNI5pjIcB5CiLjVStqEVgQ47yt0JpMLdve/CfB83GMvTZEo/FW2F9Rp5DSQBaNhOIPsBxdaQ35S38OoVuTTKX3Z2Thy2CstIo93RchUu5EaMlWgXJ2/1Bd0a7PqwO0RojG40sdGQAz91bwTSP8cy1AJCOa/BY560WREBZNW8LDZz0LQMAXxO6w4U5zM2La0LjeO3ZuzuHS1rE7E3uf34PHx90bdV/AH+Duvo+xetG6Ui0q3a5jd9h49Y9hNdrxolpt98I0TR4/73n++nnx7j+OTUe3abw0bSgHxWn8/A1H3MvqResitgsh6NavK89OjJ6D9RR7GdD8uoh5AZomaNmpOe8vG1mnQmd1DXNrZ8oexhYNnTIHckXDfiQ4ekLxm7HXc1+Ilv5szFNIaSDz7wfv90QvTtSsm4te9lhuRc1jFjwPJR8R3g1lA70lovEkhNithCmlGaGvYRYMg5KPiZRpt0Py1Wip1s1FGjuRO/oQ/fPpQqQ9HCo0VdQERXnFTP1sphWR7tyGPhf0wOGKbyGvaZpc0up6crflR+xzuh0Mfu5y+t96eszjfR4f377+Ez++/yveYh/d+h3OJQ/0p0WHZnG1szzKcz7qTgymhpj/0yLm/7Q4rBrYCBqYhsHIm97hjfnPx2WdLasix7eDVfi5ftmmiO1FecUUZBey+LelUQsNTVOydc12Vvy1mgOOih5yU2DJqQfmEy1VEj2KYaPyzorTWqcsxwPA8xMybWjYjWgXUgasmS3+P6PYGrLL0U05HrWINHaAscFyKPTmu7ebRVAyhsgIWxCMbeCbAq49lC1lCRI9PH3mnUik44G1zfM9hJwPq6tq15yivfEjjfUqvVKDpGQkc/aNiR2sp2kaVz11Ka/e+m6Y6qmua7hT3ZwyqG+ZxzvdTi6652wuuufshNpZXfY552PaF7OiVvxKCSsXrCF3e36pal11aNKmMeuXRUZthICWnXZ7oHk78nn5+reY/d08wIrCmGb0GgKbw0bu1rxq29YQkcH1lgpl8F8ib+Z20DKtWS8E9thfkSK8vWs+NGtQl+1g67xlOi4eq+XSHiXF5vnKUr6MmiLSQW+GSI+PI6yoHNIsQuYPCU2ItQMBpKMPIuNFhJYOwVVlHB1ABhYjXP2Qvj+Rhc+EPpMgHT0RaY8hbB2IWScE4fv0lkR3UgAcCL1mhaMaIj6Pj3mTF1FS6KFLr4NqPEIQjTMGn4RpGHzw6GcUZhcBcOhxB3P3uzeRnBZbr2X53JX88f18NE2jZ//udOzaroYsrjz7nPNhBs0yW/b3nA5bHS6+/1z+d9PbBLzhFw7dbuOie84BrIjL3X0fZ8uqbchQcdGenu7e+D1+2h+2b9RuVAYpPaGOkRwiL+pOSLoIkXIrGFuQhc+Fog3WgDZ8i4AyevSTrwfP12DuxJqQ2wWR/iyYOcgybyBYr4/h4MiSL4gp1y2SEI0nx1WXQQbXWNNYfdNBaOA8FZF6F0IvXwJ6X8IMLIWca0Hu6lQJ/Y38s5C5gyHrC8uRjel02q2OF/9fyNxrCHMc/H8gsy+ExhOtyEjJ50RNu7hOK/1J6E2QzpOsv1tEzYcOrrOq8W4Vs7+bx7DLRmKaJkII/N4AJ17am3vfv7nWp4KfdcOpnH7tSWzfsJOkVDfpjdNivtYwDIZd9gq/j//TioQJwSfPjKPf1Sdy55vX18lU/T6n89Gz/9Gl/dR70+bAlpUagVwWpwzqS/9bT0PTNVzJTlzJTnSbxtVPX0L3044A4M8f/mLb2u0EA+WH/e0uO30uPIambRrHxb4GhWei1UYb1RmQiJR7EFoWwn4IWtYYRLOliGZL0DJfB1tGGSd2IFLutuouGv+MaPI7WuNxCPsB4DgKRDndQ1pjsB0QfZ8sjH2c9IJvKlLGpydfBtcis88LPcl7rTZk7/fInechje1xWaO+IKVE+mZj5t2HmXM9svgjK9IhJWbeEMjuv4fjsScBCCyBwGKEbT+wdSa6YxkE11mWoxfhWJgg/cji0YjkG0CkYkVWdmEHLQ2RfF3YUSJ9uJXmQw+plDpBZCIyR6ti02qwaeUWnrzoJTxFXnwlfrzFPkzD5Ldxsxkz9IvaNg+wIuEt2jcr0/EA+O6Nn5j97VyMgEEwYBD0BzGCJr98NJ0pY3+vIWsrxz4X+eh5Tjc6HdmBFX+tLo1KCCHQbRq3vnpt3DxEIQTXPz+I824/k3mTF6LpGkefcWRYSmfZH/9FKObteTwCa0Ji0KDvRcdy55tla0bsq8jAUixxr6h7rby9dlDplj01D4R7gNWeGxGF0CDpmtDnQQdbuOCYEHZIfx6Zdyul3Q679wI2RPqw2IO8HD3Bs4noT9BBZN69oGUh04Za3TTSZ7V5OnpXejiYLHoVpI/wuoEgyEJk8QeItAcqdb76ipQSWfC4lfLCAEyk/w8ofhuc/cD7dTln0CG4DBxdERn/C0XbirA+ew7ARKQPR+jNLA2ZqPjBNwORNgQaT0AWvQHeydYu12mIlJsQepOwI4SWimj0sfU5DywDvRE4ekWtJVJUnO/e/ClqvYzfG2DCK5MY9PiAWo9+VJTxr0wsbaDYE783wPhXJnLSZX1qwaqy2eecD92m8/zPj/Lli9/yw9u/UFxQwiE9D2TQExdzcI/4dLrsSZPWjTj92pOi7kvNSsFmt+E3IvP+QhM8/+vj2B02WnVqXq7nuy8j9KZInMSaw4LWKPbBSZeC90cI/LPH8SFVyHIm1wrXCdD4G2TxaPD/AWYhCAc4eiCSByPsB8U+NvlapGeCZV9EHlBatphbIe96rK+piSz5GOxdIOuDyml/+KYTvWAxAL6fgX3D+cA/O+R47HmR9oLpDc3xKY+gJfAFVvSj8S+WmFfgH6sw2N0foYdaLoULYkWutFTrJXpzRPpQSB8ac0VpFoH3O6R/oVUH5D7f0vFQVJt1SzYQiJHmLin0UJxfwv/bO/M4m+o3jr+/5+6zL9ayk6LIWiiypFRolRQtaKONVirqV0p7USG0k2iRilQSsoWQXWTNbsyY7a7n+/vjXGPGvXfmzp2d7/v1mhdzlu957nfuvec5z/d5Pk9ccmwpWxUZafn0+Uo5EKpNRNlyxjkfYGQD9322F32f7VUq1zuw8xDrFm7CHm2jVbdmOWJfnfpcyuThUwOO1zRBnQtqcmGHxqViX4XHcS1kvBNkhxmsFwU8SeZGCCskfQrOuUjnDyB9CPtV4LgmuOrpqeebGyDiXyy0ycJcC5KnIY8/D56/Qhx1wik58QXpBs/fyLTnEQmjC3G1/J7ezpynZ5n9DYUuqc6DANvJJ0ihRRn5RAT5HnFcD1lfELj0YkNE3RzW1Yzlslv8ar1OwILMnIiMex4tzDEUoal9fk3W/r4hQIsJwBFjJzq+4jTiq3dhbdYv2sSpyhmaSSu31ZFnXM5HaeLz+Xjj7nHccc6DjBk8kVfueJdeVQewYMZSwIiKDJlwLyazKaexkM1hJSYxhqe/GFKWplcohKkaIuENDF/a32MDG5jORsS/lu+50rsXmT4amfEu6Cl+x+NawIr0bES6liH1wHr7YrHb0ggteRpEP4ARtg8HLzi/QT/aF6nnkzeSG0cPgjsZNnBcF+Z1TwP0NPKvMikAe8+wk4BFzENgqokhVncCG1jbgr1nWGPI1EdBpnFySdED+OD4SKRvXyEMVwSj+71XBNysweg0e91DVxdqycXtdON2FU+OViT0fbYXWhB7NU3QZ9j1ZWBRwZxxImOlydSXv2HKC18FrMWZLSbG/fVajtrc3n/2M/fj+RzZm8J5FzXg8r7tiY6PLguTKzTSd9RIpNRTEJYLwNYpaP+LnOM9W5Apvf3h8RN/IxtYmoJvv7HscUIHJOoOROzjOfkWUjoh+0ekewmIWITjOoS1WWR2O+cjUx+kcMqsFrB1QEscV/D4eorR70ZPIe/SUi1E0nSEdma812Tmp8j00RRe1wXAiqj8S6Gqg4z3yPdI5y8gbAhHD7B1CavPivTuQR7pSnBnyYaIGYyIuS988xVBWTJrBS/f9g5ej89IOvbqtLuuNc9MG4LJbGL72p0cP5pBvaa1SKgcKMGwddV2xj3yMesXbwYBF152PoPfuSsiRWkpJc5MJ7YoG5pW+LjA/GmLGfvAJLIznCAlsUkxDPngPtr2aFXosYoDpXBaRkgpubFyf9JTMgL2mSwmuvlLoBRlh370hDR6OJ8BG8QMQou531CdTOkNvsMYT6X+m4m9hyGvXcikZSl9yCNX+iXeC3Nj1BCVFyBMBesSSD0NmTUFnHOM8xzXgePmM8bxAL9+x+H2IDPzOepUMToBxCASxyBsl5SsgbmQnvXGkktQh1RAVH+0MyRRuCTZt/0AD1/yDBmpmXjdhmS6LiV3v9KXHyb8woF/D2KymPG6PXQb0IUHxw7IiYjs3LCHwa2fzPNwKYTA5rAyfs1rnN0gPEdVSsmscXOZ+uLXpBxIxR5t45p7r6D/i7cUWj3V5/Wxbc1ONE1Q78LamExllzCrnI9C4na6+WH8L8z5cB7ODBetr2rGzY9fS7U6hVOadGW76B7dN+T+C9qfx1sLXiiquYoIkfpx5KFCPhGIWESVZUYliutXgoo/aZURCe8jrIXrICx9B4zoh2c9xhLMiQhFfssEdkTSRwhry0Jd60xGz54HaYMI6XBqNY2kXhEHlroIcwN/B9nINVekdIFrEcjjYGkRVsKo1LOQhy4meBK1DZHwGiKXHogiMu5v9QT/rt0VVN9JaCJHfwmM5Zge91/JfW/cAcALvd/kj2+WB5xrspjo2q8Dj04aFJYNnz4/nWmjZ+ZR3bbYLTS59DxGz322XGp0hIOSVy8EHreHxy//H9v++jfHm50zaR6/fr6QsctepnajkPMYgNVuJTYpJmjkw2wxUbuRUiYsWyIIvct0pG8/uH4mZOKifhiZ0hdZ6Rc0c7XgxwRBmKohkmcgvTsMiW5zXUMULXWQX+AsGG44UV2hCA/L+YZjIUPk8eiHjO61xdQvRboWIVMfBunFiKK4kLYrDLXUfBwaoUUhowdC5iTyOiAWMFUDW/AKOkX47N26L6TjAeRxPMAoW531/lzueP5mHDEO1vy2Lui5Po+PlXPXhmVD5vEspo3+NiDp1eP08PeCjWxatpXGbU/PxpIq4TQXv09bwrbVO/KE0bweH65MF+OHflKosYQQ3PRoj5CCZtc9GLoxkKLkEVoSmBoU8iwzCH9L83xxwdHuSNfvOVukno7M/AT92L3oqU8i3X8SLOoozHURtjYIU1UjhyT5ZyDY0ogVrB3y9BxR5I+UXjjWt4BlFxcy+6viuZ5vH/LY/SBPaIFkA7ohIJf+eoHni5gHIeZ+ENEYX9Waoe+R9EVEGh9ST0Vm/4jMno3UUwt9/ulG6qE0zNbCLUvous7BXcbDgC0qtMigPaYAAUI/W1duD5nfITSNNfM3FMq+ioRyPnLx2xeLcGcHrrHqumTVz2vxeQtXptf7iWvpclv7HJVTW5QNW5SVYVMeLtXWxorgiLhnMIJ/ucOaob7UrUZOh1YFtLMKHlweRx4bZDgZvn3II92Q6W+Aaz44v0Om3IVMD93x9gSaKQaR/Klfq8TmV7g0g6UJIqHgG5giF64FRlSpoKiXnlXooaV0GtVRuapQDAn9oIZA1hfGckw+CKGhxQxCVFmOqPQTosoytKQPEKbCqxzrGZOQh9oh04Yj04YhD7VDz5hc6HFOJ2qfXxOft3DVT1KXJFY1Ek+79e+EJcjDpdVu4eqBl4c1nj3aji9E5EUzCRxhOjEVEbXskov83ohSSnRdxxRWMzIDk8nE0In3c9szN/H3wo3Yo+20uvLCHJ0PRdkibO0g6XNkxlvgXmPc2B03Gmqmx5/HcET8Dqf5PEScf/019jFk2pOEbvh1Ah8y/W1jXD3l5Fjoxk/WVKT9SoQ1/9wTYWkClReBezH4joDlPESwZnUKwPisBl0n924mrFJbW8dCXUtmvgcZEzGcGh/S0gQR/zp4txG6gskF+jFjCaUAhLBCBMJi0rMV9ENI3wHIeMtvXy7HK+NNpLkuwt650GOfDsQmxtD9nq7MmTwvT7RbM2tGD7BTMFvNtO7WLEfwsdejPVgyawV7Nu/LeWi1OqzUb1aHawdfGXB+MM5tXZ/4SnEc3ZcSsM/j8tL+pjaRvLQKgXI+cnFZr7ZsWLIlaPSjSYdGWKyRCTJVrV2Zrv3yb4Nc2njcHpZ8t5KtK7aRUCWezre1J7l6YlmbVeoIawtE0mcB26XtcqMyRKaDpYWhWuq/oQlHd8CHTHuW0LLuABI8f5O3k25ufMjsbxHWVkYuiXen0b7dHFimJ4QZbMZ7SEonMvMTQzRLOo3yzei78hVTK0mkdwd4t4BWBSzNyyRBTuopRmQp+3vAhbQ0Q8Q+hrC2NvZLH1IkYVQmFeA0WpqEf93MDyBjPHmcDM96Q3rdfgNG8nAwB8Tmb1BX/Bgdngf7u+9aMJZ7guFBZk48Y50PgPvfuhOTxcT34+YiJeheHxdedj6d+lzKmEETjS7jXh8IqNHwLB6bfDKJ1BHjYMziUcyftpgF05cghKBTn0u57Oa2Yd8rNE1j+NSHGdbtRaSUeFxeTGYNIQT3vXkHlc5KKqmXXuaoapdcOLNcPHDRU+zbfjAn81jTNExWE8OnPEyzThcQk1DxSxOP/HeUIR1GkHIgFY/Lg8Vmwef18eQnD9LpltIrJ6zo6L50ONYPvBtDHyQSQKaG3m/tDEIYyzHYADdYmiESxgR1JqR0IY/eCt6tnExEtIKIRlT65qS8dwkipQT3cmNZwb0E5DG/nLgPTFUQiR8YVSKlhNQzkUd7gu8AeR0LM8SNgqxp4A3Va+VU7Ij45xGOgoWZpHQbFSlBc0jsEDMIMt4l0PmwQdQtaHFPh2lT+EjpRh7uDPpRwlJz1ZLRqiwtdjsqGlnp2ezbfoCEKvE5N/zjKeksnLGMtCPHOe+iBjTv0iQi/Y1wOLDzELPe/4ktK7ZTvW5Vegy6knNblU9l0nBRpbaFJPN4FtNe/pafP/kdV7abpGoJHNx9GI/LixCCtj1bMfSD+yqM5n8wHu/yPOv+2ITvlKZ2JouJz7a/R+Ua+fRCUeRBSml0MM2aROCXvRWi7gLnd37BslOxg6kG+HaT9wZlBnNdRPIPAVEEmTUNeXwUgSWYJrBfhZbwZlFfUr4YzdlGQPY3BI8gaCASEFUW5CtPL13LkJnj/RGTaojou4ycmgiiJjJrCvL4aIKXpRYWMyL5S2Opq6DrencZ+iyhlnLs1yMc3QOqXQij2iVSZPaPyLRh5B+Ry4WlOVryl8Vuh0JRkPOhEk5PITouigEv38aX+yZy1cAuHNx1GHe2B6lLdJ/O8h//4tFOz6HrRZBpLkOO7Eth7YINAY4HgMmkMe/zhWVgVcVFCIGIHQL2KzFC3Cc+UjYjTyR2ECL2CQITWc1GS3XfvwQ+GXvBuwvcywOuZzSjC9FAz/lzgfZK3z6k82ekewVSRvAedi+G7G8JvXShG71ITnRqDWZD9nfIY/2NRm/6UfBuMBIh0wvfI8cY70cK73iYCPz6s4C5EZgvCG8ILZ7QAnUWIwpka4+oshSR8CYifiSi0hy0xDEl4ngASO8/hF9GbkVEDywROxSKglA5HyHISM1k5tg5eE/peuh1e/lv235Wzl3LRVc1LyPrIif1UBomsyngdYFRx55yMLX0jargCKFB/FvgWIp0zgHpNtbRbV2MXA1Hd0AY5ZX6f4AGtk5GYuPxUUCw6grNiArYTkk4k/ndWPJLmHYj054C52yM5R0faEmQ+F5YT/k54wR0hQ2GF+ndEbRduZRu5PHnCLxBuiFrCjKqX+G7tvp2Fe54AHSwNAfPWqMTsXSDpSki8b2woy9CS0BaLwP3HwS+Hh3huME4TtjAHl71Q1ERpmrIEy0BgmI3lvmkG2IeQNi7lopdCsWpKOcjBDvW7UYzBQ8M+Tw+fv1sAWfVr0qNhmGUXZYh29bs4Ptxc9m3/SANW9aj6+2XoWnBv1xtDivnNK9XyhaeHgghwNbOqKAJtt9xDdivNsSthB0h7Ej3WmTIG7lEetYbVRT2TidzKOxXQsYWAp/0NbAGvzZgLNU4f8FwUPwJiPoBZMrtUPl3hBbYtyIoehoFy9GbQ+eeuFfn40BZwDUPzAPCswWM6E1IEbZ8z0RLnob0bgPvHqPPjbnwa+wifhQypY+/hNeFkWDqg9gRCHPdCOwqIvar4XiwEm4zmBsjovsZv9raG1o3CkUZoZyPEMQmxQRdmgDQfTqLvlnOghlLueCS8xjx1aM55VfliTmT5/HOoIkgDc3/DYs38+2YOVxybWuWzFqRp7zMZNaIToimQ6/Tt7SrrBFCGAmoJ7A0NRRKfbsJjFq4wDkHyU9GSaTjRkTc/xBRtyCzp4LvECcjEBpgQcQ+FvS6Us+A7K8IGrGQWcisaYiYe5F6Cjh/Aj0drK0MKfBcUQCpp/krNPJ7sgaEkX8SnPwcl0iqZGQBY4ZAM/rhCHMDKEJyrDBVhkqzwfkr0rMGoSUY3W/N4ashFydCi4PECchj92HMiw4IMFUzojph9AFSKEoDlXAaAiklA5sMZc/m/wJkdnNjtppp0LwuY5cWLBhVmqQeTuOWs+8NKoyWUDWeLn0uZda4uYDA5/Vxbuv6DJvyMNXrqi+n0kR6dyBT+ho3/JyE1WDREBsibgQiqpdRVprxrr+s1A3WSxExDyMsDUNcYxvySA9CVj9o1RCxQ5BpT3NS20SC5UJE4iSEFoWeNd2vfWIidDKjBUQUInFiyA6/UrqQh9qEqBDREJXmFDpioB/tC54/g+zJx0lKGIdmDy5RLvUMwBd+NKgcIvUMIwdIPwTmc8HWIaxuugpFcaGqXYrAzg17GNrhWVxOT1DtjxOYLCbGLBlFw5blpzTqhwm/MP7Rj3FlBdptsZl59ZcR1G1amz2b/yO+cpxyOsoQKd3GcoN3OzLrG9BDvOfN56BV+rHw4+up/iZl+X3WTQSt1nHcgHBcbzhIoZaItMpguwxhuwxsnQpMppTZ3yDTniHHyTlxraib0eJGFPx6pM/oRqyng/VC8O3zd4D1cjKCZAHTWRDzOBx/xl/uLAzBt7iRaI7rAsf1bDHyUTyrjA3mhojYZxG2iwu0qTwhfUeRWV8YycFaAsLRy/93qZgNyhQVE9VYrgjUOb8mn/37Hr98tpD5X/zBlpXbgy7FWGwWdm3cW66cj+wMJ6GKGTSTiax0J9FxUZx30Tmla5giACGsOcsUMmta6AN9hyIbX0tAmuqDb1uII0IVvbkh+xukfozQUZMqiMqLCnVjE44bQKuGzBwHnq1gquovtb2uwHOle4VRuqofx3CY3OC4DZK+hMyxRgUNNnBci4gZbLx2e1fwbTd0SMwNgkYApHcvMqU3yFyCXN6tRlVO0pSQkZzyhvTuRB7tZYjP+fOCpGsR2HtA/EvKAVGUG5TzUQDR8dFc98BV1Gh4FiOveyWo8+Hz+KhSs/D9FkqSppc1xucLfsPwerycd3HpiUApDKRrGTL7C8OJsLZCRN0W2BjOfC64DxMYpRBgNpZVpHe3oW6qHzQqVew9EVpM/hePuh3SRwYZF/KXHHf7ZcJDHKMfieiGJvJJzg2F9B1ApvQnINk2+0swJaEljg9+LSEKzOuQWR+CDKZE60VmvI1I+rhQtoaL9G5DZkwEz0rQkhBRtxl/TxGZCoI8PsJQ5c3z93KDcxY4eoKtbbHYrVAUFaXzESbNu1xAXKW4gC9aTRMkVUugSYdGZWRZcM5tVZ8WXZoEND6y2C3cNKQ7cUkVVyStIqKnv4k8NsDQv/CsgsyPjGZznrxdK0XMfRC0f5AZETMIPetb5JFuRqv17K+Rx0cjD3dBev/N9/oi6jqjlXwAVtBqY5TfBjsxznCIQvU00kqvq67M+pLgzpMLMicbXWsjxfUHwZeVJLj/inzcfJDuFcgj14Hze/DtAc9aZNqzyLTHg3Y8LnA8PR3cywjuKPqQ2d8V1WRFOSU7I5tPn5/OrbXv48bKd/FC7zfZuWFPWZuVL8r5CBOTycTLc54mvnIcNocVq92C1WEloUo8o2YPLzHZ3aLw3DeP03NQN+zRxo0lvnIc/Uf1YcDLt5WxZWcW0rMVMidi3NxO3BjcILORqU/kOVZYWyPiXzUEyLBidLKNQcS/AOb6cHw4Rm7DiVweJ8g0ZOqQfG0Qwo5I+tRf5WEDogATWC6ExAkYlSanRjBsED0QEdM/yD5jv4i5N9xpKDrejYRs1CbT/WXAEaLlU60mHJGPGwIppT/vxU3epFiXUXHk+ct/nI7M/g79aC/0Qx3Rj9yIfuQW9GMPIJ2/5BWKk6Hz0gzxt2BJvoqC2Lh0CyOue4Xb6tzPI+2fYeFXSyNyDksKt8vDkMtGMG30TA7vOcrxoxn88c1yBrd+kq2rtpe1eSFRyy6FoM75NZm6exzLvl/Fvu0HOatBNdr2aInZUj6n0Wq3ct/rt3P3K7fhzHThiLGXSyfpdEc6ZxP85i3Btx3p3Y0w18rZKhzdwX6FIYAFRtWJsCIzJ2N8ZE9dTtPBuwXp3ZmvQJewNILKvxtPx/ohQ4HVYkTsZNKnyNSH/D1BTIAXovoiou/xi6i94q+GAYQG0gVRfcFxSyRTEhmmWhjVOMGrgdAij+YJR2+kJ5h+ihUcN0U8bkh8e8G3M9ROpHMuWFoYUunO2Sft0vcZ/3pBuhaA7VJIeNfIY9GS/HL9wRKW7UZCsKJQLPxqKS/d9g7Sp6PrkkO7j7B15b9s/vMf7nn19hK/vq7r/L1gI4d2H6FWo7M5t3WDgOj7b1P/YM/mfTn9yMCQg3DrOuOGfsxbC14ocTsjoXzeNcsxFquF9jdWLC0Mk8lEdFxUWZtx5iKzCN3kS0f68jof4E9C9XdkzRlGP0ZodVFzWE/+QpjAFtg8UFibGY6JZx3IDLCcb2hWnNjv6AG2LkYFhXQbXX5NpZvnJKJuQWZNCbLHClE3FU2y3HG9UZrqXsZJB8QO5jqImPsjHzckPgyHNNgTtDTyTzx/G0syITVVXMZykfNHcPQ0bkqxww0nMs85FjBV9SvtKsLF6/Hy1r0TAvL8PC4PX7/1I93vvYKz6pfcsuOeLf8x7KpRpOxPxWQx4XV5qNukFqNmP01ilZNl4Au/Whq8GlPC+kWbcWW7sDlC91kqK9RjsEJRwghrWwJ7u+Qi/b3wxrFcmP84ESh05hlfaAjrhQjbJXkcj5z9WhTC3hXhuKbUHQ8AYa6PiH8FYw4cGMtHZiN5N/bJoo0tzIjE8YiEt8F+jdH8Lf4FRPJXBSfzRoKpFmhVQuy0IOydka6fKVhAzYXMmIT0rENKHWG/HJH4fk5yMliNBNbkLxHCXnz2l1MO7T7M5OFTearbi4wZPJEd6yKR3jfYtOyfoFIFYOg7LZ65IuKxC8Ln9fF4l+c5vPsIHpcHZ4YTr8fHjnW7ee6G1/Icm2/CtyhgfxmiIh8KRQkipUT6Cmhv7l2N9B0IrHw5FVsnvyLqHvJGQKwQfWfJ3CTLGUYEpr0RpZAZhuNhaVo8YwsT2LsgQoiPFSdCaBA3Epn6IHn1TmxgbQbWS8C1hIKdD8C3xdA50SpDwpsIW0eErSNSegBTxJUzFY2/F25kWLcXkdKITqyxmPhx4q8Mfvsueg7qVujxdJ9OyPu2NBqNlhTLZ/9F+rFM9FMELr0eH1v+/IddG/dQu3FNADr2bsea+esDoh9CCC7s2BirvWSaGBaVM+NdqYiIf//exTM9Xuaa6Nu4LvEO3r7/A44dKkJS3xmIzHgL0p8jX+cDDfTUAscSwoxImmLcfNGMHxEF0fcgYoYWi70VAaElIKJuRkT3j9jxkL6j6BkT0I89hJ7+OtK7u5itLBhh72KU8FpaG0mtWjWIGYRInGxEoWwdCVlllAcJeEDfh0y5A+nbb4wvLGeM4+Hz+RjV5y3cTk9O7oPP40P36ox9YDKDL3qSf/7KvyLsVBq1OQfNHHz+vR4fF1/Tosh2h2LftgMh91lsVv7Ltb9j73bUb1YHa67KRpPFhM1hZdDbd5WYjUVFKZwqgrJtzQ4ebvc0Hrc3R17ebDWRVC2RCWteJyYhuowtLP9I31Hk4UvJ3/EAsCOqLENoefNypHRC9iyk82cQFoS9O9ivRAgzUk81HBZTdaNrqiJspHut0VAPnZPN4HREwhuIkD1pSh8pJfLYPafkoRSEFaL7o8WeOc4owIYlW3i8y3N4XKHLra0OK+NWvUqt80I0PQzC7EnzGDt4El7PyXGtdgsdb7mExz8cXCSb82PJdytynKlTMZk1xq9+nTrn18zZ5na6+e69ucyZ/CvZ6U5aXXkhtzx1PWc3qF5iNhaEUjhVRMTEJz7H4/LmKSnzun2kHkrjxw9+ofcT15WdcRUF91J/u/bsfA6yQPRdCC0K6dmEzPoMvNvBVNsot/Qd4kQvFen6wxDUSpxk5GQEycsobqRnPTJjPHjWgFYJEdXXkFyvoE/UUurI1AfI6ewLnCjflamPQZV25aanixACEt9HZn4C2VPAdxQjSTW/95PbSFQ9w8g6noVm8ldphcDn8TH1pW946tMHwx736oFdSD4rkc9f+IpdG/eQVC2RG4d055p7Li+SvT6vz+j3ZwoeWbno6ubEJsVw7EBqnqUXs8XEOS3r53E8wKhs7PVoD3o92qNIdpUmxRL5EEL0B4YAjYBHpJTv5tqnAe8AV2PEB9+UUr4fzrgq8lE2SCnpZrsF3Rt8TbNhq/q89+foUraq4iGdc5FpTxTgfNihykqE62fjWMD4Ag1VCWFDxA1HRPUpdntPRboW+buj+jipT2ID+xWI+NdzEtmknoLM+sooDTadhXDcjLCUT9l+6V6NTOlHcL0QByLuGURUr5K3Q88A52yk7z+EuZ4/ohVeQqjuS4XD7QkeDTGD43q0+FHFaW6553hKOjdXvztkJ/ITJFdPZNp/H5SSVYFsXLaVDx7/lA2Lt6CZNNr2bMW9r98etLfW7s3/Mazbixw7lIbJbFS71D6/Ji/PeZrEqgmlb3whKa3IxyrgZmBYkH19gcZAQyAe+EsI8ZuUcnMxXVtRAphMWkjnw2LLp+JCcRLrJUY/kXyR4F5s6DnkeWoL9VDgQmZ9WeLOx0kRrFPDvi5wzjHk2q0XGtGalNtAejEiNGZk1hRk7Ei06N4lamNEyDRC51HoII8Xz2WkD7xbjV/MDfP0k5Huv4yeMVIHPEgscPxlSP4cUYAMPIBmSkCP6gVZ0wnmRImoW4vlNVQk4pJiufGR7swcOzvoUsUJHHHFLxgXLltWbOPRjiPxuo3Pue7TWfb9StYt3MSk9W8GOBS1zjubz/59jzXzN+TofDS6+JxyW71SWIoldiqlXCul3ERwXd/ewHgppU9KmQJMB0pRmUhRWIQQXHL9xZiCJFtZ7Va69utQBlZVPIQWA3Ejyf9jpoF7eQHHnEJpKFX6thtCZMENQLp+NhyU1Ef89jj9+7zGT/pzSF/opLlwkNKH9B0xcl+KC/MFhFRJxQeWoicRSuc85OH2yKM3Gj+H2yOdvxj7pMvI45BZGHPmM/6Vqchj94atnCliHwdLM4yyYwtgB0wQ+wzCcn6RX0NFZODo27jzhVuwOoI/HFntFq65u2jLJUVh8rCpeXJHAHxenewMJ9+OnR30HE3TaNGlCd3u6kTjNg1PG8cDSqfapRaQu9h6p3+bohxz9+jbiEmMzhPlsNot1G9Wm653dCw7wyoaejr5l0u6DQGosLGArejOn5TSSLx0LUTqKcEOKHgQ7zZ/2W+wY82G+FWEtumZnyEPtUMeboc82AI99VFkUeTT/QhTJXD0JrCXjRUszf039MiR7tVG+ax+hBxHTD+CTH0Y6V4FrvkhZNB18B0Az+rwXodwIJI+QyR9YnTvjX0UUfl3tOgzL+pxAiEEvR7tyVeHPqRhy3p5SkytdgsNWzeg5+DCl9wWF+v+2BT0o+JxeVj+Q8n0DyrPhLXsIoRYhJHPEYzmUsqCOtjknvKQrpsQYiiQk6YdH18+Er/ORKrUqszEv99g5tg5LJ75J7YoK1fc0YmrBnTGqpZdwkJ6NkHG64R2Pvyt321dkemvhDGiBsKKiO5fRLvWI4896I9smAE30tEbEffsyeUBc31Drls/HHQMYevkX6IIleTnQ+oZoT/s+dmXOREyxnAyQuEF509I7xZI/i7PEkYkiLhnkVo8ZH3ij0CYwd7DyPco4pOlzHifkI3dMt7PX+JcWELOd9DDhQBrK+NHkYMj2s7bi19k0dfLWThjKUITdLy5HZdcf1GZtsKwWM05Sy6ncqL/1plEWH8JKWX7IlxjN1AHOCEHV9u/Ldh13gTePPF7jRo1ym8d8BlAYtUE7nqxD3e9WPLJjacjMvur/A+Iuh0ROxQhTEjHjZA9i7xJhBajwZz0RyasbYwbpCn8UsEAm/QUI+FSZpGjDwFGh1zMSOED119GozVrW6MVewA6kmiEuSahHSsNYW1ZePukEzLfI3BpxAPeXeD6HU4RAZN6GnjWg4gBS5MCK3GEMCFihyBjBhu9bER8QJlzxHjXE9z5kIaNMScSeIMdkoXMmgnmc4wkVEXEWKwWOve5lM59Li1rU3LofGt75n48P8ABsdotdOvfuYysKjtKY9llBnCvEMIkhEjCyAH5shSuq1CULb7D5Ff6J6L75TzFi7j/QcyDIBL9O5Mg5hFElSWIqmsRVdehJX0cVkJifsisb/1JsKc6DS7I/hSypoBvE3iWh3A8ADTImmjktEQPxNDJyI0VzA3A2q7wBnq3+5NXg+FBeladfC1SGgJhh9oij92PTLkVefgyY3kjDISwIkzVi8/xANDykZ03VQJLK2NuQsnkuxcgj1yL9GwsPpsU5YI7X+hNpbOTsDpOfl4sNjNValfmqze/56Yq/Rl+9Sg2LNlShlaWHsXifAgh+goh9gK9gBeEEHuFEM39uz8DtgBbMaIfr/mTUxWK0xphbYWRCBhsZ4Ihh33iV2FCi7nHEBuruh5RZSlazN2G0qVwFJ+QmHcjJ5NDI8UH/hu8iHkYYh4BcaIlvRnsVyGSPo1MC0TEEFqUzYwQJyXkZeaHkPkxhoPnxFD5PIhMubPIya6RIqL6EZhPAmBDRPVDCIFI+sjfNDDYEo8XcCOPv1iidipKn4TK8Yxf/RoDXrqVJu0b0aJrUxo0r8ehXYfZvek/0o6ks3LuWh7tNJIl35Vc35jyglI4VYTFjnW7+PT5Gaz9fQP2aBvd+nem12M9cUSf/s2qIkXqx5GHu/rLO3OH4q0Q+wRadMm35D4VPf0tyJxM6IqPMDE1AFtbowuuqSY4+hidebVYhChaOaN+pAd4/yFw+UJDVPoZYa5liIUdahmi8scK0QPQYocUyY5IkFI39Fqcp1Qv2Lv5tVFOOmR6yp3gXhJyLFF1bZHnUhEemcezAMLu/q3rOplpWUTFOoJWBYbD5j//YUj7Z/EG0SZJqpbA1D3jQ4qQVQQK0vmomDKF5Yzy7MAVB5v//IfBFw1jyXcrSE/J4PCeo3z5ykwe7TgStyt0Tf2ZjtDiEMlfgqUJxkfNbDzZxwzxPyGXgU2Omwiek1AYLODbAVnTDOVT52w4djvSObtYbpYi/g0Q0ZyMGpmNn9gnDQcHkOmj8yk5doNnQ5HtiAQhNLSE1xHJ0yD6Hoi+G5E8DS3hzcBIUEGiYqf590p5YNPyfxh80VNcl3AH1yXcwUPthrN11faQx+u6zhejv+Gmyv25Ifkurku8gwmPfxrR9+DSWStD/onTjqazc31BdRwVGyWvXgR+/3Ixn4z8kr1b9xOdEEWP+66g34he5baLYKS89/BHOc2aTuB2eti1cS8Lpi+ha798MvjPcIS5DiJ5hrEMoB8Hcx2EKLv3hzDXhIQ3DClxTBi5Hz7yy00xlgdOLBH4G9rh4eTyiP/f9FeQ9m4Fd+ctyEZLQ6j8i181dTVo1RBRvRCWxgBI7y6jUiUkZjCFfOAqFYSlaYFN74S9G9K1mKBKpZYWxZuLogjg37938WjHkXm+2zYt+4chHUaE7AHz/iMfM2fSrzlCZs5MF7Pe+4m9W/fzwndP5jlWSsmGJVtY/8dmouMctL+pDQmVw6zgPAP8TrXsEiGzxs1l3JCP82QuW+0WGrdtyKu/jixUyd6+7QeY8+FvHNp1mAbN63HlnR2JS44tCbMLTXamk56xoZ/S2/RoyQvfPVWKFimKA6mngnMu6GlIS3NIGwn6tuAHxw4D33+ABqa6kP4igcqnAGawtERE9TYk2EvIyZIZE5EZYwjdbM2ESP4WYTmvZK4v3YYjqSUgROTPb1K6kUf7+JVQT7wWE2BGJE9FWJoUh7mKEPyv1xssnvknui9vJNBkNtGpzyU8+UneHjDHDqZyS417A443ztF4f+Wr1GtaGzC+N5++5iU2Ld2KZtIQmobX4+XRiffT9XbjYa2gZZcv9k5A0yru4oRadikB3C4Pk4dNCSiZcjs9rF+8hb8Xhp+p/tsXf9C/0SN8/eb3/Db1Dz4ZMY1+9Qezbc2O4jY7Igpyoiryh+NMxmhL3xsRcw+arTWi0jSjEiMPDogfgxZ9F1rcM2hxwxHm2oSWJ/eCZzkybTjyyJUlmPTpId+lo6j+JeJ4SOlCP/4i8mBLQ/zsUGv09HcMKfUIEMKKSP4cYgYZkRqRaPR4Sf5GOR6lwNoFG4I6Ej6vj9Xz1gVs37Tsnzxt63Njtpr5e8HJ7/0Jj33K5uXb8Hp8uJ0eXFkufB4fb9w9jl2bjAfqc1s3oMNNbfOMKTSB2WLi4fH3nPbfraf3qyshdvy9K2AZ4gRS11n189qwxkk9nMard76Lz+vLaQXtynaTlZ7NC73eKBe5JPYoG03aNwqamG+1W+jY+5LSN0pR7AgtDi15KlReCgnjIekrRNXVaI5TFCEtTSk4Z8QJvoPItCcLOC5CbO0JHZd2IGIfKpHLymMPQtaX5EQpZCZkTkIefy7iMYVwoMXcj1b5N7Sqy9ES3i63TflON/JLlo8Kknhqj7EHdVYMBI5YYzy3y8PPH88Peo8QCH6cYEjtCyF48rMHGfxOf+pcUIvEqvG07taMN35/nnY9Wxf+BVUwlPMRAVa7Bd0X/MtPM2nYHOGVRS6csQyzJchTpISDu4+wfc3OIlhZfAwe0x+bw5onq9tqt9CwVX3a33hxGVqmCBcpXUjPZqRvf77HaaZkNHtnNGvToKWyQosxntQDtD1OxQvu5UhfXsVOKd3I7B/QU59AT3sO6V5RaCdbWJqArROBJa0WIym1uMqScyE9m8C9iMClHhdkf4X0HSz2aypKlqsGdgkayQjVA6Zph0bYQzgsPq+PS667CIDM1Mych8lT8Xq87N9x8r2iaRpX3305E/9+g+n7JzHqh+E0bntuJC+nwqGcjwioc0EtKtVICrrP59Xp0KtNWOOkp2TgC9E51mwxcTwlI2Ibi5P6F9Zh/OrXubxfByrVSKJWo7PpP+pWXvn52TKVK1YUjJQSPWMC8tDFyKM3IA93RD/ay0jajBARfT8ibgRo1Qs4UgP92Elb9OPIo9cj04aDcyZkTzM0OY6PKLwDkvC2IcqmVQEsRufYhDdLrreJexWhHS4reMKLdirKDzcN7U69C2vncUBO9IDpMejKgOPNFjNPf/EIFpsFi83s32bCbDHx2ORBxCREAxCXHEt0QvBkYavdwjktlXotqITTiFn/xyaevOIFdF3idXsRQmCymOj9xLXc+b/wmvau/m0dT1/zUlAv2WQxMX3/ROKSykfiaTCcWS6mv/YdcybPIzvdyQWXnsftz91Mw5b1y9o0hR89YzJkvEVeXQ8NRAKi8q9GJCNCpJ6CPHQZoRM/7Yiqy3PKb/W05yB7BoHJqlZEwhiEvXQkpo3vPF+hkkVl9kxk2kggO8heGyJxAsIWgaKrokzxerws+no5C2YsQdM0Lru5HZdef1G+2h37dxzkh/E/s23NTmqcU50e919JnfNr5jnmi5e/4fMXvsqpijmBLcrKJ/+8S3L1xELZKaVkzfz1LJ21AiE0Lrn+Ipq0b1Suu9wWlHCqnI8isG/7Ab5550c2Lt1K5RrJXDu4Gy0uN8rrpJQ4M53YomwhE4eklDxw8VPsWLc7jwNitVu45t6uDHrrrlJ5HZHg9Xh55NJn2LFud84HTNMEmtnEa7+O4IJLQ/UhVJQWUnqQh9qATA+y146IexIRdVvE4+sZEyBjLCEFy6LuR4sbYtjhnAdpQwlZ0mvthJY0IWJbwkHqacj01yD7O8BlREtiH0PYOoZxbjryUFuCvlaRiKiyuEiVL4qTSCnZuWEPqYfSjFyIKhWvwaiu60x84jO+HTsHs8WMz+sjsUo8z3w5pNDLKl6Pl5E3vMbqX//G6/EhEGhmjbY9WvH0tEfKrRCZcj5KGV3XmfH6LKa/9h3Hj2YQFefgugevot+IXkGXKDLTMnln0CQWTF+CruvYo+3c+Mg19BvZC5PJxL7tB1g5dy1mi4k2PVqSVK1wHnNJ8dsXf/DGwHG4swO/jOs3q8P4v14rA6sUuZHePcgjlxMyOdPSxmjJHuHTk55yN7gXhD6g8jIEbmTKbeA7SL6qquamaJUKaMRXBKR0I49cC77d5I28mBEJbyHsgWH2gDGcPyFTh2JkX3s4sQwjEichbOEttSryZ+/WfTx/0+vs2bwPs9WE1+3lijs78eC7A7BYK1437eNH09m66l+i46M4t3X9Qlew6LrOO/dPZO5HvwUs0VvtFga9fRfX3NO1OE0uNpTzUcq8++Bk5kyelyfcZrVbaNuzFc9MGxryvKz0bNKOHCf5rCSsNgu6rjN28CRmT5rnX18UeFwe+o/qQ+8nriv5F1IAL9z8Bgu/WhZy/9dHPizXS0ZnAlI/jjx0EaGrUzSwdTGWPCJoU6+nDgPntyHGNyOqrkGm3GUIheUrYmaF6P5oscbnQ0odsj5HZk4G/QiYaiBiBiEc1xbaxhMYyyYjCNrXRjsLUXl+WE6Y9O5EZn0Bvp1gPg8RdQvCVFDuiyIcnFku+tUbxPGjGXmqSqx2C90GdObBsQPL0LrSJzMtk0c7P8f21TtDHlOvaW0mrHm91GwqDErnoxQ5uv8Y34//OWCdz+30sOjr5eze/F/Ic6NiHVSvWxWrzfDuf5zwCz9/8ju6T8eV5caV5UL36Xw84ktW/VJ2yW2H9hzh67d+YPfmffked7rXqFcEhBYHto6EFjLWwbUQsmdGdgF7D0I6NpYmRrt6zyrydzw0ENY8yz8y7WljeUTfD3jAtwOZ9jR6xvjI7ASkayEhG+rp+0APr1pFmOugxQ1DS5yAFjtEOR7FyILpS8hOdwaUs7qdHmZ/8CuZaaHk9E9P3n3oQ3ZtyP/hO+3I8VKypvhRd4hiZMPizSFFaCw2C2t/D7/fxIw3ZgU4MWCs/3315vcR21gUvnrze/rVG8xHz3zBns0hPhQCGrVpmJP5rShbRNyLYDornyNcyOwvIhvbt42Qjo1vj7/8tIA8CEtTRNKXCFNVAKT3X6MSJiCJ1Q0ZY5F6sPyVcIx1kO/XXUF9VhQlzo6/d+EKsowLhvjWvu1nTjmzK9vF/GmLA4Qsc6OZtApdlqucj2LEEWNH14MvYwlh7A+Xo/uOBd8hYf+/hyIxr0hsXLqFycOmGJGYbHfQEmGTxYTVbuXBdwcUOJ7b6ebYoTR8vsjUIRXhIUyVEJVmk68uh54a0djSvYyQUQ39CGjxhF7ysUHsc2jJ03NEtaR3FzLtf4QWEDODe2VEthpLNsGWljSwtEJoCRGNqyg+ks9OxuoI/j71eXwkVksoXYPKkMy0LHxBZNdzo2katw6/oZQsKn6U81GMXNjpAizW4E96Pq+Ptj1ahj1W9frBm3NpJo26TWpFZF9R+O69uaEdK01QpVYluvbrwITVr3FOi9B17DvW7eKxzs/RM+52bq42kJurDeTrt38oF2qupytCWMHagqAytZjBGqFQnJZEaKl1DaFVBUdvAsXATKDFI6JuytkinXOQR64Cz3JCOyw6iAiTDi2twXEteZ0wG4hoRPwLkY2pKFYu79s+qIKo2WKieZcmVDoruLZSMFIOHOOjZ7/ggYuf4qluL7Lwq6XoelG7OZce8ZXjiEsOXQYfmxjNqNnDadC8bilaVbwo56MYsdosDJvyMGarGbPfCTH5RWgenTSI6PjwlyJue/rGHCGb3GiaoNdjPYvN5nA5uPNQSGlhqUs+2jKGRycNokbD4CF+j9vDqFvf4p4LH2Pt7xvweQ2v/vjRDCYPm8pn/5tRYrYrQMQ8TKCjIAATIjqyRD7huImQDo2tC0KLQsQNB8cNxjbsgAbmRoikL3Iaz0n9ODL1cYwoSj5Pe8IC1osis1UIRNwoRMIYsHUGSzOIHoCo9BPCrHRpygOJVRMYMeNRLDYztigbZqsZq91C9frVePLTBwsewM+eLf8xoPEQvnrje7as2M6qn9fyyu1jeaXf2ArzkGMymegz/AYstkBn2xZtY/Kmt2nRpWL3/1HVLiXA3n/2M+u9n/j3713UPPcseg66krpNahd6nGmjv+WT56ZjMpuQUmIyaTwy/h4639q+yDYe2n2YL0Z/y9JZqzBbTVzerwO9hvYI6SCNG/ox378/F0+QNcjKNZKZujv/ZMD3HvmIH8bNDdrBEYyM9q8OTcYR4yj8i1GEhXQtQh7/H/j86qbmxoj4/xXY+j0/9PS3IfMD/29ewA6mZETSdISp8slr68fAux20Sghznbx2ZX2DPP48wQW8wHhG0hAJbyDsV0Vsq6JikH4sgwXTl5J6KI1zWtaj1ZUXFkrL4vEuz/H3gk0BkQ6LzcLzM5+g9ZXNitnikkFKyecvfMW0V2YipcTn9XF2g+o8/cUj1L+wTlmbVyCq1LaCk5GaybpFmzBbTDS9rHHYfWPyY/+/B7m/1RO4Ml05zoDFZqFqncq89+doomIDHYD9/x5kwPlDApolWWxmHhg7kKsHdgl5PWeWixuS7wrZjA8M5+OVX0ZwwSUl0wZdYSCl9Fd2mBGmSsUzpmc9Mnsm6GkIaxtwXIMoRAKnzPwYmf4mwatRBFhaIuKGIywXFIu9itOXzONZXJd4R9C0ISEEXW5rn28Uxefzsez7VSyYsQTdJ2l/w8Vccv1FZdpGIjvTyY51u4mOj6LWeWeXa1XT3BTkfChJvnJOTEI0bXuc2uq8aHz49FScGc48SaMel4dDuw7z4we/0uvRHgHnVK9XlZd/epqXbxtD2pHjaCYNpOS2Z2/iqgH5y2Kn7D+Wb9Y2GD1xouNU1KOkEUKAKXg+UcRjWi4ommNgbUHoclwNkfBOniiKQhEKr9sbMl9ZSkl2Zohya4yl4We6j2b9H5tyKg2Xfr+S+m//wGvzRhbLg18kOKLtNG7TsEyuXZIo56OCo+s6cybN4+u3fyTlwDHqnl+L2569iVZXXBjynKWzVgatVnE7Pfw2dVFQ5wPgwsvOZ+rucfyz6l+cmS7OaVkvaJTkVBKrxmMyayGXXACq1a1MnQtKP5FWUfYIS1OktbW/eVvuUksbOK5XjocibOKSY6lWtwoHdgRWBJotJtp0D/0g9+MHv+ZxPADc2W62rdnJjDe+p+8zN4U8V1F4VMJpBefNu8fz/iMfsWfzf2SmZrF+8Wae7fEyP3/ye8hz8ltoK2gZTtM0zm3dgAs7nh+W4wHgiHFweb8OQZOnAOzRNp7+YkiFCScqih+ROB4c15NTjSKiIbo/Im5kmdqlqFgIIUJKGng9Ps5tHboS78cPfgmqreRxepgzaV6x2agwUM5HBWbHul388umCgA+M1+PjvYc/xB0ix6JN95aYTIF/eqvdQqc+l5aIrYPHDKBJh0aYzCYsdguaSUMzaXTp24FPt72bb3mu4vRHCAda/AuIqisRlRciqiw3FEQjkH1XnLkcO5jKzvV7gu4zW00smL405LmZaVkh92Wlh0qGVkSKWnapwCyfvRqzxYQ7SAls1vFsesT0pWmHxgx4+VbOu+icnH39R/Vh1dy1OLNdOUI2FpuFyjWS6X5vyTQpskfZeGXus2xbs4NNy/4hLimGi7u3xB5VNuuoivKJEPZiz0lRnDkcT8lAaALpC4zget0+Ug+lhTy3WacL+G3qHzkyACfQNKG6dJcAKvJRgSlomUL36az5fT1DOoxg47KtOdvPblCd8Wte44o7OpJQJZ7KNZK5cUh3xi5/mei4qBK1uUGzuvS47wouu7mdcjwUCkWxUr1eVWwhVFJtDmu+cuR9hl2PyRIYadPMJm4f2avYbFQYqFLbCsyeLf8x8IKhIcW/cnPBpefx1kKl5KhQKE5vpr78DZ+/8BWeXMvRJrOJxGoJfLzlnXyrVras3M7YwZPYsmIbAPUurM0DYwbQpL2KfBQWpfNxmvP+Ix/xw4Rf8tXQAEDAT+5phRLrUSgUivJK5vEstv21A0esnXNa1MuJBEspmTb6W754+Vtc2W6kLrmw4/k8/vFgqtQMT9sm/VgGUpfEJceW5Es4rVHOx2mOlJLfv1zCN+/8yPY1O/C4guslaCaNDje1YfHMFei6TovLm3L36NsiUl5VKBSKskJKyWf/m8G00TMRmkD3+kiqnsjwqY9wfruTyypul4f9/x4kLimGxKoJZWfwGYpyPs4gfv18IW/dMz6g+kUzCTSTCanrOfoeQhNYbBbe+3M0dc6vWRbmKhQKRaGZ+e4cPnj8s4Bor9Vh5aPN74Qd3VCULAU5Hyrh9DSiY+92nH/JeXnaUlvsFsxWQ18jt7CY1CVel5dPRn5Z6nYqFApFJOi6zpQXvw66zCyl5IfxP5eBVYpIUM7HaYTZYual2cN58N2BnH/pedRvVofeT1xLcvWEoPLmuq6z6ue1ZWCpQqFQFJ7s9OyQ5bIep4fN/kRRRflH6XycZpgtZrrd1Ylud3XK2bZ45p+hj7cGvgW2rdnBTx/O59iBY1xwaSOuuOOykN1uFQqForSwR9uxOqy4s90B+0xmjWp1qpSBVYpIUJGPM4Bud3bGag+UNjdbzXS+tX2ebdNfn8UDFw3jh/E/s/CrZUweNoU7znmI/7btLy1zFQqFIigms4mrBnQO2qpBCEGP+64oA6sUkaCcjzOAa+69nDoX1MyTC2K1W0g+K5F+I042S9q9+T8+HD4Fn9eXo/LnynaTfiyDV+98t9TtVigUilMZOLovjdqcg9lqxmIzY3NY0Uwa9711p2rTUIFQ1S5nCG6nm7kf/86vny3A6/HRoVdbut9zeZ7llI+e/YLpr80Kmh8ihGDq7nFUOju5NM1WKBSKAKSUrP9jM38v2Igj1k6HXm2pdFZSWZulyEVB1S4q5+MMwWq30uO+K/INS6anZAR1PMAo181My1LOh0JxBuPz+nA73dij7WXahVoIQZP2jZTyaAVGLbsocrjg0kZ5lmZyY4+2c1YD1fBLoTgTyUjN5I2B79Mjti89426nX73BzJuyqKzNUlRglPOhyOHSGy6m0tlJmE9prmSxWeg34iYs1sAkL4VCcXrj9XgZ0mEEv36+KEdB+eCuw7w+4H1mT/y1jK1TVFSU86HIwWqz8PYfL3LxNS3RNCOkGlcplnte68cNj3Qv0thej5fjR9Px+XwFH6xQKMoNS2etZN+2/QFLsl63l0nDpgS0oFcowkHlfCjykFglnue+eZys9Gwy07JIqp5QpGZ0bqebycOn8uMHv+DKchOdEEWvR3vSZ9j1aJryfRWK8s6a+esDWjacIDMti73/7Kd2o5B5heWODUu2MPej+aQdPU7zzk3oevtlRMdFlbVZZxzK+VAEJSrWQVSso8jjPH/TG6z5bV3Ol1dmahZTR33NsQOpPDB2QJHHVygUBl6Pl53r92C2mqnduEaxJYQ6Yh2YLCZ8nsAIh5QSR4y9WK4TinWLNvH12z+wb9sB6l5QixuHdqdhy/oRjTXxyc/55u0f0XUd3aezau5avnj5W8YuHUWVWpWL2XJFfqhHT0WJsW3NDlb9vCbgqcnt9PD9+J85djC1bAxTKE4zfvlsATdXv5sH2wzjvuaP0bfeINb+vqFYxu7c51IIIskgNEGDZnVLtJHbd+/N4YnLn2fJdyvYsW43C6Yv4aF2T7Ng+pJCj7Vx6Ra+efsHvB4vus/oc+XKdpN2OI237/uguE1XFIByPhQlxrqFmzBbggfXrHYLm5b9U8oWKRSnH8t+WMWbA8cZpfIeHz6vzqFdRxjW7UV2bSq6TlK9prW5+YnrMFvNOblgVrsFR4ydxz8eXOTxQ5F25DjjhnyC1+ND6obz4/Pp+Dw+3hg4Dle2q1Dj/fzpAnQ90InyeXVWzl1L5vGsYrFbER5q2UVRYjhiHRAi9Ovz6UTFhbesc+xQGrMn/sq6RZuodHYSV999OY3bNCxOUxWKCssnz32JN8iSiC4lX70xi0cnDSryNfq/2IeWXZsye+I8UvYfo+lljel+b1cSqyYUeexQLP1+FRabOWhCq+7TWTN/Axdf3SLs8dJTMnIiHqcipcSZ6VK5H6WIcj4UJcYl17XmnfuDhzOjYuxhCQTtWLeLIe1H4HF7cDs9aCaNeZ8vpN/IXtw6/MbiNlmhqHDsXLc76Hafx8fGpVuL7ToXXnY+F152frGNVxAelyfYag9gLPl4XMGTYEPRvHMTlv+wCleQpnTJZyWSWDU+EjMVEaKWXRQlRmxiDI9/NBiTxZSz/GKxWbDYLDzz5VBM5oKraF65/V2yMrJz8kZ0n47X4+OTkdOLJaSsUFR0YhJjQu7zeX388tkCstKzS9Eig7ULNjDy+lcZ2GQoL936NltWbi/U+S0ubxLSwfC4vTTt0LhQ43W57VJik2MDvnfMVjMDXr5NVd+VMmq2FSVK5z6XMmHN63S/ryutuzXjxiHd+XjLOzTrdEGB5+7fcZB/1+3KWe/NjWbSmP/FHyVhskJRYVj1y1oy0zJD7j+46wjv3D+RXlUHsPT7laVm17djfuSpK15g6fcr2bVhDwtnLOXhS57m9y8Xhz3G2Q2qc+WdHQM6cltsFm558jrikmMLZZMjxsHYpaNofVVzhD93pdLZSTw2eRBd+11WqLEURUc1llOUW/79exeDWj8ZtMQP4PqHr2bQW3eVslUKRfng0J4j3NnwwRzV0YIwW8188s/YEq1OASNHq0+Ne/B5A/MrzFYzT08bQtseLcPSD9J1nZlj5zDj9VmkHEilau3K3Dr8Bq68q1ORSomzM7JxZrmJrxSrIh4lhGosp6iw1DzvLOxRNjLTArPQrXZLqa4/KxTljdmTfg2Z0B0MTRP89OFv3D7y5hK0CpZ9vxKLzYLPG1iN4nV7efHmN6l57lm88fvzBUYvNE3jhoev4YaHrylWGx0xDhwxgQnvUkp2bthDZloW9ZrWLhatI0VwlMunKLdYrBbu+F9vLDbzKdvNnH1Oddp0b1lGlikUZc/ujXvxhFAeDYbb6WHv1n0laJGB1+0lv4i6z+tj7z/7eWPguBK3pTBsW7OD/o0e5v4WT/Bk1/9xU5UBfDxiWr6vRRE5yvlQlGuuf/BqHnrvbpLPSgTAbDHTqc+lvLngf2ElrCoUpyu1GtXAYi9cs8cNi7fg9YS3TBMpLbo2LXApyOv2svT7lRxPSS9RW8Il9XAaQy8byd5/9uPz+nA7PXhcHqa/PosZb3xf1uadlhSL8yGEeEkIsUkIsVYI8acQonOufZoQYqwQYrsQYpsQouhF54ozim79O/PFngl8m/Ixs9I/5fGPBhOTEM3xlHSyMwqXxb9m/npeuPkNHmw7nPGPfcKBnYdKyGqFomS5emAXCJqMHXop5tjBNBbPXFGSZoVMFD0VIQRph4+XqC3hMmfyb4aeyCnT6XF6+OLlb1TzvBKguCIfi4AWUsoLgbuBr4UQJwT/+wKNgYbARcATQojzium6ijMEIQQxCdFYrBZW/ryWAec/wo2V+tMz/nYe7/I8e7b8V+AYnz4/nWFXjWLRN8vZvPwfZr33EwPOH8LGpVtK4RUoFMVLlVqVeX7mEzhiHdiirNijbWgmjZZXNAt5jsfl4Y9vl5e4bY9MuJeBo/sSkxgd8hiLzUKVWiWb/Boum//8B3cQ/Q+AjGOZpB0pH07S6USxOB9SyjlSyhOPoOsAE3DiXdUbGC+l9EkpU4DpwC3FcV3Fmcfa3zfwbI+X2b3J72xI+HvBRh5sM5wj+1JCnrd36z6mvPi1sR7tf1r0uLy4s92Mvn2sWtdVVEhad2vOjAMTeeqzhxg8ZgCT1r/JU589mO85JlPJr7Zrmsb1D13N5zveJzYpJqe09QRWu4UbHrkGm8NW4raEQ5WalTBbgi/jmi0mouOV8mlxUxLvwruA7VLKEzWytYBdufbv9G9TKArN5OFTAqSkdV3H7fTw3bs/hTxvwfSlmMzB3+6Hdh1m10ZV0q2omNgcNi69/mK63dWJmueeTVxSLA1b1gt6rMVu4bKb25WabdFxUby18H/UanQ2JrMJq8OK2WKi+31XcMfzJVt1UxiuvvvyoGqqFpuRY1ZenKTTibBKbYUQi4BQWtjNpZR7/Md1AUYCXU85JvefNeSCpBBiKDD0xO/x8UruVpGXLSuCqyR6XB5Wzl3D1QO7sG31DhKrxtO43bk5NfyubBd6EN0BMATLXFmFa1KlUJRnHhp3D0M7PJvTiA2MaEPTDo256OrmpWpL7cY1mbTuLXZt3EPakXTqNqlFbD6qrGVB3Qtq8eC7AxgzeBIWqxmvx4dm0qhzfk0Gv6O0hEqCYhMZE0JcBnwG9JBSrs21/UfgYynlDP/vrwJZUsrnChpTiYwpTqVnXD+yM5xB98VViiXjWCZWuwWfx0ditQRemPUU9ZrW5q9563im+0tBs/CjYh3MODQZq61wlQMKRXlmz5b/mDZ6JmvmrycmIZpr7unK1Xd3CdlpWgFH/jvK718uITMti/MvOY8WlzdRImQRUpDIWLE4H0KIDsDnwLVSytWn7LsTI+n0SiAeWA10k1JuKmhc5XwoTmXM4InMmfwbXndeJ0IzaQhN5FFDNZJUo5iyezz2KBtDO45ky5/b8vSLMFvN3PfG7Vw7+KpSew0KRVE5tPswU0Z9w5LvVmAya3S85RL6PHU98ZXiyto0hQIoPefjHyAO2J9rcz8p5TohhAkYA3Tzb39LSvluOOMq50NxKunHMni43dMc2n3E6E4pDNGxULoCtigrg9/pz1UDuuDKdvHJyC/5YcIvZKc7qV6vKnc835sut7Uv5VehUETOwV2Hua/F4zgznDn5TxarmcRqCYxb9Wqhe54Uhf3/HmT25Hns336A+s3q0q1/ZxKrqOVyRSk5HyWFcj7OLHZv/o8vX5nJ3ws2EpscQ4/7ruCKOzsG9IBwZbuYP20JS2etwBZl5dxWDZg0fAreIA6IEIKbhnbnntduz9kmpUT36UqkTFEhee2u95g3ZVGA9oTFZqH3k9dyx3O9S8WORV8v46Vb3/a3t/didVjRhOCVX0fQuE3DUrFBUX5RzoeiQrBx2VYe7/xcQIJc66uaM/Krx/JtInV0/zFurXkfuh6YUGqLsnL3K/24dnC3IGcqFBWP65PuJCM1eCfbGg3P4qPN75S4DRmpmdxcfWDQiGPyWYlM3T1e5Uqc4RTkfKh3h6Jc8Pa9E3A7PXlyNtxOD3/OXs3qeevyPTe5eiKtr2qG2RokkU5C51svLW5zFYqyI59eckVo9Foo/vj2T7QQXWmPH01n49KtpWOIosKinA9FmXNkXwo71u0Ous/r8bJgxtICx3jikweo17Q2ZqsZW5QVW5SVqDgHo2YPL3dlfQpFUbj0houDCmJZ7ZZSc7QzjmUgZejS9Rmvz+LW2vdxW537+eCJz0g9nFYqdikqDqrmSlHm6L7gX2IAUpdh9VWIS4rl3eUvs2HJFrb9Zeh8tOnRUokDKU47bh95M0tnrSQzLSun6stis5B8dhLXPXh1qdjQuN25IXVzXFlu/pyzOse2mWNnM3/aYsateoWEyioZVWGgIh+KMuWfv/7lxd5vhtxvtVtod23rsMYSQnDBJedx3YNXcdnN7ZTjochh3/YDLP9xFTs37ClrU4pM5RrJjF/9Gj3uv5LKNZOpVrcKNz/ek/f+HE1MQuheKsVJo4vPoXG7c7Gcoo2jmQRCE3lK4T0uL2mH05jx+qxSsU1RMVAJp4oyY8+W/7ivxRO4ne6AbpJgOB4NW9Xn9fnPBVS8KBThkJGayYu932T1b+ux2i14XF4aNK/Dc988TqWzk8vavAqDlDIg6Ts7I5v3H/mYXz9bgNfjwx5tOPvOzOBqwVVqVWLKznElbquifKASThXllqkvfYPP4w3ueDis9Bl+A6/8/KxyPBQR8/xNr/P3wo3oPh1npguf18e21Tt5ousLQaujFCc5fjSdt+6dQPeYvlxp6c2DbYezdsGGnP2OGAePTrqfb1I+ZsrO9/n6yEc4Yh0hxyvPD7qK0kflfCjKjNXz1uELsW5sj7bR95mbStkiRaQsmbWCr974nv3/HqR24xpcfHULVvy8ln/X7qRSjWRuePgaOt1ySb4l08XN7s3/8feCjQE5RT6vjwM7DrJm/gZadGlSavZUJLIznTzYdjiHdh/JWULZvPwfnrriBUb9OJwWlzfNOdYRbccRbQegw41t+HHirwEKxGaruVQb2inKPyryoSgz8ntKOvFlpij/TBn1FS/2fpN1izZx5L8UVv3yN+8P+ZgVc1ZzdN8xtvy5jdf7v8+4IR+Xql27NuzB6rAG3aeZNHarTsYhmff5Io78lxLgRHg9PsYN/TjkeX2G30BMQnSesnez1Uxcciw3P9azpMxVVECU86EoM665+3Ks9sBmbha7hasGdikDi0oHn8/HklkreOue8Yx9YBJrf99QYUPSR/cf49PnZoSUtz+Bx+Xhu/d+Yu/WfaVkGVSumRxU9RZASmP/6Y7bP+/3t3yCuxo9zPhHP+bIf0cLPG/ZDytxZ7uD7tu5fg+ZacFFzpKrJzJ+9Wt0v7cridUSSKqeSI/7r2T8X6+SWDWhKC9FcZqhll0UZUbPwd1YPPNPtq7cjttpNHuzOqzUa1qLG4d0L2PrihdnlgvNpCF1nSeveIF/Vv2L2+lB0wSzJ83j0usvYtiUh0tVFVJKydH9xwCodFZSRGP8OfsvrHZLyCTD3JgtJpZ8t4KbH782omsVlnNbN+CsBlXZu3V/nqUXIQSOGHupt5YvbTxuD092/V+ez9eBHYeY+9HvvPvny5zdoHrIc21RoSvFhBCY8umMm1w9kcHv9GfwO/0jN15x2qOcD0WZYbVZeG3eSBZ/+yfzv1yMlHBZr7a0v/FiLNbTo7392t83MG7ox2xfsxOhCarXq8rhPUdyIgW6LtHdXpZ8t4J5UxbRtd9lQcdxO91kpGYSXymuWHrSrF2wgXfun8iezf8BULtxDR4edw9N2jcq8NzMtEyWfr+K7AwnqQdTgyYMh6I0AzxCCF78fhiPdX6O1ENpOdtsUTZG//TMafMeC8X8Lxaz1e/knsDr9pLl05nw2Kf8b+aTIc+9vG8Hln6/Ek+uc8FYrmpxeRPs+TgnCkU4qFJbxRlD6uE0/l27i7jkWOo3q1PiyY/r/9jE412ez+k8WhCN2zbkncWj8mzLzshm3JCP+eWzhXjdXqITouj9+LX0fvK6iKMk//z1Lw+1ezpoUuB7f46mXtPaIc/9beoiXh/wPprJhMAI6+cnEpcbzaTxwdrXqd24ZkR2R4rP62P57L/Ys3kf1epUpu21rbHaTm/HA+DJK17gr1//DrpPM2nMdk4NWUmm6zov3Pwmf87+K8d5sdgt2BxW3l2ef9REoYCCS21V5ENx2uPz+hj74GR+mjwPs9WC1+OlWp0qjPz6MepeUCvfcw/vPcqXr85k6ayVmK1muvbrwPUPX0N0XFSB1500bErYjgdA2pH0PL9LKRl21Si2rtye4yhkpmbx2QtfkX4sg3tevT3YMCHx+Xys/GkNEx77NE8PnRPoPp0po77m2S+HBj1/x/rdvHbXe/7XdNJx0UwaEon0hX6QsdotdLmtfak7HgAms4l2PVvDGZbveKpzmRtd1/ONWGmaxjNfDmHhjGXMmTyPjNRMLrqqOT0HXUlStcQSsFZxpqGcD8Vpz6SnPueXT37H59XxeY3chH3bDjC0wwg+3/l+SEdi/46DDGr1JM5MV84X+dSXv2X+tCW8u/wlHDGhq3UANhWiuZbZYqJJh7xLHuv/2MyWFdsDbiIep4dv35lNn2E3hN235tjBVB7t9BwHdh4KCKWfQPfprFu0KeQYs977Kej9SvfpWB1WzqpflcN7jlKjYXVaX9WCNfPXsXP9HpKrJ3LDI93p1r9TwLnbVu9gxU9rMJk1Lrn+IvVEXYy0v7ENm1dsC0wcFdC0Q+MCl+9MJhOdbrmETrdcUoJWKs5UlPOhOK3JznQy6/25eda9wYgqeNwe5n2+iJ6Drgx67kfPfEF2enYeLRKP08OBHQeZPXFegUmxVrsVZ1bBiZhCGNGD3qckYq7/Y3PIpSGTxcQ/f+0IW6fildvHsn/7gQIjMbGJoeW5927dHzRiAuDOdvPO4lFE5SqfvuO5m0OO5fP6GN1vDIu+XmYs4QiYPHwqvR7ryYCXbi1VPZDTlSvv6sjMd2dzcNdJrQ5NM5JF73mtcFEzhaK4UaW2itOaQ7uPhLzhurLcbF+7I+S5S75bGVQEze308OvnCwu8dufb2ufROziB2WIivlJszg22zgW1eH3+89RoeFae46Ljo9BMwW/CPq9OdHzBSz9glMP+NW9dgY6H1W6hx33BHTGAuv6uwcGIS47JkdcOh2/HzmbJdyvweXU8Lg9up5E78s3bP7L0+5Vhj1ORyM50MmnYFG6sfBdX2fvwULunWf3buhK7niPGwZilL9Hj/iuJTTL+Pq2vas6YpaM4t1X9EruuQhEOKvKhOK1JrBq6i6bFbqFKrcoh9+eXjB1Oonb/UX1Y/ds6ju47lhP6ttottOjalJFfP8aRvSmYzCYq1wiuN9H+pja8/8hHAduFgKRqCTRsWa9AGwCOHUjFZDblmwNgsVloelljut/XNeQxPQddyffj5gZst9ot9HqsZ6ESYL99Z3ZANArA6/bw7ZjZRo5GOUVKyS+fLmDm2Dmk7D/GOa3q0WfYDTRu0zDkOT6vj8c7P8e/f+/G4zJe96ZlWxl+1ShGfPUYbXu0KhFb45JiGfTWnQx6684SGV+hiBTlfChOa+KSYmnboxXLZ/8VcPOVPp0r7ugY8tw217Tgj2//DKjmsNotIdfBt67azq+fLSQjNZMLO57PmCWjWPTVMhbP/BNbtJ3L+3ag3bWtMJlMVKtTJV/bE6vEM+SDe3nrngkIIfB6vFgdFjSh8cyXQ8Nemqhev2rIfZpJo3HbhvQZdgOtrrwwXweixjnVef7bJ3jp1rfxuL1omsDt9NBtQOdCa3ekHj4edLuURrSqPPPWPeOZN2VRjvOU8uNfrPhpDSOmPxqyA/OSWSvZse6k43ECr8fHew99SJvuLdVSk+KMQpXaKk57jqek80SX/7F7s/Fe0kwmfF4fT3/xCJdef3HI8/b+s59BrZ7Ene3G5zWWLCw2M5XOTmLcqleJjs+bH/HhM18w/bXvQEp8Xh2bw0pitQTGLBlVJHXHXZv2Mnvir+z/9yANW9Xn6oFdCl1x8O5DHzJn0q95og2aSSMuOYbP/n2/ULoNHreHNfM3kJ2ezfmXnEdy9cJXP9zf8gm2rQ5c8tJMGh1uasPTXwwp9JilwbY1O3jgomE574fcJFSJZ9p/E4KWr77e/33mfjw/+KACpux4P98onEJR0VCltooznrikWN5f9QprflvP5j+3EV8plvY3tSEuKTbf82qcU53xf73KlBe/ZtmPqzBbzFzetz29n7wuwPHYuHQLM177Lk9CpivbzZG9Rxn7wGRGzHg0YvtrN6rB/W/eGfH5APe9cTtet4efPvwNs9WM1+2jVqOzGTHj0UILRlmsFlpf2axI9vQb0YsXer8ZEI3SNFFqCqiRsPS7lQgteIQiIzWT7Wt20rBlYD6FxWZG0wS6HuRhTxIyl0ahOF1R73jFGYGmabS4vGmebpzhcFb9ajz+0eACj5vz4W9Bbyxej4/FM//EmeUqU1VIs8XMI+Pv5c4XbmHn+j0kVImnzvmF09zYsW4X86ctJis9m2adLqBtj1YRq622u7Y1g9/pz4THP0X3+pBSEhXrYOik+zmnRXi5LGWBESnOJxcomHMBtO3Zih8/+DXovgbN6yrtDMUZh3I+FIpiIPXQ8ZBKn7pPx5npLBeS1AmV42nWKXQSbig+fOYLpr86E4TA5/ExZ9I8ap57Nm/8/lxAFChcut/bla63d2DLiu2YLSbObd2gWKTjS5I2PVoy9aVvgu6LinPQoHndoPvmTVkEgqB+y92v9i1GCxWKioEqtVUoioHmnS7AFqJ9e/LZScQl57/EU55Zu2ADM16fZYi0+ZeV3E4Puzft5YMnPy/S2DaHjaYdGtO47bnl3vEAaNiyPpf1apu3G7Mwyqcfendg0NeQfiyDBdOXBI2KWGwW/l27qyRNVijKJcr5UCiKgSvu7Igjxo5myvuRMlvNDBh1a6l2qy1ufpzwC3qQBEuP28svny7A5wtfQv504IlPH+C+N++k5nlnE5sUQ7OO5zN67rNcdnO7oMcf3XfMqI8Ogsfl4b9/9pekuQpFuUQtuygUxUBMQjRjlr7EGwPHsXbBBgASKsXR/6Vb6Xp78E61FYWUA6nBEyUxFF89Li+mqPIftSguTCYTPe67gh73XRHW8ZVrJIXcZ3NYqXne2cVlmkJRYVDOh0JRTFSvV5XXf3uOtCPHyc5wUrlmcsiuoRWJC9qfx6ZlW4OKglWtUznkcpPCIDo+mstva89v0xYH9NURmuDyfh3KyDKFouyouLFghaKcEl8pjmp1qpwWjgdAj/uuxGQxB4hgma1m+r/YR4ljhcED7w6kZdemaCYNe7QNq8NKfKU4Rs99tsCSb4XidESJjCkUFZRdG/cwf9pijh1Mo3W3ZrS7tnWJ5Zb8+/cuXr3jXf5dtwtNE0TFRTHw5du4+u7LS+R6pyt7tvzHlhXbia8cR4suTSpEkq1CEQkFiYwp50OhqGD4vD5euvUdFn69NE/pZnS8g9fmPVeiOhkHdx0mO8NJjYbVMVvUqq1CoQhOQc6HWnZRKCoYX746kz++XR6gGZGZls3Qy0aQlZ5d5Gs4s1xkpmUGNNCrWrsydc6vecY7HpnHs1g880/++HY5mWmZZW2OQlHhOLO/QRSKCsjXb/8YUtDM7XTz29Q/6H5v6O60+bFv+wHGPjCJVT//jZSSWo3O5r437yyynHpp43a6mTdlEQu/WoqmaXS85RI69m6HxWop+OQCmPnuHD54/FM0kwkB+Hw+Bo7uyw0PX1N0wxWKMwTlfCgUFQgpJcePpIfcr/ske7f8F9HYxw6l8cDFw8hMy8qJeOze9B/P9hzNS7OfpkWXJhGNW9pkZ2TzSPtn2bt1P+5sNwBrft/AD+N/5rV5I7HaI6/O+XPOaiY89qm/J83JvjQTn/ycs+pXo033lkU1X6E4I1DLLgpFBUIIQaWzQ+tGaCaNqnWqRDT29+Pm4sxyBURVfB4fk4dNiWjMsuDL175jz+Z9OY4HgDvbzbbVO5j1/twijT1t9LcBzfAAvG4v00Z/W6SxFYozCeV8KBQVjH4jeoXsrGoya3Tp2z6icVf8tCZAh+IEW1dtR9eDL/WUN+Z+NB+PK/B1uJ0e5kyeV6Sx927dF3Lfnnz2KRSKvCjnQ6GoYFw1sAs3De1hNCrLhS3KWiTdiJiEqJD7rDZLhdHzcGW6Qu7LznAWaexqdUNHlarVqVyksRWKMwnlfCgUFQwhBPe82o+vDn3Iva/fzvUPXsXTUx/hmyMf0bRD44jHvWpAl7wN0/yYrWY639a+wjgfzTo3CeixA2CymGhVxMTZXo9di8UWmCpnsZm5+bFrizS2QnEmoZwPhaICsnfrPma8/h3bVu/grAbVaX1VsyIlUgJcesPFtO3RCovNkhNVsTqsVK6ZzMCXbysGq0uHfiN7YbaY8kSGhCawWM3c8uR1RRq7/Q0Xc8tT16OZNGxRNuzRNjSTRq/HetKhV9uc43xeHwd3HSb9WEaRrqdQnK4okTGFooIxZ/I83rl/IkITeN1ebA4rVoeVt/94kVpFbFKm6zor5qzml88W4sx00qZ7K7r0bY8j2l5M1pcOW1dtZ9zQj1m/aDMIaN65Cfe/dSd1L6hVLOMf3X+MP2f/BUDrq5pT6SwjCVhKyaz3f+LT56Zz/GgGQghadWvG0A/updLZycVybYWiIqAUThWK04jDe4/St+6ggIoUTRPUaVKLCatfLyPLyidupxuEwGorur5HOHw7djYTn/gMj+tkRYzJYiK5eiKTN76NPcpWKnYoFGWNUjhVKE4j5n/xR1B1UV2X7Fy/h73/7C8Dq8ovVru11BwPr8fLp89Nz+N4gFGqnHb4OL9/uaRU7FAoKgLK+VAoKhDpKRl4PYE6EwAms4n0FJVjUFYc3HWYzLSsoPtc2W7WLdxYyhYpFOUX5XwoFBWIRm0bGsmUQRACajcOGeVUlDDR8VEB/XZOYLaYiK8cWQm0QnE6opwPhaICcfE1LahWtypma96lF6vdwk2P9iAq1lFGlikSKsdzYcfzMZkDv1alhK79LisDqxSK8olyPhSKCoTJZOLNBc/TpntLNJOGEIKoWAe3PXMTdzzfu6zNO+N57MNBxFeOx+Ywyp5NFhMms4m7XryFuk1ql7F1CkX5QVW7KBQVlMy0TI6nZFDp7KRi6daqKB6yM7L5beof/L1wIwlV4rnijo7Uv7BOWZulUJQqqtRWoVAoFApFqaJKbRUKhUKhUJQrlPOhUCgUCoWiVCkW50MIMUoIsU4Iscb/0zvXPk0IMVYIsV0IsU0IMag4rqlQKBQKhaJiEiiVGBmvSSmfBhBCnAVsFkL8LKU8BvQFGgMNgXjgLyHEb1LKzcV0bYVCoVAoFBWIYol8SClTc/0aiyG1c2Ls3sB4KaVPSpkCTAduKY7rKhQKhUKhqHgUW86HEOIhIcQW4C/gHinlUf+uWsCuXIfu9G9TKBQKhUJxBhKW8yGEWCSEOBLipyaAlHKMlPJcoB3wjBAid//o3PW8Ip/rDBVC7D3xk5Gh+lQoFAqFQnG6EZbzIaVsL6WsFOJnzynHrgX+Azr6N+0G6uQ6pLZ/W7DrvCmlrHHiJyYmprCvR6FQKBQKRTmnuKpdGuX6f32gOXCiheMM4F4hhEkIkYSRA/JlcVxXoVAoFApFxaO4ql1GCyEaAB7ACzwgpdzk3/cZ0BrY6v/9tVz7FAqFQqFQnGEUi/Mhpbw2n30+YHBxXEehUCgUCkXFp1z3dhFCuIDDYR4eA6gM1chQcxc5au4iR81d5Ki5ixw1d0Uj3PmrLKW0hdpZrp2PwiCE2JtfExtFaNTcRY6au8hRcxc5au4iR81d0Siu+VO9XRQKhUKhUJQqyvlQKBQKhUJRqpxOzsebZW1ABUbNXeSouYscNXeRo+YuctTcFY1imb/TJudDoVAoFApFxeB0inwoFAqFQqGoACjnQ6FQKBQKRalSoZ0PIcQoIcQ6IcQa/0/vXPs0IcRYIcR2IcQ2IcSgsrS1vCGEeEkIsUkIsVYI8acQonOufWruCkAI0d//3vMKIR44ZZ+av3wQQpwjhFgihNjqf+81LmubyitCiDFCiJ1CCCmEuCDX9ipCiJ+EEP8IIdYLIS4tSzvLI0IIuxBipv99tsY/X3X8+9T8FYAQ4mchxN/+uVskhGjm3148cyelrLA/QEKu/58FHAcS/b/fDswDTEASsBM4r6xtLi8/wFWAw///C4FjgF3NXdjzdyHQCPgUo51A7n1q/vKfu9+AO/3/vwlYWtY2ldcfoANQw/8euiDX9g+B5/z/bw3sAsxlbW95+gHswNWczG18APhZzV/Y85eQ6//XAX8V59xV6MiHlDI116+xgORkNKc3MF5K6ZNSpgDTgVtK18Lyi5RyjpQy2//rOowbZSX/72ruCkBKuVYaPYr0ILvV/IVACFEFaAF87t/0NVD3xBOpIi9SyoVSyr1Bdt0MvOc/ZgVwEFBP77mQUjqllLOl/y4JLAPq+f+v5q8ATrm/xnPyu65Y5q5COx8AQoiHhBBbgL+Ae6SUR/27amF4ZCfY6d+mCOQuYHuuLzk1d0VDzV9oagL7pJReAP+NYTdqfsJGCJEMaFLK3K0ndqLmsCAeAr5X8xc+QohPhRB7gBeBO4pz7oqrq22JIIRYhBHaDkZzKeUeKeUYYIwQ4kLgcyHEr7kckNx1xKIkbS1vhDN3/uO6ACOBrqccc8bOHYQ/f/lwRs9fAZxa36/mp/CoOSwEQojhwDnAfYADNX9hIaW8HUAIcQfwGtCPYpq7cu18SCnbF+LYtUKI/4COGKHc3UAdYIX/kNr+bWcE4cydEOIy4COgh5RyS65dZ/TcQeHee0E44+cvH/YANYQQZimlVwghMKIhan7CREp5VAiBEKJyridQ9R4LgRDiMeAG4HIpZRaQpeavcEgpPxFCjD/xe3HMXYVedhFCNMr1//pAc2Cjf9MM4F4hhEkIkYSxDv9l6VtZPhFCdAA+A66VUq49Zbeau6Kh5i8EUspDwGqgr3/TjcBOKeXOMjOqYjIDGAwghGgNVAP+KFOLyiFCiKFAH6DrKTkMav7yQQgRJ4Q4K9fv1wNHgRSKae4qtMKpEOI7oAHgAbzAK1LKGf59JmAM0M1/+FtSynfLxNByiBDiHyAO2J9rcz8p5To1dwUjhOgLjAYSATeQiRFBWq3mL3+EEOcCHwPJGBVqd0gpN5SpUeUUIcR7wLUYX/BHgAwpZQMhRFWMh4e6GO+/QVLKBWVnaflDCFEDI9L2L5Du3+ySUl6s5i9/hBA1MVYQHBiJpoeBx6SUa4pr7iq086FQKBQKhaLiUaGXXRQKhUKhUFQ8lPOhUCgUCoWiVFHOh0KhUCgUilJFOR8KhUKhUChKFeV8KBQKhUKhKFWU86FQKBQKhaJUUc6HQqFQKBSKUkU5HwqFQqFQKEoV5XwoFAqFQqEoVf4PDamcnIyiblsAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# encoding:utf-8\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "import numpy as np\n", + "import math\n", + "from sklearn import datasets\n", + " \n", + "list_1 = []\n", + "list_2 = []\n", + "# 数据集一:随机生成散点图,参数为点的个数\n", + "# def scatter(num):\n", + "# for i in range(num):\n", + "# x = random.randint(0, 100)\n", + "# list_1.append(x)\n", + "# y = random.randint(0, 100)\n", + "# list_2.append(y)\n", + "# print(list_1)\n", + "# print(list_2)\n", + "# data = list(zip(list_1, list_2))\n", + "# print(data)\n", + "# #plt.scatter(list_1, list_2)\n", + "# #plt.show()\n", + "# return data\n", + "#scatter(50)\n", + " \n", + "def loadDataSet(fileName, splitChar='\\t'):\n", + " dataSet = []\n", + " with open(fileName) as fr:\n", + " for line in fr.readlines():\n", + " curline = line.strip().split(splitChar)\n", + " fltline = list(map(float, curline))\n", + " dataSet.append(fltline)\n", + " return dataSet\n", + " \n", + "# 计算两个点之间的欧式距离,参数为两个元组\n", + "def dist(t1, t2):\n", + " dis = math.sqrt((np.power((t1[0]-t2[0]),2) + np.power((t1[1]-t2[1]),2)))\n", + " # print(\"两点之间的距离为:\"+str(dis))\n", + " return dis\n", + " \n", + "# dis = dist((1,1),(3,4))\n", + "# print(dis)\n", + " \n", + " \n", + "# DBSCAN算法,参数为数据集,Eps为指定半径参数,MinPts为制定邻域密度阈值\n", + "def dbscan(Data, Eps, MinPts):\n", + " num = len(Data) # 点的个数\n", + " # print(\"点的个数:\"+str(num))\n", + " unvisited = [i for i in range(num)] # 没有访问到的点的列表\n", + " # print(unvisited)\n", + " visited = [] # 已经访问的点的列表\n", + " C = [-1 for i in range(num)]\n", + " # C为输出结果,默认是一个长度为num的值全为-1的列表\n", + " # 用k来标记不同的簇,k = -1表示噪声点\n", + " k = -1\n", + " # 如果还有没访问的点\n", + " while len(unvisited) > 0:\n", + " # 随机选择一个unvisited对象\n", + " p = random.choice(unvisited)\n", + " unvisited.remove(p)\n", + " visited.append(p)\n", + " # N为p的epsilon邻域中的对象的集合\n", + " N = []\n", + " for i in range(num):\n", + " if (dist(Data[i], Data[p]) <= Eps):# and (i!=p):\n", + " N.append(i)\n", + " # 如果p的epsilon邻域中的对象数大于指定阈值,说明p是一个核心对象\n", + " if len(N) >= MinPts:\n", + " k = k+1\n", + " # print(k)\n", + " C[p] = k\n", + " # 对于p的epsilon邻域中的每个对象pi\n", + " for pi in N:\n", + " if pi in unvisited:\n", + " unvisited.remove(pi)\n", + " visited.append(pi)\n", + " # 找到pi的邻域中的核心对象,将这些对象放入N中\n", + " # M是位于pi的邻域中的点的列表\n", + " M = []\n", + " for j in range(num):\n", + " if (dist(Data[j], Data[pi])<=Eps): #and (j!=pi):\n", + " M.append(j)\n", + " if len(M)>=MinPts:\n", + " for t in M:\n", + " if t not in N:\n", + " N.append(t)\n", + " # 若pi不属于任何簇,C[pi] == -1说明C中第pi个值没有改动\n", + " if C[pi] == -1:\n", + " C[pi] = k\n", + " # 如果p的epsilon邻域中的对象数小于指定阈值,说明p是一个噪声点\n", + " else:\n", + " C[p] = -1\n", + " \n", + " return C\n", + "\n", + "dataSet = loadDataSet('dataset_circles.txt', splitChar=',')\n", + "C = dbscan(dataSet, 5, 22)\n", + "#print(C)\n", + "x = []\n", + "y = []\n", + "for data in dataSet:\n", + " x.append(data[0])\n", + " y.append(data[1])\n", + "plt.figure(figsize=(8, 6), dpi=80)\n", + "plt.scatter(x,y, c=C, marker='o')\n", + "plt.show()\n", + "# print(x)\n", + "# print(y)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/name.txt b/name.txt new file mode 100644 index 0000000000000000000000000000000000000000..20eed7f2ef8b091d72e8328eb84f9aa1d9f3cb0c --- /dev/null +++ b/name.txt @@ -0,0 +1,2 @@ +曾延 +2021100204 \ No newline at end of file